diff --git a/Applications/Picture Edit.app/Extensions/.pic/Context menu.lua b/Applications/Picture Edit.app/Extensions/.pic/Context menu.lua index a32d729e..db27260a 100755 --- a/Applications/Picture Edit.app/Extensions/.pic/Context menu.lua +++ b/Applications/Picture Edit.app/Extensions/.pic/Context menu.lua @@ -10,12 +10,16 @@ local localization = system.getSystemLocalization() menu:addItem("💻", localization.setAsWallpaper).onTouch = function() local userSettings = system.getUserSettings() - userSettings.interfaceWallpaperPath = icon.path - userSettings.interfaceWallpaperEnabled = true - system.updateWallpaper() - workspace:draw() + local staticPictureWallpaperPath = paths.system.wallpapers .. "Static picture.wlp" + if userSettings.interfaceWallpaperPath ~= staticPictureWallpaperPath then + userSettings.interfaceWallpaperPath = staticPictureWallpaperPath + system.updateWallpaper() + end + + system.wallpaper.setPicture(icon.path) + workspace:draw() system.saveUserSettings() end -system.addUploadToPastebinMenuItem(menu, icon.path) +system.addUploadToPastebinMenuItem(menu, icon.path) \ No newline at end of file diff --git a/Applications/Picture View.app/Extensions/.pic/Context menu.lua b/Applications/Picture View.app/Extensions/.pic/Context menu.lua index a32d729e..db27260a 100644 --- a/Applications/Picture View.app/Extensions/.pic/Context menu.lua +++ b/Applications/Picture View.app/Extensions/.pic/Context menu.lua @@ -10,12 +10,16 @@ local localization = system.getSystemLocalization() menu:addItem("💻", localization.setAsWallpaper).onTouch = function() local userSettings = system.getUserSettings() - userSettings.interfaceWallpaperPath = icon.path - userSettings.interfaceWallpaperEnabled = true - system.updateWallpaper() - workspace:draw() + local staticPictureWallpaperPath = paths.system.wallpapers .. "Static picture.wlp" + if userSettings.interfaceWallpaperPath ~= staticPictureWallpaperPath then + userSettings.interfaceWallpaperPath = staticPictureWallpaperPath + system.updateWallpaper() + end + + system.wallpaper.setPicture(icon.path) + workspace:draw() system.saveUserSettings() end -system.addUploadToPastebinMenuItem(menu, icon.path) +system.addUploadToPastebinMenuItem(menu, icon.path) \ No newline at end of file diff --git a/Applications/Settings.app/Modules/1_Wallpaper/Main.lua b/Applications/Settings.app/Modules/1_Wallpaper/Main.lua index 1d42f96f..c24fa78a 100644 --- a/Applications/Settings.app/Modules/1_Wallpaper/Main.lua +++ b/Applications/Settings.app/Modules/1_Wallpaper/Main.lua @@ -1,6 +1,7 @@ - local GUI = require("GUI") local system = require("System") +local fs = require("Filesystem") +local paths = require("Paths") local module = {} @@ -9,80 +10,56 @@ local userSettings = system.getUserSettings() -------------------------------------------------------------------------------- -module.name = localization.wallpaper -module.margin = 5 -module.onTouch = function() - window.contentLayout:addChild(GUI.text(1, 1, 0x2D2D2D, localization.wallpaperWallpaper)) +local wallpaperConfigurationControlsBegin, wallpaperConfigurationControlsEnd = nil, nil - local wallpaperChooser = window.contentLayout:addChild(GUI.filesystemChooser(1, 1, 36, 3, 0xE1E1E1, 0x696969, 0xD2D2D2, 0xA5A5A5, userSettings.interfaceWallpaperPath, localization.open, localization.cancel, localization.wallpaperPath, "/")) - wallpaperChooser:setMode(GUI.IO_MODE_OPEN, GUI.IO_MODE_FILE) - wallpaperChooser:addExtensionFilter(".pic") - wallpaperChooser:addExtensionFilter(".lua") - wallpaperChooser.onSubmit = function(path) - userSettings.interfaceWallpaperPath = path - system.updateWallpaper() - workspace:draw() - - system.saveUserSettings() +local function updateWallpaperConfigurationControls(layout) + -- Remove previously added controls from layout + if wallpaperConfigurationControlsBegin ~= nil then + layout:removeChildren(wallpaperConfigurationControlsBegin, wallpaperConfigurationControlsEnd) + wallpaperConfigurationControlsBegin, wallpaperConfigurationControlsEnd = nil, nil end - local comboBox = window.contentLayout:addChild(GUI.comboBox(1, 1, 36, 3, 0xE1E1E1, 0x696969, 0xD2D2D2, 0xA5A5A5)) - comboBox.selectedItem = userSettings.interfaceWallpaperMode or 1 - comboBox:addItem(localization.wallpaperStretch) - comboBox:addItem(localization.wallpaperCenter) - - local wallpaperSwitch = window.contentLayout:addChild(GUI.switchAndLabel(1, 1, 36, 8, 0x66DB80, 0xE1E1E1, 0xFFFFFF, 0xA5A5A5, localization.wallpaperEnabled .. ":", userSettings.interfaceWallpaperEnabled)).switch - wallpaperSwitch.onStateChanged = function() - userSettings.interfaceWallpaperEnabled = wallpaperSwitch.state - system.updateWallpaper() - workspace:draw() - - system.saveUserSettings() + -- Add new controls if needed + if system.wallpaper and system.wallpaper.configure then + wallpaperConfigurationControlsBegin = #layout.children + 1 + system.wallpaper.configure(layout) + wallpaperCOnfigurationControlsEnd = #layout.children end - - window.contentLayout:addChild(GUI.textBox(1, 1, 36, 1, nil, 0xA5A5A5, {localization.wallpaperInfo}, 1, 0, 0, true, true)) - - local wallpaperSlider = window.contentLayout:addChild(GUI.slider(1, 1, 36, 0x66DB80, 0xE1E1E1, 0xFFFFFF, 0xA5A5A5, 0, 100, userSettings.interfaceWallpaperBrightness * 100, false, localization.wallpaperBrightness .. ": ", "%")) - wallpaperSlider.height = 2 - wallpaperSlider.roundValues = true - wallpaperSlider.onValueChanged = function() - userSettings.interfaceWallpaperBrightness = wallpaperSlider.value / 100 - system.updateWallpaper() - workspace:draw() - - system.saveUserSettings() - end - - comboBox.onItemSelected = function() - userSettings.interfaceWallpaperMode = comboBox.selectedItem - system.updateWallpaper() - workspace:draw() - - system.saveUserSettings() - end - - window.contentLayout:addChild(GUI.text(1, 1, 0x2D2D2D, localization.wallpaperScreensaver)) - - local screensaverChooser = window.contentLayout:addChild(GUI.filesystemChooser(1, 1, 36, 3, 0xE1E1E1, 0x696969, 0xD2D2D2, 0xA5A5A5, userSettings.interfaceScreensaverPath, localization.open, localization.cancel, localization.wallpaperScreensaverPath, "/")) - screensaverChooser:setMode(GUI.IO_MODE_OPEN, GUI.IO_MODE_FILE) - screensaverChooser:addExtensionFilter(".lua") - - local screensaverSwitch = window.contentLayout:addChild(GUI.switchAndLabel(1, 1, 36, 8, 0x66DB80, 0xE1E1E1, 0xFFFFFF, 0xA5A5A5, localization.wallpaperScreensaverEnabled .. ":", userSettings.interfaceScreensaverEnabled)).switch - - local screensaverSlider = window.contentLayout:addChild(GUI.slider(1, 1, 36, 0x66DB80, 0xE1E1E1, 0xFFFFFF, 0xA5A5A5, 1, 100, userSettings.interfaceScreensaverDelay, false, localization.wallpaperScreensaverDelay .. ": ", " s")) - - local function save() - userSettings.interfaceScreensaverEnabled = screensaverSwitch.state - userSettings.interfaceScreensaverPath = screensaverChooser.path - userSettings.interfaceScreensaverDelay = screensaverSlider.value - - system.saveUserSettings() - end - - screensaverChooser.onSubmit, screensaverSwitch.onStateChanged, screensaverSlider.onValueChanged = save, save, save end -------------------------------------------------------------------------------- -return module +module.name = localization.wallpaper +module.margin = 0 +module.onTouch = function() + window.contentLayout:addChild(GUI.text(1, 1, 0x2D2D2D, localization.wallpaperWallpaper)) + + local comboBox = window.contentLayout:addChild(GUI.comboBox(1, 1, 36, 3, 0xE1E1E1, 0x696969, 0xD2D2D2, 0xA5A5A5)) + for _, filename in pairs(fs.list(paths.system.wallpapers)) do + local path = paths.system.wallpapers .. filename + + if fs.isDirectory(path) and fs.extension(path) == ".wlp" then + local item = comboBox:addItem(fs.hideExtension(filename)) + + item.onTouch = function() + userSettings.interfaceWallpaperPath = path + system.updateWallpaper() + workspace:draw() + + system.saveUserSettings() + updateWallpaperConfigurationControls(window.contentLayout) + end + + if userSettings.interfaceWallpaperPath == path then + comboBox.selectedItem = comboBox:count() + end + end + end + + updateWallpaperConfigurationControls(window.contentLayout) +end + +-------------------------------------------------------------------------------- + +return module \ No newline at end of file diff --git a/Installer/Files.cfg b/Installer/Files.cfg index 49511c46..b86dd4ad 100644 --- a/Installer/Files.cfg +++ b/Installer/Files.cfg @@ -674,28 +674,26 @@ "Applications/Pioneer.app/Images/Knob8.pic" }, wallpapers = { - -- Pictures - "Wallpapers/AhsokaTano.pic", - "Wallpapers/Block.pic", - "Wallpapers/Ciri.pic", - "Wallpapers/Girl.pic", - "Wallpapers/Mystery.pic", - "Wallpapers/Nettle.pic", - "Wallpapers/Raspberry.pic", - "Wallpapers/Road.pic", - "Wallpapers/Space.pic", - "Wallpapers/Logic.pic", + "Wallpapers/Lines.wlp/Main.lua", - -- Scripts - "Wallpapers/Flight.lua" - }, - screensavers = { - "Screensavers/Space.lua", - "Screensavers/Matrix.lua", - "Screensavers/Mandala.lua", - "Screensavers/Clock.lua", - "Screensavers/Lines.lua", - "Screensavers/XCOM.lua", - "Screensavers/NyanCat.lua" + "Wallpapers/Solid color.wlp/Main.lua", + + "Wallpapers/Stars.wlp/Main.lua", + + "Wallpapers/Static picture.wlp/Main.lua", + "Wallpapers/Static picture.wlp/Pictures/Ciri.pic", + "Wallpapers/Static picture.wlp/Pictures/Girl.pic", + "Wallpapers/Static picture.wlp/Pictures/Jellyfish.pic", + "Wallpapers/Static picture.wlp/Pictures/LikeOS.pic", + "Wallpapers/Static picture.wlp/Pictures/Mayonnaise.pic", + "Wallpapers/Static picture.wlp/Pictures/Mystery.pic", + "Wallpapers/Static picture.wlp/Pictures/Nettle.pic", + "Wallpapers/Static picture.wlp/Pictures/Raspberry.pic", + "Wallpapers/Static picture.wlp/Pictures/Road.pic", + "Wallpapers/Static picture.wlp/Pictures/Space.pic", + "Wallpapers/Static picture.wlp/Pictures/Strawberry.pic", + "Wallpapers/Static picture.wlp/Pictures/Windows 10.pic", + "Wallpapers/Static picture.wlp/Pictures/Windows 11.pic", + "Wallpapers/Static picture.wlp/Pictures/Windows XP.pic" } } \ No newline at end of file diff --git a/Installer/Main.lua b/Installer/Main.lua index 191d86f3..57d9c76a 100644 --- a/Installer/Main.lua +++ b/Installer/Main.lua @@ -308,7 +308,6 @@ local usernamePasswordText = GUI.text(1, 1, 0xCC0040, "") local withoutPasswordSwitchAndLabel = newSwitchAndLabel(30, 0x66DB80, "", false) local wallpapersSwitchAndLabel = newSwitchAndLabel(30, 0xFF4980, "", true) -local screensaversSwitchAndLabel = newSwitchAndLabel(30, 0xFFB600, "", true) local applicationsSwitchAndLabel = newSwitchAndLabel(30, 0x33DB80, "", true) local localizationsSwitchAndLabel = newSwitchAndLabel(30, 0x33B6FF, "", true) @@ -326,7 +325,6 @@ for i = 1, #files.localizations do passwordSubmitInput.placeholderText = localization.submitPassword withoutPasswordSwitchAndLabel.label.text = localization.withoutPassword wallpapersSwitchAndLabel.label.text = localization.wallpapers - screensaversSwitchAndLabel.label.text = localization.screensavers applicationsSwitchAndLabel.label.text = localization.applications localizationsSwitchAndLabel.label.text = localization.languages acceptSwitchAndLabel.label.text = localization.accept @@ -519,7 +517,6 @@ addStage(function() addTitle(0x696969, localization.customize) layout:addChild(wallpapersSwitchAndLabel) - layout:addChild(screensaversSwitchAndLabel) layout:addChild(applicationsSwitchAndLabel) layout:addChild(localizationsSwitchAndLabel) end) @@ -563,8 +560,7 @@ addStage(function() usernameInput.text, localizationComboBox:getItem(localizationComboBox.selectedItem).text, not withoutPasswordSwitchAndLabel.switch.state and passwordInput.text or nil, - wallpapersSwitchAndLabel.switch.state, - screensaversSwitchAndLabel.switch.state + wallpapersSwitchAndLabel.switch.state ) end) @@ -618,7 +614,6 @@ addStage(function() addToList(true, "localizations") addToList(applicationsSwitchAndLabel.switch.state, "optional") addToList(wallpapersSwitchAndLabel.switch.state, "wallpapers") - addToList(screensaversSwitchAndLabel.switch.state, "screensavers") -- Downloading files from created list local versions, path, id, version, shortcut = {} diff --git a/Libraries/Paths.lua b/Libraries/Paths.lua index 03591e9a..c842e225 100755 --- a/Libraries/Paths.lua +++ b/Libraries/Paths.lua @@ -11,7 +11,6 @@ paths.system.extensions = "/Extensions/" paths.system.mounts = "/Mounts/" paths.system.temporary = "/Temporary/" paths.system.wallpapers = "/Wallpapers/" -paths.system.screensavers = "/Screensavers/" paths.system.users = "/Users/" paths.system.versions = "/Versions.cfg" @@ -44,7 +43,6 @@ function paths.getUser(name) user.libraries = user.home .. "Libraries/" user.applications = user.home .. "Applications/" user.wallpapers = user.home .. "Wallpapers/" - user.screensavers = user.home .. "Screensavers/" user.trash = user.home .. "Trash/" user.settings = user.home .. "Settings.cfg" user.versions = user.home .. "Versions.cfg" diff --git a/Libraries/System.lua b/Libraries/System.lua index d5302a4d..846e15b5 100755 --- a/Libraries/System.lua +++ b/Libraries/System.lua @@ -86,14 +86,10 @@ function system.getDefaultUserSettings() interfaceScreenAddress = nil, interfaceWallpaperEnabled = false, - interfaceWallpaperPath = paths.system.wallpapers .. "Flight.lua", + interfaceWallpaperPath = paths.system.wallpapers .. "Stars.wlp/", interfaceWallpaperMode = 1, interfaceWallpaperBrightness = 0.9, - interfaceScreensaverEnabled = false, - interfaceScreensaverPath = paths.system.screensavers .. "Matrix.lua", - interfaceScreensaverDelay = 20, - interfaceTransparencyEnabled = true, interfaceTransparencyDock = 0.4, interfaceTransparencyMenu = 0.2, @@ -2386,78 +2382,32 @@ function system.updateWallpaper() desktopBackground.draw = desktopBackgroundAmbientDraw interfaceDrawInterval = 1 - if userSettings.interfaceWallpaperEnabled and userSettings.interfaceWallpaperPath then - local extension = filesystem.extension(userSettings.interfaceWallpaperPath) - - if extension == ".pic" then - local result, reason = image.load(userSettings.interfaceWallpaperPath) - - if result then - -- Fit to screen size mode - if userSettings.interfaceWallpaperMode == 1 then - result = image.transform(result, desktopBackground.width, desktopBackground.height) - desktopBackgroundWallpaperX, desktopBackgroundWallpaperY = 1, 2 - - -- Centerized mode - else - desktopBackgroundWallpaperX = math.floor(1 + desktopBackground.width / 2 - image.getWidth(result) / 2) - desktopBackgroundWallpaperY = math.floor(2 + desktopBackground.height / 2 - image.getHeight(result) / 2) - end - - -- Brightness adjustment - local brightness, background, foreground, alpha, symbol, r, g, b = userSettings.interfaceWallpaperBrightness - - for y = 1, image.getHeight(result) do - for x = 1, image.getWidth(result) do - background, foreground, alpha, symbol = image.get(result, x, y) - - r, g, b = color.integerToRGB(background) - background = color.RGBToInteger( - math.floor(r * brightness), - math.floor(g * brightness), - math.floor(b * brightness) - ) - - r, g, b = color.integerToRGB(foreground) - foreground = color.RGBToInteger( - math.floor(r * brightness), - math.floor(g * brightness), - math.floor(b * brightness) - ) - - image.set(result, x, y, background, foreground, alpha, symbol) - end - end - - desktopBackground.draw = function(...) - desktopBackgroundAmbientDraw(...) - - screen.drawImage(desktopBackgroundWallpaperX, desktopBackgroundWallpaperY, result) - end - else - GUI.alert(reason or "image file is corrupted") - end - - elseif extension == ".lua" then - local result, data = loadfile(userSettings.interfaceWallpaperPath) - - if result then - result, data = xpcall(result, debug.traceback) - - if result then - if type(data) == "function" then - desktopBackground.draw = data - interfaceDrawInterval = 0.01 - else - GUI.alert("Wallpaper script didn't return drawing function") - end - else - GUI.alert(data) - end - else - GUI.alert(data) - end + if userSettings.interfaceWallpaperPath then + local executable, reason = loadfile(userSettings.interfaceWallpaperPath .. "Main.lua") + if not executable then + GUI.alert(reason) + return end + + local success, wallpaperOrError = xpcall(executable, debug.traceback) + if not success then + GUI.alert(wallpaperOrError) + return + end + + if type(wallpaperOrError) ~= "table" then + GUI.alert("Wallpaper script didn't return table") + return + end + + if type(wallpaperOrError.draw) ~= "function" then + GUI.alert("Wallpaper does not contain proper draw function") + return + end + + system.wallpaper = wallpaperOrError + desktopBackground.draw = system.wallpaper.draw + interfaceDrawInterval = 0.01 end end @@ -2818,7 +2768,6 @@ function system.updateDesktop() local lastWindowHandled local interfaceUpdateDeadline = bootUptime + interfaceDrawInterval local interfaceDrawDeadline = bootUptime + interfaceDrawInterval - local screensaverUptime = bootUptime workspace.eventHandler = function(workspace, object, e1, e2, e3, e4) if e1 == "key_down" then @@ -2868,17 +2817,6 @@ function system.updateDesktop() uptime = computer.uptime() interfaceDrawDeadline = uptime + interfaceDrawInterval end - - if userSettings.interfaceScreensaverEnabled then - if e1 then - screensaverUptime = computer.uptime() - elseif uptime >= screensaverUptime + userSettings.interfaceScreensaverDelay then - if filesystem.exists(userSettings.interfaceScreensaverPath) then - system.execute(userSettings.interfaceScreensaverPath) - workspace:draw() - end - end - end end system.menuInitialChildren = desktopMenu.children @@ -2988,7 +2926,7 @@ function system.updateWorkspace() desktopBackground.draw = oldDraw or desktopBackgroundAmbientDraw end -function system.createUser(name, language, password, wallpaper, screensaver) +function system.createUser(name, language, password, wallpaper) -- Generating default user userSettings local defaultSettings = system.getDefaultUserSettings() @@ -2996,7 +2934,6 @@ function system.createUser(name, language, password, wallpaper, screensaver) defaultSettings.localizationLanguage = language defaultSettings.securityPassword = password and require("SHA-256").hash(password) defaultSettings.interfaceWallpaperEnabled = wallpaper - defaultSettings.interfaceScreensaverEnabled = screensaver -- Generating user home directory tree local userPaths = paths.getUser(name) diff --git a/README-ru_RU.md b/README-ru_RU.md index 5765026b..e7b42df8 100644 --- a/README-ru_RU.md +++ b/README-ru_RU.md @@ -21,7 +21,7 @@ MineOS - это графическая операционная система ## Как установить? -Самый простой способ - это использовать стандартный скрипт `pastebin`. Вставьте дискету с OpenOS и Интернет карту в компьюетр, включите его и напишите следующую команду в консоль, чтобы установить MineOS: +Самый простой способ - это использовать стандартный скрипт `pastebin`. Вставьте дискету с OpenOS и Интернет карту в компьютер, включите его и напишите следующую команду в консоль, чтобы установить MineOS: pastebin run PDE3eVsL diff --git a/Screensavers/Clock.lua b/Screensavers/Clock.lua deleted file mode 100755 index 6084c7e9..00000000 --- a/Screensavers/Clock.lua +++ /dev/null @@ -1,70 +0,0 @@ -local gpu = component.proxy(require("Screen").getGPUAddress()) -local event = require("Event") -local w, h, t, q = gpu.getResolution() -local numb, ha, wh, p, s, u, e, gsB, gS, ti, r, slp, tn = {29850,29351,30887,18925,14735,27343,9383,31407,31147,[0]=31599}, h/2-2, {0, 8, nil, 18, 26}, "▀", " ", h%2, w/2, gpu.setBackground, gpu.set, table.insert, math.random, event.sleep, tonumber - -local function drawN(x, y, n) - local c = 0 - for i = 0, 14 do - if bit32.extract(numb[n], i) == 1 then - gsB(60928) - gS(x, y, s) - else - gsB(0) - gS(x, y, s) - end - c, x = c + 1, x + 2 - if c % 3 == 0 then - y, x = y + 1, x - 6 - end - end -end - -gsB(0) -gpu.fill(1, 1, w, h, " ") -local tbl = {x = {}, y = {}} -for x = 1, w, 2 do - for y = 1, ha-1-u do - ti(tbl.x, x) - ti(tbl.y, y) - end -end -for n = 1, #tbl.x do - k = r(n) - tbl.x[n], tbl.x[k], tbl.y[n], tbl.y[k] = - tbl.x[k], tbl.x[n], tbl.y[k], tbl.y[n] -end -while true do - q = 1 - for i = 1, #tbl.x do - gpu.setForeground(r(tbl.x[i]*tbl.y[i])*512) - gS(tbl.x[i], tbl.y[i], p) - gS(-tbl.x[i]+w, -tbl.y[i]+h+1, p) - q = q + 1 - if q == 55 then - t = os.date("%T") - for o = 1, 5 do - if o ~= 3 then - drawN(e+wh[o]-15, ha+u, tn(t:sub(o,o))) - end - end - if tn(t:sub(5, 5))%2 == 0 then - gsB(60928) - else - gsB(0) - end - gS(e, ha+1+u, s) - gS(e, ha+3+u, s) - gsB(0) - q = 1 - slp(0.05) - end - local cykaNahooy = {event.pull(0)} - if cykaNahooy[1] == "key_down" or cykaNahooy[1] == "touch" then - gpu.setBackground(0x0) - gpu.fill(1, 1, w, h, " ") - return - end - end - slp(0.05) -end \ No newline at end of file diff --git a/Screensavers/Lines.lua b/Screensavers/Lines.lua deleted file mode 100644 index beff2b7a..00000000 --- a/Screensavers/Lines.lua +++ /dev/null @@ -1,62 +0,0 @@ - -local screen = require("Screen") -local event = require("Event") - -------------------------------------------------------------------------------------- - -local lineCount = 10 -local backgroundColor = 0x0 -local lineColor = 0xFFFFFF -local bufferWidth, bufferHeight = screen.getResolution() - -------------------------------------------------------------------------------------- - -local t = {} - -function rnd() - if math.random(0,1) == 0 then - return -1 - else - return 1 - end -end - -for i = 1, lineCount do - t[i] = { - x = math.random(1, bufferWidth), - y = math.random(1, bufferHeight * 2), - dx = rnd(), - dy = rnd() - } -end - -------------------------------------------------------------------------------------- - -screen.clear(backgroundColor) -screen.update() - -while true do - local eventType = event.pull(0.0001) - if eventType == "touch" or eventType == "key_down" then - break - end - - for i = 1, lineCount do - t[i].x = t[i].x + t[i].dx - t[i].y = t[i].y + t[i].dy - - if t[i].x > bufferWidth then t[i].dx = -1 end - if t[i].y > bufferHeight * 2 then t[i].dy = -1 end - if t[i].x < 1 then t[i].dx = 1 end - if t[i].y < 1 then t[i].dy = 1 end - end - - screen.clear(backgroundColor) - - for i = 1, lineCount - 1 do - screen.drawSemiPixelLine(t[i].x, t[i].y, t[i + 1].x, t[i + 1].y, lineColor) - end - - screen.drawSemiPixelLine(t[1].x, t[1].y, t[lineCount].x, t[lineCount].y, lineColor) - screen.update() -end \ No newline at end of file diff --git a/Screensavers/Mandala.lua b/Screensavers/Mandala.lua deleted file mode 100755 index d65e01a7..00000000 --- a/Screensavers/Mandala.lua +++ /dev/null @@ -1,147 +0,0 @@ -local gpu, r, xr, ti = component.proxy(require("Screen").getGPUAddress()), math.random, bit32.bxor, table.insert -local event = require("Event") - -local tbl, tbl1, S, gsF, gsB, w, h, n, c, Fc, Bc, C, D, i, j, m, k, q, p, a, b = {}, {x = {}, y = {}}, "▄", gpu.setForeground, gpu.setBackground, gpu.getResolution() - -local t = (w-h*2)/2 - -local function pix(x, y, color) - - n = y%2 - - y = (y+n)/2 - - c, Fc, Bc = gpu.get(x+t, y) - - if c ~= S then - - Fc = Bc - - end - - if n == 0 then - - Fc = color - - else - - Bc = color - - end - - gsF(Fc) - - gsB(Bc) - - gpu.set(x+t, y, S) - -end - - - -gsB(0) - -gpu.fill(1, 1, w, h, " ") - -for i = 1, h do - - tbl[i] = {} - - for j = 1, h do - - ti(tbl1.x, i) - - ti(tbl1.y, j) - - end - -end - -for n = 1, #tbl1.x do - - k = r(n) - - tbl1.x[n], tbl1.x[k], tbl1.y[n], tbl1.y[k] = - - tbl1.x[k], tbl1.x[n], tbl1.y[k], tbl1.y[n] - -end - -while true do - - for i = 1, h do - - for j = 1, h do - - tbl[i][j] = 0 - - end - - end - - for i = 1, h do - - m = r(0, 1) - - tbl[i][1], tbl[1][i] = m, m - - end - - C, D, i, j = r(0, 255), t - - for y = 2, #tbl do - - for x = y, #tbl[y] do - - q = xr(tbl[x-1][y], tbl[x][y-1]) - - tbl[x][y], tbl[y][x] = q, q - - end - - end - - for o = 1, #tbl1.x do - - i, j = tbl1.x[o], tbl1.y[o] - - p, a, b = i*j*C, -j+h*2, -i+h*2 - - if tbl[i][j] == 1 then - - pix(j, i, p) - - pix(a, b, p) - - pix(a, i, p) - - pix(j, b, p) - - else - - pix(j, i, 0) - - pix(a, b, 0) - - pix(a, i, 0) - - pix(j, b, 0) - - end - - pix(r(-D+1, 0), r(1, h*2), C) - - pix(r(h*2, w-D), r(1, h*2), C) - - end - - gsF(65280) - gsB(0) - - local e = {event.pull(1)} - if e[1] == "key_down" or e[1] == "touch" then - gpu.setBackground(0x0) - gpu.fill(1, 1, w, h, " ") - break - end -end \ No newline at end of file diff --git a/Screensavers/Matrix.lua b/Screensavers/Matrix.lua deleted file mode 100755 index 4057a5fb..00000000 --- a/Screensavers/Matrix.lua +++ /dev/null @@ -1,96 +0,0 @@ - -local event = require("Event") -local gpu = component.proxy(require("Screen").getGPUAddress()) - --------------------------------------------------------------------------------------------------------------------- - -local maximumLines = 60 -local minimumLineLength = 5 -local maximumLineLength = 55 -local backgroundColor = 0x000000 -local speed = 0.00 - -local chars = { "ァ", "ア", "ィ", "イ", "ゥ", "ウ", "ェ", "エ", "ォ", "オ", "カ", "ガ", "キ", "ギ", "ク", "グ", "ケ", "ゲ", "コ", "ゴ", "サ", "ザ", "シ", "ジ", "ス", "ズ", "セ", "ゼ", "ソ", "ゾ", "タ", "ダ", "チ", "ヂ", "ッ", "ツ", "ヅ", "テ", "デ", "ト", "ド", "ナ", "ニ", "ヌ", "ネ", "ノ", "ハ", "バ", "パ", "ヒ", "ビ", "ピ", "フ", "ブ", "プ", "ヘ", "ベ", "ペ", "ホ", "ボ", "ポ", "マ", "ミ", "ム", "メ", "モ", "ャ", "ヤ", "ュ", "ユ", "ョ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ヮ", "ワ", "ヰ", "ヱ", "ヲ", "ン", "ヴ", "ヵ", "ヶ", "・", "ー", "ヽ", "ヾ" } -local lineColorsForeground = { 0xFFFFFF, 0xBBFFBB, 0x88FF88, 0x33FF33, 0x00FF00, 0x00EE00, 0x00DD00, 0x00CC00, 0x00BB00, 0x00AA00, 0x009900, 0x008800, 0x007700, 0x006600, 0x005500, 0x004400, 0x003300, 0x002200, 0x001100 } -local lineColorsBackground = { 0x004400, 0x004400, 0x003300, 0x003300, 0x002200, 0x001100 } - --------------------------------------------------------------------------------------------------------------------- - -local lines = {} -local lineColorsForegroundCount = #lineColorsForeground -local charsCount = #chars -local screenWidth, screenHeight = gpu.getResolution() -local currentBackground, currentForeground - -local function setBackground(color) - if currentBackground ~= color then - gpu.setBackground(color) - currentBackground = color - end -end - -local function setForeground(color) - if currentForeground ~= color then - gpu.setForeground(color) - currentForeground = color - end -end - --------------------------------------------------------------------------------------------------------------------- - -setBackground(backgroundColor) -gpu.fill(1, 1, screenWidth, screenHeight, " ") - -local i, colors, background, part, eventType -while true do - while #lines < maximumLines do - table.insert(lines, { - x = math.random(1, screenWidth), - y = 1, - length = math.random(minimumLineLength, maximumLineLength) - }) - end - - gpu.copy(1, 1, screenWidth, screenHeight, 0, 1) - setBackground(backgroundColor) - gpu.fill(1, 1, screenWidth, 1, " ") - - i, colors = 1, {} - while i <= #lines do - lines[i].y = lines[i].y + 1 - if lines[i].y - lines[i].length > 0 then - table.remove(lines, i) - else - part = math.ceil(lineColorsForegroundCount * lines[i].y / lines[i].length) - - background = lineColorsBackground[part] or 0x000000 - colors[background] = colors[background] or {} - colors[background][lineColorsForeground[part]] = colors[background][lineColorsForeground[part]] or {} - table.insert(colors[background][lineColorsForeground[part]], i) - - i = i + 1 - end - end - - for background in pairs(colors) do - setBackground(background) - for foreground in pairs(colors[background]) do - setForeground(foreground) - for i = 1, #colors[background][foreground] do - gpu.set(lines[colors[background][foreground][i]].x, 1, chars[math.random(1, charsCount)]) - end - end - end - - eventType = event.pull(speed) - if eventType == "key_down" or eventType == "touch" then - setBackground(0x000000) - setForeground(0xFFFFFF) - gpu.fill(1, 1, screenWidth, screenHeight, " ") - break - end -end - - - - diff --git a/Screensavers/NyanCat.lua b/Screensavers/NyanCat.lua deleted file mode 100644 index 8ac7b5d6..00000000 --- a/Screensavers/NyanCat.lua +++ /dev/null @@ -1,834 +0,0 @@ -local screen = require("Screen") -local event = require("Event") - -local nyans = { - { - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ".,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,>>>>>>>,,,,,,,,>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$''$-$$@','',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$$$$$$$'**'$$$@''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&+++++++&&&&&&&&'''++'@$$$$$-$$'***$$$@'***',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++++++++++++++++++**''+'@$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++++++++++++++++++'**'''@$$$$$$$$'***********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++#######++++++++''**''@$$$$$$-'*************',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################''**'@$-$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "####################''''@$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###=======########====''@@$$$-$$'*%%********%%',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "======================='@@@$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "===;;;;;;;.=======;;;;'''@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;'***''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;'**'','*',,,,,'*','**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;,,,,.,,;;;.;;;;,,,'''',,'',,,,,,,'',,'',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - }, - { - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,>>>>>>>,,,,,,,,>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$$''-$$@',,'',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$$$$$$$$'**'$$@','**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&+++++++&&&&&&&&+++++'@$$$$$-$$$'***$$@''***',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++'+++'@$$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++++++++++++++++++'*'++'@$$$$$$$$$'***********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++#######++++++++'*''''@$$$$$$-$'*************',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################****'@$-$$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################''**'@$$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###=======########==='''@@$$$-$$$'*%%********%%',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "======================='@@@$$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "===;;;;;;;========;;;;;''@@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;;'**'''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;;'**','*',,,,,,**','**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;,,.,,,,;;;;;;;;,,,,''',,,'',,,,,,''',,''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,..,,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - }, - { - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,..,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,.,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,", - ">>,,,,,,,>>>>>>>>,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$$''-$$@',,'',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++&&&&&&&++++++++&&&&&&'@$$$$$$$$$'**'$$@','**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++++++'@$$$$$-$$$'***$$@''***',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++++++'@$$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "##+++++++########++++++'@$$$$$$$$$'***********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "######################''@$$$$$$-$'*************',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################'''''@$-$$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "==#######========#'****'@$$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "==================='''='@@$$$-$$$'*%%********%%',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;=======;;;;;;;;======'@@@$$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;;;''@@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";.;;;;;;;;;;;;;;;;;;;;;'*'''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ".,.;;;;;;,,,,,,,,;;;;;;'**',**',,,,,,**','**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",.,,,,,,,,,,,,,,,,,,,,,''',,''',,,,,,''',,''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - }, - { - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,", - ">>,,,,,,,>>>>>>>>,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$$''-$$@',,'',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++&&&&&&&++++++++&&&&&&'@$$$$$$$$$'**'$$@','**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++++++'@$$$$$-$$$'***$$@''***',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++++++'@$$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "##+++++++########++++++'@$$$$$$$$$'***********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "#####################'''@$$$$$$-$'*************',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################''**'@$-$$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "==#######========##****'@$$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "=================='*'=='@@$$$-$$$'*%%********%%',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;=======;;;;;;;;=='==='@@@$$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;;;''@@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;;'**'''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,;;;;;;;,,,,,,,,;;;;;'**','*',,,,,,'*','**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,''',,,'',,,,,,,'',,''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - }, - { - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,>>>>>>>,,,,,,,,>>>>>>>''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$''$-$$@','',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&+++++++&&&&&&&&+++++'@$$$$$$$$'**'$$$@''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++++++'@$$$$$-$$'***$$$@'***',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++++++++++++++++++'''++'@$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++#######+++++++'**''''@$$$$$$$$'***********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "#################'****''@$$$$$$-'*************',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "##################''''*'@$-$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###=======########==='''@$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "======================='@@$$$-$$'*%%********%%',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "===;;;;;;;========;;;;''@@@$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;''''@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;'***'''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;,,,,,,,;;;;;;;;,,'**','**,,,,,,'**,'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,''',,,'',,,,,,,'',,''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - }, - { - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,>>>>>>>,,,,,,,,>>>>>>>''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$''$$$@@','',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$'**'-$$@''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&+++++++&&&&&&&&+++++'@$$$$$$$$'***$$$@'***',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++'+++'@$$$$$-$$'***''''****',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++++++++++++++++++'*'++'@$$$$$$$$'***********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++#######++++++++'*''''@$$$$$$$'*************',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################****'@$$$$$$-'***.'****.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################''**'@$-$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###=======########==='''@$$$$$$$'*%%********%%',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "======================='@@$$$-$$$'***''''''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "===;;;;;;;========;;;;''@@@$$$$$$$'*********',,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;'*''@@@@@@@@@@''''''''',,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;'***''''''''''''''''*',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;,,,,,,,;;;;;;;;,,'**','**,,,,,,'**,'**',,,,,,,,,,,,,,,,,,..,.,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,''',,''',,,,,,''',,''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - }, - { - ".,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ".,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,..,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>,,,,,,,>>>>>>>>,,,,,,,'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$''$-$$@','',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$$$$$$$'**'$$$@''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++&&&&&&&++++++++&'''&&'@$$$$$-$$'***$$$@'***',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++++++++++++++++++'*''+'@$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++++++++++++++++++'**'''@$$$$$$$$'***********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "##+++++++########++'**''@$$$$$$-'*************',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################''**'@$-$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "####################''''@$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "==#######========#####''@@$$$-$$'*%%********%%',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "======================='@@@$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;=======;;;;;;;;====='''@@@@@@@@@'*********',,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;'***''''''''''''''''''',,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;'**'','*',,,,,'**,'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,;;;;;;;,,,,,,,,;;;;'''',,'',,,,,,,'',,'',,,,,,,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - }, - { - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,..,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>,,,,,,,>>>>>>>>,,,,,,,'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$$''-$$@',,'',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$$$$$$$$'**'$$@','**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++&&&&&&&++++++++&&&&&&'@$$$$$-$$$'***$$@''***',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++'+++'@$$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++++++++++++++++++'*'++'@$$$$$$$$$'***********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "##+++++++########+'*''''@$$$$$$-$'*************',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################****'@$-$$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################''**'@$$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "==#######========####'''@@$$$-$$$'*%%********%%',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "======================='@@@$$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;=======;;;;;;;;======''@@@@@@@@@@'*********',,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;;'**'''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;;'**','*',,,,,,**','**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,;;;;;;;,,,,,,,,;;;;;''',,,'',,,,,,''',,''',,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,..,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - }, - { - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,..,...,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,>>>>>>>,,,,,,,,>>>>>>>''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$$''-$$@',,'',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&+++++++&&&&&&&&+++++'@$$$$$$$$$'**'$$@','**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++++++'@$$$$$-$$$'***$$@''***',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++++++'@$$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++#######++++++++#####'@$$$$$$$$$'***********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "######################''@$$$$$$-$'*************',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################'''''@$-$$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###=======########'****'@$$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "==================='''='@@$$$-$$$'*%%********%%',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "===;;;;;;;========;;;;;'@@@$$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;;;''@@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;;;'*'''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;,,,,,,,;;;;;;;;,,,,,'**',**',,,,,,**'.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,''',,''',,,,,,''',,''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,", - }, - { - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,>>>>>>>,,,,,,,,>>>>>>>''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$$''-$$@',,'',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&+++++++&&&&&&&&+++++'@$$$$$$$$$'**'$$@','**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++++++'@$$$$$-$$$'***$$@''***',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++++++'@$$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++#######++++++++#####'@$$$$$$$$$'***********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "#####################'''@$$$$$$-$'*************',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################''**'@$-$$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###=======########=****'@$$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "=================='*'=='@@$$$-$$$'*%%********%%',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "===;;;;;;;========;';;;'@@@$$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;;;''@@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;;'**'''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;,,,,,,,;;;;;;;;,,,,'**','*',,..,.**','**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,''',,,'',,,,.,''',,''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,.,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - }, - { - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ".,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ".,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,.,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>,,,,,,,>>>>>>>>,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$-$$$$@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$$''$-$$@','',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++&&&&&&&++++++++&&&&&&'@$$$$$$$$'**'$$$@''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++++++'@$$$$$-$$'***$$$@'***',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++++++++++++++++++'''++'@$$$$$$$$'***''''****',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "##+++++++########'**''''@$$$$$$$$'***********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "#################'****''@$$$$$$-'*************',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "##################''''*'@$-$$$$$'***.'****.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "==#######========####'''@$$$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "======================='@@$$$-$$'*%%********%%',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;=======;;;;;;;;=====''@@@$$$$$$'***''''''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;;''''@@@@@@@@@'*********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;'***'''''''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,;;;;;;;,,,,,,,,;;;'**'.'**..,,,,'**''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,''',,,'',,,,,,,''',''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ".,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - }, - { - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>,,,,,,,>>>>>>>>,,,,,,,,''''''''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>>'@@@@@@@@@@@@@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ">>>>>>>>>>>>>>>>>>>>>>>'@@@$$$$$$$$$$$@@@',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@@$$$$$-$$''$$$@@','',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "&&&&&&&&&&&&&&&&&&&&&&&'@$$-$$$$$'**'-$$@''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++&&&&&&&++++++++&&&&&&'@$$$$$$$$'***$$$@'***',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "+++++++++++++++++++'+++'@$$$$$-$$'***''''****',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "++++++++++++++++++'*'++'@$$$$$$$$'***********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "##+++++++########+'*''''@$$$$$$$'*************',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################****'@$$$$$$-'***.'****.'**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "###################''**'@$-$$$$$'***''**'*''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "==#######========####'''@$$$$$$$'*%%********%%',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - "======================='@@$$$-$$$'***''''''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;=======;;;;;;;;=.===''@@@$$$$$$$'*********',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;.'*''@@@@@@@@@@''''''''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ";;;;;;;;;;;;;;;;;;;;'***''''''''''''''''*',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,;;;;;;;,,,,,,,.;;;'**','**,,,,,,'**''**',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,''',,''',,,,,,''',,''',,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,.,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - ",,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,", - } -} - -local colors = { - [","] = 0x00005f, -- Blue background - ["."] = 0xffffff, -- White stars - ["'"] = 0x000000, -- Black border - ["@"] = 0xffffd7, -- Tan poptart - ["$"] = 0xd787af, -- Pink poptart - ["-"] = 0xd70087, -- Red poptart - [">"] = 0xff0000, -- Red rainbow - ["&"] = 0xffaf00, -- Orange rainbow - ["+"] = 0xffff00, -- Yellow Rainbow - ["#"] = 0x87ff00, -- Green rainbow - ["="] = 0x0087ff, -- Light blue rainbow - [";"] = 0x0000af, -- Dark blue rainbow - ["*"] = 0x585858, -- Gray cat face - ["%"] = 0xd787af -- Pink cheeks -} - -screen.clear() -screen.update() - -local sizeX,sizeY = 80, 50 -while true do - for frame=1, #nyans do - for y=1, sizeY do - for x=1, sizeX do - local pos = (y <= sizeX and x <= sizeX) and string.sub(nyans[frame][y], x, x) or "," - screen.drawRectangle(x * 2 - 1, y, 2, 1, colors[pos], 0x0, " ") - end - end - screen.update() - local eventType = event.pull(0) - if eventType == "touch" or eventType == "key_down" then - return - end - end -end \ No newline at end of file diff --git a/Screensavers/Space.lua b/Screensavers/Space.lua deleted file mode 100755 index f4bc616a..00000000 --- a/Screensavers/Space.lua +++ /dev/null @@ -1,166 +0,0 @@ - --- This's a copy-paste of orignal software from https://github.com/Maxu5/ - -------------------------------------------------------------------------------------- - -local screen = require("Screen") - -local starAmount, colors, copyright, braille1, braille2, braille3, braille4, braille5, braille6, braille7, braille8, braille9, braille10 = - 200, - { - [0] = 0x0, - [1] = 0x0F0F0F, - [2] = 0x1E1E1E, - [3] = 0x2D2D2D, - [4] = 0x3C3C3C, - [5] = 0x4B4B4B, - [6] = 0x5A5A5A, - [7] = 0x696969, - [8] = 0x787878, - [9] = 0x878787, - [10] = 0x969696, - [11] = 0xA5A5A5, - [12] = 0xB4B4B4, - [13] = 0xC3C3C3, - [14] = 0xD2D2D2, - [15] = 0xE1E1E1, - [16] = 0xF0F0F0, - }, - "Copyright © https://github.com/Maxu5/", - "⠁", "⠈", "⠂", "⠐", "⠄", "⠠", "⡀", "⢀", "⠛", "⣤" - --- Faster access without tables indexing -local computerPullSignal, tableRemove, mathSin, mathCos, mathRandom, screenUpdate = - computer.pullSignal, - table.remove, - math.sin, - math.cos, - math.random, - screen.update - --- Screen resolution in pixels -local screenWidth, screenHeight = screen.getResolution() -local screenWidthPlus1, screenHeightPlus1 = screenWidth + 1, screenHeight + 1 - --- Obtaining copyright info -local copyrightTable, copyrightLength = {}, #copyright -local copyrightIndex = screen.getIndex(math.floor(screenWidth / 2 - copyrightLength / 2), screenHeight) -for i = 1, #copyright do - copyrightTable[i] = copyright:sub(i, i) -end -copyright = nil - --- Obtaining screen buffer tables for changing data ASAP -local newFrameBackgrounds, newFrameForegrounds, newFrameSymbols = screen.getNewFrameTables() -local screenTablesLength = #newFrameBackgrounds - --- Clearing screen buffer tables once -for i = 1, screenTablesLength do - newFrameBackgrounds[i], newFrameForegrounds[i], newFrameSymbols[i] = 0x0, 0x0, " " -end - --- Other variables, nil by default -local stars, i, star, rotationAngle, targetX, targetY, startWay, x, y, xmod, ymod, prevX, prevY, signalType, screenIndex, color = {} - --- Main loop -while true do - -- Spawing stars - while #stars < starAmount do - rotationAngle = mathRandom(6265) / 1000 - - targetX, targetY, startWay = - mathCos(rotationAngle) * screenWidth * 0.75 + screenWidth / 2, - mathSin(rotationAngle) * screenWidth * 0.375 + screenHeight / 2, - mathRandom() - - stars[#stars + 1] = { - targetX = targetX, - targetY = targetY, - startX = (targetX - screenWidth / 2) * startWay + screenWidth / 2, - startY = (targetY - screenHeight / 2) * startWay + screenHeight / 2, - way = 0.01, - speed = mathRandom(25, 75) / 1000 + 1, - } - end - - -- Clearing foregrounds and symbols tables - for i = 1, screenTablesLength do - newFrameForegrounds[i], newFrameSymbols[i] = 0x0, " " - end - - -- Drawing stars - i = 1 - while i <= #stars do - star = stars[i] - - x, y = - star.startX + (star.targetX - star.startX) * star.way, - star.startY + (star.targetY - star.startY) * star.way - - if x > screenWidthPlus1 or x < 1 or y > screenHeightPlus1 or y < 1 then - tableRemove(stars, i) - else - -- Star type - xmod = x * 2 - xmod = (xmod - xmod % 1) % 2 - - ymod = y * 4 - ymod = (ymod - ymod % 1) % 4 - - -- Star screen position - screenIndex = screenWidth * (y - y % 1 - 1) + x - x % 1 - - -- Star color - color = star.way * 4.0156862745098 * #colors - newFrameForegrounds[screenIndex] = colors[color - color % 1] or 0xFFFFFF - - if star.way < 0.3 then - if xmod == 0 then - if ymod == 0 then - newFrameSymbols[screenIndex] = braille1 - elseif ymod == 1 then - newFrameSymbols[screenIndex] = braille3 - elseif ymod == 2 then - newFrameSymbols[screenIndex] = braille5 - else - newFrameSymbols[screenIndex] = braille7 - end - else - if ymod == 0 then - newFrameSymbols[screenIndex] = braille2 - elseif ymod == 1 then - newFrameSymbols[screenIndex] = braille4 - elseif ymod == 2 then - newFrameSymbols[screenIndex] = braille6 - else - newFrameSymbols[screenIndex] = braille8 - end - end - else - if ymod < 2 then - newFrameSymbols[screenIndex] = braille9 - else - newFrameSymbols[screenIndex] = braille10 - end - end - - i, star.way = - i + 1, - star.way * star.speed - end - end - - -- Drawing copyright - for i = 1, copyrightLength do - newFrameForegrounds[copyrightIndex + i], newFrameSymbols[copyrightIndex + i] = 0x2D2D2D, copyrightTable[i] - end - - -- Drawing changes on monitor - screenUpdate() - - -- Waiting for some signals - signalType = computerPullSignal(0) - if signalType == "touch" or signalType == "key_down" then - break - end -end diff --git a/Screensavers/XCOM.lua b/Screensavers/XCOM.lua deleted file mode 100755 index da3c7de5..00000000 --- a/Screensavers/XCOM.lua +++ /dev/null @@ -1,29 +0,0 @@ - -local image = require("Image") -local screen = require("Screen") -local event = require("Event") - -local source = image.fromString([[402A000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⣄000B00⢤001600⣤281700⣤001700⣤281C00⣤004C00⣤284D00⣤004C00⣤004700⣤001C00⣤004700⣤284C00⣤057800⣤287700⣤287700⣤004700⣤287800⣤004C00⣤065200⡤287700⣤287700⣤284D00⣤287700⣤285200⣤057700⣤284C00⣤284700⣤004700⣤284C00⣤284700⣤004700⣤281C00⣤001700⣤004700⣤001700⣤001700⣤001700⣤001600⣤000600⠄000000⠀002800⡀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⢀002800⢂000600⡐061C00⢂0B2100⣒002200⠒282200⠒281C00⠗281C00⠖281C00⠗282100⠲287D00⠚287D00⠒287D00⠚28A900⠒284D00⠒282100⠛062200⠒285200⠒285200⠒065200⠒285200⠒06A900⠒28A900⠓067D00⠚285200⠒287D00⠒067D00⠒287D00⠒285200⠒055200⠒282200⠒285200⠒282200⠒282200⠒282100⠚285200⠒285200⠒005200⠒0B5200⢒061C00⣒001000⣊000600⠂002800⢐000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠠002800⠠000100⠠280B00⢼065200⠤0B5200⠭000600⠡280600⢤000600⠥280600⠱002100⣤000600⠘004D00⢠000B00⠧280600⢕004700⢠001C00⡄280600⠥000600⡧001700⢠285200⡤007D00⢤001100⡄280B00⢥280600⠍284D00⠤280600⠧000600⠭004C00⢠004700⡄280600⠵280600⠥000600⠇002200⣠005200⠤001700⡄280600⠱000600⠬000600⠬000600⡔001700⠨0C7D00⠤292100⡅000600⠄000600⠄002800⠆000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⣘000100⠐000600⣨281700⢀0B2200⣘004C00⡃000600⣘000600⣐285200⠒000600⣃004D00⠘067D00⣀005200⠃000600⣊280600⣃004D00⢘001C00⡃280600⣋000600⡒117D00⢂004700⡀004D00⢀284C00⡄000600⣊000600⡃0B5200⣐280600⡃000600⣃285200⢘004D00⡂000B00⣃000600⣓001C00⢸005200⣃000B00⣂285200⣘001600⠇005200⠐004700⠂000600⣓000600⡙0BA900⢚0B7D00⣃280B00⣣000600⠐000600⡀002800⡂000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠄002800⠦000100⠄000600⢦067D00⠤0B7D00⠤000B00⠣000600⡲280600⠴000600⠱000600⠢000600⠢004700⠉000600⠦000600⠢000600⡢001600⠈281600⠁000600⠦000600⠕001100⠈004700⠉001700⠉000B00⠵000600⠔000600⠔001700⠈280600⠔000600⠦001700⠈284C00⠉000C00⠁000600⠢000600⠢004700⠈051C00⠉004100⠁000600⠪000600⠢000600⠧280600⠣000600⠦007700⠸16A900⠤004D00⠄000600⠤000600⠠002800⠠002800⠁000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⢀000600⢀000600⢐000C00⢀065200⣀1CA900⣈007800⡃000600⣜280600⣪005200⢠284D00⡞005200⠙284C00⠛000600⣏004D00⢀067D00⡞007D00⠛067D00⢣285200⡀050B00⣝117D00⣑007D00⣄0B7D00⣘280B00⣍000600⣇067D00⢸06A900⣋004700⡁000600⣍285200⢘284C00⡇280600⣝003C00⢸297D00⡟004C00⠛007D00⣄280600⢑004D00⢀285200⡜005200⠙282100⢳004C00⡄280600⣏001100⠈11A900⢉11A900⣁281100⡄000600⡄000100⠂000100⡀002800⠂000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⢢000100⢀000600⢂281100⠰064D00⠴0B4D00⡶000B00⠳280600⠶280600⡶001100⠘007D00⠶004C00⠤005200⠶280B00⢾001100⠘007D00⠶004D00⠤007D00⠶281100⠣280B00⣶064D00⠶051700⠘067D00⠶280B00⣷280B00⣶064D00⠰004100⠇050B00⣷280B00⣶064C00⠰051C00⠇280600⡶001100⠸067800⠦004D00⠴004D00⠇000600⣲001100⠘005200⠶001C00⠤005200⠶280C00⠃000600⢖000600⠧281C00⠸112100⠷281700⡦000600⡂000600⠂002800⠆002800⠂000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⡨002800⡭000600⢅000600⢦064D00⢨17A900⣭28A900⡅280B00⣼280B00⣽007D00⢠00A900⣠007D00⣀007D00⣄007D00⣤287D00⣤287D00⣤287D00⣤287D00⣤287D00⣤287D00⣤287D00⣤067D00⣀287D00⣤287D00⣤287D00⣤287D00⣤28A900⣀287D00⣤287D00⣤287D00⣠287D00⣤287D00⣤284D00⣤287D00⣤284D00⣄004D00⣄284D00⣄004D00⣤005200⣄007D00⣄004D00⣤007D00⣄005200⣠280B00⡭050600⡯001100⠈0C5200⢩0B5200⣭281100⡅000600⢈000600⠈002800⡌000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⢐000600⠐000100⡈000600⢆280B00⣓06A900⣲16D400⡒001100⠃280B00⣷050B00⣷000C00⡘06A900⠳11A900⡒117D00⡒117D00⢒117D00⢒16A900⠒16A900⡒16A900⡒16A900⠒16A900⢒11A900⢒117D00⡒16A900⢒16A900⠒16A900⢒16A900⢒16A900⠒16A900⢒16A900⠒16A900⡒117D00⠒11A900⠒117D00⠒117D00⠒115200⡒114D00⡒105200⣒114D00⡒0B5200⣒114C00⢒107D00⠒0C5200⡒004700⠃280600⣺280B00⡲000600⣃00A900⢐117D00⡒281C00⣆000600⣒000600⢐000100⠐002800⠠000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠬000600⠔000600⠥000600⣭284D00⢨1CD400⢭29D400⡍000B00⣽280C00⢭060B00⠭060B00⡭000C00⣭06A900⠹16A900⡭16A900⠭16A900⡭16A900⢭1CA900⡭16A900⠭16A900⠭16A900⠭16A900⢭16A900⠭16A900⢭16A900⢭16A900⠭16A900⠭16A900⠭16A900⠭16A900⠭11A900⠭11A900⠭11A900⠭11A900⠭11A900⠭117D00⠭0B7D00⣭117D00⠭117D00⠭117D00⠭0B4D00⣭067D00⡭007800⠁280B00⣭280B00⣭280B00⣭280B00⢽004100⠈17A900⢭0BA900⣥000B00⡭000600⠤000600⠠000100⠁002800⢀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⡘000600⡀000600⡣280B00⣒281C00⣐0CD400⣐47D400⡒004100⣓061100⣒281100⣚060C00⢐281100⣒281100⣒051100⣓067700⠘16A900⢒1CA900⣒1CA900⣒17A900⣛1CA900⣒17A900⣒16A900⣒16A900⣒17A900⣒16A900⣒16A900⣓16A900⣒16A900⣒11A900⢒16A900⣒16A900⣒11A900⣒11A900⣒117D00⣒117D00⣒117D00⣒117D00⣒0C7D00⣒11A900⣒117D00⣒11A900⣒28A900⠛280B00⣳280B00⣳280B00⣓280B00⣗280B00⣳280B00⣻280C00⣀287D00⢘17A900⣒287800⡂280B00⣇000600⣃000600⢂000500⡀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠠000600⠠000600⠨280600⠮281100⠤0B7D00⢤4CFF00⠤06D400⡇11FF00⠠06D400⣤061600⡬061600⠤061100⠥061100⠬061100⠬061100⠬067200⠈06A900⠽16A900⠭16A900⠭16A900⠭16A900⠭17A900⠭17A900⠭16A900⠭17A900⠭41A900⠭3CA900⠭107D00⠯0B2100⠭0CA900⠭16A900⠬16A900⠭16A900⠭16A900⠭16A900⠬16A900⠭167D00⠭11A900⠥117D00⠭117D00⠬287700⠏050B00⣽280B00⢯280B00⡯280B00⡯050B00⣯280B00⡿004700⢠06A900⠼067200⡌16D400⠭11D400⠤281600⠤280600⠤000600⠅000100⠄002800⠄000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⣘000600⣈000600⣚280B00⣻054700⢚17D400⣘21D700⣛0BA900⣁4CD400⣓21D400⣛6DD400⣓0BD400⣀061700⣛061700⣓061600⣓061100⣓291100⣛061100⣚28A400⠛16A900⣛16A900⣛16A900⣛16A900⣛16A900⣛16A900⣛16A900⣛17A900⣂16A900⣀0BA900⣀0B4D00⣛11A900⣀16A900⣀16A900⣚16A900⣛16A900⣛16A900⣛11A900⣛11A900⣛11A900⣛0B7D00⡛284700⠃060B00⣓280B00⣻280B00⣻280B00⣻060C00⢀284D00⢀06D400⣐11A900⣛11A900⣛11D400⣃29A900⢸1CD400⣛067D00⣂280B00⣏000600⣃000600⢑002800⢑000000⠀000000⠀000000⠀000000⠀000000⠀002800⠠002800⠲000600⠦280600⡺281100⠴287D00⢴4CD400⠤0BD400⠇11D400⢼4CA900⠶4CD400⠤4CA900⠴4CA900⠾0BD400⣶0B4C00⡄061600⠶061100⠦061100⠦291100⠴061100⠤284700⠹11A900⠶16A900⠤16A900⠤16A900⠦16A900⠤17A900⠦16A900⠴16A900⠤117D00⠦0C7800⠴117D00⠶117D00⠴16A900⠴16A900⠤167D00⠴16A900⠤167D00⠦117D00⠦287800⠏281100⠵060B00⠴280B00⢿280B00⢿060B00⠴000C00⠖285200⢰0C7D00⠶167D00⠶16A900⠴167D00⠦16A900⠶064700⡮117D00⠿0B7D00⠧280C00⠦280600⠦000600⠢000600⠠002800⠂000000⠀000000⠀000000⠀000000⠀002800⢬000600⢡050600⣹050C00⣈061C00⣉1CD400⣸4CD400⣉16A900⣉7CD400⣉51D400⣉4CD400⣉77D400⣉77D400⣉51D400⣉51D400⣉11D400⣄0B7D00⡀0B1700⣍0B1100⣩0B1100⣉0B1100⣍067D00⠈11A900⢩47A900⣉47A900⣉47A900⣉47A900⣉47A900⣉47A900⣉17A900⣉1CA900⣉1CA900⣉17A900⣉47A900⣉1CA900⣉42A900⣉47A900⣉1CA900⣉28A900⠋061100⡁061100⡁060C00⢀060C00⢁060C00⠁06A900⣀11A900⣜47A900⣉1CA900⣉47A900⣉47A900⣉47A900⣉47D400⣉11D400⣁11A900⢉47A900⣉067D00⣁050B00⣯280600⣋000100⢌000500⠂002800⢀000000⠀000000⠀002800⠐000100⠐000600⡒280600⡶281100⢲067800⢲4DA900⠖11D400⠗0BA900⣾4CA900⠶4CA900⠶7CA900⠖4CA900⠶16A900⠺4CA900⠶21D400⠶1CA900⠶16D400⠶067D00⣆061600⠶061100⠲061100⠒061100⠒061100⠆06A900⠲17A900⠖16A900⠖17A900⠖177D00⠖16A900⠖16A900⠶167D00⠶167D00⠖16A900⠖16A900⠖16A900⠖16A900⠖0B7D00⠶061700⠃281100⠶280C00⠶060B00⠶280C00⠶064200⢀287D00⡶17A900⠲16A900⠲16A900⠖16A900⠶0BA900⠲1CA900⠶17A900⢶1CA900⠶1CD400⠶064C00⡖17D400⠶0BA900⡶290C00⠄280600⡖000600⠆000600⠂002800⠂000000⠀000000⠀002800⡡000600⡡000600⢭060B00⡨064700⢨17D400⣨78D400⡭16A900⢭4DD400⣭4CD400⢭4CD400⠭4CD400⠍17D400⡍16A900⣭16D400⢍47D400⠭4CD400⠍1CD400⣭1CD400⣭16A900⣧06A900⣄061700⢭061100⡭061600⡭061100⣭06D400⠉16A900⢭16A900⣭16A900⣭16D400⣭16A900⣭1BA900⣭17A900⣭16A900⣭16A900⣭16A900⣭0BA900⡍294700⠁061100⡉291100⡡061100⣁061100⢉287D00⣤16A900⣬16A900⣭16A900⣭17D400⠭16D400⠉11D400⠉105200⣭17D400⠉47D400⠩4CD400⢩4DD400⣩0BD400⣏11D700⢹1CD400⣍067800⣅061100⡀280600⡭000600⠌000100⠄002800⠄002800⠐000600⠐000600⡘280B00⣲061600⠐0B7D00⢲47D400⣖16D400⡓10D400⣲4CD400⠒4CD400⠒4CD400⠒17D400⡒16D400⣒16A900⡒16D400⣒17D400⡒1CD400⣒1CD400⠒1CD400⣒1CD400⢒1CD400⢒06D400⣖067200⡒061600⣒061600⣒281600⢒064700⠘0CA900⠒16A900⢒16A900⢒16A900⢒16A900⠒16A900⢒16A900⠒16A900⡒06A900⠒061100⠒061100⠒061100⠒061100⠒287700⣀0BD400⢒16A900⢒16A900⡒16A900⠒16A900⢒16D400⠒11D400⣒11A900⡖117D00⠒11D400⣖16D400⣒4CD400⠒4CD400⠒47D400⣒0B5200⡚21D700⠒0BD400⣖281700⣂280B00⣗000600⢓000100⠐002800⡐002800⠬000600⠌000600⡬280B00⣯061700⠬11D700⢬51D400⠭117D00⠭4CD400⠭4CD400⠭4CD400⠭4CD400⠭4CD400⠭4CD400⠭1CD400⠭51D400⠭4CD400⠭4CD400⠭4CD400⠭21D400⠭1CD400⠭1CD400⡭1CD400⠭6DD400⠥06D400⠤061600⠭061600⠭051100⣭284700⠬06A900⠹0B7D00⠯0B7D00⠭0BA900⠩0B7D00⠽067D00⠽287D00⠉061100⠬051100⠭291100⠭281C00⠩0BA900⠤16A900⠭16A900⠭16A900⢭1BD400⠭1CA900⠭1CD400⠭1CA900⠭1CD400⠭47D400⠭17D400⠬4CD400⠭47D400⠭4CD400⠭4CD400⠭4CD400⠭0BD400⡥11D400⠽1CD400⠭287800⡥051100⡅280600⠥000600⠅000100⠄002800⣚000600⣊280600⣺281100⣒28A900⢐77D400⣒16D400⡗11D400⣲4CD400⣒4CD400⣒4CD400⣒4CD400⣒4CD400⣒4DD400⣒4CD400⣒21D400⣓17D400⣓41D400⣛1CA900⣛1CD400⣚1CD400⣒1CD400⣐11A900⣖11D400⣒11A900⣲0CA900⣒06D400⣀281100⣛061100⣒061100⡂28A900⠙16A900⢒17A900⣒06A900⡛281600⠃051100⣚061100⡒287700⢀06A900⣰11D400⣒0CD400⣐0BA900⣒0C7D00⣢16D400⣀11D400⣀117800⣛11A900⣛11D400⣛11D400⡚17D400⠒4CD400⢒1CD400⣒1CD400⣒4CD400⣒4CD400⣒1CD400⣛47D400⣒0B7800⣚4CD400⣒0BD400⣂061600⡀280600⣓000600⣃000100⠁000600⠠000600⡢280B00⡯061700⠤11D700⢴4CD400⠤117D00⠥4CD400⠤47D400⠬16D400⠭16D400⠿1CD400⠭17D400⠤1CD400⠤11D400⠿1CD400⠭42D400⠤1CD400⠬1CD400⠬16D400⠭11A900⠯41D400⠤1CD400⠭17D400⠤1CD400⠤1CD400⠬17A900⠬06D400⠦281700⡄280C00⠥050C00⠥287700⠈004C00⠏003600⡽060B00⠬280C00⠭287D00⢠11A900⠬16A900⠬16A900⠤16A900⠤16A900⠬11A900⠤11A900⠬0BA900⠯11D400⠭11D400⠤11D400⠤11A900⠭0C7D00⠵0CD400⠤16D400⠤11A900⠭167D00⠽0CA900⠿11D400⠭17D400⠬0BD400⡥0BD400⠽47D400⠤064D00⠄280B00⡯000600⠦000600⠂000600⣈050600⣺281100⣙0BA900⣀4DD700⣛17D700⡋0BA900⣛16D400⣉47D400⣁72D400⣀4DD400⣐1CA900⣓17D400⣁72D400⣒4CD400⣐47D400⣒47D400⣒47D400⣒72D400⣐11A900⣛1CD400⣒47D400⣒1CA900⣀1CD400⣀16A900⣀11A900⣀11A900⣈10A900⣉367D00⣉064C00⣄280B00⣻280B00⣻280B00⣛050B00⣻281700⢠0B7800⣌37A900⣉0BA900⣉11A900⣀11A900⣀16A900⣀16A900⣀16A900⣀17A900⣀11A900⣂0B7D00⣐42A900⣐42D400⣀17A900⣒42D400⣐47D400⣒42D400⣀11A900⣐1CA900⣒47D400⣀1CD400⣀16D400⣈0BD400⣋067800⣙21D400⣛11D400⣃064C00⡀280600⣙000600⡐000600⠰280B00⡺281700⢴0BA900⢾1CA900⠷0B7800⠧1CD400⠾4CA900⠶4CD400⠤11A900⠿16A900⢤17A900⢶4CA900⠶4CA900⠶4CA900⠶4CA900⠶4CA900⠶47A900⠶17A900⠦0BA900⠶1CA900⠶1CA900⠶11A900⠶06A900⠷0B7700⠿114700⢋0B4D00⡥0B7D00⠤287D00⠶281700⠂280B00⢾280B00⠾000B00⠾280B00⠷280B00⡾007800⠲067D00⠦0B7800⡤0B4700⣍0B4C00⠚067800⠾06A900⠶117D00⠶167D00⠦0CA900⠦064700⠴16A900⠶16A900⠶16A900⠶1BA900⠴1CA900⠶1CA900⠦21A900⠶0BD400⠦0B7D00⠿16A900⠶17A900⠶4CD400⠤06A900⡆0BD400⢸16A900⠶064C00⠆280600⡶000600⠢280600⣩061000⢨0B7800⢩4CD400⣉47D400⡉11A900⣹4CD400⣉7CD400⣉17D400⣍16A900⣩4DD400⣉4CD400⣉4CD400⣉4CD400⣉77D400⣉77D400⣉7CD400⣉4CD400⣉1CD400⡍11A900⣉11A900⡉11A900⣥1CA900⣄47A900⣉1CA900⣉42A900⣉1CA900⡉06A900⠋061100⡁060B00⣩280B00⣟00A900⣠0BA900⣤284700⡀060B00⣉060B00⣅285200⠈0B7D00⢫16A900⣉17A900⣉47A900⣉41A900⣀0CA900⣤0B7D00⡍0B7800⣁117D00⡈1CA900⠉1CA900⣍1CA900⣉1CA900⣩47D400⣉4CD400⣉4CD400⣉47D400⣉17D400⣁11A900⡉47D400⢉4CD400⣉1CD400⣍0BA900⢈47D400⣉11A900⣁281100⡇280600⡍280600⠲281100⠶06A900⢸21D400⠲0B7D00⠗11D400⣾21A900⢶47D400⠖107D00⠲17A900⢲4CD400⠒4CA900⢶21D400⡶17D400⠒1CD400⠒47A900⠒16A900⣶11A900⣶1CD400⠖1CA900⠲0CA900⡶067800⣦0B1C00⡛06A900⠓067D00⠶06A900⠖281100⡳060B00⠶280C00⢲281100⢂007800⣴117D00⠒117D00⠒0B7D00⣶004700⣄280B00⢷280C00⢖050B00⣾064D00⠐067D00⠶287D00⠖064D00⠊064700⣀28A400⣴11A900⠖11A900⠶0BA900⣶0B7D00⣶114800⣶115200⡒11A900⠒11A900⠶1CA900⠲1CA900⠒1CA900⠲067D00⡖0B7D00⠺21D400⠖21D400⠲287700⡆0BA900⢲11A900⣶051600⡆280600⠖280B00⢩061100⠨42D400⢭4CD400⠭06A900⣌11FF00⠩21D400⣭1CD400⣭0B7D00⣭16D400⠭17D400⠉11D400⣩16A900⣭4CD400⡭4CD400⢭21D400⣭21D400⢭4CD400⠭21D400⣭17A900⣭16A900⣭1CD400⠭17A900⣭0BA900⡥051100⣭061100⡁061100⡁060C00⡡281100⣭067D00⠈0BA900⠉0BA900⠉0BA900⠉0BA900⠉0BA900⠉281100⣯061100⠁280C00⣭060C00⢁280C00⣭064700⠸16A900⣬11A900⣭16A900⣭16A900⣭1CA900⣭1CA900⣭1CD400⡭1CD400⡭16D400⣭1CA900⣭11A900⣤0B7D00⣭0BA900⡍11D400⠉067D00⠍0BA900⢨1CD400⣭0CD400⡭06D400⢉06A900⣬1CD400⡭067D00⡅000B00⡭000600⠂280B00⡳281100⠺06D400⠛1CD400⢒0BD400⣷0CA900⣌067D00⢛0CA900⣔0B5200⣒41D700⢒4CD400⡒4CD400⡒4CD400⡒1CD400⣒47D400⢒1CD400⣒1CD400⢒1CD400⡒1CD400⡒17A900⣒11D400⡒017D00⠃061100⡒061100⠒061100⠐281100⣒057800⣐11A900⣒11A900⣒117D00⣒117D00⡒16A900⣒11A900⣒16A900⣒16A900⣒06A900⣒287200⡐060C00⡀061100⠂281100⣒281100⣚067D00⠳16A900⣒16A900⡒16A900⡒16A900⣒16A900⣒16A900⣒16A900⣒1CD400⢒1CD400⡒1CD400⣒17A900⡒06A900⠒0BA400⢀0B7D00⡀284D00⢛06A900⣴1CD400⣒11D400⠒065200⠃280600⡒000600⡂000100⠈000600⠌000B00⠭281100⠩067200⠈0BD400⠩42D400⠭17D400⠥06D400⡍0BD400⠧067D00⣭11D400⠩11D400⠽21D400⠭21D400⠭1CD400⠭1CD400⠭17A900⠭1BA900⠭1BA900⠭06A900⠏287200⠩051100⢭060C00⠅050C00⡭281100⢭06A900⣤117D00⠭11A900⠭11A900⠭117D00⠭16A900⠭16A900⠭16A900⠭16A900⠭16A900⠭16A900⠭16A900⠥284C00⡄061100⠨290C00⠈060B00⠭060C00⠄287D00⠉0BA900⠭117D00⠭11A900⠭16A900⠭16A900⠭16A900⠭17A900⠭41A900⠭06A900⠏06A400⠁28D400⡤28A900⠏28A900⡤1CD400⠬11A900⠭28A300⠍004700⠉280600⠍000600⠅000100⠄002800⠈002800⢊000600⡑000600⡑000B00⣚280C00⠙061700⠛06A900⠛16A900⣛0BA900⣓01D400⣘11D400⢲0BD400⣀067D00⣛0BA900⠛17D400⠒1CA900⣚16A900⣚0BA900⡛284C00⠃281100⣚280C00⣛280C00⣚060C00⠐287D00⢀0BA900⣚11A900⣓11A900⣓11A900⣒11A900⣒11A900⣒11A900⣒11A900⣚11A900⣒16A900⣓11A900⣒11A900⣓11A900⣒16A900⣓06A900⣂001100⣓060B00⣓280B00⣻280B00⣟280C00⡂007D00⠛11A900⢒117D00⣒114D00⡛0BA900⠚287700⠛01A900⣀0B7D00⣰28A900⢛067D00⣐117D00⣚0B7D00⡚064C00⠛280B00⣛000B00⢛000600⠘000100⢈000100⠈002800⠐000000⠀000000⠀002800⠠002800⠱000100⠐000600⠌000600⠭280B00⠻287200⠩287D00⠿16D400⠬06A900⣦067D00⡝28D400⠿0CA900⠦06A900⣤286D00⡬287700⠉060B00⠵060B00⠭280B00⡿060B00⠥280B00⠿284C00⣠117D00⠤117D00⠤167D00⠤117D00⠤16A900⠤16A900⠤11A900⠤117D00⠤167D00⠤11A900⠤117D00⠤16A900⠤16A900⠤117D00⠤16A900⠤117D00⠬287D00⢦281100⡄280B00⡯280B00⡯280B00⢯280B00⠯284700⠈284700⠉281600⣠067D00⠤0B7D00⠶007700⠟005200⠡0CA900⠤06A900⠯284700⠏001100⠍000600⠄000600⠅000100⠐002800⠡000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠁000600⠁000600⠑000600⡉000600⡫280B00⣛067D00⠈06A900⠛16A900⣙067D00⣆28A900⡙00A900⠋061100⠁060C00⠈280B00⣻280B00⣻060B00⣊061100⢀067D00⣀284C00⣉287D00⠉067D00⠙06A900⠛0BA900⠛0C7D00⠛0BA400⠛0C7D00⠛0C7D00⠛117D00⠛0C7D00⠛0B7800⣛0C7D00⠛0B7D00⠛067D00⡛067D00⠛287D00⠛284D00⣉064C00⣁052200⡀050B00⣟280B00⣏050600⣻280B00⣹280B00⣛001C00⠈004D00⠛287D00⣁0C5200⣚104D00⣛295200⠋281700⠃000600⢑000600⠈000100⠐002800⠑000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠠002800⠂000600⠂000600⠊000600⠲281100⠑281600⠞064C00⠳115200⠶284D00⢦001100⡀280B00⠾280B00⡿280B00⡷281100⢠287800⠶117800⠶117800⠶117800⠶117800⠶107800⠶0B4D00⠶0B7800⠶0B4D00⠶0B4D00⠶067800⠶0B7800⠶0B7800⡶0B7800⠶0B7800⠶0B7800⠶0B4D00⠶0B4D00⠶117800⠶117800⠶114700⠶0C4C00⠶001C00⡆280B00⠷050600⢷280600⠲000600⠗001700⣠004D00⠶064C00⠷281700⠟000B00⠯000600⠒002800⠜000100⠄002800⠂002800⠂000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠁000100⠈000500⠁000600⢉000B00⢈000C00⠙285200⠉065200⢩165200⣁005200⣤281100⡉285200⢠167D00⣌167D00⣉167D00⣉16A900⣉16A900⣉167D00⣉167D00⣉167D00⣉167D00⣉16A900⣉16A900⣉16A900⣉16A900⣉16A900⣉17A900⣉167D00⣉167D00⣉167D00⣉167D00⣉167D00⣉167D00⣉115200⣍115200⣩112700⣉285200⣄280B00⡝005200⢠067D00⣼167D00⡉065200⠋281C00⠋000600⠈000600⡀000100⠁002800⠁002800⠂000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠠002800⠐002800⠪000600⠂000600⠳281C00⠘067D00⠲0B7D00⠒004700⣆007D00⠲117D00⠒117D00⠒114D00⠒117D00⠒117D00⠒117D00⠒117D00⠒11A900⠒11A900⠒11A900⠒11A900⠒11A900⠒11A900⠒117D00⠒117D00⠒117D00⠒117D00⠒117D00⠒11A900⠒117D00⠒0C7D00⠒117D00⠒007D00⠖001700⣃002200⣶0C2100⠒281C00⠗001100⠓002800⡚002800⠖000100⠂000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠈002800⠈000600⠈000600⠈000600⠡001100⠉067D00⠉365200⢭0C5200⣥284D00⣌067D00⠩0B5200⣭0C7D00⢭115200⣭115200⢭105200⣭117D00⠭117D00⠭11A900⢭11A900⠭117D00⠭117D00⠭0C7D00⡭117D00⠭117D00⠭0B7D00⣭117D00⠭117D00⠭117D00⠭067D00⡭007D00⠉284D00⣤0B4D00⣭0B2100⠍001C00⠉000600⠩002800⠩000600⠈002800⠈000000⠀002800⠁000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠂000100⠂000100⠂000600⠊000B00⡺064C00⠐0B2200⢒065200⣒004D00⣀065200⠒117D00⢒117D00⣒117D00⣒0B5200⣒0C5200⣒0C4D00⣒107D00⣒117D00⣒11A900⣒117D00⣒117D00⠒117D00⣒117D00⣒117D00⣒067D00⡲005200⢃284C00⣰117D00⡒285200⠒001600⠓000600⢂000600⠂000100⠂002800⠐000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠂000600⠡000600⠠000B00⠈001100⠈064C00⠩0C5200⠭065200⠤004700⡌284200⠩284700⠉284700⠉064700⠉064700⠉064C00⠉067800⠉067700⠉054800⠉282100⠉284700⠉284700⠉284100⠉285200⠤0B5200⠬065200⠍004700⠉000B00⠅000600⠅000100⠄002800⠈002800⠈000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠐002800⠈002800⠚000100⠂000600⠊284100⠘064700⢛0B1C00⣛052100⣃002200⡐012100⢲0B5200⣒064D00⣒0B5200⣒065200⣒064D00⣒0B4D00⣒0B5200⡒002100⢒285200⣀0B2100⣚0B1C00⡓281700⠛000600⠉000100⠐000500⠂002800⠊000000⠀002800⠂000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠈002800⠠000100⠈000500⠈000B00⠌001100⠹0B1700⠽061C00⠿281C00⠦004200⡙002100⠿062200⠦0B5200⠶115200⠤004C00⠟001C00⠡281C00⠾061C00⠿004100⠯000B00⠍002900⡵000100⠄000100⠂000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠂000100⠂000600⠁001100⠈281100⠻0B1C00⠙101C00⣛001C00⣆281C00⡙284D00⠛005200⣡064D00⣜0B2200⣁291700⡛004700⠁000600⠁000100⢀002800⠐000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠠002800⠐002800⠔000B00⠺284100⠰291C00⠶061C00⠶001700⠶0B1C00⠶281600⠟001100⠋000600⠁002800⠰000000⠀002800⠄000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀002800⠈002800⠈002800⡉000600⠁001600⠉001700⠉291C00⠝001600⠋000600⠉000600⠁002800⢉002800⠈000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀000000⠀]]) - -local width, height, scale, scaleMod = image.getWidth(source), image.getHeight(source), 1, 0.1 -local targetMinimalScale, scaledWidth = 2 / width, width -local bufferWidth, bufferHeight = screen.getResolution() - -while true do - local transformed = image.transform(source, math.ceil(width * scale), height) - screen.clear(0x0) - screen.drawImage(math.floor(bufferWidth / 2 - image.getWidth(transformed) / 2), math.floor(bufferHeight / 2 - image.getHeight(transformed) / 2), transformed) - screen.update() - - scale = scale - scaleMod - if scale < targetMinimalScale then - scale, scaleMod = targetMinimalScale, -scaleMod - elseif scale > 1.0 then - scale, scaleMod = 1.0, -scaleMod - end - - local eventType = event.pull(0) - if eventType == "touch" or eventType == "key_down" then - break - end -end diff --git a/Wallpapers/AhsokaTano.pic b/Wallpapers/AhsokaTano.pic deleted file mode 100644 index ed942c48..00000000 Binary files a/Wallpapers/AhsokaTano.pic and /dev/null differ diff --git a/Wallpapers/Block.pic b/Wallpapers/Block.pic deleted file mode 100644 index d2b162ba..00000000 Binary files a/Wallpapers/Block.pic and /dev/null differ diff --git a/Wallpapers/Flight.lua b/Wallpapers/Flight.lua deleted file mode 100644 index d6bd5841..00000000 --- a/Wallpapers/Flight.lua +++ /dev/null @@ -1,134 +0,0 @@ - --- This's a copy-paste of orignal software from https://github.com/Maxu5/ - -------------------------------------------------------------------------------------- - -local screen = require("Screen") - -local starAmount, delay, colors, background, braille1, braille2, braille3, braille4, braille5, braille6, braille7, braille8, braille9, braille10 = - 100, - 0.05, - { - 0x0F0F0F, - 0x1E1E1E, - 0x2D2D2D, - 0x3C3C3C, - 0x4B4B4B, - 0x5A5A5A, - 0x696969, - 0x787878, - 0x878787, - 0x969696, - 0xA5A5A5, - 0xB4B4B4, - 0xC3C3C3, - 0xD2D2D2, - 0xE1E1E1, - 0xF0F0F0, - }, - 0x0F0F0F, - "⠁", "⠈", "⠂", "⠐", "⠄", "⠠", "⡀", "⢀", "⠛", "⣤" - --- Faster access without tables indexing -local computerUptime, tableRemove, mathSin, mathCos, mathRandom, screenUpdate = - computer.uptime, - table.remove, - math.sin, - math.cos, - math.random, - screen.update - --- Other variables, nil by default -local stars, deadline, hitsDeadline, i, star, rotationAngle, targetX, targetY, startWay, x, y, xmod, ymod, prevX, prevY, signalType, char, color = {}, 0 - -return function(self) - hitsDeadline = computerUptime() >= deadline - - -- Spawing stars - while #stars < starAmount do - rotationAngle = mathRandom(6265) / 1000 - - targetX, targetY, startWay = - mathCos(rotationAngle) * self.width * 0.75 + self.width / 2, - mathSin(rotationAngle) * self.width * 0.375 + self.height / 2, - mathRandom() - - stars[#stars + 1] = { - targetX = targetX, - targetY = targetY, - startX = (targetX - self.width / 2) * startWay + self.width / 2, - startY = (targetY - self.height / 2) * startWay + self.height / 2, - way = 0.01, - speed = mathRandom(25, 75) / 1000 + 1, - } - end - - screen.drawRectangle(self.x, self.y, self.width, self.height, background, colors[1], " ") - - -- Drawing stars - i = 1 - while i <= #stars do - star = stars[i] - - x, y = - star.startX + (star.targetX - star.startX) * star.way, - star.startY + (star.targetY - star.startY) * star.way - - if x > self.width + 1 or x < 1 or y > self.height + 1 or y < 1 then - tableRemove(stars, i) - else - -- Star type - xmod = x * 2 - xmod = (xmod - xmod % 1) % 2 - - ymod = y * 4 - ymod = (ymod - ymod % 1) % 4 - - -- Star color - color = star.way * 4.0156862745098 * #colors - color = colors[color - color % 1 + 1] or 0xFFFFFF - - if star.way < 0.3 then - if xmod == 0 then - if ymod == 0 then - char = braille1 - elseif ymod == 1 then - char = braille3 - elseif ymod == 2 then - char = braille5 - else - char = braille7 - end - else - if ymod == 0 then - char = braille2 - elseif ymod == 1 then - char = braille4 - elseif ymod == 2 then - char = braille6 - else - char = braille8 - end - end - else - if ymod < 2 then - char = braille9 - else - char = braille10 - end - end - - screen.set(x - x % 1, y - y % 1, background, color, char) - - i = i + 1 - - if hitsDeadline then - star.way = star.way * star.speed - end - end - end - - if hitsDeadline then - deadline = computerUptime() + delay - end -end \ No newline at end of file diff --git a/Wallpapers/Lines.wlp/Main.lua b/Wallpapers/Lines.wlp/Main.lua new file mode 100644 index 00000000..7637c615 --- /dev/null +++ b/Wallpapers/Lines.wlp/Main.lua @@ -0,0 +1,109 @@ +local screen = require("Screen") +local fs = require("Filesystem") +local system = require("System") +local GUI = require("GUI") + +local wallpaper = {} + +-------------------------------------------------------------------------------- + +local configPath = fs.path(system.getCurrentScript()) .. "Config.cfg" + +local function saveConfig() + fs.writeTable(configPath, wallpaper.config) +end + +if fs.exists(configPath) then + wallpaper.config = fs.readTable(configPath) +else + wallpaper.config = { + backgroundColor = 0x161616, + lineCount = 10, + lineColor = 0xFFFFFF + } +end + +-------------------------------------------------------------------------------- + +local function reset() + wallpaper.points = {} + + local resX, resY = screen.getResolution() + for i = 1, wallpaper.config.lineCount do + table.insert(wallpaper.points, { + x = math.random(0, resX-1), + y = math.random(0, resY-1), + vx = (2 * math.random() - 1) * 25, + vy = (2 * math.random() - 1) * 25 + }) + end + + wallpaper.lastUpdateTime = computer.uptime() +end + +reset(object) + +function wallpaper.draw(object) + screen.drawRectangle(object.x, object.y, object.width, object.height, wallpaper.config.backgroundColor, 0, " ") + + for i = 1, wallpaper.config.lineCount - 1 do + screen.drawSemiPixelLine( + math.floor(wallpaper.points[i ].x), math.floor(wallpaper.points[i ].y), + math.floor(wallpaper.points[i+1].x), math.floor(wallpaper.points[i+1].y), + wallpaper.config.lineColor + ) + end + + local currentTime = computer.uptime() + local dt = currentTime - wallpaper.lastUpdateTime + wallpaper.lastUpdateTime = currentTime + + for i = 1, wallpaper.config.lineCount do + local point = wallpaper.points[i] + + point.x = point.x + point.vx * dt + point.y = point.y + point.vy * dt + + if point.x < 0 or point.x >= object.width then point.vx = -point.vx end + if point.y < 0 or point.y >= object.height then point.vy = -point.vy end + end +end + +function wallpaper.configure(layout) + layout:addChild(GUI.colorSelector(1, 1, 36, 3, wallpaper.config.backgroundColor, "Background color")).onColorSelected = function(_, object) + wallpaper.config.backgroundColor = object.color + saveConfig() + end + + layout:addChild(GUI.colorSelector(1, 1, 36, 3, wallpaper.config.lineColor, "Line color")).onColorSelected = function(_, object) + wallpaper.config.lineColor = object.color + saveConfig() + end + + local slider = layout:addChild( + GUI.slider( + 1, 1, + 36, + 0x66DB80, + 0xE1E1E1, + 0xFFFFFF, + 0xA5A5A5, + 1, 10, + wallpaper.config.lineCount, + false, + "Line count: " + ) + ) + + slider.roundValues = true + + slider.onValueChanged = function(workspace, object) + wallpaper.config.lineCount = math.floor(object.value) + saveConfig() + reset() + end +end + +-------------------------------------------------------------------------------- + +return wallpaper \ No newline at end of file diff --git a/Wallpapers/Logic.pic b/Wallpapers/Logic.pic deleted file mode 100644 index bf318b43..00000000 Binary files a/Wallpapers/Logic.pic and /dev/null differ diff --git a/Wallpapers/Solid color.wlp/Main.lua b/Wallpapers/Solid color.wlp/Main.lua new file mode 100644 index 00000000..81896e61 --- /dev/null +++ b/Wallpapers/Solid color.wlp/Main.lua @@ -0,0 +1,41 @@ +-- The simplest solid color wallpaper + +local system = require("System") +local fs = require("Filesystem") +local screen = require("Screen") +local GUI = require("GUI") + +local wallpaper = {} + +-------------------------------------------------------------------------------- + +local configPath = fs.path(system.getCurrentScript()) .. "/" .. "Config.cfg" + +local function saveConfig() + fs.writeTable(configPath, wallpaper.config) +end + +if fs.exists(configPath) then + wallpaper.config = fs.readTable(configPath) +else + wallpaper.config = { + color = 0x161616 + } +end + +-------------------------------------------------------------------------------- + +wallpaper.draw = function(object) + screen.drawRectangle(object.x, object.y, object.width, object.height, wallpaper.config.color, 0, ' ') +end + +wallpaper.configure = function(layout) + layout:addChild(GUI.colorSelector(1, 1, 36, 3, wallpaper.config.color, "Color")).onColorSelected = function(_, object) + wallpaper.config.color = object.color + saveConfig() + end +end + +-------------------------------------------------------------------------------- + +return wallpaper \ No newline at end of file diff --git a/Wallpapers/Stars.wlp/Main.lua b/Wallpapers/Stars.wlp/Main.lua new file mode 100644 index 00000000..1bf2cda4 --- /dev/null +++ b/Wallpapers/Stars.wlp/Main.lua @@ -0,0 +1,195 @@ +local screen = require("Screen") +local fs = require("Filesystem") +local GUI = require("GUI") +local system = require("System") +local color = require("Color") + +-------------------------------------------------------------------------------- + +local braille1, braille2, braille3, braille4, braille5, braille6, braille7, braille8, braille9, braille10 = "⠁", "⠈", "⠂", "⠐", "⠄", "⠠", "⡀", "⢀", "⠛", "⣤" + +-- Faster access without tables indexing +local computerUptime, tableRemove, mathSin, mathCos, mathRandom, screenUpdate = computer.uptime, table.remove, math.sin, math.cos, math.random + +-------------------------------------------------------------------------------- + +local wallpaper = {} + +local configPath = fs.path(system.getCurrentScript()) .. "Config.cfg" +local function saveConfig() + fs.writeTable(configPath, wallpaper.config) +end + +if fs.exists(configPath) then + wallpaper.config = fs.readTable(configPath) +else + wallpaper.config = { + starAmount = 100, + backgroundColor = 0x0F0F0F, + starColor = 0xFFFFFF, + delay = 0.05, + initialWay = 0.01, + speed = 100 + } +end + +-------------------------------------------------------------------------------- + +local stars, deadline, colors + +local function resetColors() + colors = {} + + local colorCount = 16 + for i = 1, colorCount do + table.insert(colors, color.transition(wallpaper.config.backgroundColor, wallpaper.config.starColor, (i - 1) / (colorCount - 1))) + end +end + +local function resetStars() + stars = {} + deadline = 0 +end + +resetColors() +resetStars() + +function wallpaper.draw(object) + local hitsDeadline = computerUptime() >= deadline + + -- Spawning stars + while #stars < wallpaper.config.starAmount do + local rotationAngle = mathRandom(6265) / 1000 + + local targetX = mathCos(rotationAngle) * object.width * 0.75 + object.width / 2 + local targetY = mathSin(rotationAngle) * object.width * 0.375 + object.height / 2 + + local startWay = mathRandom() + table.insert(stars, { + targetX = targetX, + targetY = targetY, + startX = (targetX - object.width / 2) * startWay + object.width / 2, + startY = (targetY - object.height / 2) * startWay + object.height / 2, + way = wallpaper.config.initialWay, + speed = (mathRandom(25, 75) / 1000 + 1) * (wallpaper.config.speed / 100) + }) + end + + -- Clear background + screen.drawRectangle(object.x, object.y, object.width, object.height, wallpaper.config.backgroundColor, 0, " ") + + -- Drawing stars + local i = 1 + while i <= #stars do + local star = stars[i] + + local x = star.startX + (star.targetX - star.startX) * star.way + local y = star.startY + (star.targetY - star.startY) * star.way + + if x > object.width + 1 or x < 1 or y > object.height + 1 or y < 1 then + tableRemove(stars, i) + else + local xmod = x * 2; + xmod = (xmod - xmod % 1) % 2 + + local ymod = y * 4; ymod = (ymod - ymod % 1) % 4 + + local color = star.way * 4.0156862745098 * #colors + color = colors[color - color % 1 + 1] or colors[#colors] + + if star.way < 0.3 then + if xmod == 0 then + if ymod == 0 then char = braille1 + elseif ymod == 1 then char = braille3 + elseif ymod == 2 then char = braille5 + else char = braille7 + end + else + if ymod == 0 then char = braille2 + elseif ymod == 1 then char = braille4 + elseif ymod == 2 then char = braille6 + else char = braille8 + end + end + else + if ymod < 2 then + char = braille9 + else + char = braille10 + end + end + + screen.set(x - x % 1, y - y % 1, wallpaper.config.backgroundColor, color, char) + i = i + 1 + + if hitsDeadline then + star.way = star.way * star.speed + end + end + end + + if hitsDeadline then + deadline = computerUptime() + wallpaper.config.delay + end +end + +function wallpaper.configure(layout) + layout:addChild(GUI.colorSelector(1, 1, 36, 3, wallpaper.config.backgroundColor, "Background color")).onColorSelected = function(_, object) + wallpaper.config.backgroundColor = object.color + saveConfig() + resetColors() + end + + layout:addChild(GUI.colorSelector(1, 1, 36, 3, wallpaper.config.starColor, "Star color")).onColorSelected = function(_, object) + wallpaper.config.starColor = object.color + saveConfig() + resetColors() + end + + local starAmountSlider = layout:addChild( + GUI.slider( + 1, 1, + 36, + 0x66DB80, + 0xE1E1E1, + 0xFFFFFF, + 0xA5A5A5, + 10, 200, + wallpaper.config.starAmount, + false, + "Star amount: " + ) + ) + + starAmountSlider.roundValues = true + starAmountSlider.onValueChanged = function(workspace, object) + wallpaper.config.starAmount = math.floor(object.value) + saveConfig() + -- resetStars() + end + + local starSpeedSlider = layout:addChild(GUI.slider( + 1, 1, + 36, + 0x66DB80, + 0xE1E1E1, + 0xFFFFFF, + 0xA5A5A5, + 100, 200, + wallpaper.config.speed, + false, + "Speed: ", + "%" + )) + + starSpeedSlider.roundValues = true + starSpeedSlider.onValueChanged = function(_, object) + wallpaper.config.speed = object.value + saveConfig() + resetStars() + end +end + +-------------------------------------------------------------------------------- + +return wallpaper \ No newline at end of file diff --git a/Wallpapers/Static picture.wlp/Main.lua b/Wallpapers/Static picture.wlp/Main.lua new file mode 100644 index 00000000..0a7e85da --- /dev/null +++ b/Wallpapers/Static picture.wlp/Main.lua @@ -0,0 +1,65 @@ +local system = require("System") +local fs = require("Filesystem") +local screen = require("Screen") +local GUI = require("GUI") +local image = require("Image") + +local wallpaper = {} + +-------------------------------------------------------------------------------- + +local configPath = fs.path(system.getCurrentScript()) .. "/" .. "Config.cfg" + +local function loadPicture() + wallpaper.image, wallpaper.reason = image.load(wallpaper.config.path) +end + +local function saveConfig() + fs.writeTable(configPath, wallpaper.config) +end + +if fs.exists(configPath) then + wallpaper.config = fs.readTable(configPath) +else + wallpaper.config = { + path = fs.path(system.getCurrentScript()) .. "Pictures/Girl.pic" + } + + saveConfig() +end + +loadPicture() + +-------------------------------------------------------------------------------- + +wallpaper.draw = function(object) + if wallpaper.image then + screen.drawImage(object.x, object.y, wallpaper.image) + else + screen.drawRectangle(object.x, object.y, object.width, object.height, 0x161616, 0x000000, " ") + + local text = wallpaper.reason + screen.drawText(math.floor(object.x + object.width / 2 - #text / 2), math.floor(object.y + object.height / 2), 0x646464, text) + end +end + +wallpaper.configure = function(layout) + local wallpaperChooser = layout:addChild(GUI.filesystemChooser(1, 1, 36, 3, 0xE1E1E1, 0x696969, 0xD2D2D2, 0xA5A5A5, wallpaper.config.path, "Open", "Cancel", "Wallpaper path", "/")) + wallpaperChooser:setMode(GUI.IO_MODE_OPEN, GUI.IO_MODE_FILE) + wallpaperChooser:addExtensionFilter(".pic") + wallpaperChooser.onSubmit = function(path) + wallpaper.config.path = path + loadPicture() + saveConfig() + end +end + +wallpaper.setPicture = function(path) + wallpaper.config.path = path + saveConfig() + loadPicture() +end + +-------------------------------------------------------------------------------- + +return wallpaper \ No newline at end of file diff --git a/Wallpapers/Ciri.pic b/Wallpapers/Static picture.wlp/Pictures/Ciri.pic similarity index 100% rename from Wallpapers/Ciri.pic rename to Wallpapers/Static picture.wlp/Pictures/Ciri.pic diff --git a/Wallpapers/Girl.pic b/Wallpapers/Static picture.wlp/Pictures/Girl.pic similarity index 100% rename from Wallpapers/Girl.pic rename to Wallpapers/Static picture.wlp/Pictures/Girl.pic diff --git a/Wallpapers/Static picture.wlp/Pictures/Jellyfish.pic b/Wallpapers/Static picture.wlp/Pictures/Jellyfish.pic new file mode 100644 index 00000000..57eb2813 Binary files /dev/null and b/Wallpapers/Static picture.wlp/Pictures/Jellyfish.pic differ diff --git a/Wallpapers/Static picture.wlp/Pictures/LikeOS.pic b/Wallpapers/Static picture.wlp/Pictures/LikeOS.pic new file mode 100644 index 00000000..32faf08c Binary files /dev/null and b/Wallpapers/Static picture.wlp/Pictures/LikeOS.pic differ diff --git a/Wallpapers/Static picture.wlp/Pictures/Mayonnaise.pic b/Wallpapers/Static picture.wlp/Pictures/Mayonnaise.pic new file mode 100644 index 00000000..cedda978 Binary files /dev/null and b/Wallpapers/Static picture.wlp/Pictures/Mayonnaise.pic differ diff --git a/Wallpapers/Mystery.pic b/Wallpapers/Static picture.wlp/Pictures/Mystery.pic similarity index 100% rename from Wallpapers/Mystery.pic rename to Wallpapers/Static picture.wlp/Pictures/Mystery.pic diff --git a/Wallpapers/Nettle.pic b/Wallpapers/Static picture.wlp/Pictures/Nettle.pic similarity index 100% rename from Wallpapers/Nettle.pic rename to Wallpapers/Static picture.wlp/Pictures/Nettle.pic diff --git a/Wallpapers/Raspberry.pic b/Wallpapers/Static picture.wlp/Pictures/Raspberry.pic similarity index 100% rename from Wallpapers/Raspberry.pic rename to Wallpapers/Static picture.wlp/Pictures/Raspberry.pic diff --git a/Wallpapers/Road.pic b/Wallpapers/Static picture.wlp/Pictures/Road.pic similarity index 100% rename from Wallpapers/Road.pic rename to Wallpapers/Static picture.wlp/Pictures/Road.pic diff --git a/Wallpapers/Space.pic b/Wallpapers/Static picture.wlp/Pictures/Space.pic similarity index 100% rename from Wallpapers/Space.pic rename to Wallpapers/Static picture.wlp/Pictures/Space.pic diff --git a/Wallpapers/Static picture.wlp/Pictures/Strawberry.pic b/Wallpapers/Static picture.wlp/Pictures/Strawberry.pic new file mode 100644 index 00000000..3398e167 Binary files /dev/null and b/Wallpapers/Static picture.wlp/Pictures/Strawberry.pic differ diff --git a/Wallpapers/Static picture.wlp/Pictures/Windows 10.pic b/Wallpapers/Static picture.wlp/Pictures/Windows 10.pic new file mode 100644 index 00000000..e9389d79 Binary files /dev/null and b/Wallpapers/Static picture.wlp/Pictures/Windows 10.pic differ diff --git a/Wallpapers/Static picture.wlp/Pictures/Windows 11.pic b/Wallpapers/Static picture.wlp/Pictures/Windows 11.pic new file mode 100644 index 00000000..3e101689 Binary files /dev/null and b/Wallpapers/Static picture.wlp/Pictures/Windows 11.pic differ diff --git a/Wallpapers/Static picture.wlp/Pictures/Windows XP.pic b/Wallpapers/Static picture.wlp/Pictures/Windows XP.pic new file mode 100644 index 00000000..01aa3a42 Binary files /dev/null and b/Wallpapers/Static picture.wlp/Pictures/Windows XP.pic differ