From 32648325e0f439be7100318141ba63156481aecd Mon Sep 17 00:00:00 2001 From: Relintai Date: Sun, 7 Feb 2021 15:15:13 +0100 Subject: [PATCH] Added godoxel from https://github.com/aaronfranke/GraphicsEditor . --- game/addons/.gitignore | 5 +- game/addons/Godoxel/BrushPrefabs.gd | 106 ++ game/addons/Godoxel/Canvas.gd | 461 ++++++ game/addons/Godoxel/CanvasOutline.gd | 31 + game/addons/Godoxel/Colors.gd | 34 + game/addons/Godoxel/DebugTextDisplay.gd | 9 + game/addons/Godoxel/Editor.gd | 832 +++++++++++ game/addons/Godoxel/Editor.tscn | 1279 +++++++++++++++++ game/addons/Godoxel/LICENSE | 22 + game/addons/Godoxel/Layer.gd | 98 ++ game/addons/Godoxel/LayerButton.tscn | 110 ++ game/addons/Godoxel/MenuButtonExtended.gd | 13 + game/addons/Godoxel/Navbar.gd | 106 ++ game/addons/Godoxel/PaintCanvas.gd | 489 +++++++ game/addons/Godoxel/PaintCanvas.tscn | 30 + game/addons/Godoxel/PaintCanvasChunk.gd | 27 + game/addons/Godoxel/PaintCanvasChunk.tscn | 13 + game/addons/Godoxel/PaintCanvasContainer.gd | 2 + game/addons/Godoxel/README.md | 17 + game/addons/Godoxel/SaveFileDialog.gd | 70 + game/addons/Godoxel/SelectionBox.gd | 24 + game/addons/Godoxel/Settings.gd | 24 + game/addons/Godoxel/Settings.tscn | 64 + game/addons/Godoxel/TextInfo.gd | 39 + game/addons/Godoxel/Util.gd | 94 ++ game/addons/Godoxel/ViewportContainer.gd | 6 + game/addons/Godoxel/VisualGrid.gd | 41 + game/addons/Godoxel/VisualGrid.tscn | 9 + game/addons/Godoxel/actions/Action.gd | 123 ++ game/addons/Godoxel/actions/Brighten.gd | 53 + game/addons/Godoxel/actions/Brush.gd | 47 + game/addons/Godoxel/actions/Bucket.gd | 49 + game/addons/Godoxel/actions/Cut.gd | 82 ++ game/addons/Godoxel/actions/Darken.gd | 55 + game/addons/Godoxel/actions/Line.gd | 59 + game/addons/Godoxel/actions/MultiLine.gd | 44 + game/addons/Godoxel/actions/PasteCut.gd | 59 + game/addons/Godoxel/actions/Pencil.gd | 43 + game/addons/Godoxel/actions/Rainbow.gd | 58 + game/addons/Godoxel/actions/Rect.gd | 69 + game/addons/Godoxel/assets/BrushCircle.png | Bin 0 -> 195 bytes .../Godoxel/assets/BrushCircle.png.import | 34 + .../Godoxel/assets/BrushCircle_Hovered.png | Bin 0 -> 3413 bytes .../assets/BrushCircle_Hovered.png.import | 34 + game/addons/Godoxel/assets/BrushHLine.png | Bin 0 -> 127 bytes .../Godoxel/assets/BrushHLine.png.import | 34 + .../Godoxel/assets/BrushHLine_Hovered.png | Bin 0 -> 1930 bytes .../assets/BrushHLine_Hovered.png.import | 34 + game/addons/Godoxel/assets/BrushRect.png | Bin 0 -> 128 bytes .../Godoxel/assets/BrushRect.png.import | 34 + .../Godoxel/assets/BrushRect_Hovered.png | Bin 0 -> 1819 bytes .../assets/BrushRect_Hovered.png.import | 34 + game/addons/Godoxel/assets/BrushVLine.png | Bin 0 -> 129 bytes .../Godoxel/assets/BrushVLine.png.import | 34 + .../Godoxel/assets/BrushVLine_Hovered.png | Bin 0 -> 1998 bytes .../assets/BrushVLine_Hovered.png.import | 34 + .../addons/Godoxel/assets/Godoxel_Preview.png | Bin 0 -> 46436 bytes .../Godoxel/assets/Godoxel_Preview.png.import | 34 + game/addons/Godoxel/assets/arrow_down.png | Bin 0 -> 562 bytes .../Godoxel/assets/arrow_down.png.import | 34 + game/addons/Godoxel/assets/arrow_up.png | Bin 0 -> 565 bytes .../addons/Godoxel/assets/arrow_up.png.import | 34 + .../COPYRIGHT.TXT | 124 ++ .../bitstream_vera_sans_font_6016/README.TXT | 11 + .../RELEASENOTES.TXT | 162 +++ .../bitstream_vera_sans_font_6016/Vera.ttf | Bin 0 -> 65932 bytes .../bitstream_vera_sans_font_6016/VeraBI.ttf | Bin 0 -> 63208 bytes .../bitstream_vera_sans_font_6016/VeraBd.ttf | Bin 0 -> 58716 bytes .../bitstream_vera_sans_font_6016/VeraIt.ttf | Bin 0 -> 63684 bytes .../all-free-download.com.url | 8 + game/addons/Godoxel/assets/grid.png | Bin 0 -> 148 bytes game/addons/Godoxel/assets/grid.png.import | 34 + game/addons/Godoxel/assets/lock_layer.png | Bin 0 -> 251 bytes .../Godoxel/assets/lock_layer.png.import | 34 + game/addons/Godoxel/assets/lock_layer_1.png | Bin 0 -> 242 bytes .../Godoxel/assets/lock_layer_1.png.import | 34 + game/addons/Godoxel/assets/minidotta.png | Bin 0 -> 2330 bytes .../Godoxel/assets/minidotta.png.import | 34 + .../addons/Godoxel/assets/minidotta_invis.png | Bin 0 -> 1746 bytes .../Godoxel/assets/minidotta_invis.png.import | 34 + game/addons/Godoxel/assets/unlock_layer.png | Bin 0 -> 240 bytes .../Godoxel/assets/unlock_layer.png.import | 34 + .../Godoxel/dialogs/ChangeGridSizeDialog.gd | 28 + .../Godoxel/dialogs/ConfirmationDialog.gd | 20 + game/addons/Godoxel/dialogs/LoadFileDialog.gd | 70 + .../Godoxel/dialogs/LoadFileDialog.tscn | 22 + game/addons/Godoxel/plugin.cfg | 7 + game/addons/Godoxel/plugin.gd | 37 + game/addons/addon_versions | 3 + game/project.godot | 106 ++ 90 files changed, 5971 insertions(+), 1 deletion(-) create mode 100644 game/addons/Godoxel/BrushPrefabs.gd create mode 100644 game/addons/Godoxel/Canvas.gd create mode 100644 game/addons/Godoxel/CanvasOutline.gd create mode 100644 game/addons/Godoxel/Colors.gd create mode 100644 game/addons/Godoxel/DebugTextDisplay.gd create mode 100644 game/addons/Godoxel/Editor.gd create mode 100644 game/addons/Godoxel/Editor.tscn create mode 100644 game/addons/Godoxel/LICENSE create mode 100644 game/addons/Godoxel/Layer.gd create mode 100644 game/addons/Godoxel/LayerButton.tscn create mode 100644 game/addons/Godoxel/MenuButtonExtended.gd create mode 100644 game/addons/Godoxel/Navbar.gd create mode 100644 game/addons/Godoxel/PaintCanvas.gd create mode 100644 game/addons/Godoxel/PaintCanvas.tscn create mode 100644 game/addons/Godoxel/PaintCanvasChunk.gd create mode 100644 game/addons/Godoxel/PaintCanvasChunk.tscn create mode 100644 game/addons/Godoxel/PaintCanvasContainer.gd create mode 100644 game/addons/Godoxel/README.md create mode 100644 game/addons/Godoxel/SaveFileDialog.gd create mode 100644 game/addons/Godoxel/SelectionBox.gd create mode 100644 game/addons/Godoxel/Settings.gd create mode 100644 game/addons/Godoxel/Settings.tscn create mode 100644 game/addons/Godoxel/TextInfo.gd create mode 100644 game/addons/Godoxel/Util.gd create mode 100644 game/addons/Godoxel/ViewportContainer.gd create mode 100644 game/addons/Godoxel/VisualGrid.gd create mode 100644 game/addons/Godoxel/VisualGrid.tscn create mode 100644 game/addons/Godoxel/actions/Action.gd create mode 100644 game/addons/Godoxel/actions/Brighten.gd create mode 100644 game/addons/Godoxel/actions/Brush.gd create mode 100644 game/addons/Godoxel/actions/Bucket.gd create mode 100644 game/addons/Godoxel/actions/Cut.gd create mode 100644 game/addons/Godoxel/actions/Darken.gd create mode 100644 game/addons/Godoxel/actions/Line.gd create mode 100644 game/addons/Godoxel/actions/MultiLine.gd create mode 100644 game/addons/Godoxel/actions/PasteCut.gd create mode 100644 game/addons/Godoxel/actions/Pencil.gd create mode 100644 game/addons/Godoxel/actions/Rainbow.gd create mode 100644 game/addons/Godoxel/actions/Rect.gd create mode 100644 game/addons/Godoxel/assets/BrushCircle.png create mode 100644 game/addons/Godoxel/assets/BrushCircle.png.import create mode 100644 game/addons/Godoxel/assets/BrushCircle_Hovered.png create mode 100644 game/addons/Godoxel/assets/BrushCircle_Hovered.png.import create mode 100644 game/addons/Godoxel/assets/BrushHLine.png create mode 100644 game/addons/Godoxel/assets/BrushHLine.png.import create mode 100644 game/addons/Godoxel/assets/BrushHLine_Hovered.png create mode 100644 game/addons/Godoxel/assets/BrushHLine_Hovered.png.import create mode 100644 game/addons/Godoxel/assets/BrushRect.png create mode 100644 game/addons/Godoxel/assets/BrushRect.png.import create mode 100644 game/addons/Godoxel/assets/BrushRect_Hovered.png create mode 100644 game/addons/Godoxel/assets/BrushRect_Hovered.png.import create mode 100644 game/addons/Godoxel/assets/BrushVLine.png create mode 100644 game/addons/Godoxel/assets/BrushVLine.png.import create mode 100644 game/addons/Godoxel/assets/BrushVLine_Hovered.png create mode 100644 game/addons/Godoxel/assets/BrushVLine_Hovered.png.import create mode 100644 game/addons/Godoxel/assets/Godoxel_Preview.png create mode 100644 game/addons/Godoxel/assets/Godoxel_Preview.png.import create mode 100644 game/addons/Godoxel/assets/arrow_down.png create mode 100644 game/addons/Godoxel/assets/arrow_down.png.import create mode 100644 game/addons/Godoxel/assets/arrow_up.png create mode 100644 game/addons/Godoxel/assets/arrow_up.png.import create mode 100644 game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/COPYRIGHT.TXT create mode 100644 game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/README.TXT create mode 100644 game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/RELEASENOTES.TXT create mode 100644 game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/Vera.ttf create mode 100644 game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraBI.ttf create mode 100644 game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraBd.ttf create mode 100644 game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraIt.ttf create mode 100644 game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/all-free-download.com.url create mode 100644 game/addons/Godoxel/assets/grid.png create mode 100644 game/addons/Godoxel/assets/grid.png.import create mode 100644 game/addons/Godoxel/assets/lock_layer.png create mode 100644 game/addons/Godoxel/assets/lock_layer.png.import create mode 100644 game/addons/Godoxel/assets/lock_layer_1.png create mode 100644 game/addons/Godoxel/assets/lock_layer_1.png.import create mode 100644 game/addons/Godoxel/assets/minidotta.png create mode 100644 game/addons/Godoxel/assets/minidotta.png.import create mode 100644 game/addons/Godoxel/assets/minidotta_invis.png create mode 100644 game/addons/Godoxel/assets/minidotta_invis.png.import create mode 100644 game/addons/Godoxel/assets/unlock_layer.png create mode 100644 game/addons/Godoxel/assets/unlock_layer.png.import create mode 100644 game/addons/Godoxel/dialogs/ChangeGridSizeDialog.gd create mode 100644 game/addons/Godoxel/dialogs/ConfirmationDialog.gd create mode 100644 game/addons/Godoxel/dialogs/LoadFileDialog.gd create mode 100644 game/addons/Godoxel/dialogs/LoadFileDialog.tscn create mode 100644 game/addons/Godoxel/plugin.cfg create mode 100644 game/addons/Godoxel/plugin.gd create mode 100644 game/addons/addon_versions diff --git a/game/addons/.gitignore b/game/addons/.gitignore index 31be7003..cf33724e 100644 --- a/game/addons/.gitignore +++ b/game/addons/.gitignore @@ -1,3 +1,6 @@ * !module_manager -!module_manager/** \ No newline at end of file +!module_manager/** +!Godoxel +!Godoxel/** +!addon_versions diff --git a/game/addons/Godoxel/BrushPrefabs.gd b/game/addons/Godoxel/BrushPrefabs.gd new file mode 100644 index 00000000..02884d37 --- /dev/null +++ b/game/addons/Godoxel/BrushPrefabs.gd @@ -0,0 +1,106 @@ +class_name BrushPrefabs + + +const list = [ + [ Vector2(0, -1), + Vector2(-1, 0), Vector2(0, 0), Vector2(1, 0), + Vector2(0, 1) + ], + [Vector2(-1, -1), Vector2(0, -1), Vector2(1, -1), + Vector2(-1, 0), Vector2(0, 0), Vector2(1, 0), + Vector2(-1, 1), Vector2(0, 1), Vector2(1, 1), + ], + [ + Vector2(-1, 0), Vector2(0, 0), Vector2(1, 0), + ], + [ Vector2(0, -1), + Vector2(0, 0), + Vector2(0, 1) + ] +] + + +enum Type { + V_LINE, + H_LINE, + RECT, + CIRCLE, +} + +static func get_brush(type, size: int): + var pixels = [] + if size < 1: + size = 1 + + match type: + Type.CIRCLE: + size += 1 + var center = Vector2.ZERO + var last = center + var radius = size / 2.0 + for x in range(size): + for y in range(size): + if Vector2(x - radius, y - radius).length() < size / 3.0: + pixels.append(Vector2(x, y)) + + var avg = Vector2(size / 2, size / 2) + avg = Vector2(floor(avg.x), floor(avg.y)) + + for i in range(pixels.size()): + pixels[i] -= avg + + Type.RECT: + var center = Vector2.ZERO + var last = center + for x in range(size): + for y in range(size): + pixels.append(Vector2(x, y)) + + var avg = Vector2.ZERO + for cell in pixels: + avg += cell + + avg.x /= pixels.size() + avg.y /= pixels.size() + + avg = Vector2(floor(avg.x), floor(avg.y)) + + for i in range(pixels.size()): + pixels[i] -= avg + + Type.V_LINE: + var center = Vector2.ZERO + var last = center + pixels.append(Vector2.ZERO) + + for i in range(size - 1): + var sig = sign(last.y) + if sig == 0: + sig = 1 + + if last.y < 0: + center.y = abs(last.y) * -sig + else: + center.y = abs(last.y+1) * -sig + last = center + pixels.append(center) + Type.H_LINE: + var center = Vector2.ZERO + var last = center + pixels.append(Vector2.ZERO) + + for i in range(size - 1): + var sig = sign(last.x) + if sig == 0: + sig = 1 + + if last.x < 0: + center.x = abs(last.x) * -sig + else: + center.x = abs(last.x+1) * -sig + last = center + pixels.append(center) + + return pixels + + diff --git a/game/addons/Godoxel/Canvas.gd b/game/addons/Godoxel/Canvas.gd new file mode 100644 index 00000000..77afa4e1 --- /dev/null +++ b/game/addons/Godoxel/Canvas.gd @@ -0,0 +1,461 @@ +extends Control +class_name GECanvas +tool + +export var pixel_size: int = 16 setget set_pixel_size +export(int, 1, 2500) var canvas_width = 48 setget set_canvas_width # == pixels +export(int, 1, 2500) var canvas_height = 28 setget set_canvas_height # == pixels +export var grid_size = 16 setget set_grid_size +export var big_grid_size = 10 setget set_big_grid_size +export var can_draw = true + +var mouse_in_region +var mouse_on_top + +var layers : Array = [] # Key: layer_name, val: GELayer +var active_layer: GELayer +var preview_layer: GELayer +var tool_layer: GELayer +var canvas_layers: Control + +var canvas +var grid +var big_grid +var selected_pixels = [] + +var symmetry_x = false +var symmetry_y = false + + +func _enter_tree(): + #------------------------------- + # Set nodes + #------------------------------- + canvas = find_node("Canvas") + grid = find_node("Grid") + big_grid = find_node("BigGrid") + canvas_layers = find_node("CanvasLayers") + + #------------------------------- + # setup layers and canvas + #------------------------------- + connect("mouse_entered", self, "_on_mouse_entered") + connect("mouse_exited", self, "_on_mouse_exited") + + #------------------------------- + # setup layers and canvas + #------------------------------- + #canvas_size = Vector2(int(rect_size.x / grid_size), int(rect_size.y / grid_size)) + #pixel_size = canvas_size + + active_layer = add_new_layer("Layer1") + preview_layer = add_new_layer("Preview") + tool_layer = add_new_layer("Tool") + + set_process(true) + + +func _process(delta): + if not is_visible_in_tree(): + return + var mouse_position = get_local_mouse_position() + var rect = Rect2(Vector2(0, 0), rect_size) + mouse_in_region = rect.has_point(mouse_position) + + +func _draw(): + for layer in layers: + layer.update_texture() + + preview_layer.update_texture() + tool_layer.update_texture() + + +func resize(width: int, height: int): + if width < 0: + width = 1 + if height < 0: + height = 1 + + set_canvas_width(width) + set_canvas_height(height) + + preview_layer.resize(width, height) + tool_layer.resize(width, height) + for layer in layers: + layer.resize(width, height) + + +#------------------------------- +# Export +#------------------------------- + +func set_pixel_size(size: int): + pixel_size = size + set_grid_size(grid_size) + set_big_grid_size(big_grid_size) + set_canvas_width(canvas_width) + set_canvas_height(canvas_height) + + +func set_grid_size(size): + grid_size = size + if not find_node("Grid"): + return + find_node("Grid").size = size * pixel_size + + +func set_big_grid_size(size): + big_grid_size = size + if not find_node("BigGrid"): + return + find_node("BigGrid").size = size * pixel_size + + +func set_canvas_width(val: int): + canvas_width = val + rect_size.x = canvas_width * pixel_size + + +func set_canvas_height(val: int): + canvas_height = val + rect_size.y = canvas_height * pixel_size + + +#------------------------------- +# Layer +#------------------------------- + + + +func toggle_alpha_locked(layer_name: String): + var layer = find_layer_by_name(layer_name) + layer.toggle_alpha_locked() + + +func is_alpha_locked() -> bool: + return active_layer.alpha_locked + + +func get_content_margin() -> Rect2: + var rect = Rect2(999999, 999999, -999999, -999999) + + preview_layer.image.get_used_rect() + for layer in layers: + + var r = layer.image.get_used_rect() + + if r.position.x < rect.position.x: + rect.position.x = r.position.x + if r.position.y < rect.position.y: + rect.position.y = r.position.y + if r.size.x > rect.size.x: + rect.size.x = r.size.x + if r.size.y > rect.size.y: + rect.size.y = r.size.y + + return rect + + +func crop_to_content(): + var rect = get_content_margin() + + #print(rect) + + for layer in layers: + layer.image + +# set_canvas_width(rect.size.x) +# set_canvas_height(rect.size.x) + +# preview_layer.resize(width, height) +# tool_layer.resize(width, height) +# for layer in layers: +# layer.resize(width, height) + + +func get_active_layer(): + return active_layer + + +func get_preview_layer(): + return preview_layer + + +func clear_active_layer(): + active_layer.clear() + + +func clear_preview_layer(): + preview_layer.clear() + + +func clear_layer(layer_name: String): + for layer in layers: + if layer.name == layer_name: + layer.clear() + break + + +func remove_layer(layer_name: String): + # change current layer if the active layer is removed + var del_layer = find_layer_by_name(layer_name) + del_layer.clear() + if del_layer == active_layer: + for layer in layers: + if layer == preview_layer or layer == active_layer or layer == tool_layer: + continue + active_layer = layer + break + layers.erase(del_layer) + return active_layer + + +func add_new_layer(layer_name: String): + for layer in layers: + if layer.name == layer_name: + return + var layer = GELayer.new() + layer.name = layer_name + + if layer_name == "Preview": + layer.create($PreviewLayer, canvas_width, canvas_height) + elif layer_name == "Tool": + layer.create($ToolPreviewLayer, canvas_width, canvas_height) + else: + var texture_rect = TextureRect.new() + texture_rect.name = layer_name + canvas_layers.add_child(texture_rect, true) + texture_rect.expand = true + texture_rect.anchor_right = 1 + texture_rect.anchor_bottom = 1 + texture_rect.margin_right = 0 + texture_rect.margin_bottom = 0 + texture_rect.mouse_filter = Control.MOUSE_FILTER_IGNORE + layer.create(texture_rect, canvas_width, canvas_height) + layers.append(layer) + + return layer + + +func duplicate_layer(layer_name: String, new_layer_name: String): + for layer in layers: + if layer.name == new_layer_name: + return + + var dup_layer :GELayer = find_layer_by_name(layer_name) + var layer :GELayer = add_new_layer(new_layer_name) + layer.image.copy_from(dup_layer.image) + return layer + + +func toggle_layer_visibility(layer_name: String): + for layer in layers: + if layer.name == layer_name: + layer.visible = not layer.visible + + +func find_layer_by_name(layer_name: String): + for layer in layers: + if layer.name == layer_name: + return layer + return null + + +func toggle_lock_layer(layer_name: String): + find_layer_by_name(layer_name).toggle_lock() + + +func is_active_layer_locked() -> bool: + return active_layer.locked + + +func move_layer_forward(layer_name: String): + var layer = find_layer_by_name(layer_name).texture_rect_ref + var new_idx = max(layer.get_index() - 1, 0) + canvas_layers.move_child(layer, new_idx) + + +func move_layer_back(layer_name: String): + var layer = find_layer_by_name(layer_name).texture_rect_ref + canvas_layers.move_child(layer, layer.get_index() + 1) + + +func select_layer(layer_name: String): + active_layer = find_layer_by_name(layer_name) + + +#------------------------------- +# Check +#------------------------------- + +func _on_mouse_entered(): + mouse_on_top = true + + +func _on_mouse_exited(): + mouse_on_top = false + + +func is_inside_canvas(x, y): + if x < 0 or y < 0: + return false + if x >= canvas_width or y >= canvas_height: + return false + return true + + + +#------------------------------- +# Basic pixel-layer options +#------------------------------- + + +#Note: Arrays are always passed by reference. To get a copy of an array which +# can be modified independently of the original array, use duplicate. +# (https://docs.godotengine.org/en/stable/classes/class_array.html) +func set_pixel_arr(pixels: Array, color: Color): + for pixel in pixels: + _set_pixel(active_layer, pixel.x, pixel.y, color) + + +func set_pixel_v(pos: Vector2, color: Color): + set_pixel(pos.x, pos.y, color) + + +func set_pixel(x: int, y: int, color: Color): + _set_pixel(active_layer, x, y, color) + + +func _set_pixel_v(layer: GELayer, v: Vector2, color: Color): + _set_pixel(layer, v.x, v.y, color) + + +func _set_pixel(layer: GELayer, x: int, y: int, color: Color): + if not is_inside_canvas(x, y): + return + layer.set_pixel(x, y, color) + + +func get_pixel_v(pos: Vector2): + return get_pixel(pos.x, pos.y) + + +func get_pixel(x: int, y: int): + if active_layer: + return active_layer.get_pixel(x, y) + return null + + +func set_preview_pixel_v(pos: Vector2, color: Color): + set_preview_pixel(pos.x, pos.y, color) + + +func set_preview_pixel(x:int, y: int, color: Color): + if not is_inside_canvas(x, y): + return + preview_layer.set_pixel(x, y, color) + + +func get_preview_pixel_v(pos: Vector2): + return get_preview_pixel(pos.x, pos.y) + + +func get_preview_pixel(x: int, y: int): + if not preview_layer: + return null + return preview_layer.get_pixel(x, y) + + + +#------------------------------- +# Grid +#------------------------------- + + +func toggle_grid(): + $Grid.visible = not $Grid.visible + + +func show_grid(): + $Grid.show() + + +func hide_grid(): + $Grid.hide() + + +#------------------------------- +# Handy tools +#------------------------------- + + +func select_color(x, y): + print("???") + var same_color_pixels = [] + var color = get_pixel(x, y) + for x in range(active_layer.layer_width): + for y in range(active_layer.layer_height): + var pixel_color = active_layer.get_pixel(x, y) + if pixel_color == color: + same_color_pixels.append(color) + return same_color_pixels + + +func select_same_color(x, y): + return get_neighbouring_pixels(x, y) + + +# returns array of Vector2 +# yoinked from +# https://www.geeksforgeeks.org/flood-fill-algorithm-implement-fill-paint/ +func get_neighbouring_pixels(pos_x: int, pos_y: int) -> Array: + var pixels = [] + + var to_check_queue = [] + var checked_queue = [] + + to_check_queue.append(GEUtils.to_1D(pos_x, pos_y, canvas_width)) + + var color = get_pixel(pos_x, pos_y) + + while not to_check_queue.empty(): + var idx = to_check_queue.pop_front() + var p = GEUtils.to_2D(idx, canvas_width) + + if idx in checked_queue: + continue + + checked_queue.append(idx) + + if get_pixel(p.x, p.y) != color: + continue + + # add to result + pixels.append(p) + + # check neighbours + var x = p.x - 1 + var y = p.y + if is_inside_canvas(x, y): + idx = GEUtils.to_1D(x, y, canvas_width) + to_check_queue.append(idx) + + x = p.x + 1 + if is_inside_canvas(x, y): + idx = GEUtils.to_1D(x, y, canvas_width) + to_check_queue.append(idx) + + x = p.x + y = p.y - 1 + if is_inside_canvas(x, y): + idx = GEUtils.to_1D(x, y, canvas_width) + to_check_queue.append(idx) + + y = p.y + 1 + if is_inside_canvas(x, y): + idx = GEUtils.to_1D(x, y, canvas_width) + to_check_queue.append(idx) + + return pixels + diff --git a/game/addons/Godoxel/CanvasOutline.gd b/game/addons/Godoxel/CanvasOutline.gd new file mode 100644 index 00000000..8bf94a66 --- /dev/null +++ b/game/addons/Godoxel/CanvasOutline.gd @@ -0,0 +1,31 @@ +tool +extends Control + +export var color = Color() + + +func _ready(): + pass + + +func _draw(): + var size = get_parent().rect_size + var pos = Vector2.ZERO #get_parent().rect_global_position + draw_outline_box(pos, size, color, 1) + + +func draw_outline_box(pos, size, color, width): + #Top line + draw_line(pos, pos + Vector2(size.x, 0), color, width) + #Left line + draw_line(pos, pos + Vector2(0, size.y), color, width) + #Bottom line + draw_line(pos + Vector2(0, size.y), pos + Vector2(size.x, size.y), color, width) + #Right line + draw_line(pos + Vector2(size.x, 0), pos + Vector2(size.x, size.y), color, width) + + +func _process(delta): + if not is_visible_in_tree(): + return + update() diff --git a/game/addons/Godoxel/Colors.gd b/game/addons/Godoxel/Colors.gd new file mode 100644 index 00000000..c198e59f --- /dev/null +++ b/game/addons/Godoxel/Colors.gd @@ -0,0 +1,34 @@ +tool +extends GridContainer + +signal color_change_request + +func _enter_tree(): + for child in get_children(): + child.set("custom_styles/normal", StyleBoxFlat.new()) + child.get("custom_styles/normal").set("bg_color", Color(randf(), randf(), randf())) + for child in get_children(): + if child.is_connected("pressed", self, "change_color_to"): + return + child.connect("pressed", self, "change_color_to", [child.get("custom_styles/normal").bg_color]) + + +func change_color_to(color): + emit_signal("color_change_request", color) + + +func add_color_prefab(color: Color): + var dup = get_child(0).duplicate() + add_child(dup) + move_child(dup, 0) + dup.set("custom_styles/normal", StyleBoxFlat.new()) + dup.get("custom_styles/normal").set("bg_color", color) + for child in get_children(): + if child.is_connected("pressed", self, "change_color_to"): + return + child.connect("pressed", self, "change_color_to", [child.get("custom_styles/normal").bg_color]) + + + + + diff --git a/game/addons/Godoxel/DebugTextDisplay.gd b/game/addons/Godoxel/DebugTextDisplay.gd new file mode 100644 index 00000000..bdb76166 --- /dev/null +++ b/game/addons/Godoxel/DebugTextDisplay.gd @@ -0,0 +1,9 @@ +extends RichTextLabel +tool + +func _ready(): + pass + + +func display_text(text): + self.text = text diff --git a/game/addons/Godoxel/Editor.gd b/game/addons/Godoxel/Editor.gd new file mode 100644 index 00000000..0ae11920 --- /dev/null +++ b/game/addons/Godoxel/Editor.gd @@ -0,0 +1,832 @@ +tool +extends Control + +enum Tools { + PAINT, + BRUSH, + BUCKET, + RAINBOW, + LINE, + RECT, + DARKEN, + BRIGHTEN + COLORPICKER, + CUT, + PASTECUT, +} + +# Keyboard shortcuts +const K_UNDO = KEY_Z +const K_REDO = KEY_Y +const K_PENCIL = KEY_Q +const K_BRUSH = KEY_W +const K_BUCKET = KEY_F +const K_RAINBOW = KEY_R +const K_LINE = KEY_L +const K_DARK = KEY_D +const K_BRIGHT = KEY_B +const K_CUT = KEY_C +const K_PICK = KEY_P + + +var layer_buttons: Control +var paint_canvas_container_node +var paint_canvas: GECanvas +var canvas_background: TextureRect +var grids_node +var colors_grid +var selected_color = Color(1, 1, 1, 1) setget set_selected_color +var util = preload("res://addons/Godoxel/Util.gd") +var textinfo +var allow_drawing = true + +var mouse_in_region = false +var mouse_on_top = false + + +var _middle_mouse_pressed_pos = null +var _middle_mouse_pressed_start_pos = null +var _left_mouse_pressed_start_pos = Vector2() +var _previous_tool +var brush_mode + +var _layer_button_ref = {} + +var _total_added_layers = 1 + +var selected_brush_prefab = 0 +var _last_drawn_pixel = Vector2.ZERO +var _last_preview_draw_cell_pos = Vector2.ZERO + +var _selection_cells = [] +var _selection_colors = [] + +var _cut_pos = Vector2.ZERO +var _cut_size = Vector2.ZERO + +var _actions_history = [] # for undo +var _redo_history = [] +var _current_action + +var _last_mouse_pos_canvas_area = Vector2.ZERO + +var _picked_color = false + +var mouse_position = Vector2() +var canvas_position = Vector2() +var canvas_mouse_position = Vector2() +var cell_mouse_position = Vector2() +var cell_color = Color() + +var last_mouse_position = Vector2() +var last_canvas_position = Vector2() +var last_canvas_mouse_position = Vector2() +var last_cell_mouse_position = Vector2() +var last_cell_color = Color() + +const current_layer_highlight = Color(0.354706, 0.497302, 0.769531) +const other_layer_highlight = Color(0.180392, 0.176471, 0.176471) +const locked_layer_highlight = Color(0.098039, 0.094118, 0.094118) + +var big_grid_pixels = 4 # 1 grid-box is big_grid_pixels big + + + +func _ready(): + #-------------------- + #Setup nodes + #-------------------- + + paint_canvas_container_node = find_node("PaintCanvasContainer") + textinfo = find_node("DebugTextDisplay") + selected_color = find_node("ColorPicker").color + colors_grid = find_node("Colors") + paint_canvas = paint_canvas_container_node.find_node("Canvas") + layer_buttons = find_node("LayerButtons") + canvas_background = find_node("CanvasBackground") + + set_process(true) + + #-------------------- + #connect nodes + #-------------------- + if not colors_grid.is_connected("color_change_request", self, "change_color"): + colors_grid.connect("color_change_request", self, "change_color") + + if not is_connected("visibility_changed", self, "_on_Editor_visibility_changed"): + connect("visibility_changed", self, "_on_Editor_visibility_changed") + + find_node("CanvasBackground").material.set_shader_param( + "pixel_size", 8 * pow(0.5, big_grid_pixels)/paint_canvas.pixel_size) + + # ready + + set_brush(Tools.PAINT) + _layer_button_ref[layer_buttons.get_child(0).name] = layer_buttons.get_child(0) #ugly + _connect_layer_buttons() + highlight_layer(paint_canvas.get_active_layer().name) + + find_node("BrushSizeLabel").text = str(int(find_node("BrushSize").value)) + + paint_canvas.update() + + +func _input(event): + if is_any_menu_open(): + return + if not is_visible_in_tree(): + return + if paint_canvas_container_node == null or paint_canvas == null: + return + + if event is InputEventKey and event.is_pressed() and not event.is_echo(): + _handle_shortcuts(event.scancode) + + if is_mouse_in_canvas(): + _handle_zoom(event) + + if paint_canvas.is_active_layer_locked(): + return + + if brush_mode == Tools.CUT: + if event is InputEventMouseButton: + if event.button_index == BUTTON_LEFT: + if not event.pressed: + commit_action() + + if (paint_canvas.mouse_in_region and paint_canvas.mouse_on_top): + if event is InputEventMouseButton: + match brush_mode: + Tools.BUCKET: + if event.button_index == BUTTON_LEFT: + if event.pressed: + if _current_action == null: + _current_action = get_action() + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + + Tools.COLORPICKER: + if event.button_index == BUTTON_LEFT: + if event.pressed: + if paint_canvas.get_pixel(cell_mouse_position.x, cell_mouse_position.y).a == 0: + return + selected_color = paint_canvas.get_pixel(cell_mouse_position.x, cell_mouse_position.y) + _picked_color = true + find_node("Colors").add_color_prefab(selected_color) + elif _picked_color: + set_brush(_previous_tool) + elif event.button_index == BUTTON_RIGHT: + if event.pressed: + set_brush(_previous_tool) + + Tools.PASTECUT: + if event.button_index == BUTTON_RIGHT: + if event.pressed: + commit_action() + set_brush(Tools.PAINT) + + +func _process(delta): + if not is_visible_in_tree(): + return + if paint_canvas_container_node == null or paint_canvas == null: + return + if is_any_menu_open(): + return + + if is_mouse_in_canvas(): + _handle_scroll() + + #Update commonly used variables + var grid_size = paint_canvas.pixel_size + mouse_position = get_global_mouse_position() #paint_canvas.get_local_mouse_position() + canvas_position = paint_canvas.rect_global_position + canvas_mouse_position = Vector2(mouse_position.x - canvas_position.x, mouse_position.y - canvas_position.y) + if is_mouse_in_canvas(): + cell_mouse_position = Vector2( + floor(canvas_mouse_position.x / grid_size), + floor(canvas_mouse_position.y / grid_size)) + cell_color = paint_canvas.get_pixel(cell_mouse_position.x, cell_mouse_position.y) + update_text_info() + +# if not is_mouse_in_canvas(): +# paint_canvas.tool_layer.clear() +# paint_canvas.update() +# paint_canvas.tool_layer.update_texture() +# else: + if is_mouse_in_canvas(): + if not paint_canvas.is_active_layer_locked(): + if is_position_in_canvas(get_global_mouse_position()) or \ + is_position_in_canvas(_last_mouse_pos_canvas_area): + brush_process() + else: + print(cell_mouse_position, " not in ", paint_canvas_container_node.rect_size) + print("not in canvas") + + _draw_tool_brush() + + #Update last variables with the current variables + last_mouse_position = mouse_position + last_canvas_position = canvas_position + last_canvas_mouse_position = canvas_mouse_position + last_cell_mouse_position = cell_mouse_position + last_cell_color = cell_color + _last_mouse_pos_canvas_area = get_global_mouse_position() #paint_canvas_container_node.get_local_mouse_position() + + +func _handle_shortcuts(scancode): + match scancode: + K_UNDO: + undo_action() + + K_REDO: + redo_action() + + K_PENCIL: + set_brush(Tools.PAINT) + + K_BRUSH: + set_brush(Tools.BRUSH) + + K_BUCKET: + set_brush(Tools.BUCKET) + + K_RAINBOW: + set_brush(Tools.RAINBOW) + + K_LINE: + set_brush(Tools.LINE) + + K_DARK: + set_brush(Tools.DARKEN) + + K_BRIGHT: + set_brush(Tools.BRIGHTEN) + + K_CUT: + set_brush(Tools.CUT) + + K_PICK: + set_brush(Tools.COLORPICKER) + + +func _draw_tool_brush(): + paint_canvas.tool_layer.clear() + + match brush_mode: + Tools.PASTECUT: + for idx in range(_selection_cells.size()): + var pixel = _selection_cells[idx] +# if pixel.x < 0 or pixel.y < 0: +# print(pixel) + var color = _selection_colors[idx] + pixel -= _cut_pos + _cut_size / 2 + pixel += cell_mouse_position + paint_canvas._set_pixel_v(paint_canvas.tool_layer, pixel, color) + Tools.BRUSH: + var pixels = BrushPrefabs.get_brush(selected_brush_prefab, find_node("BrushSize").value) + for pixel in pixels: + + paint_canvas._set_pixel(paint_canvas.tool_layer, + cell_mouse_position.x + pixel.x, cell_mouse_position.y + pixel.y, selected_color) + + Tools.RAINBOW: + paint_canvas._set_pixel(paint_canvas.tool_layer, + cell_mouse_position.x, cell_mouse_position.y, Color(0.46875, 0.446777, 0.446777, 0.196078)) + + Tools.COLORPICKER: + paint_canvas._set_pixel(paint_canvas.tool_layer, + cell_mouse_position.x, cell_mouse_position.y, Color(0.866667, 0.847059, 0.847059, 0.196078)) + _: + paint_canvas._set_pixel(paint_canvas.tool_layer, + cell_mouse_position.x, cell_mouse_position.y, selected_color) + + paint_canvas.update() + #TODO add here brush prefab drawing + paint_canvas.tool_layer.update_texture() + + +func _handle_scroll(): + if Input.is_mouse_button_pressed(BUTTON_MIDDLE): + if _middle_mouse_pressed_start_pos == null: + _middle_mouse_pressed_start_pos = paint_canvas.rect_position + _middle_mouse_pressed_pos = get_global_mouse_position() + + paint_canvas.rect_position = _middle_mouse_pressed_start_pos + paint_canvas.rect_position += get_global_mouse_position() - _middle_mouse_pressed_pos + + elif _middle_mouse_pressed_start_pos != null: + _middle_mouse_pressed_start_pos = null + + +const max_zoom_out = 1 +const max_zoom_in = 50 + +func _handle_zoom(event): + if not event is InputEventMouseButton: + return + if event.is_pressed(): + if event.button_index == BUTTON_WHEEL_UP: + var px = min(paint_canvas.pixel_size * 2, max_zoom_in) + if px == paint_canvas.pixel_size: + return + paint_canvas.set_pixel_size(px) + find_node("CanvasBackground").material.set_shader_param( + "pixel_size", 8 * pow(0.5, big_grid_pixels)/paint_canvas.pixel_size) + paint_canvas.rect_position -= paint_canvas.get_local_mouse_position() + paint_canvas.rect_position.x = clamp(paint_canvas.rect_position.x, -paint_canvas.rect_size.x * 0.8, rect_size.x) + paint_canvas.rect_position.y = clamp(paint_canvas.rect_position.y, -paint_canvas.rect_size.y * 0.8, rect_size.y) + elif event.button_index == BUTTON_WHEEL_DOWN: + var px = max(paint_canvas.pixel_size / 2.0, max_zoom_out) + if px == paint_canvas.pixel_size: + return + paint_canvas.set_pixel_size(px) + find_node("CanvasBackground").material.set_shader_param( + # 4 2 1 + "pixel_size", 8 * pow(0.5, big_grid_pixels)/paint_canvas.pixel_size) + paint_canvas.rect_position += paint_canvas.get_local_mouse_position() / 2 + paint_canvas.rect_position.x = clamp(paint_canvas.rect_position.x, -paint_canvas.rect_size.x * 0.8, rect_size.x) + paint_canvas.rect_position.y = clamp(paint_canvas.rect_position.y, -paint_canvas.rect_size.y * 0.8, rect_size.y) + + +func _handle_cut(): + if Input.is_mouse_button_pressed(BUTTON_RIGHT): + paint_canvas.clear_preview_layer() + set_brush(_previous_tool) + return + + if Input.is_mouse_button_pressed(BUTTON_LEFT): + for pixel_pos in GEUtils.get_pixels_in_line(cell_mouse_position, last_cell_mouse_position): + for idx in range(_selection_cells.size()): + var pixel = _selection_cells[idx] + var color = _selection_colors[idx] + pixel -= _cut_pos + _cut_size / 2 + pixel += pixel_pos + paint_canvas.set_pixel_v(pixel, color) + else: + if _last_preview_draw_cell_pos == cell_mouse_position: + return + paint_canvas.clear_preview_layer() + for idx in range(_selection_cells.size()): + var pixel = _selection_cells[idx] + var color = _selection_colors[idx] + pixel -= _cut_pos + _cut_size / 2 + pixel += cell_mouse_position + paint_canvas.set_preview_pixel_v(pixel, color) + _last_preview_draw_cell_pos = cell_mouse_position + + +func brush_process(): + if Input.is_mouse_button_pressed(BUTTON_LEFT): + if _current_action == null: + _current_action = get_action() + if brush_mode == Tools.COLORPICKER: + _current_action = null + + match brush_mode: + Tools.PAINT: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + Tools.BRUSH: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color, + selected_brush_prefab, find_node("BrushSize").value]) + Tools.LINE: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + Tools.RECT: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + Tools.DARKEN: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + Tools.BRIGHTEN: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + Tools.COLORPICKER: + pass + Tools.CUT: + do_action([cell_mouse_position, last_cell_mouse_position, selected_color]) + Tools.PASTECUT: + do_action([cell_mouse_position, last_cell_mouse_position, + _selection_cells, _selection_colors, + _cut_pos, _cut_size]) + Tools.RAINBOW: + do_action([cell_mouse_position, last_cell_mouse_position]) + paint_canvas.update() + + elif Input.is_mouse_button_pressed(BUTTON_RIGHT): + paint_canvas.update() + if _current_action == null: + _current_action = get_action() + + match brush_mode: + Tools.PAINT: + do_action([cell_mouse_position, last_cell_mouse_position, Color.transparent]) + Tools.BRUSH: + do_action([cell_mouse_position, last_cell_mouse_position, Color.transparent, + selected_brush_prefab, find_node("BrushSize").value]) + else: + if _current_action and _current_action.can_commit(): + commit_action() + paint_canvas.update() + + +func update_text_info(): + var text = "" + + var cell_color_text = cell_color + cell_color_text = Color(0, 0, 0, 0) + + text += \ + str("FPS %s\t" + \ + "Mouse Position %s\t" + \ + "Canvas Mouse Position %s \t" + \ + "Canvas Position %s\t\n" + \ + "Cell Position %s \t" + \ + "Cell Color %s\t") % [ + str(Engine.get_frames_per_second()), + str(mouse_position), + str(canvas_mouse_position), + str(canvas_position), + str(cell_mouse_position), + str(cell_color_text), + ] + + find_node("DebugTextDisplay").display_text(text) + + +func _on_Save_pressed(): + get_node("SaveFileDialog").show() + + + +#--------------------------------------- +# Actions +#--------------------------------------- + + +func do_action(data: Array): + if _current_action == null: + #print("clear redo") + _redo_history.clear() + _current_action.do_action(paint_canvas, data) + + +func commit_action(): + if not _current_action: + return + + #print("commit action") + var commit_data = _current_action.commit_action(paint_canvas) + var action = get_action() + action.action_data = _current_action.action_data.duplicate(true) + _actions_history.push_back(action) + _redo_history.clear() + + match brush_mode: + Tools.CUT: + _cut_pos = _current_action.mouse_start_pos + _cut_size = _current_action.mouse_end_pos - _current_action.mouse_start_pos + _selection_cells = _current_action.action_data.redo.cells.duplicate() + _selection_colors = _current_action.action_data.redo.colors.duplicate() + set_brush(Tools.PASTECUT) + _: + _current_action = null + + +func redo_action(): + if _redo_history.empty(): + print("nothing to redo") + return + var action = _redo_history.pop_back() + if not action: + return + _actions_history.append(action) + action.redo_action(paint_canvas) + paint_canvas.update() + #print("redo action") + + +func undo_action(): + var action = _actions_history.pop_back() + if not action: + return + _redo_history.append(action) + action.undo_action(paint_canvas) + update() + paint_canvas.update() + #print("undo action") + + +func get_action(): + match brush_mode: + Tools.PAINT: + return GEPencil.new() + Tools.BRUSH: + return GEBrush.new() + Tools.LINE: + return GELine.new() + Tools.RAINBOW: + return GERainbow.new() + Tools.BUCKET: + return GEBucket.new() + Tools.RECT: + return GERect.new() + Tools.DARKEN: + return GEDarken.new() + Tools.BRIGHTEN: + return GEBrighten.new() + Tools.CUT: + return GECut.new() + Tools.PASTECUT: + return GEPasteCut.new() + _: + #print("no tool!") + return null + + +############################################ +# Brushes +############################################ + + +func set_selected_color(color): + selected_color = color + + +func set_brush(new_mode): + if brush_mode == new_mode: + return + _previous_tool = brush_mode + brush_mode = new_mode + + _current_action = get_action() + + match _previous_tool: + Tools.CUT: + paint_canvas.clear_preview_layer() + Tools.PASTECUT: + _selection_cells.clear() + _selection_colors.clear() + Tools.BUCKET: + _current_action = null + #print("Selected: ", Tools.keys()[brush_mode]) + + +func change_color(new_color): + if new_color.a == 0: + return + selected_color = new_color + find_node("ColorPicker").color = selected_color + + +func _on_ColorPicker_color_changed(color): + selected_color = color + + +func _on_PaintTool_pressed(): + set_brush(Tools.PAINT) + + +func _on_BucketTool_pressed(): + set_brush(Tools.BUCKET) + + +func _on_RainbowTool_pressed(): + set_brush(Tools.RAINBOW) + + +func _on_BrushTool_pressed(): + set_brush(Tools.BRUSH) + + +func _on_LineTool_pressed(): + set_brush(Tools.LINE) + + +func _on_RectTool_pressed(): + set_brush(Tools.RECT) + + +func _on_DarkenTool_pressed(): + set_brush(Tools.DARKEN) + + +func _on_BrightenTool_pressed(): + set_brush(Tools.BRIGHTEN) + + +func _on_ColorPickerTool_pressed(): + set_brush(Tools.COLORPICKER) + + +func _on_CutTool_pressed(): + set_brush(Tools.CUT) + + +func _on_Editor_visibility_changed(): + pause_mode = not visible + + + +############################################ +# Layer +############################################ + +func highlight_layer(layer_name: String): + for button in layer_buttons.get_children(): + if paint_canvas.find_layer_by_name(button.name).locked: + button.get("custom_styles/panel").set("bg_color", locked_layer_highlight) + elif button.name == layer_name: + button.get("custom_styles/panel").set("bg_color", current_layer_highlight) + else: + button.get("custom_styles/panel").set("bg_color", other_layer_highlight) + + +func toggle_layer_visibility(button, layer_name: String): + #print("toggling: ", layer_name) + paint_canvas.toggle_layer_visibility(layer_name) + + +func select_layer(layer_name: String): + #print("select layer: ", layer_name) + paint_canvas.select_layer(layer_name) + highlight_layer(layer_name) + + +func lock_layer(button, layer_name: String): + paint_canvas.toggle_lock_layer(layer_name) + highlight_layer(paint_canvas.get_active_layer().name) + + +func add_new_layer(): + var new_layer_button = layer_buttons.get_child(0).duplicate() + new_layer_button.set("custom_styles/panel", layer_buttons.get_child(0).get("custom_styles/panel").duplicate()) + layer_buttons.add_child_below_node( + layer_buttons.get_child(layer_buttons.get_child_count() - 1), new_layer_button, true) + _total_added_layers += 1 + new_layer_button.find_node("Select").text = "Layer " + str(_total_added_layers) + _layer_button_ref[new_layer_button.name] = new_layer_button + _connect_layer_buttons() + + var layer: GELayer = paint_canvas.add_new_layer(new_layer_button.name) + + highlight_layer(paint_canvas.get_active_layer().name) + #print("added layer: ", layer.name) + return layer + + +func remove_active_layer(): + if layer_buttons.get_child_count() <= 1: + return + var layer_name = paint_canvas.active_layer.name + paint_canvas.remove_layer(layer_name) + layer_buttons.remove_child(_layer_button_ref[layer_name]) + _layer_button_ref[layer_name].queue_free() + _layer_button_ref.erase(layer_name) + + highlight_layer(paint_canvas.get_active_layer().name) + + +func duplicate_active_layer(): + var new_layer_button = layer_buttons.get_child(0).duplicate() + new_layer_button.set("custom_styles/panel", layer_buttons.get_child(0).get("custom_styles/panel").duplicate()) + layer_buttons.add_child_below_node( + layer_buttons.get_child(layer_buttons.get_child_count() - 1), new_layer_button, true) + + _total_added_layers += 1 # for keeping track... + new_layer_button.find_node("Select").text = "Layer " + str(_total_added_layers) + + var new_layer = paint_canvas.duplicate_layer(paint_canvas.active_layer.name, new_layer_button.name) + new_layer.update_texture() + _layer_button_ref[new_layer.name] = new_layer_button + + new_layer_button.find_node("Select").connect("pressed", self, "select_layer", [new_layer_button.name]) + new_layer_button.find_node("Visible").connect("pressed", self, "toggle_layer_visibility", + [new_layer_button.find_node("Visible"), new_layer_button.name]) + new_layer_button.find_node("Up").connect("pressed", self, "move_down", [new_layer_button]) + new_layer_button.find_node("Down").connect("pressed", self, "move_up", [new_layer_button]) + new_layer_button.find_node("Lock").connect("pressed", self, "lock_layer", [new_layer_button, new_layer_button.name]) + + # update highlight + highlight_layer(paint_canvas.get_active_layer().name) + #print("added layer: ", new_layer.name, " (total:", layer_buttons.get_child_count(), ")") + + +func move_up(layer_btn): + var new_idx = min(layer_btn.get_index() + 1, layer_buttons.get_child_count()) + #print("move_up: ", layer_btn.name, " from ", layer_btn.get_index(), " to ", new_idx) + layer_buttons.move_child(layer_btn, new_idx) + paint_canvas.move_layer_back(layer_btn.name) + + +func move_down(layer_btn): + var new_idx = max(layer_btn.get_index() - 1, 0) + #print("move_down: ", layer_btn.name, " from ", layer_btn.get_index(), " to ", new_idx) + layer_buttons.move_child(layer_btn, new_idx) + paint_canvas.move_layer_forward(layer_btn.name) + + +func _connect_layer_buttons(): + for layer_btn in layer_buttons.get_children(): + if layer_btn.find_node("Select").is_connected("pressed", self, "select_layer"): + continue + layer_btn.find_node("Select").connect("pressed", self, "select_layer", [layer_btn.name]) + layer_btn.find_node("Visible").connect("pressed", self, "toggle_layer_visibility", + [layer_btn.find_node("Visible"), layer_btn.name]) + layer_btn.find_node("Up").connect("pressed", self, "move_down", [layer_btn]) + layer_btn.find_node("Down").connect("pressed", self, "move_up", [layer_btn]) + layer_btn.find_node("Lock").connect("pressed", self, "lock_layer", + [layer_btn, layer_btn.name]) + + +func _on_Button_pressed(): + add_new_layer() + + +func _on_PaintCanvasContainer_mouse_entered(): + if mouse_on_top == true: + return + mouse_on_top = true + paint_canvas.tool_layer.clear() + paint_canvas.update() + paint_canvas.tool_layer.update_texture() + + +func _on_PaintCanvasContainer_mouse_exited(): + if mouse_on_top == false: + return + mouse_on_top = false + paint_canvas.tool_layer.clear() + paint_canvas.update() + paint_canvas.tool_layer.update_texture() + + +func _on_ColorPicker_popup_closed(): + find_node("Colors").add_color_prefab(find_node("ColorPicker").color) + + +############################################ +# MISC +############################################ + +func is_position_in_canvas(pos): + if Rect2(paint_canvas_container_node.rect_global_position, + paint_canvas_container_node.rect_global_position + paint_canvas_container_node.rect_size).has_point(pos): + return true + return false + + +func is_mouse_in_canvas() -> bool: + if is_position_in_canvas(get_global_mouse_position()): + return true #mouse_on_top # check if mouse is inside canvas + else: + return false + + +func is_any_menu_open() -> bool: + return $ChangeCanvasSize.visible or \ + $ChangeGridSizeDialog.visible or \ + $Settings.visible or \ + $LoadFileDialog.visible or \ + $SaveFileDialog.visible or \ + find_node("Navbar").is_any_menu_open() + + + +func _on_LockAlpha_pressed(): + var checked = find_node("LockAlpha").pressed + paint_canvas.active_layer.toggle_alpha_locked() + for i in range(find_node("Layer").get_popup().get_item_count()): + if find_node("Layer").get_popup().get_item_text(i) == "Toggle Alpha Locked": + find_node("Layer").get_popup().set_item_checked(i, not find_node("Layer").get_popup().is_item_checked(i)) + + +func _on_BrushRect_pressed(): + if brush_mode != Tools.BRUSH: + set_brush(Tools.BRUSH) + selected_brush_prefab = BrushPrefabs.Type.RECT + + +func _on_BrushCircle_pressed(): + if brush_mode != Tools.BRUSH: + set_brush(Tools.BRUSH) + selected_brush_prefab = BrushPrefabs.Type.CIRCLE + + +func _on_BrushVLine_pressed(): + if brush_mode != Tools.BRUSH: + set_brush(Tools.BRUSH) + selected_brush_prefab = BrushPrefabs.Type.V_LINE + + +func _on_BrushHLine_pressed(): + if brush_mode != Tools.BRUSH: + set_brush(Tools.BRUSH) + selected_brush_prefab = BrushPrefabs.Type.H_LINE + + +func _on_BrushSize_value_changed(value: float): + find_node("BrushSizeLabel").text = str(int(value)) + + +func _on_XSymmetry_pressed(): + paint_canvas.symmetry_x = not paint_canvas.symmetry_x + + +func _on_YSymmetry_pressed(): + paint_canvas.symmetry_y = not paint_canvas.symmetry_y diff --git a/game/addons/Godoxel/Editor.tscn b/game/addons/Godoxel/Editor.tscn new file mode 100644 index 00000000..a7676a51 --- /dev/null +++ b/game/addons/Godoxel/Editor.tscn @@ -0,0 +1,1279 @@ +[gd_scene load_steps=56 format=2] + +[ext_resource path="res://addons/Godoxel/Editor.gd" type="Script" id=1] +[ext_resource path="res://addons/Godoxel/dialogs/LoadFileDialog.gd" type="Script" id=2] +[ext_resource path="res://addons/Godoxel/Canvas.gd" type="Script" id=3] +[ext_resource path="res://addons/Godoxel/VisualGrid.tscn" type="PackedScene" id=4] +[ext_resource path="res://addons/Godoxel/CanvasOutline.gd" type="Script" id=5] +[ext_resource path="res://addons/Godoxel/Navbar.gd" type="Script" id=6] +[ext_resource path="res://addons/Godoxel/MenuButtonExtended.gd" type="Script" id=7] +[ext_resource path="res://addons/Godoxel/Colors.gd" type="Script" id=8] +[ext_resource path="res://addons/Godoxel/SaveFileDialog.gd" type="Script" id=9] +[ext_resource path="res://addons/Godoxel/Settings.tscn" type="PackedScene" id=10] +[ext_resource path="res://addons/Godoxel/DebugTextDisplay.gd" type="Script" id=11] +[ext_resource path="res://addons/Godoxel/LayerButton.tscn" type="PackedScene" id=12] +[ext_resource path="res://addons/Godoxel/assets/grid.png" type="Texture" id=13] +[ext_resource path="res://addons/Godoxel/dialogs/ConfirmationDialog.gd" type="Script" id=14] +[ext_resource path="res://addons/Godoxel/dialogs/ChangeGridSizeDialog.gd" type="Script" id=15] +[ext_resource path="res://addons/Godoxel/assets/BrushVLine.png" type="Texture" id=16] +[ext_resource path="res://addons/Godoxel/assets/BrushRect.png" type="Texture" id=17] +[ext_resource path="res://addons/Godoxel/assets/BrushCircle.png" type="Texture" id=18] +[ext_resource path="res://addons/Godoxel/assets/BrushHLine.png" type="Texture" id=19] +[ext_resource path="res://addons/Godoxel/assets/BrushRect_Hovered.png" type="Texture" id=20] +[ext_resource path="res://addons/Godoxel/assets/BrushCircle_Hovered.png" type="Texture" id=21] +[ext_resource path="res://addons/Godoxel/assets/BrushVLine_Hovered.png" type="Texture" id=22] +[ext_resource path="res://addons/Godoxel/assets/BrushHLine_Hovered.png" type="Texture" id=23] + +[sub_resource type="Shader" id=1] +code = "shader_type canvas_item; + +uniform float pixel_size : hint_range(0.01, 1.0); + + +void fragment() { + vec4 color = texture(TEXTURE, UV); + + float light = 0.8; + float dark = 0.4; + + float val = dark; + + if ( int(UV.y * 8.0 * pixel_size) % 2 == 1 ) { + if ( int(UV.x * 8.0 * pixel_size) % 2 == 1 ) { + val = dark; + } + else { + val = light; + } + } + else { + if ( int(UV.x * 8.0 * pixel_size) % 2 == 1 ) { + val = light; + } + else { + val = dark; + } + } + + color.rgb = vec3(val, val, val); + + COLOR = color; +}" + +[sub_resource type="ShaderMaterial" id=2] +shader = SubResource( 1 ) +shader_param/pixel_size = 0.0625 + +[sub_resource type="Image" id=33] +data = { +"data": PoolByteArray( 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0 ), +"format": "RGBA8", +"height": 64, +"mipmaps": false, +"width": 64 +} + +[sub_resource type="ImageTexture" id=4] +flags = 0 +flags = 0 +image = SubResource( 33 ) +size = Vector2( 64, 64 ) + +[sub_resource type="Image" id=34] +data = { +"data": PoolByteArray( 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0, 255, 255, 255, 0 ), +"format": "RGBA8", +"height": 64, +"mipmaps": false, +"width": 64 +} + +[sub_resource type="ImageTexture" id=6] +flags = 0 +flags = 0 +image = SubResource( 34 ) +size = Vector2( 64, 64 ) + +[sub_resource type="StyleBoxFlat" id=7] +bg_color = Color( 0.2, 0.2, 0.2, 1 ) + +[sub_resource type="StyleBoxFlat" id=8] +bg_color = Color( 0.452144, 0.397716, 0.0538159, 1 ) + +[sub_resource type="StyleBoxFlat" id=9] +bg_color = Color( 0.114134, 0.989919, 0.990908, 1 ) + +[sub_resource type="StyleBoxFlat" id=10] +bg_color = Color( 0.315986, 0.563746, 0.536825, 1 ) + +[sub_resource type="StyleBoxFlat" id=11] +bg_color = Color( 0.218219, 0.336323, 0.0659741, 1 ) + +[sub_resource type="StyleBoxFlat" id=12] +bg_color = Color( 0.163289, 0.240192, 0.37346, 1 ) + +[sub_resource type="StyleBoxFlat" id=13] +bg_color = Color( 0.330661, 0.369256, 0.97379, 1 ) + +[sub_resource type="StyleBoxFlat" id=14] +bg_color = Color( 0.216537, 0.755049, 0.491349, 1 ) + +[sub_resource type="StyleBoxFlat" id=15] +bg_color = Color( 0.826652, 0.848742, 0.0115273, 1 ) + +[sub_resource type="StyleBoxFlat" id=16] +bg_color = Color( 0.122094, 0.920589, 0.44931, 1 ) + +[sub_resource type="StyleBoxFlat" id=17] +bg_color = Color( 0.150271, 0.325517, 0.694568, 1 ) + +[sub_resource type="StyleBoxFlat" id=18] +bg_color = Color( 0.703849, 0.926427, 0.334865, 1 ) + +[sub_resource type="StyleBoxFlat" id=19] +bg_color = Color( 0.471709, 0.00867083, 0.188914, 1 ) + +[sub_resource type="StyleBoxFlat" id=20] +bg_color = Color( 0.300704, 0.501144, 0.687167, 1 ) + +[sub_resource type="StyleBoxFlat" id=21] +bg_color = Color( 0.52919, 0.953225, 0.374313, 1 ) + +[sub_resource type="StyleBoxFlat" id=22] +bg_color = Color( 0.443307, 0.0121565, 0.599621, 1 ) + +[sub_resource type="StyleBoxFlat" id=23] +bg_color = Color( 0.868357, 0.245633, 0.583044, 1 ) + +[sub_resource type="StyleBoxFlat" id=24] +bg_color = Color( 0.20955, 0.510868, 0.721501, 1 ) + +[sub_resource type="StyleBoxFlat" id=25] +bg_color = Color( 0.544154, 0.786819, 0.162435, 1 ) + +[sub_resource type="StyleBoxFlat" id=26] +bg_color = Color( 0.309762, 0.772837, 0.467272, 1 ) + +[sub_resource type="StyleBoxFlat" id=27] +bg_color = Color( 0.0682784, 0.753402, 0.362869, 1 ) + +[sub_resource type="StyleBoxFlat" id=28] +bg_color = Color( 0.343818, 0.0699588, 0.589297, 1 ) + +[sub_resource type="StyleBoxFlat" id=29] +bg_color = Color( 0.290648, 0.443224, 0.249702, 1 ) + +[sub_resource type="StyleBoxFlat" id=30] +bg_color = Color( 0.838284, 0.660357, 0.11075, 1 ) + +[sub_resource type="StyleBoxFlat" id=31] +bg_color = Color( 0.876227, 0.296861, 0.400053, 1 ) + +[sub_resource type="StyleBoxFlat" id=32] +bg_color = Color( 0.156863, 0.156863, 0.156863, 1 ) +border_width_top = 2 +border_color = Color( 0.0901961, 0.0901961, 0.0901961, 1 ) + +[node name="Editor" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +rect_clip_content = true +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Panel" type="Panel" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="NoBCViewportsnotworking26181" type="Control" parent="Panel"] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_lock_": true, +"_editor_description_": "https://github.com/godotengine/godot/issues/26181" +} + +[node name="Control" type="Control" parent="Panel/NoBCViewportsnotworking26181"] +anchor_top = 0.0833333 +anchor_right = 1.0 +anchor_bottom = 0.93 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="PaintCanvasContainer" type="Control" parent="Panel/NoBCViewportsnotworking26181/Control"] +anchor_left = 0.137695 +anchor_right = 0.862305 +anchor_bottom = 1.0 +focus_mode = 1 +mouse_filter = 1 +size_flags_horizontal = 3 +size_flags_vertical = 3 +size_flags_stretch_ratio = 6.0 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="Canvas" type="Control" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer"] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -238.288 +margin_top = -118.205 +margin_right = 17.7117 +margin_bottom = 137.795 +mouse_filter = 1 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( 3 ) +__meta__ = { +"_edit_group_": true, +"_edit_use_anchors_": false +} +pixel_size = 4 +canvas_width = 64 +canvas_height = 64 +grid_size = 1 +big_grid_size = 8 + +[node name="CanvasBackground" type="TextureRect" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer/Canvas"] +show_behind_parent = true +material = SubResource( 2 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +texture = ExtResource( 13 ) +expand = true +stretch_mode = 2 +__meta__ = { +"_edit_lock_": true +} + +[node name="CanvasLayers" type="Control" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer/Canvas"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +__meta__ = { +"_edit_lock_": true, +"_edit_use_anchors_": false +} + +[node name="PreviewLayer" type="TextureRect" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer/Canvas"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +texture = SubResource( 4 ) +expand = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ToolPreviewLayer" type="TextureRect" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer/Canvas"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +texture = SubResource( 6 ) +expand = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Grid" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer/Canvas" instance=ExtResource( 4 )] +mouse_filter = 2 +color = Color( 1, 1, 1, 0.415686 ) +size = 4 + +[node name="CanvasOutline" type="Control" parent="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer/Canvas"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +script = ExtResource( 5 ) +__meta__ = { +"_edit_lock_": true, +"_edit_use_anchors_": false +} +color = Color( 0, 1, 0, 1 ) + +[node name="RightPanel" type="Panel" parent="Panel/NoBCViewportsnotworking26181/Control"] +anchor_left = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -140.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/panel = SubResource( 7 ) +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="ScrollContainer" type="ScrollContainer" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel"] +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = 4.0 +margin_top = 4.0 +margin_right = -4.0 +margin_bottom = -4.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ToolMenu" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer"] +margin_right = 132.0 +margin_bottom = 500.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Tools" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu"] +margin_right = 132.0 +margin_bottom = 248.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="PaintTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_right = 132.0 +margin_bottom = 21.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Pencil (Q)" + +[node name="BrushTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +visible = false +margin_top = 24.0 +margin_right = 132.0 +margin_bottom = 44.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Brush" + +[node name="MultiTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +visible = false +margin_top = 24.0 +margin_right = 132.0 +margin_bottom = 44.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Polygon" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="BucketTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 25.0 +margin_right = 132.0 +margin_bottom = 46.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Bucket Fill (F)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="RainbowTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 50.0 +margin_right = 132.0 +margin_bottom = 71.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Rainbow (R)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="LineTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 75.0 +margin_right = 132.0 +margin_bottom = 96.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Line (L)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="RectTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 100.0 +margin_right = 132.0 +margin_bottom = 122.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Rectangle" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="DarkenTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 126.0 +margin_right = 132.0 +margin_bottom = 147.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Darken (D)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="BrightenTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 151.0 +margin_right = 132.0 +margin_bottom = 172.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Brighten (B)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ColorPickerTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 176.0 +margin_right = 132.0 +margin_bottom = 197.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Color Picker (P)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CutTool" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 201.0 +margin_right = 132.0 +margin_bottom = 222.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Cut Section (C)" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ColorPicker" type="ColorPickerButton" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools"] +margin_top = 226.0 +margin_right = 132.0 +margin_bottom = 248.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Control" type="ScrollContainer" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu"] +margin_top = 252.0 +margin_right = 132.0 +margin_bottom = 500.0 +size_flags_vertical = 3 + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Control"] +margin_right = 132.0 +margin_bottom = 248.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="LayerButtons" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Control/VBoxContainer"] +margin_right = 132.0 +margin_bottom = 219.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Layer1" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Control/VBoxContainer/LayerButtons" instance=ExtResource( 12 )] +anchor_right = 0.0 +anchor_bottom = 0.0 +margin_right = 132.0 +margin_bottom = 32.0 + +[node name="Button" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Control/VBoxContainer"] +margin_top = 223.0 +margin_right = 132.0 +margin_bottom = 248.0 +rect_min_size = Vector2( 0, 25 ) +size_flags_horizontal = 3 +text = "+" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="LeftPanel" type="Panel" parent="Panel/NoBCViewportsnotworking26181/Control"] +anchor_right = 0.0166016 +anchor_bottom = 1.0 +margin_right = 140.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/panel = SubResource( 7 ) +__meta__ = { +"_edit_use_anchors_": true, +"_editor_description_": "" +} + +[node name="MarginContainer" type="MarginContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel"] +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer"] +margin_right = 157.0 +margin_bottom = 508.0 +custom_constants/separation = 12 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ScrollContainer" type="ScrollContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer"] +margin_right = 157.0 +margin_bottom = 144.0 +rect_min_size = Vector2( 0, 144 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Colors" type="GridContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer"] +margin_right = 145.0 +margin_bottom = 170.0 +rect_min_size = Vector2( 0, 144 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +columns = 4 +script = ExtResource( 8 ) + +[node name="Button1" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_right = 33.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 8 ) + +[node name="Button2" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 37.0 +margin_right = 70.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 9 ) + +[node name="Button3" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 74.0 +margin_right = 107.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 10 ) + +[node name="Button4" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 111.0 +margin_right = 144.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 11 ) + +[node name="Button5" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_top = 29.0 +margin_right = 33.0 +margin_bottom = 54.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 12 ) + +[node name="Button6" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 37.0 +margin_top = 29.0 +margin_right = 70.0 +margin_bottom = 54.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 13 ) + +[node name="Button7" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 74.0 +margin_top = 29.0 +margin_right = 107.0 +margin_bottom = 54.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 14 ) + +[node name="Button8" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 111.0 +margin_top = 29.0 +margin_right = 144.0 +margin_bottom = 54.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 15 ) + +[node name="Button9" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_top = 58.0 +margin_right = 33.0 +margin_bottom = 83.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 16 ) + +[node name="Button10" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 37.0 +margin_top = 58.0 +margin_right = 70.0 +margin_bottom = 83.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 17 ) + +[node name="Button11" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 74.0 +margin_top = 58.0 +margin_right = 107.0 +margin_bottom = 83.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 18 ) + +[node name="Button12" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 111.0 +margin_top = 58.0 +margin_right = 144.0 +margin_bottom = 83.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 19 ) + +[node name="Button13" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_top = 87.0 +margin_right = 33.0 +margin_bottom = 112.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 20 ) + +[node name="Button14" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 37.0 +margin_top = 87.0 +margin_right = 70.0 +margin_bottom = 112.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 21 ) + +[node name="Button15" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 74.0 +margin_top = 87.0 +margin_right = 107.0 +margin_bottom = 112.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 22 ) + +[node name="Button16" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 111.0 +margin_top = 87.0 +margin_right = 144.0 +margin_bottom = 112.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 23 ) + +[node name="Button17" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_top = 116.0 +margin_right = 33.0 +margin_bottom = 141.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 24 ) + +[node name="Button18" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 37.0 +margin_top = 116.0 +margin_right = 70.0 +margin_bottom = 141.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 25 ) + +[node name="Button19" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 74.0 +margin_top = 116.0 +margin_right = 107.0 +margin_bottom = 141.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 26 ) + +[node name="Button20" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 111.0 +margin_top = 116.0 +margin_right = 144.0 +margin_bottom = 141.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 27 ) + +[node name="Button21" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_top = 145.0 +margin_right = 33.0 +margin_bottom = 170.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 28 ) + +[node name="Button22" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 37.0 +margin_top = 145.0 +margin_right = 70.0 +margin_bottom = 170.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 29 ) + +[node name="Button23" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 74.0 +margin_top = 145.0 +margin_right = 107.0 +margin_bottom = 170.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 30 ) + +[node name="Button24" type="Button" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/ScrollContainer/Colors"] +margin_left = 111.0 +margin_top = 145.0 +margin_right = 144.0 +margin_bottom = 170.0 +rect_min_size = Vector2( 25, 25 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +custom_styles/normal = SubResource( 31 ) + +[node name="VBoxContainer" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer"] +margin_top = 156.0 +margin_right = 157.0 +margin_bottom = 196.0 + +[node name="LockAlpha" type="CheckButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VBoxContainer"] +margin_right = 157.0 +margin_bottom = 40.0 +text = "Lock Alpha" +align = 2 + +[node name="BrushSelection" type="GridContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer"] +margin_top = 208.0 +margin_right = 157.0 +margin_bottom = 233.0 +columns = 4 + +[node name="BrushRect" type="TextureButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection"] +margin_right = 25.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +texture_normal = ExtResource( 17 ) +texture_hover = ExtResource( 20 ) + +[node name="BrushCircle" type="TextureButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection"] +margin_left = 29.0 +margin_right = 54.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +texture_normal = ExtResource( 18 ) +texture_hover = ExtResource( 21 ) + +[node name="BrushVLine" type="TextureButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection"] +margin_left = 58.0 +margin_right = 83.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +texture_normal = ExtResource( 16 ) +texture_hover = ExtResource( 22 ) + +[node name="BrushHLine" type="TextureButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection"] +margin_left = 87.0 +margin_right = 112.0 +margin_bottom = 25.0 +rect_min_size = Vector2( 25, 25 ) +texture_normal = ExtResource( 19 ) +texture_hover = ExtResource( 23 ) + +[node name="VSplitContainer" type="VBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer"] +margin_top = 245.0 +margin_right = 157.0 +margin_bottom = 279.0 +size_flags_horizontal = 3 + +[node name="BrushLabel" type="Label" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VSplitContainer"] +margin_right = 157.0 +margin_bottom = 14.0 +text = "Brush Size" + +[node name="HBoxContainer" type="HBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VSplitContainer"] +margin_top = 18.0 +margin_right = 157.0 +margin_bottom = 34.0 + +[node name="BrushSizeLabel" type="Label" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VSplitContainer/HBoxContainer"] +margin_top = 1.0 +margin_right = 30.0 +margin_bottom = 15.0 +rect_min_size = Vector2( 30, 0 ) +text = "1" + +[node name="BrushSize" type="HSlider" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VSplitContainer/HBoxContainer"] +margin_left = 34.0 +margin_right = 157.0 +margin_bottom = 16.0 +size_flags_horizontal = 3 +size_flags_vertical = 2 +min_value = 1.0 +value = 1.0 + +[node name="XSymmetry" type="CheckButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer"] +margin_top = 291.0 +margin_right = 157.0 +margin_bottom = 331.0 +text = "X Symmetry" + +[node name="YSymmetry" type="CheckButton" parent="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer"] +margin_top = 343.0 +margin_right = 157.0 +margin_bottom = 383.0 +text = "Y Symmetry" + +[node name="Navbar" type="Control" parent="Panel/NoBCViewportsnotworking26181"] +anchor_right = 1.0 +anchor_bottom = 0.0833333 +size_flags_horizontal = 3 +size_flags_vertical = 3 +script = ExtResource( 6 ) +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="Panel" type="Panel" parent="Panel/NoBCViewportsnotworking26181/Navbar"] +self_modulate = Color( 0.854902, 0.854902, 0.854902, 1 ) +anchor_right = 1.0 +anchor_bottom = 1.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Buttons" type="HBoxContainer" parent="Panel/NoBCViewportsnotworking26181/Navbar"] +anchor_left = 0.0078125 +anchor_top = 0.12 +anchor_right = 0.628906 +anchor_bottom = 0.62 +custom_constants/separation = 20 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="File" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_right = 73.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "File" +flat = false +items = [ "New", null, 0, false, false, 0, 0, null, "", false, "Save", null, 0, false, false, 1, 0, null, "", false, "Load", null, 0, false, false, 2, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) + +[node name="Edit" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_left = 93.0 +margin_right = 167.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +disabled = true +text = "Edit" +flat = false +items = [ "Undo", null, 0, false, false, 0, 0, null, "", false, "Redo", null, 0, false, false, 1, 0, null, "", false, "Cut", null, 0, false, false, 2, 0, null, "", false, "Copy", null, 0, false, false, 3, 0, null, "", false, "Paste", null, 0, false, false, 4, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) + +[node name="Canvas" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_left = 187.0 +margin_right = 260.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Canvas" +flat = false +items = [ "Change Size", null, 0, false, false, 0, 0, null, "", false, "Crop To Content", null, 0, false, true, 1, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) + +[node name="Layer" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_left = 280.0 +margin_right = 354.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Layer" +flat = false +items = [ "Add Layer", null, 0, false, false, 0, 0, null, "", false, "Delete Layer", null, 0, false, false, 1, 0, null, "", false, "Duplicate Layer", null, 0, false, false, 2, 0, null, "", false, "Clear Layer", null, 0, false, false, 3, 0, null, "", false, "", null, 0, false, false, 4, 0, null, "", true, "Toggle Alpha Locked", null, 1, false, false, 5, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) + +[node name="Grid" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_left = 374.0 +margin_right = 447.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Grid" +flat = false +items = [ "Toggle Grid", null, 0, false, false, 0, 0, null, "", false, "Change Grid Size", null, 0, false, false, 1, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) + +[node name="Magic" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_left = 467.0 +margin_right = 541.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Magic" +flat = false +items = [ "ChangeSingleColor", null, 0, false, false, 0, 0, null, "", false, "ChangeColorRange", null, 0, false, false, 1, 0, null, "", false, "HSV Noise", null, 0, false, false, 2, 0, null, "", false, "HSV Color Modulation", null, 0, false, false, 3, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) + +[node name="Editor" type="MenuButton" parent="Panel/NoBCViewportsnotworking26181/Navbar/Buttons"] +margin_left = 561.0 +margin_right = 635.0 +margin_bottom = 24.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Editor" +flat = false +items = [ "Settings", null, 0, false, false, 0, 0, null, "", false ] +switch_on_hover = true +script = ExtResource( 7 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="Panel/NoBCViewportsnotworking26181/Navbar"] +modulate = Color( 1, 1, 1, 0.184314 ) +anchor_left = 1.0 +anchor_right = 1.0 +margin_left = -164.0 +margin_bottom = 50.0 +text = "Undo (Z) +Redo (Y)" +align = 1 +valign = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="BottomPanel" type="Panel" parent="Panel/NoBCViewportsnotworking26181"] +anchor_top = 0.931667 +anchor_right = 0.839844 +anchor_bottom = 0.998333 +rect_min_size = Vector2( 0, 40 ) +size_flags_horizontal = 3 +custom_styles/panel = SubResource( 32 ) +__meta__ = { +"_edit_group_": true, +"_edit_use_anchors_": true +} + +[node name="DebugTextDisplay" type="RichTextLabel" parent="Panel/NoBCViewportsnotworking26181/BottomPanel"] +anchor_right = 1.0 +anchor_bottom = 1.0 +text = "FPS 60 Mouse Position (-12, 130) Canvas Mouse Position (-285.711731, -55.794662) Canvas Position (273.711731, 185.794662) +Cell Position (67, -25) Cell Color 0,0,0,0 " +scroll_active = false +script = ExtResource( 11 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="SaveFileDialog" type="FileDialog" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -340.0 +margin_top = -165.0 +margin_right = 340.0 +margin_bottom = 165.0 +mouse_filter = 1 +filters = PoolStringArray( "*.png ; PNG Images" ) +script = ExtResource( 9 ) + +[node name="LoadFileDialog" type="FileDialog" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -340.0 +margin_top = -165.0 +margin_right = 340.0 +margin_bottom = 165.0 +mouse_filter = 1 +window_title = "Open a File" +mode = 0 +filters = PoolStringArray( "*.png ; PNG Images" ) +script = ExtResource( 2 ) + +[node name="Settings" parent="." instance=ExtResource( 10 )] +visible = false +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -150.0 +margin_top = -50.0 +margin_right = 150.0 +margin_bottom = 50.0 +mouse_filter = 1 + +[node name="ChangeCanvasSize" type="ConfirmationDialog" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -162.0 +margin_top = -69.0 +margin_right = 162.0 +margin_bottom = 69.0 +script = ExtResource( 14 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="ChangeCanvasSize"] +anchor_left = 0.104938 +anchor_top = 0.108696 +anchor_right = 0.891975 +anchor_bottom = 0.695652 +margin_left = -25.9999 +margin_top = -7.00005 +margin_right = 27.0001 +margin_bottom = 6.00002 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="Label" type="Label" parent="ChangeCanvasSize/VBoxContainer"] +margin_top = 7.0 +margin_right = 308.0 +margin_bottom = 21.0 +size_flags_vertical = 6 +text = "Change canvas size?" +align = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="ChangeCanvasSize/VBoxContainer"] +margin_top = 32.0 +margin_right = 308.0 +margin_bottom = 61.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="ChangeCanvasSize/VBoxContainer/HBoxContainer"] +margin_top = 7.0 +margin_right = 152.0 +margin_bottom = 21.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +text = "Width (X)" + +[node name="Width" type="SpinBox" parent="ChangeCanvasSize/VBoxContainer/HBoxContainer"] +margin_left = 156.0 +margin_right = 308.0 +margin_bottom = 29.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +min_value = 1.0 +max_value = 2500.0 +value = 64.0 +align = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HBoxContainer2" type="HBoxContainer" parent="ChangeCanvasSize/VBoxContainer"] +margin_top = 65.0 +margin_right = 308.0 +margin_bottom = 94.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="ChangeCanvasSize/VBoxContainer/HBoxContainer2"] +margin_top = 7.0 +margin_right = 152.0 +margin_bottom = 21.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +text = "Height (Y)" + +[node name="Height" type="SpinBox" parent="ChangeCanvasSize/VBoxContainer/HBoxContainer2"] +margin_left = 156.0 +margin_right = 308.0 +margin_bottom = 29.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +min_value = 1.0 +max_value = 2500.0 +value = 64.0 +align = 1 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="ChangeGridSizeDialog" type="AcceptDialog" parent="."] +anchor_left = 0.5 +anchor_top = 0.5 +anchor_right = 0.5 +anchor_bottom = 0.5 +margin_left = -127.0 +margin_top = -74.0 +margin_right = 128.0 +margin_bottom = 73.0 +window_title = "Change Grid Size" +resizable = true +script = ExtResource( 15 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="ChangeGridSizeDialog"] +anchor_left = 0.0313726 +anchor_top = 0.0816327 +anchor_right = 0.968627 +anchor_bottom = 0.727891 +margin_left = -1.23978e-05 +margin_top = -4.00001 +margin_right = 0.00012207 +margin_bottom = 4.00002 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="Label" type="Label" parent="ChangeGridSizeDialog/VBoxContainer"] +margin_right = 239.0 +margin_bottom = 31.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 +text = "Change Grid Size" +align = 1 + +[node name="HBoxContainer" type="HBoxContainer" parent="ChangeGridSizeDialog/VBoxContainer"] +margin_top = 35.0 +margin_right = 239.0 +margin_bottom = 67.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="ChangeGridSizeDialog/VBoxContainer/HBoxContainer"] +margin_top = 9.0 +margin_right = 117.0 +margin_bottom = 23.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +text = "Grid 1" + +[node name="GridValue" type="SpinBox" parent="ChangeGridSizeDialog/VBoxContainer/HBoxContainer"] +margin_left = 121.0 +margin_top = 4.0 +margin_right = 239.0 +margin_bottom = 28.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +max_value = 2500.0 +value = 1.0 + +[node name="HBoxContainer2" type="HBoxContainer" parent="ChangeGridSizeDialog/VBoxContainer"] +margin_top = 71.0 +margin_right = 239.0 +margin_bottom = 103.0 +size_flags_horizontal = 3 +size_flags_vertical = 3 + +[node name="Label" type="Label" parent="ChangeGridSizeDialog/VBoxContainer/HBoxContainer2"] +margin_top = 9.0 +margin_right = 117.0 +margin_bottom = 23.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +text = "Grid 2" + +[node name="BigGridValue" type="SpinBox" parent="ChangeGridSizeDialog/VBoxContainer/HBoxContainer2"] +margin_left = 121.0 +margin_top = 4.0 +margin_right = 239.0 +margin_bottom = 28.0 +size_flags_horizontal = 3 +size_flags_vertical = 6 +max_value = 2500.0 +value = 8.0 +[connection signal="mouse_entered" from="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer" to="." method="_on_PaintCanvasContainer_mouse_entered"] +[connection signal="mouse_exited" from="Panel/NoBCViewportsnotworking26181/Control/PaintCanvasContainer" to="." method="_on_PaintCanvasContainer_mouse_exited"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/PaintTool" to="." method="_on_PaintTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/BrushTool" to="." method="_on_BrushTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/MultiTool" to="." method="_on_MultiTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/BucketTool" to="." method="_on_BucketTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/RainbowTool" to="." method="_on_RainbowTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/LineTool" to="." method="_on_LineTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/RectTool" to="." method="_on_RectTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/DarkenTool" to="." method="_on_DarkenTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/BrightenTool" to="." method="_on_BrightenTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/ColorPickerTool" to="." method="_on_ColorPickerTool_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/CutTool" to="." method="_on_CutTool_pressed"] +[connection signal="color_changed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/ColorPicker" to="." method="_on_ColorPicker_color_changed"] +[connection signal="popup_closed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Tools/ColorPicker" to="." method="_on_ColorPicker_popup_closed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/RightPanel/ScrollContainer/ToolMenu/Control/VBoxContainer/Button" to="." method="_on_Button_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VBoxContainer/LockAlpha" to="." method="_on_LockAlpha_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection/BrushRect" to="." method="_on_BrushRect_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection/BrushCircle" to="." method="_on_BrushCircle_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection/BrushVLine" to="." method="_on_BrushVLine_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/BrushSelection/BrushHLine" to="." method="_on_BrushHLine_pressed"] +[connection signal="value_changed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/VSplitContainer/HBoxContainer/BrushSize" to="." method="_on_BrushSize_value_changed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/XSymmetry" to="." method="_on_XSymmetry_pressed"] +[connection signal="pressed" from="Panel/NoBCViewportsnotworking26181/Control/LeftPanel/MarginContainer/VBoxContainer/YSymmetry" to="." method="_on_YSymmetry_pressed"] +[connection signal="about_to_show" from="SaveFileDialog" to="SaveFileDialog" method="_on_SaveFileDialog_about_to_show"] +[connection signal="confirmed" from="SaveFileDialog" to="SaveFileDialog" method="_on_SaveFileDialog_confirmed"] +[connection signal="file_selected" from="SaveFileDialog" to="SaveFileDialog" method="_on_SaveFileDialog_file_selected"] +[connection signal="visibility_changed" from="SaveFileDialog" to="SaveFileDialog" method="_on_SaveFileDialog_visibility_changed"] +[connection signal="about_to_show" from="LoadFileDialog" to="LoadFileDialog" method="_on_LoadFileDialog_about_to_show"] +[connection signal="confirmed" from="LoadFileDialog" to="LoadFileDialog" method="_on_LoadFileDialog_confirmed"] +[connection signal="file_selected" from="LoadFileDialog" to="LoadFileDialog" method="_on_LoadFileDialog_file_selected"] +[connection signal="visibility_changed" from="LoadFileDialog" to="LoadFileDialog" method="_on_LoadFileDialog_visibility_changed"] +[connection signal="confirmed" from="ChangeCanvasSize" to="ChangeCanvasSize" method="_on_ConfirmationDialog_confirmed"] +[connection signal="visibility_changed" from="ChangeCanvasSize" to="ChangeCanvasSize" method="_on_ChangeCanvasSize_visibility_changed"] +[connection signal="confirmed" from="ChangeGridSizeDialog" to="ChangeGridSizeDialog" method="_on_ChangeGridSizeDialog_confirmed"] +[connection signal="visibility_changed" from="ChangeGridSizeDialog" to="ChangeGridSizeDialog" method="_on_ChangeGridSizeDialog_visibility_changed"] +[connection signal="value_changed" from="ChangeGridSizeDialog/VBoxContainer/HBoxContainer/GridValue" to="ChangeGridSizeDialog" method="_on_GridValue_value_changed"] +[connection signal="value_changed" from="ChangeGridSizeDialog/VBoxContainer/HBoxContainer2/BigGridValue" to="ChangeGridSizeDialog" method="_on_BigGridValue_value_changed"] diff --git a/game/addons/Godoxel/LICENSE b/game/addons/Godoxel/LICENSE new file mode 100644 index 00000000..f732571f --- /dev/null +++ b/game/addons/Godoxel/LICENSE @@ -0,0 +1,22 @@ +MIT License + +Copyright (c) 2019 Flairieve +Copyright (c) 2020 cobrapitz + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/game/addons/Godoxel/Layer.gd b/game/addons/Godoxel/Layer.gd new file mode 100644 index 00000000..1200f3b4 --- /dev/null +++ b/game/addons/Godoxel/Layer.gd @@ -0,0 +1,98 @@ +extends Reference +class_name GELayer + + +var name +var layer_width +var layer_height +var visible = true setget set_visible +var locked = false +var alpha_locked = false + +var texture: ImageTexture +var image: Image +var texture_rect_ref + + +func _init(): + texture = ImageTexture.new() + + +func create(texture_rect_ref, width: int, height: int): + self.texture_rect_ref = texture_rect_ref + + layer_width = width + layer_height = height + + image = Image.new() + image.create(width, height, false, Image.FORMAT_RGBA8) + image.fill(Color.transparent) + update_texture() + + +func resize(width: int, height: int): + var pixel_colors = [] + var prev_width = layer_width + var prev_height = layer_height + + image.lock() + for y in range(prev_height): + for x in range(prev_width): + pixel_colors.append(image.get_pixel(x, y)) + image.unlock() + + layer_width = width + layer_height = height + + image.create(width, height, false, Image.FORMAT_RGBA8) + + image.lock() + for x in range(prev_width): + for y in range(prev_height): + if x >= width or y >= height: + continue + image.set_pixel(x, y, pixel_colors[GEUtils.to_1D(x, y, prev_width)]) + image.unlock() + + update_texture() + + +func set_pixel(x, y, color): + image.lock() + image.set_pixel(x, y, color) + image.unlock() + + +func get_pixel(x: int, y: int): + if x < 0 or y < 0 or x >= image.get_width() or y >= image.get_height(): + return null + image.lock() + var pixel = image.get_pixel(x, y) + image.unlock() + return pixel + + +func clear(): + image.fill(Color.transparent) + update_texture() + + +func update_texture(): + texture.create_from_image(image, 0) + texture_rect_ref.texture = texture + texture_rect_ref.margin_right = 0 + texture_rect_ref.margin_bottom = 0 + + +func set_visible(vis: bool): + visible = vis + texture_rect_ref.visible = visible + + +func toggle_lock(): + locked = not locked + + +func toggle_alpha_locked(): + alpha_locked = not alpha_locked + diff --git a/game/addons/Godoxel/LayerButton.tscn b/game/addons/Godoxel/LayerButton.tscn new file mode 100644 index 00000000..9252482d --- /dev/null +++ b/game/addons/Godoxel/LayerButton.tscn @@ -0,0 +1,110 @@ +[gd_scene load_steps=11 format=2] + +[ext_resource path="res://addons/Godoxel/assets/minidotta_invis.png" type="Texture" id=1] +[ext_resource path="res://addons/Godoxel/assets/minidotta.png" type="Texture" id=2] +[ext_resource path="res://addons/Godoxel/assets/arrow_down.png" type="Texture" id=3] +[ext_resource path="res://addons/Godoxel/assets/arrow_up.png" type="Texture" id=4] +[ext_resource path="res://addons/Godoxel/assets/lock_layer_1.png" type="Texture" id=5] +[ext_resource path="res://addons/Godoxel/assets/unlock_layer.png" type="Texture" id=6] + + +[sub_resource type="StyleBoxFlat" id=4] +bg_color = Color( 0.180392, 0.176471, 0.176471, 1 ) + +[sub_resource type="StyleBoxFlat" id=1] +bg_color = Color( 0.25098, 0.25098, 0.25098, 0 ) + +[sub_resource type="StyleBoxFlat" id=2] +bg_color = Color( 0.6, 0.6, 0.6, 0 ) + +[sub_resource type="StyleBoxFlat" id=3] +bg_color = Color( 0.6, 0.6, 0.6, 0 ) + +[node name="Layer1" type="Panel"] +show_behind_parent = true +anchor_right = 0.113281 +anchor_bottom = 0.0416667 +margin_bottom = -1.90735e-06 +rect_min_size = Vector2( 0, 32 ) +mouse_filter = 2 +custom_styles/panel = SubResource( 4 ) +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="Select" type="Button" parent="." groups=[ +"layer_button", +]] +anchor_right = 0.827586 +anchor_bottom = 1.0 +custom_styles/hover = SubResource( 1 ) +custom_styles/pressed = SubResource( 1 ) +custom_styles/focus = SubResource( 1 ) +custom_styles/disabled = SubResource( 1 ) +custom_styles/normal = SubResource( 1 ) +text = "Layer 1" +align = 2 +__meta__ = { +"_edit_use_anchors_": true +} + +[node name="Visible" type="CheckButton" parent="."] +anchor_top = 0.5 +anchor_bottom = 0.5 +margin_left = 3.0 +margin_top = -8.5 +margin_right = 19.0 +margin_bottom = 7.5 +custom_icons/off = ExtResource( 1 ) +custom_icons/on = ExtResource( 2 ) +custom_styles/normal = SubResource( 2 ) +pressed = true +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Lock" type="CheckButton" parent="."] +anchor_top = 0.5 +anchor_bottom = 0.5 +margin_left = 22.0 +margin_top = -11.0 +margin_right = 46.0 +margin_bottom = 11.0 +custom_icons/off = ExtResource( 6 ) +custom_icons/on = ExtResource( 5 ) +custom_styles/normal = SubResource( 3 ) +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VBoxContainer" type="VBoxContainer" parent="."] +anchor_left = 1.0 +anchor_right = 1.0 +anchor_bottom = 1.0 +margin_left = -20.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Up" type="TextureButton" parent="VBoxContainer"] +margin_right = 20.0 +margin_bottom = 14.0 +rect_min_size = Vector2( 20, 0 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +texture_normal = ExtResource( 4 ) +texture_pressed = ExtResource( 2 ) +expand = true +stretch_mode = 3 + +[node name="Down" type="TextureButton" parent="VBoxContainer"] +margin_top = 18.0 +margin_right = 20.0 +margin_bottom = 32.0 +rect_min_size = Vector2( 20, 0 ) +size_flags_horizontal = 3 +size_flags_vertical = 3 +texture_normal = ExtResource( 3 ) +texture_pressed = ExtResource( 2 ) +expand = true +stretch_mode = 3 diff --git a/game/addons/Godoxel/MenuButtonExtended.gd b/game/addons/Godoxel/MenuButtonExtended.gd new file mode 100644 index 00000000..dd442f6e --- /dev/null +++ b/game/addons/Godoxel/MenuButtonExtended.gd @@ -0,0 +1,13 @@ +tool +extends MenuButton + +var popup = get_popup() +signal item_pressed + +func _ready(): + popup.connect("id_pressed", self, "id_pressed") + +func id_pressed(id): + emit_signal("item_pressed", name, popup.get_item_text(id), id) + + diff --git a/game/addons/Godoxel/Navbar.gd b/game/addons/Godoxel/Navbar.gd new file mode 100644 index 00000000..5752c3f0 --- /dev/null +++ b/game/addons/Godoxel/Navbar.gd @@ -0,0 +1,106 @@ +tool +extends Control + +var editor +var paint_canvas + +func _ready(): + editor = owner + paint_canvas = editor.find_node("PaintCanvas") + + for i in get_node("Buttons").get_children(): + i.connect("item_pressed", self, "button_pressed") + + +func button_pressed(button_name, button_item, id): +# print("pressed: ", button_name) +# print("pressed item is: '%s'" % button_item) + + match button_name: + "File": + handle_file_menu(button_item, id) + "Edit": + handle_edit_menu(button_item, id) + "Canvas": + handle_canvas_menu(button_item, id) + "Layer": + handle_layer_menu(button_item, id) + "Grid": + handle_grid_menu(button_item, id) + "Magic": + handle_magic_menu(button_item, id) + "Editor": + handle_editor_menu(button_item, id) + + +func handle_file_menu(pressed_item: String, id): + match pressed_item: + "Save": + owner.get_node("SaveFileDialog").show() + "Load": + owner.get_node("LoadFileDialog").show() + "New": + owner.get_node("ConfirmationDialog").show() + + +func handle_edit_menu(pressed_item: String, id): + match pressed_item: + "Add Layer": + editor.add_new_layer() + + +func handle_canvas_menu(pressed_item: String, id): + match pressed_item: + "Change Size": + owner.get_node("ChangeCanvasSize").show() + "Crop To Content": + owner.paint_canvas.crop_to_content() + + +func handle_layer_menu(pressed_item: String, id): + match pressed_item: + "Add Layer": + editor.add_new_layer() + "Delete Layer": + editor.remove_active_layer() + "Duplicate Layer": + editor.duplicate_active_layer() + "Clear Layer": + owner.paint_canvas.clear_active_layer() + "Toggle Alpha Locked": + owner.paint_canvas.active_layer.toggle_alpha_locked() + $Buttons/Layer.get_popup().set_item_checked(id, not $Buttons/Layer.get_popup().is_item_checked(id)) + owner.find_node("LockAlpha").pressed = $Buttons/Layer.get_popup().is_item_checked(id) + + +func handle_grid_menu(pressed_item: String, id): + match pressed_item: + "Change Grid Size": + owner.get_node("ChangeGridSizeDialog").show() + "Toggle Grid": + owner.paint_canvas.toggle_grid() + + +func handle_magic_menu(pressed_item: String, id): + match pressed_item: + "Add Layer": + editor.add_new_layer() + + +func handle_editor_menu(pressed_item: String, id): + match pressed_item: + "Settings": + owner.get_node("Settings").show() + "Toggle Grid": + var grids_node = owner.find_node("Grids") + grids_node.visible = !grids_node.visible + "Reset Canvas Position": + owner.paint_canvas_node.rect_position = Vector2(0, 0) + + +func is_any_menu_open() -> bool: + for child in $Buttons.get_children(): + if child.get_popup().visible: + return true + return false + diff --git a/game/addons/Godoxel/PaintCanvas.gd b/game/addons/Godoxel/PaintCanvas.gd new file mode 100644 index 00000000..934fc34b --- /dev/null +++ b/game/addons/Godoxel/PaintCanvas.gd @@ -0,0 +1,489 @@ +tool +extends Control + +var image = Image.new() +var last_pixel = [] +onready var canvas_image_node = get_node("CanvasImage") +export var grid_size = 16 +export var canvas_size = Vector2(48, 28) +export var region_size = 10 +export var can_draw = true + +var mouse_in_region +var mouse_on_top + +#terms +#global cell - a cell that has a global grid position on the canvas +#local cell - a cell that has a local grid position in a chunk region on the canvas +#chunk region - a set of cells contained in an even number + +#TODO: Maybe each chunk region can hold an image resource so that way the engine wouldn't lag at all when updating the canvas + +var layers = {} +var active_layer + +var preview_layer = "preview" +var preview_enabled = false + + +func _enter_tree(): + #---------------------- + # init Layer + #---------------------- + layers[preview_layer] = { + "layer": null, + "data": [], + "chunks": null, + } + + canvas_size = Vector2(int(rect_size.x / grid_size), int(rect_size.y / grid_size)) + #print("canvas_size: ", canvas_size) + + +func _ready(): + active_layer = add_existing_layer(get_tree().get_nodes_in_group("layer")[0]) + #print("active Layer: ", active_layer) + + +func get_layer_data(layer_name): + return layers[layer_name] + + +func get_active_layer(): + return layers[active_layer] + + +func get_preview_layer(): + return layers[preview_layer] + + +func clear_active_layer(): + for pixel in layers[active_layer].data: + set_global_cell_in_chunk(pixel[0], pixel[1], Color(0,0,0,0)) + + +func clear_layer(layer_name: String): + for pixel in layers[layer_name].data: + set_global_cell_in_chunk(pixel[0], pixel[1], Color(0,0,0,0)) + + +func clear_preview_layer(): + for pixel in layers["preview"].data: + set_global_cell_in_chunk(pixel[0], pixel[1], Color(0,0,0,0)) + + +func remove_layer(layer_name): + get_node("ChunkNodes").remove_child(layers[layer_name].chunks) + layers[layer_name].chunks.queue_free() + + layers.erase(layer_name) + + if active_layer == layer_name: + for layer in layers: + if layer == preview_layer: + continue + active_layer = layer + break + + return active_layer + + + +# only needed for init +func add_existing_layer(layer): + layers[layer.name] = { + "layer": layer, + "data": [], + "chunks": null, + } + generate_chunks() + return layer.name + + +func add_new_layer(layer_name): + layers[layer_name] = { + "layer": null, + "data": [], + "chunks": null, + } + + generate_chunks() + + return layer_name + + +func duplicate_layer(layer: String, neu_layer_name: String): + var _preview = preview_enabled + preview_enabled = false + var _temp = active_layer + active_layer = neu_layer_name + + layers[neu_layer_name] = { + "layer": null, + "data": layers[layer].data.duplicate(true), + "chunks": null, + } + + generate_chunks() +# get_node("ChunkNodes").remove_child(layers[neu_layer_name].chunks) +# get_node("ChunkNodes").add_child_below_node(layers[layer].chunks, layers[neu_layer_name].chunks, true) + + for pixel in layers[neu_layer_name].data: + set_pixel_cell(pixel[0], pixel[1], pixel[2]) + active_layer = _temp + + preview_enabled = _preview + return neu_layer_name + + +func toggle_layer_visibility(layer_name): + layers[layer_name].chunks.visible = not layers[layer_name].chunks.visible + #print("Layer: ", layer_name, " is now: ", layers[layer_name].chunks.visible) + + +var util = preload("res://addons/Godoxel/Util.gd") + + +func _on_mouse_entered(): + mouse_on_top = true + + +func _on_mouse_exited(): + mouse_on_top = false + + +func _process(delta): + var mouse_position = get_local_mouse_position() + var rect = Rect2(Vector2(0, 0), rect_size) + mouse_in_region = rect.has_point(mouse_position) + update() + #if not Engine.editor_hint: + # print(mouse_on_canvas, " | ", has_focus()) + #draw_canvas_out just updates the image constantly + #if can_draw: + # draw_canvas_out() + + +func generate_chunks(): + var maxium_chunk_size = get_maxium_filled_chunks() + #TODO: We probably don't need to check for x and y anymore + for key in layers: + if layers[key].chunks != null: + continue + + var chunk_node = Control.new() + get_node("ChunkNodes").add_child(chunk_node) + chunk_node.owner = self + + layers[key].chunks = chunk_node + + for x in maxium_chunk_size.x: + for y in maxium_chunk_size.y: + var paint_canvas_chunk = load("res://addons/Godoxel/PaintCanvasChunk.tscn").instance() + paint_canvas_chunk.setup(region_size) + paint_canvas_chunk.name = "C-%s-%s" % [x, y] + paint_canvas_chunk.rect_position = Vector2(x * (grid_size * region_size), y * (grid_size * region_size)) + layers[key].chunks.add_child(paint_canvas_chunk) + + +func get_maxium_filled_chunks(): + return Vector2(canvas_size.x / region_size, canvas_size.y / region_size).ceil() + +#TODO: Remake these functions with godot's setget features +#so that we don't have to call these functions +func resize_grid(grid): + #print(grid) + if grid <= 0: + return + grid_size = grid + canvas_image_node.rect_scale = Vector2(grid, grid) + +func resize_canvas(x, y): + image.unlock() + image.create(x, y, true, Image.FORMAT_RGBA8) + canvas_size = Vector2(x, y) + #setup_all_chunks() + image.lock() + +#func draw_canvas_out(a = ""): +# if canvas_image_node == null: +# return +# var image_texture = ImageTexture.new() +# image_texture.create_from_image(image) +# image_texture.set_flags(0) +# canvas_image_node.texture = image_texture + +func get_wrapped_region_cell(x, y): + return Vector2(wrapi(x, 0, region_size), wrapi(y, 0, region_size)) + +func get_region_from_cell(x, y): + return Vector2(floor(x / region_size), floor(y / region_size)) + + +func set_local_cell_in_chunk(chunk_x, chunk_y, local_cell_x, local_cell_y, color): + var chunk_node + + if preview_enabled: + chunk_node = layers.preview.chunks.get_node_or_null("C-%s-%s" % [chunk_x, chunk_y]) + else: + chunk_node = layers[active_layer].chunks.get_node_or_null("C-%s-%s" % [chunk_x, chunk_y]) + + if chunk_node == null: + #print("Can't find chunk node!") + return + chunk_node.set_cell(local_cell_x, local_cell_y, color) + + +func set_global_cell_in_chunk(cell_x, cell_y, color): + var chunk = get_region_from_cell(cell_x, cell_y) + var wrapped_cell = get_wrapped_region_cell(cell_x, cell_y) + set_local_cell_in_chunk(chunk.x, chunk.y, wrapped_cell.x, wrapped_cell.y, color) + +#func update_chunk_region_from_cell(x, y): +# var region_to_update = get_region_from_cell(x, y) +# update_chunk_region(region_to_update.x, region_to_update.y) + +func get_pixel_cell_color(x, y): + if not cell_in_canvas_region(x, y): + return null + var pixel_cell = get_pixel_cell(x, y) + if pixel_cell == null: + #We already checked that the cell can't be out of the canvas region so we can assume the pixel cell is completely transparent if it's null + return Color(0, 0, 0, 0) + else: + return util.color_from_array(pixel_cell[2]) + +func get_pixel_cell_color_v(vec2): + return get_pixel_cell_color(vec2.x, vec2.y) + +func get_pixel_cell(x, y): + if active_layer == null: + return + if not cell_in_canvas_region(x, y): + return null + + for pixel in get_active_layer().data: + if pixel[0] == x and pixel[1] == y: + return pixel + + return null + +func get_pixel_cell_v(vec2): + return get_pixel_cell(vec2.x, vec2.y) + +#func remove_pixel_cell(x, y): +# if can_draw == false: +# return false +# if not cell_in_canvas_region(x, y): +# return false +# var layer_data = get_layer_data("Layer 1") +# for pixel in range(0, layer_data.size()): +# if layer_data[pixel][0] == x and layer_data[pixel][1] == y: +# layer_data.remove(pixel) +# #update_chunk_region_from_cell(x, y) +# #TOOD: If pixel exists in temp_pool_pixels then remove it +# image.set_pixel(x, y, Color(0, 0, 0, 0)) +# return true +# return false + +#func remove_pixel_cell_v(vec2): +# return remove_pixel_cell(vec2.x, vec2.y) + +func set_pixel_cell(x, y, color): + if can_draw == false: + return false + + if not cell_in_canvas_region(x, y): + return false + + var layer + if preview_enabled: + layer = get_preview_layer() + else: + layer = get_active_layer() + + var index = 0 + for pixel in layer.data: + #TODO: Make a better way of accessing the array because the more pixels we have, the longer it takes to + #set the pixel + if pixel[0] == x and pixel[1] == y: + #No reason to set the pixel again if the colors are the same + + #If the color we are setting is 0, 0, 0, 0 then there is no reason to keep the information about the pixel + #so we remove it from the layer data + if color == Color(0, 0, 0, 0): + layer.data.remove(index) + else: + pixel[2] = color + #TODO: The new system is going to allow chunks to each have their own TextureRect and Image + #nodes so what we are doing in here is that we are setting the local cell in the region of that image + set_global_cell_in_chunk(x, y, color) + last_pixel = [x, y, color] + return true + index += 1 + #don't append any data if the color is 0, 0, 0, 0 + if color != Color(0, 0, 0, 0): + #if the pixel data doesn't exist then we add it in + layer.data.append([x, y, color]) + set_global_cell_in_chunk(x, y, color) + last_pixel = [x, y, color] + return true + +func set_pixel_cell_v(vec2, color): + return set_pixel_cell(vec2.x, vec2.y, color) + +func set_pixels_from_line(vec2_1, vec2_2, color): + var points = get_pixels_from_line(vec2_1, vec2_2) + for i in points: + set_pixel_cell_v(i, color) + +func set_random_pixels_from_line(vec2_1, vec2_2): + var points = get_pixels_from_line(vec2_1, vec2_2) + for i in points: + set_pixel_cell_v(i, util.random_color_alt()) + +func get_pixels_from_line(vec2_1, vec2_2): + var points = PoolVector2Array() + + var dx = abs(vec2_2.x - vec2_1.x) + var dy = abs(vec2_2.y - vec2_1.y) + + var x = vec2_1.x + var y = vec2_1.y + + var sx = 0 + if vec2_1.x > vec2_2.x: + sx = -1 + else: + sx = 1 + + var sy = 0 + if vec2_1.y > vec2_2.y: + sy = -1 + else: + sy = 1 + + if dx > dy: + var err = dx / 2 + while(true): + if x == vec2_2.x: + break + points.push_back(Vector2(x, y)) + + err -= dy + if err < 0: + y += sy + err += dx + x += sx + else: + var err = dy / 2 + while (true): + if y == vec2_2.y: + break + points.push_back(Vector2(x, y)) + + err -= dx + if err < 0: + x += sx + err += dy + y += sy + points.push_back(Vector2(x, y)) + return points + + +#even though the function checks for it, we can't afford adding more functions to the call stack +#because godot has a limit until it crashes +var flood_fill_queue = 0 +func flood_fill(x, y, target_color, replacement_color): + #yield(get_tree().create_timer(1), "timeout") + flood_fill_queue += 1 + if not cell_in_canvas_region(x, y): + flood_fill_queue -= 1 + return + if target_color == replacement_color: + flood_fill_queue -= 1 + return + elif not get_pixel_cell_color(x, y) == target_color: + flood_fill_queue -= 1 + return + else: + set_pixel_cell(x, y, replacement_color) + if flood_fill_queue >= 500: + #print(flood_fill_queue) + yield(get_tree().create_timer(0.01), "timeout") + #up + if get_pixel_cell_color(x, y - 1) == target_color: + flood_fill(x, y - 1, target_color, replacement_color) + #down + if get_pixel_cell_color(x, y + 1) == target_color: + flood_fill(x, y + 1, target_color, replacement_color) + #left + if get_pixel_cell_color(x - 1, y) == target_color: + flood_fill(x - 1, y, target_color, replacement_color) + #right + if get_pixel_cell_color(x + 1, y) == target_color: + flood_fill(x + 1, y, target_color, replacement_color) + flood_fill_queue -= 1 + return + +#func flood_fill_erase(x, y, target_color): +# yield(get_tree().create_timer(0.001), "timeout") +# if not cell_in_canvas_region(x, y): +# print("cell not in canvas") +# return +# #if target_color == replacement_color: +# # return +# elif not get_pixel_cell_color(x, y) == target_color: +# print("cell doesn't match pixel color") +# return +# elif not get_pixel_cell(x, y): +# print("cell already erased") +# return +# else: +# print("removed pixel") +# remove_pixel_cell(x, y) +# print("x: ", x, " y: ", y, " color: ", target_color) +# #up +# flood_fill_erase(x, y - 1, target_color) +# #down +# flood_fill_erase(x, y + 1, target_color) +# #left +# flood_fill_erase(x - 1, y, target_color) +# #right +# flood_fill_erase(x + 1, y, target_color) +# return + +func cell_in_canvas_region(x, y): + if x > canvas_size.x - 1 or x < 0 or y > canvas_size.y - 1 or y < 0: + #out of bounds, return false + return false + else: + return true + +#Both of these functions right now just return the starting position of the canvas and the last position of the canvas +func get_all_used_regions_in_canvas(): + var first_used_region = get_first_used_region_in_canvas() + var last_used_region = get_last_used_region_in_canvas() + var chunk_pool = PoolVector2Array() + for chunk_x in range(first_used_region.x, last_used_region.x): + for chunk_y in range(first_used_region.y, last_used_region.y): + chunk_pool.append(Vector2(chunk_x, chunk_y)) + return chunk_pool + +func get_first_used_region_in_canvas(): + return get_region_from_cell(0, 0) + +func get_last_used_region_in_canvas(): + return get_region_from_cell(canvas_size.x - 1, canvas_size.y - 1) + +func get_cells_in_region(x, y): + var start_cell = Vector2(x * region_size, y * region_size) + var end_cell = Vector2((x * region_size) + region_size, (y * region_size) + region_size) + var cell_array = [] + for cx in range(start_cell.x, end_cell.x): + for cy in range(start_cell.y, end_cell.y): + var pixel_cell = get_pixel_cell(cx, cy) + if pixel_cell == null: + pixel_cell = [cx, cy, Color(0, 0, 0, 0)] + cell_array.append(pixel_cell) + return cell_array diff --git a/game/addons/Godoxel/PaintCanvas.tscn b/game/addons/Godoxel/PaintCanvas.tscn new file mode 100644 index 00000000..4ce75819 --- /dev/null +++ b/game/addons/Godoxel/PaintCanvas.tscn @@ -0,0 +1,30 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/Godoxel/PaintCanvas.gd" type="Script" id=1] + + +[node name="PaintCanvas" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +script = ExtResource( 1 ) +__meta__ = { +"_edit_use_anchors_": false +} +canvas_size = Vector2( 64, 37 ) + +[node name="ChunkNodes" type="Control" parent="."] +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="CanvasImage" type="TextureRect" parent="."] +visible = false +anchor_right = 1.0 +anchor_bottom = 1.0 +mouse_filter = 2 +expand = true +stretch_mode = 3 diff --git a/game/addons/Godoxel/PaintCanvasChunk.gd b/game/addons/Godoxel/PaintCanvasChunk.gd new file mode 100644 index 00000000..3a49c02d --- /dev/null +++ b/game/addons/Godoxel/PaintCanvasChunk.gd @@ -0,0 +1,27 @@ +tool +extends Control + +var image = Image.new() +var image_texture = ImageTexture.new() + +func _ready(): + mouse_filter = Control.MOUSE_FILTER_IGNORE + +func setup(region_size): + image.create(region_size, region_size, true, Image.FORMAT_RGBA8) + image.lock() + +func update_chunk(): + image_texture.create_from_image(image) + image_texture.set_flags(0) + self.texture = image_texture + +func set_cell(x, y, color): + image.set_pixel(x, y, color) + update_chunk() + +func _on_VisibilityNotifier2D_screen_entered(): + visible = true + +func _on_VisibilityNotifier2D_screen_exited(): + visible = false diff --git a/game/addons/Godoxel/PaintCanvasChunk.tscn b/game/addons/Godoxel/PaintCanvasChunk.tscn new file mode 100644 index 00000000..1f2f2b0b --- /dev/null +++ b/game/addons/Godoxel/PaintCanvasChunk.tscn @@ -0,0 +1,13 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/Godoxel/PaintCanvasChunk.gd" type="Script" id=1] + + +[node name="PaintCanvasChunk" type="TextureRect"] +margin_right = 10.0 +margin_bottom = 10.0 +rect_scale = Vector2( 16, 16 ) +mouse_filter = 2 +expand = true +stretch_mode = 1 +script = ExtResource( 1 ) diff --git a/game/addons/Godoxel/PaintCanvasContainer.gd b/game/addons/Godoxel/PaintCanvasContainer.gd new file mode 100644 index 00000000..34ca4001 --- /dev/null +++ b/game/addons/Godoxel/PaintCanvasContainer.gd @@ -0,0 +1,2 @@ +tool +extends Control diff --git a/game/addons/Godoxel/README.md b/game/addons/Godoxel/README.md new file mode 100644 index 00000000..e22c2070 --- /dev/null +++ b/game/addons/Godoxel/README.md @@ -0,0 +1,17 @@ +# Godoxel (image Editor) v0.1 +###### (Godot-Pixel Image Editor) + + +Godoxel is an image editor for Godot, that can be used inside the editor. + + + +## Features + +* Has basic pixel editor functionality +* Save/Load +* Multiple layers (can be locked/hidden) +* Tools: Pencil, lighten/darken, rectangle/line, fill, ... + +--- +###### For feature proposals or occuring problems, please write an issue or message me on Discord cobrapitz#2872 diff --git a/game/addons/Godoxel/SaveFileDialog.gd b/game/addons/Godoxel/SaveFileDialog.gd new file mode 100644 index 00000000..a803a06e --- /dev/null +++ b/game/addons/Godoxel/SaveFileDialog.gd @@ -0,0 +1,70 @@ +tool +extends FileDialog + +var canvas + +var file_path = "" + + +func _enter_tree(): + canvas = get_parent().find_node("Canvas") + + +func _ready(): + # warning-ignore:return_value_discarded + get_line_edit().connect("text_entered", self, "_on_LineEdit_text_entered") + invalidate() + clear_filters() + add_filter("*.png ; PNG Images") + + +func _on_SaveFileDialog_file_selected(path): + #print("selected file: ", path) + file_path = path + save_file() + + +# warning-ignore:unused_argument +func _on_LineEdit_text_entered(text): + return +# print("text entered: ", text) + + +func _on_SaveFileDialog_confirmed(): + return +# print("confirmed: ", current_path) + + +func save_file(): + var image = Image.new() + image.create(canvas.canvas_width, canvas.canvas_height, true, Image.FORMAT_RGBA8) + image.lock() + + for layer in canvas.layers: + var idx = 0 + if not layer.visible: + continue + for x in range(layer.layer_width): + for y in range(layer.layer_height): + var color = layer.get_pixel(x, y) + var image_color = image.get_pixel(x, y) + + if color.a != 0: + image.set_pixel(x, y, image_color.blend(color)) + else: + image.set_pixel(x, y, color) + image.unlock() + + var dir = Directory.new() + if dir.file_exists(file_path): + dir.remove(file_path) + + image.save_png(file_path) + + +func _on_SaveFileDialog_about_to_show(): + invalidate() + + +func _on_SaveFileDialog_visibility_changed(): + invalidate() diff --git a/game/addons/Godoxel/SelectionBox.gd b/game/addons/Godoxel/SelectionBox.gd new file mode 100644 index 00000000..7ddfd2ab --- /dev/null +++ b/game/addons/Godoxel/SelectionBox.gd @@ -0,0 +1,24 @@ +tool +extends Control + +export var outline_size = 3 + +func _ready(): + pass + +func _process(delta): + update() + +func _draw(): + if not rect_size == Vector2(): + draw_outline_box(rect_size, Color.gray, outline_size) + +func draw_outline_box(size, color, width): + #Top line + draw_line(Vector2(0 + 1, 0), Vector2(size.x, 0), color, width) + #Left line + draw_line(Vector2(0 + 1, 0), Vector2(0, size.y), color, width) + #Bottom line + draw_line(Vector2(0 + 1, size.y), Vector2(size.x, size.y), color, width) + #Right line + draw_line(Vector2(size.x, 0), Vector2(size.x, size.y), color, width) diff --git a/game/addons/Godoxel/Settings.gd b/game/addons/Godoxel/Settings.gd new file mode 100644 index 00000000..86575857 --- /dev/null +++ b/game/addons/Godoxel/Settings.gd @@ -0,0 +1,24 @@ +tool +extends Control + +var editor +var canvas_outline +var start_time +var end_time + + +func _enter_tree(): + canvas_outline = get_parent().find_node("CanvasOutline") + editor = get_parent() + + +func _on_ColorPickerButton_color_changed(color): + canvas_outline.color = color + + +func _on_CheckButton_toggled(button_pressed): + canvas_outline.visible = button_pressed + + +func _on_Ok_pressed(): + hide() diff --git a/game/addons/Godoxel/Settings.tscn b/game/addons/Godoxel/Settings.tscn new file mode 100644 index 00000000..f2d9c245 --- /dev/null +++ b/game/addons/Godoxel/Settings.tscn @@ -0,0 +1,64 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/Godoxel/Settings.gd" type="Script" id=1] + + +[node name="Settings" type="WindowDialog"] +visible = true +margin_top = 20.0 +margin_right = 300.0 +margin_bottom = 120.0 +window_title = "Settings" +script = ExtResource( 1 ) + +[node name="Ok" type="Button" parent="."] +margin_left = 210.0 +margin_top = 70.0 +margin_right = 290.0 +margin_bottom = 90.0 +text = "Ok" + +[node name="CanvasOutlineToggle" type="Control" parent="."] +margin_left = 10.0 +margin_top = 10.0 +margin_right = 290.0 +margin_bottom = 30.0 +__meta__ = { +"_edit_group_": true +} + +[node name="Label" type="Label" parent="CanvasOutlineToggle"] +margin_right = 130.0 +margin_bottom = 20.0 +text = "Canvas Outline:" +valign = 1 + +[node name="CheckButton" type="CheckButton" parent="CanvasOutlineToggle"] +margin_left = 210.0 +margin_top = -10.0 +margin_right = 286.0 +margin_bottom = 30.0 +pressed = true + +[node name="CanvasOutlineColor" type="Control" parent="."] +margin_left = 10.0 +margin_top = 40.0 +margin_right = 290.0 +margin_bottom = 60.0 +__meta__ = { +"_edit_group_": true +} + +[node name="Label" type="Label" parent="CanvasOutlineColor"] +margin_right = 130.0 +margin_bottom = 20.0 +text = "Canvas Outline Color:" +valign = 1 + +[node name="ColorPickerButton" type="ColorPickerButton" parent="CanvasOutlineColor"] +margin_left = 170.0 +margin_right = 280.0 +margin_bottom = 20.0 +[connection signal="pressed" from="Ok" to="." method="_on_Ok_pressed"] +[connection signal="toggled" from="CanvasOutlineToggle/CheckButton" to="." method="_on_CheckButton_toggled"] +[connection signal="color_changed" from="CanvasOutlineColor/ColorPickerButton" to="." method="_on_ColorPickerButton_color_changed"] diff --git a/game/addons/Godoxel/TextInfo.gd b/game/addons/Godoxel/TextInfo.gd new file mode 100644 index 00000000..e9368e1f --- /dev/null +++ b/game/addons/Godoxel/TextInfo.gd @@ -0,0 +1,39 @@ +tool +extends Control + +var size = 240 + +#TODO: To make reading the text easier, the text info with the longest text should have it's length applied to all the +#the other text infos + +func add_text_info(text_name, custom_node = null): + var last_text_info_child = null + var child_count = get_child_count() + if not child_count <= 0: + last_text_info_child = get_children()[get_children().size() - 1] + var label = Label.new() + label.name = text_name + label.rect_size = Vector2(size, 14) + if not last_text_info_child == null: + var x = last_text_info_child.rect_position.x + var y = last_text_info_child.rect_position.y + var temp_size = size + if child_count == 4: + x = 0 + y = 20 + temp_size = 0 + label.rect_position = Vector2(x + temp_size, y) + if not custom_node == null: + label.add_child(custom_node) + add_child(label) + +func update_text_info(text_name, text_value = null, node = null, node_target_value = null, node_value = null): + var text_label = self.get_node(text_name) + if text_label == null: + return + if not node == null: + get_node(text_name).get_node(node).set(node_target_value, node_value) + if text_value == null: + text_label.text = "%s: %s" % [text_name, null] + else: + text_label.text = "%s: %s" % [text_name, String(text_value)] diff --git a/game/addons/Godoxel/Util.gd b/game/addons/Godoxel/Util.gd new file mode 100644 index 00000000..9840120c --- /dev/null +++ b/game/addons/Godoxel/Util.gd @@ -0,0 +1,94 @@ +tool +extends Node +class_name GEUtils + + +static func get_pixels_in_line(from: Vector2, to: Vector2): + var dx = to[0] - from[0] + var dy = to[1] - from[1] + var nx = abs(dx) + var ny = abs(dy) + var signX = sign(dx) + var signY = sign(dy) + var p = from + var points : Array = [p] + + var ix = 0 + var iy = 0 + + while ix < nx || iy < ny: + if (1 + (ix << 1)) * ny < (1 + (iy << 1)) * nx: + p[0] += signX + ix +=1 + else: + p[1] += signY + iy += 1 + points.append(p) + return points + + +static func to_1D_v(p, w) -> int: + return p.x + p.y * w + + +static func to_1D(x, y, w) -> int: + return x + y * w + + +static func to_2D(idx, w) -> Vector2: + var p = Vector2() + p.x = int(idx) % int(w) + p.y = int(idx / w) + return p + + + +static func color_from_array(color_array): + var r = color_array[0] + var g = color_array[1] + var b = color_array[2] + var a = color_array[3] + return Color(r, g, b, a) + +static func random_color(): + return Color(randf(), randf(), randf()) + +static func random_color_alt(): + var rand = randi() % 6 + + match rand: + #red + 0: + return Color.red + #blue + 1: + return Color.blue + #green + 2: + return Color.green + #orange + 3: + return Color.orange + #yellow + 4: + return Color.yellow + #purple + 5: + return Color.purple + +static func get_line_string(file, number): + return file.get_as_text().split("\n")[number - 1].strip_edges() + +static func printv(variable): + var stack = get_stack()[get_stack().size() - 1] + var line = stack.line + var source = stack.source + var file = File.new() + file.open(source, File.READ) + var line_string = get_line_string(file, line) + file.close() + var left_p = line_string.find("(") + var left_p_string = line_string.right(left_p + 1) + var right_p = left_p_string.find(")") + var variable_name = left_p_string.left(right_p) + print("%s: %s" % [variable_name, variable]) diff --git a/game/addons/Godoxel/ViewportContainer.gd b/game/addons/Godoxel/ViewportContainer.gd new file mode 100644 index 00000000..5ff1df6e --- /dev/null +++ b/game/addons/Godoxel/ViewportContainer.gd @@ -0,0 +1,6 @@ +extends ViewportContainer +tool + +func _ready(): + get_child(0).size = rect_size + diff --git a/game/addons/Godoxel/VisualGrid.gd b/game/addons/Godoxel/VisualGrid.gd new file mode 100644 index 00000000..a935a15d --- /dev/null +++ b/game/addons/Godoxel/VisualGrid.gd @@ -0,0 +1,41 @@ +tool +extends Control + +export var color = Color() +export var size:int = 16 +export var zoom = 0 +export var offset = Vector2(0, 0) + + +func _enter_tree(): + set_process(true) + + +func _draw(): + if size == 0: + size = 1 + + var temp_size = size + zoom + + var wrap_offset = Vector2(wrapf(offset.x, 0, temp_size), wrapf(offset.y, 0, temp_size)) + + var ceil_x = ceil(rect_size.x / temp_size) + var ceil_y = ceil(rect_size.y / temp_size) + + for i in ceil_y: + var start_x = Vector2(0, (i * temp_size) + wrap_offset.y) + var end_x = Vector2(rect_size.x, (i * temp_size) + wrap_offset.y) +# var end_x = Vector2(int(rect_size.x) + size - int(rect_size.x) % size, (i * temp_size) + wrap_offset.y) + draw_line(start_x, end_x, color, 1) + + for i in ceil_x: + var start_y = Vector2((i * temp_size) + wrap_offset.x, 0) + var end_y = Vector2((i * temp_size) + (wrap_offset.x), rect_size.y) +# var end_y = Vector2((i * temp_size) + (wrap_offset.x), int(rect_size.y) + size - int(rect_size.y) % size) + draw_line(start_y, end_y, color, 1) + + +func _process(delta): + if not is_visible_in_tree(): + return + update() diff --git a/game/addons/Godoxel/VisualGrid.tscn b/game/addons/Godoxel/VisualGrid.tscn new file mode 100644 index 00000000..ac8345a8 --- /dev/null +++ b/game/addons/Godoxel/VisualGrid.tscn @@ -0,0 +1,9 @@ +[gd_scene load_steps=2 format=2] + +[ext_resource path="res://addons/Godoxel/VisualGrid.gd" type="Script" id=1] + + +[node name="VisualGrid" type="Control"] +anchor_right = 1.0 +anchor_bottom = 1.0 +script = ExtResource( 1 ) diff --git a/game/addons/Godoxel/actions/Action.gd b/game/addons/Godoxel/actions/Action.gd new file mode 100644 index 00000000..97292c20 --- /dev/null +++ b/game/addons/Godoxel/actions/Action.gd @@ -0,0 +1,123 @@ +extends Node +class_name GEAction + + +var action_data = {} + + +func _init(): + action_data["redo"] = {} + action_data["undo"] = {} + action_data["preview"] = {} + + +func do_action(canvas, data: Array): + if not "cells" in action_data.redo: + action_data.redo["cells"] = [] + action_data.redo["colors"] = [] + + if not "cells" in action_data.undo: + action_data.undo["cells"] = [] + action_data.undo["colors"] = [] + + if not "cells" in action_data.preview: + action_data.preview["cells"] = [] + action_data.preview["colors"] = [] + + if not "layer" in action_data: + action_data["layer"] = canvas.active_layer + + +func commit_action(canvas): + print("NO IMPL commit_action ") + return [] + + +func undo_action(canvas): + print("NO IMPL undo_action ") + + +func redo_action(canvas): + print("NO IMPL redo_action ") + + +func can_commit() -> bool: + return not action_data.redo.empty() + + +func get_x_sym_points(canvas_width, pixel): + var p = int(canvas_width - pixel.x) + var all_points = [pixel, Vector2(p-1, pixel.y)] + + var points :Array = [] + for point in all_points: + if point in points: + continue + points.append(point) + return points + + +func get_y_sym_points(canvas_height, pixel): + var p = int(canvas_height - pixel.y) + var all_points = [pixel, Vector2(pixel.x, p-1)] + + var points :Array = [] + for point in all_points: + if point in points: + continue + points.append(point) + return points + + +func get_xy_sym_points(canvas_width, canvas_height, pixel): + var all_points = [] + var xpoints = get_x_sym_points(canvas_width, pixel) + + all_points += get_y_sym_points(canvas_height, xpoints[0]) + all_points += get_y_sym_points(canvas_height, xpoints[1]) + + var points :Array = [] + for point in all_points: + if point in points: + continue + points.append(point) + + return points + + +func get_points(canvas, pixel): + var points = [] + if canvas.symmetry_x and canvas.symmetry_y: + var sym_points = get_xy_sym_points(canvas.canvas_width, canvas.canvas_height, pixel) + for point in sym_points: + if point in action_data.undo.cells or canvas.get_pixel_v(point) == null: + continue + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + points.append(point) + elif canvas.symmetry_y: + var sym_points = get_y_sym_points(canvas.canvas_height, pixel) + for point in sym_points: + if point in action_data.undo.cells or canvas.get_pixel_v(point) == null: + continue + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + points.append(point) + elif canvas.symmetry_x: + var sym_points = get_x_sym_points(canvas.canvas_width, pixel) + for point in sym_points: + if point in action_data.undo.cells or canvas.get_pixel_v(point) == null: + continue + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + points.append(point) + else: + if pixel in action_data.undo.cells or canvas.get_pixel_v(pixel) == null: + return [] + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + return [] + points.append(pixel) + + return points + + diff --git a/game/addons/Godoxel/actions/Brighten.gd b/game/addons/Godoxel/actions/Brighten.gd new file mode 100644 index 00000000..faf7f816 --- /dev/null +++ b/game/addons/Godoxel/actions/Brighten.gd @@ -0,0 +1,53 @@ +extends GEAction +class_name GEBrighten + + +const brighten_color = 0.1 + + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + var pixels = GEUtils.get_pixels_in_line(data[0], data[1]) + for pixel in pixels: + if canvas.get_pixel_v(pixel) == null: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + if pixel in action_data.undo.cells: + var brightened_color = canvas.get_pixel_v(pixel).lightened(0.1) + canvas.set_pixel_v(pixel, brightened_color) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(brightened_color) + continue + + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + var brightened_color = canvas.get_pixel_v(pixel).lightened(0.1) + canvas.set_pixel_v(pixel, brightened_color) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(brightened_color) + + +func commit_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) diff --git a/game/addons/Godoxel/actions/Brush.gd b/game/addons/Godoxel/actions/Brush.gd new file mode 100644 index 00000000..edeccaf8 --- /dev/null +++ b/game/addons/Godoxel/actions/Brush.gd @@ -0,0 +1,47 @@ +extends GEAction +class_name GEBrush + + +func do_action(canvas: GECanvas, data: Array): + .do_action(canvas, data) + + for pixel in GEUtils.get_pixels_in_line(data[0], data[1]): + for off in BrushPrefabs.get_brush(data[3], data[4]): + var p = pixel + off + + if p in action_data.undo.cells or canvas.get_pixel_v(p) == null: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(p) == Color.transparent: + continue + + action_data.undo.colors.append(canvas.get_pixel_v(p)) + action_data.undo.cells.append(p) + + canvas.set_pixel_v(p, data[2]) + + action_data.redo.cells.append(p) + action_data.redo.colors.append(data[2]) + + +func commit_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Bucket.gd b/game/addons/Godoxel/actions/Bucket.gd new file mode 100644 index 00000000..8ff2f90a --- /dev/null +++ b/game/addons/Godoxel/actions/Bucket.gd @@ -0,0 +1,49 @@ +extends GEAction +class_name GEBucket + + + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + if canvas.get_pixel_v(data[0]) == data[2]: + return + var pixels = canvas.select_same_color(data[0].x, data[0].y) + + for pixel in pixels: + if pixel in action_data.undo.cells: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + + canvas.set_pixel_v(pixel, data[2]) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(data[2]) + + +func commit_action(canvas): + var cells = action_data.preview.cells + var colors = action_data.preview.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Cut.gd b/game/addons/Godoxel/actions/Cut.gd new file mode 100644 index 00000000..4f608153 --- /dev/null +++ b/game/addons/Godoxel/actions/Cut.gd @@ -0,0 +1,82 @@ +extends GEAction +class_name GECut + +const selection_color = Color(0.8, 0.8, 0.8, 0.5) +var mouse_start_pos = null +var mouse_end_pos = null + + +func can_commit() -> bool: + return false #ugly way of handling a cut + + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + if mouse_start_pos == null: + mouse_start_pos = data[0] + mouse_end_pos = data[0] + + action_data.preview.cells.clear() + action_data.preview.colors.clear() + canvas.clear_preview_layer() + + var p = mouse_start_pos + var s = mouse_end_pos - mouse_start_pos + + var pixels = GEUtils.get_pixels_in_line(p, p + Vector2(s.x, 0)) + pixels += GEUtils.get_pixels_in_line(p, p + Vector2(0, s.y)) + pixels += GEUtils.get_pixels_in_line(p + s, p + s + Vector2(0, -s.y)) + pixels += GEUtils.get_pixels_in_line(p + s, p + s + Vector2(-s.x, 0)) + + for pixel in pixels: + canvas.set_preview_pixel_v(pixel, selection_color) + action_data.preview.cells.append(pixel) + action_data.preview.colors.append(selection_color) + + +func commit_action(canvas): + canvas.clear_preview_layer() + var p = mouse_start_pos + var s = mouse_end_pos - mouse_start_pos + + for x in range(abs(s.x)+1): + for y in range(abs(s.y)+1): + var px = x + var py = y + if s.x < 0: + px *= -1 + if s.y < 0: + py *= -1 + + var pos = p + Vector2(px, py) + var color = canvas.get_pixel(pos.x, pos.y) + + if color == null or color.a == 0.0: + continue + + action_data.redo.cells.append(pos) + action_data.redo.colors.append(canvas.get_pixel_v(pos)) + + canvas.set_pixel_v(pos, Color.transparent) + + action_data.undo.cells.append(pos) + action_data.undo.colors.append(Color.transparent) + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Darken.gd b/game/addons/Godoxel/actions/Darken.gd new file mode 100644 index 00000000..3832a17d --- /dev/null +++ b/game/addons/Godoxel/actions/Darken.gd @@ -0,0 +1,55 @@ +extends GEAction +class_name GEDarken + +const dark_factor = 0.1 + + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + var pixels = GEUtils.get_pixels_in_line(data[0], data[1]) + for pixel in pixels: + if canvas.get_pixel_v(pixel) == null: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + if pixel in action_data.undo.cells: + var darkened_color = canvas.get_pixel_v(pixel).darkened(dark_factor) + canvas.set_pixel_v(pixel, darkened_color) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(darkened_color) + continue + + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + var darkened_color = canvas.get_pixel_v(pixel).darkened(dark_factor) + canvas.set_pixel_v(pixel, darkened_color) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(darkened_color) + + +func commit_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Line.gd b/game/addons/Godoxel/actions/Line.gd new file mode 100644 index 00000000..6f17316f --- /dev/null +++ b/game/addons/Godoxel/actions/Line.gd @@ -0,0 +1,59 @@ +extends GEAction +class_name GELine + + +var mouse_start_pos = null + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + if mouse_start_pos == null: + mouse_start_pos = data[0] + + action_data.preview.cells.clear() + action_data.preview.colors.clear() + canvas.clear_preview_layer() + + var pixels = GEUtils.get_pixels_in_line(data[0], mouse_start_pos) + for pixel in pixels: + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + canvas.set_preview_pixel_v(pixel, data[2]) + action_data.preview.cells.append(pixel) + action_data.preview.colors.append(data[2]) + + +func commit_action(canvas): + canvas.clear_preview_layer() + var cells = action_data.preview.cells + var colors = action_data.preview.colors + for idx in range(cells.size()): + if canvas.get_pixel_v(cells[idx]) == null: + continue + action_data.undo.cells.append(cells[idx]) + action_data.undo.colors.append(canvas.get_pixel_v(cells[idx])) + + canvas.set_pixel_v(cells[idx], colors[idx]) + + action_data.redo.cells.append(cells[idx]) + action_data.redo.colors.append(colors[idx]) + mouse_start_pos = null + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/MultiLine.gd b/game/addons/Godoxel/actions/MultiLine.gd new file mode 100644 index 00000000..b3850ffa --- /dev/null +++ b/game/addons/Godoxel/actions/MultiLine.gd @@ -0,0 +1,44 @@ +extends GEAction +class_name GEMultiLine + + +func can_commit() -> bool: + return false + + +func update_action(canvas, data: Array): + .update_action(canvas, data) + + var pixels = GEUtils.get_pixels_in_line(data[0], data[1]) + for pixel in pixels: + if pixel in action_data.undo.cells or canvas.get_pixel_v(pixel) == null or canvas.is_alpha_locked(): + continue + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + canvas.set_pixel_v(pixel, data[2]) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(data[2]) + + +func commit_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/PasteCut.gd b/game/addons/Godoxel/actions/PasteCut.gd new file mode 100644 index 00000000..5ffaa8eb --- /dev/null +++ b/game/addons/Godoxel/actions/PasteCut.gd @@ -0,0 +1,59 @@ +extends GEAction +class_name GEPasteCut + + +#data[2] = selection_pos +#data[3] = selection_color +#data[4] = cut pos +#data[5] = cut size +func do_action(canvas, data: Array): + .do_action(canvas, data) + + for pixel_pos in GEUtils.get_pixels_in_line(data[0], data[1]): + for idx in range(data[2].size()): + var pixel = data[2][idx] + var color = data[3][idx] + pixel -= data[4] + data[5] / 2 + pixel += pixel_pos + + if canvas.get_pixel_v(pixel) == null: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + var found = action_data.redo.cells.find(pixel) + if found == -1: + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(color) + else: + action_data.redo.colors[found] = color + + found = action_data.undo.cells.find(pixel) + if found == -1: + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + + canvas.set_pixel_v(pixel, color) + + +func commit_action(canvas): + canvas.clear_preview_layer() + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Pencil.gd b/game/addons/Godoxel/actions/Pencil.gd new file mode 100644 index 00000000..906236fe --- /dev/null +++ b/game/addons/Godoxel/actions/Pencil.gd @@ -0,0 +1,43 @@ +extends GEAction +class_name GEPencil + + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + var pixels = GEUtils.get_pixels_in_line(data[0], data[1]) + for pixel in pixels: + for p in get_points(canvas, pixel): + _set_pixel(canvas, p, data[2]) + + +func _set_pixel(canvas, pixel, color): + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + canvas.set_pixel_v(pixel, color) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(color) + + +func commit_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Rainbow.gd b/game/addons/Godoxel/actions/Rainbow.gd new file mode 100644 index 00000000..618bdd17 --- /dev/null +++ b/game/addons/Godoxel/actions/Rainbow.gd @@ -0,0 +1,58 @@ +extends GEAction +class_name GERainbow + + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + var pixels = GEUtils.get_pixels_in_line(data[0], data[1]) + for pixel in pixels: + if canvas.get_pixel_v(pixel) == null: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + if pixel in action_data.undo.cells: + var color = GEUtils.random_color() + canvas.set_pixel_v(pixel, color) + + var idx = action_data.redo.cells.find(pixel) + action_data.redo.cells.remove(idx) + action_data.redo.colors.remove(idx) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(color) + continue + + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.undo.cells.append(pixel) + + var color = GEUtils.random_color() + canvas.set_pixel_v(pixel, color) + + action_data.redo.cells.append(pixel) + action_data.redo.colors.append(color) + + +func commit_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/actions/Rect.gd b/game/addons/Godoxel/actions/Rect.gd new file mode 100644 index 00000000..770e28bc --- /dev/null +++ b/game/addons/Godoxel/actions/Rect.gd @@ -0,0 +1,69 @@ +extends GEAction +class_name GERect + + +var mouse_start_pos = null + +func do_action(canvas, data: Array): + .do_action(canvas, data) + + if mouse_start_pos == null: + mouse_start_pos = data[0] + #print("init:", mouse_start_pos) + + + action_data.undo.cells.clear() + action_data.undo.colors.clear() + action_data.preview.cells.clear() + action_data.preview.colors.clear() + canvas.clear_preview_layer() + + var p = mouse_start_pos + var s = data[0] - mouse_start_pos + var pixels = GEUtils.get_pixels_in_line(p, p + Vector2(s.x, 0)) + pixels += GEUtils.get_pixels_in_line(p, p + Vector2(0, s.y)) + pixels += GEUtils.get_pixels_in_line(p + s, p + s + Vector2(0, -s.y)) + pixels += GEUtils.get_pixels_in_line(p + s, p + s + Vector2(-s.x, 0)) + + for pixel in pixels: + if canvas.get_pixel_v(pixel) == null: + continue + + if canvas.is_alpha_locked() and canvas.get_pixel_v(pixel) == Color.transparent: + continue + + canvas.set_preview_pixel_v(pixel, data[2]) + action_data.undo.cells.append(pixel) + action_data.undo.colors.append(canvas.get_pixel_v(pixel)) + action_data.preview.cells.append(pixel) + action_data.preview.colors.append(data[2]) + + +func commit_action(canvas): + canvas.clear_preview_layer() + var cells = action_data.preview.cells + var colors = action_data.preview.colors + for idx in range(cells.size()): + canvas.set_pixel_v(cells[idx], colors[idx]) + + action_data.redo.cells.append(cells[idx]) + action_data.redo.colors.append(colors[idx]) + mouse_start_pos = null + return [] + + +func undo_action(canvas): + var cells = action_data.undo.cells + var colors = action_data.undo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + +func redo_action(canvas): + var cells = action_data.redo.cells + var colors = action_data.redo.colors + for idx in range(cells.size()): + canvas._set_pixel_v(action_data.layer, cells[idx], colors[idx]) + + + diff --git a/game/addons/Godoxel/assets/BrushCircle.png b/game/addons/Godoxel/assets/BrushCircle.png new file mode 100644 index 0000000000000000000000000000000000000000..29249806cb74b8d8983cc792f0f652fa6bd0bf4a GIT binary patch literal 195 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIjKx9jP7LeL$-D$|YCT;XLp(a) zPCY2ppupkM`0{^!VG(3i$dR0@pyd8!!m3@@Sr@F^AHFW|gT@NZ zlPvuQR?R!ZQ1x%hF?+{nlHr}-T28lYKXZ~baq26!#8>S#vPQqwZPt1md45As=uU|R t7t+qGnEIr8wjp!(6myoDSEpH8GVWYtt@txu?-bA>44$rjF6*2UngHuPO&S0I literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/BrushCircle.png.import b/game/addons/Godoxel/assets/BrushCircle.png.import new file mode 100644 index 00000000..19253244 --- /dev/null +++ b/game/addons/Godoxel/assets/BrushCircle.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushCircle.png-dd250909fee7964ffc38f7e4fcfe9c07.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushCircle.png" +dest_files=[ "res://.import/BrushCircle.png-dd250909fee7964ffc38f7e4fcfe9c07.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushCircle_Hovered.png b/game/addons/Godoxel/assets/BrushCircle_Hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..d955418cde60bb56cd3d2b35ac56f90528555d67 GIT binary patch literal 3413 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 rjaU=CAkOvOGRh4uc!}Na)Rdx Zqv<6s-Cv4RD}jbEc)I$ztaD0e0sy{xDL()J literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/BrushHLine.png.import b/game/addons/Godoxel/assets/BrushHLine.png.import new file mode 100644 index 00000000..1a63cf3f --- /dev/null +++ b/game/addons/Godoxel/assets/BrushHLine.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushHLine.png-9182ec8ac804af16d356bf911782e299.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushHLine.png" +dest_files=[ "res://.import/BrushHLine.png-9182ec8ac804af16d356bf911782e299.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushHLine_Hovered.png b/game/addons/Godoxel/assets/BrushHLine_Hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..c2a5238877e421d043bb6dd93c7c6b19d77591f1 GIT binary patch literal 1930 zcmV;52X**~P)P000>X1^@s6#OZ}&000F)dQ@0+Qek%> zaB^>EX>4U6ba`-PAZ2)IW&i+q+U;0dmg6W4{bv=k1S1d<%i(!W?_iccSJ+7iMhq*w`}C6}m{^xbg3=>HfhlY>`}K(Ueo#@QXQSD!9>Y|K)Y{TU^)uAs_Gjz1&@2 z5JUlO*dL`F{R`y$p>Vj#_7Yy0%`>m6Z(=PY%FqFrBld{UKtMxF{ zj*iQf%pb zkFLaoh^Avktzi3$8FZ`&d01)*hu~z~%Q`X+1xy3weQR6A(R}susY6MQb;jzN=cFxxgtTL zup|*t$x<|ERMw=Ts#!~>98d!}rz}}>&ZUqm04lIm(7!-ZsfHRW*Hooy&9yX4pB5Xp z)TC+4t#s<4qfGSFrEAZ<4DSXi#fXDP8Zva`Q6}cv3^PuiY0A`@XSuR=u=;Skz?wf; zqs5fuIGcZQcgK;qiFrmpf+tkNM#+-4sWwLrkaFUH1*S#?Y3ghs^ z(_gv!VD3x2Io2=nMt@??8FhbyIS1++UUslI!DBMToz1f4mgpCrDKCOLzNccNhZZQXV_2{UupSl_e70hLY96tDP=2@llOY~8PkdX|A>nE-I2Ip6*;f%Ur9PJr@W_xjsbTYQ@ zxxS-%ACo%`>Jzpt3631t*?!>0{U!F#hE8m!y#hRNeWe-`;h@^xaGkqop2H_AB2flW zEuHJENk*H)E*)FgECM6g|H81S$=Zy?VcfPK2ra`6AA#3n3wsFJh#-8SD_ih6EQUtR zvPTWP)Qhsa(_Xq3decU^;yqQDg#$+JEcWT$ka2mYim${uSlz_hjwN~( zsH8&zs$49iA}Q@(PTP`ysde2R|084ld5RI=Bjg;0K74qm!bGl=#1-&?3fz<9@um_qclp2=y{k&5m(E z)hr_wkBQmbiWq!FHwF>FFhq%&dLq4$f#>+ThmWs!QJ&>}?$6Pq(&RnhatG*t(j`N3BtK1|PypV~=$mpt-!0I!>h{*$$LRx*p{|y0 zfP+I|v`E=&9`EjK@9p0+&HjD>m^^Z}heg$~00006VoOIv0RI600RN!9r;`8x010qN zS#tmY3ljhU3ljkVnw%H_000McNliru@GBL#WEQ@#KI06R%UK~zY`?bXo<03Zwl z(NtWn6KA|QMMdFmf%j2DD~YCCx)2D+=g5|%?jBjB?cydNvlagY1mq3m0Duw-Ert@M Qw*UYD07*qoM6N<$f(V(HJpcdz literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/BrushHLine_Hovered.png.import b/game/addons/Godoxel/assets/BrushHLine_Hovered.png.import new file mode 100644 index 00000000..43cc5ede --- /dev/null +++ b/game/addons/Godoxel/assets/BrushHLine_Hovered.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushHLine_Hovered.png-e51d5f3c1628c510a225057f3ed60d5a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushHLine_Hovered.png" +dest_files=[ "res://.import/BrushHLine_Hovered.png-e51d5f3c1628c510a225057f3ed60d5a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushRect.png b/game/addons/Godoxel/assets/BrushRect.png new file mode 100644 index 0000000000000000000000000000000000000000..a88cc75a387160bf397459cd06853946d4103680 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIjKx9jP7LeL$-D$|tUO&DLp(a) zUfamaV8FxV*ss7U2ng6dg|!vGD1M4`=7I_yI4E9 Vbj#0(E&`gu;OXk;vd$@?2>|X_C=~zz literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/BrushRect.png.import b/game/addons/Godoxel/assets/BrushRect.png.import new file mode 100644 index 00000000..3517f2cc --- /dev/null +++ b/game/addons/Godoxel/assets/BrushRect.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushRect.png-2b2d0ae4889c1fbc5c7bee7ae5515663.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushRect.png" +dest_files=[ "res://.import/BrushRect.png-2b2d0ae4889c1fbc5c7bee7ae5515663.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushRect_Hovered.png b/game/addons/Godoxel/assets/BrushRect_Hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..4df526ae9e31b6212c521fe9636c1c154f79d545 GIT binary patch literal 1819 zcmV+$2juvPP)P000>X1^@s6#OZ}&000EhdQ@0+Qek%> zaB^>EX>4U6ba`-PAZ2)IW&i+q+U;0fcJn9 z?ZZ4I9D^f}uFyq_9qRx78T1c6&RZa_7DEbQ!^bC|B;zJ-`zNiQH^2J*OFHKGR!-Lm zfyiNW`&Y}y`V6`LRk&bqxs_8qW+Wbl_-c54+(e%D?X8oL%Pwbs7)pJ=2`SoJSIc3j z9t)Q%$K|hX?Zf;|Hv&VHngYm)bjNO6ecU~8`;{SK^x_QbHWzU3oYE3qwuFG(Z0|B| z+uH!$1o?7D@1uXcdl!7khupo3WjJDln}-vu@8s?ZBX5D-)g!r`(6-gP?Htz_EsoLm z-DMvT(Quro6>Pqk!NP)&yQLP;442~GR!eAc%UcEI6Rx0DPAp($5PNQ%d2nB23KSYqdA<00mfYc7JUDxE-`cXIWG7j9a3l_QWFW2rEVF;qTm^x5Qh z8jUey%e=*Ftl*c-a}75pbF;@P5W?f&O;>;~?Vx{qbAIMg^;kB;9I?T?mEA;9{(H9E z;@M%HV%$@R$=YE6Ap*9-8Ki*cEwED#yqSnGBaRUSWq2;mO92C{Dh*DGcPN-U}5isMs#)f%eR zSX0eSnrkQ%Ei`MfrItHWN2Tb#YY*Le?5XF0vo_rDLq`}k;z%Q3Svy$0Yu{jv57uNc zHP_jdHAuVI=P|7lQB@}JBtp! za`%_Hr+6ccPw^&SF-McS-(ZeF-92v)SZnilt}e#*ESxdj9I_8Tu* zKRA!rY;b5>bk< zs#Ay>F-8ev8TY-^)B)VWjV|Vv?ou34r>c^y2?X2b7z!e7%k6jC7vuvN<8A@JJ2HD3 zyN!=6JjB0;r*ruC@N^FU9-hwO-^0^6{CjvhhyS8~$1k~z4Nu`SCFg@nF&irzYZ^hv zGPv?F6(l6}nUKM8v7s5IM+!{$Ew3c529y?Isd?0+q4qxiYj)kii%NCneQ)rlH@7?; z`gsyRtSa;e2^7nJfKYO{5ix>n(fN##_c!ADR#Kp|mW(n`vXWaDdYp^he-y2K^B@ok4#DPG`^` zfzuiEN8oe@{Si3*l=h1<{gn0#IQ^9NOX|{tLiH(j&!e&)c{o$L?RiK@L`BY(S}uvG zGY?CF(52e@Xfw-m{i3SSul&qDV+a*ww1i;(2L$#$7$qt<(*OVgg=s@WP)S2WAaHVT zW@&6?004NLeUUv#!$2IxUsFp(D-L!Lb%;=%EQpFYN)?M>p|llRbuhW~Luk^Fq_{W= zt_24_7OM^}&bm6d3WDGVh?Ap}qKlOHzogJ2#)IR2yu0_fdj|;hGE>ctaX{59BNdN{ z+1!d4d_^|~5x_7+iJ5vLy^w+D__~LWuXjJzVjIhC%u0qzJVhK)RE_e5tjh}L zEzWAW%9{7&FAU|i?Y{03*jd zDo`Oge(*o|-K|-eoN$vuF(B|_+aDu9a2IIQZ2SAzwi_pa{~5T_TK-BMnE52V*3u$J zK<_qiaoy77J>YT&=zr2BLvkcPO`%W#-p}ZpazNiL(6#FJ*4)SG1CXJvmTrK9LtwN> z*=ru}?riVv-!skregK#}a<+#>)v*8o00v@9M??Vs0RI60puMM)00009a7bBm000XU z000XU0RWnu7ytkO2XskIMF->y8wDd68pl6p0000wNklpR?z?e literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/BrushRect_Hovered.png.import b/game/addons/Godoxel/assets/BrushRect_Hovered.png.import new file mode 100644 index 00000000..0257918b --- /dev/null +++ b/game/addons/Godoxel/assets/BrushRect_Hovered.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushRect_Hovered.png-b09066b673d6082ce887a03a19f17977.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushRect_Hovered.png" +dest_files=[ "res://.import/BrushRect_Hovered.png-b09066b673d6082ce887a03a19f17977.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushVLine.png b/game/addons/Godoxel/assets/BrushVLine.png new file mode 100644 index 0000000000000000000000000000000000000000..dd047f70b9f1a87e5fb84417058c7947249b9b3a GIT binary patch literal 129 zcmeAS@N?(olHy`uVBq!ia0vp^k|4~%1|*NXY)uAIjKx9jP7LeL$-D$|tUX;ELp(a) zUfamapuofID7W$dsWfIKCC9IMvM*!WR34Xxl`>4xo>cJa`PoHzE>Ljm;qm)h8RxWf V={o&5DFHNw!PC{xWt~$(69DK1DaQZ+ literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/BrushVLine.png.import b/game/addons/Godoxel/assets/BrushVLine.png.import new file mode 100644 index 00000000..31b70a33 --- /dev/null +++ b/game/addons/Godoxel/assets/BrushVLine.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/BrushVLine.png-022220d888fe2fe2f8a081bcca62b4b2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/BrushVLine.png" +dest_files=[ "res://.import/BrushVLine.png-022220d888fe2fe2f8a081bcca62b4b2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/BrushVLine_Hovered.png b/game/addons/Godoxel/assets/BrushVLine_Hovered.png new file mode 100644 index 0000000000000000000000000000000000000000..7ad6863566c1f9925d384dbaf96dd98a160c3018 GIT binary patch literal 1998 zcmV;<2Qm1GP)P000>X1^@s6#OZ}&000GqdQ@0+Qek%> zaB^>EX>4U6ba`-PAZ2)IW&i+q+O1eyvg;@e{MRaG2_O)NcIQ*>2Y$(a&4I_4`7pZ;g;NUPCSWLUo_G zpzN2wz}l+$Og9}7T55ug9CLTpnRV9h&fR!Kp?y?PEZ|p9J_{YF7}t1}lTCx6NidY+rS?6%ajl z1}Ds1*{wbWM~N#~vLFY=4vsFl<`n!@?gZ+<+69YU`=+&DwThja#Z=K)(AZulW1j5u_pkuR+6tlpJ3ShG88 zyqKEv;)ONzQjEtEc7_v~oPja+7L3Qq01TQZXGX2}JeixEnZz@mF+j@XhMJv>fkNLc z%di*j{xJ6vZzTE>Z~Pl`G^zUra|G({d3(TGo9A3zjBQ>xbvnbK!JN!WxQxN=m%7v# zYqZ@d)EIPh2SR6LYd+Rgf>NoaY3kmGrnQFb2a5+P-=b>+aTjaIY`_%*Y#{|L^GOpR zj%>PSKz4(=h03**(Umbj!4Kn{h(H(zR0I2raWo_Ab(YMt?i|#(t`1mxtYa)+gOcVT ztS^r4iz-+!S1sOr03G z(ikNy^=CL2YXnHR7dqUH5soxWtKB4?tXgWjnBcbUG)sKXxGgLpS=?vA6 zgr+l8KN6bGQ2m3k@AhUi24rt_ifnfHHa-}LEGeF#mT9@Xz0*)IuApB~kR(Ddn1 z{hcHGN@)7@sD6g%w0+a3NA)xBKW*RioljB0r{7mTMc+BHe-WC#^C{Xbedkm3J4f~s zn!fWX`V7$t`=;-Fiazsxwb_Fll5>$QIX@sRKr=aCkbVJ#+}x2{$@v378=N~ZGdbVkEHJ?9E6~u`!JOC5 zrW~?zq~~VL^c;;XIY)XPV{!p${7laWJhl~^ke-`9|N3nnng7bo7uhfUTZ5fPOW5^) zg;s_zE$bOC0004nX+uL$Nkc;*aB^>EX>4Tx0C=2zkv&MmKpe$iQ%glF4t5ZAh)|s@ zh>AE$6^me@v=v%)FuC+YXws0RxHt-~1qVMCs}3&Cx;nTDg5U>;lcSTOi`{MK=Z!z%WFKnR+6*kx9)F zhl#~v8_R9XN`^{2MI2F7jq-)8%L?Z$&T6^Jn)l={4CS@uG}mbkA&x~Pkc0>sRcxRP z3sG7%QcR?1Kjz^daQsPf$>iDqBgZ@{P$4;f@IUz7ty!3yaFaqYAn;<_A0t3;7iiRM z`}^3o8z+GO8Mx9~{z@H~`6Rv8(jrGd?>2C8-O}Ve;Bp7(f6^sGawI=Zp-=$c&*+-wueR4u>b%724YJ` zL;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jmMI1tTk^7hZ7y z0025kL_t(Y$7B5e|33q*0Sh4oK|w(TU9oQ6I!1i*Obm1Yqn38#= zK#34g2w_TO2vHHJUS@yd~s&y zft^}fWmp}>@wwpNU!L82G+aw-QKRO+IW+i#li4zmaCRlIep)*okwE)N0rgP88dR<#7|?4$}pi#dqSF2A{Kdbf6%47 zm3QZE-1{rbe(_Y^8uKf6zdbayXNnas+zsEgB;xDidy}umIx;&u9XtCw9ZSxza!@ta zHZ~^$+Bw-j`JXnv)lmG!6Md3+gs5lQF{(+NS~2{$|80E;evgrL9$2dR^OxHi3^hN)uZ(M+{pqc5kaNJ#O=e%h zG%vs0_uuvFQUjwsJdy>bHX2i>j}zsT(md39|e<*H|lo6 z6ja!Kijqn3YqS@Vanp`(9&jej4k}~KLj(Fpqp50m?$wOBT2EzqWUT_dUw#%j;}$f0 zk91&ip^wy!R8x0(aP_pzXCAX5yq)4OIK#EN%h0hVUr~)GLGDvi4c%udw$_QKIvGruPf`&>zkK4%E+$Hu*$812!R?5+aHz##qTAeY1^vc4fD~qvN)5b$jf5f`FJ5HYSu2$Ic z8nF;}N-eKsO1ZGoID{f-)9!ddQ2#V@Zcx~votk~0DUAD8Kx*N`m-)pC#FbsrZPYB7 zc-jG(I5Zio9&NXAr{zXO#qpr<{8N@>H&ayg)_#PfF)(vuw8`j}BG}=r5{&je z6sL-^-?&%TL2*R(_Q@&UWIik(>W?zZMfSR<$lG3X-RrJrKzKB2Xy*=ocV`DR+ux_J ztD*wsbaBVKQf?8OJ)^V8GE8lC)yWo7(vM`K4x8Wyaq5E?2_3{M$K~ot2-`w%?qwwJ zL9mm%S^p%w^SMM7YB!V(D{yqHy+=~-2b<@mXOd~;iMX*uXp!1FR9#{m_4Z5NXt;Gz z6Rpui*gF<)>~Q^zU70(t%C9$q&Q{togR=SDwHZ6i9jBYN@Dw`M#m$9zqD;QsQ z+9vMt8@6v15c$?RW_fY`c8YhIjPAs%Eg`k-bL^-FgaxTYnQjQCi zZ3JhZwRi4enqIMC4UCt!l85hy>XL3tZ{1iz*1BGN6H^$kqC)3E_0wHUZd`O^RUq?t zSM!)zj*=aZWD3gEL@+%j$pgbySE{Gk1q6y}y|P6JzoDAa_R(ySwfzW&k{53j;wM;I zxh~Ko09AeiCjD&rT~&d1FR`S}PQsbOGbl<%2G5_wjuhVG6-OIFp~epq3HvaFbS4*ZLDbd{GzYz=s`v)(9<`y45@6BlPyGTXwmm+)=@kRJuU@ z!(F`%?tIbp2l_syCexyg|yXS43&*3lB!Ww_l`0RM=89`E%oe=m*3DlB%OV zQVW#ITG5lm8%Qq24-uTy#;`dye$w8-UzZl{BHXw@sB??|I`=FMRsiWgTgaLA_SGjc z9!j9{ymM-byR)z8p#C$y08>4X!8@^QhYKDZm40^HRm_I*F)!08m8>{< z9WN;-1lC6h?wnh|GZA__wMV$L3tSY+Q3*zh>x`$UHYtyB1w}MY5#DjyZo9Ha*E6X^ zcqnHk(fa)Ao5yckX8T2QS3;e${7K-HspvWizv=B~(?dtr>caFKSn6Y9$1*3Gw3A;T zVJIiMrdo{PxQW^;^Sx?bLcXn24G}us(K3M!^Pu|X4^71~3I0A&MnK&^R!ghG+I;VdeB_%4~^qpZ3F)>gWG+T5{{cWctRxa4FScI}C6>?PF# zw|HIj0a5mqeu>>T#%G`1y~Auc1!et~hZ>;sCyk&wPE+qX4|8C=@J<^f>hZ~$BFggI zL)5n2X16@%*49bn(~}gk%Rq4UBqPngv5|3_cfUq$*J?je)IfYV?J!6#AHSFt*qLis zU>Z{Obt{Bd;?b_m*@^5G_MPcyfT6Q&dR4zqB@|CTYPM{#5dHIMgOD%(ZduUrN@mM}i|`)odiqNu@0gcc%f z#paB~=f-9r?rJ2RJ>t?n@*?7wz-n5}we~H!9pPq|$LDU^rA)6V5B1x%cxH4`Kal-- zhKYkszm9~|@D9&bkmD}r!F^0y$Mr>bGW<<36G!p5DJjPi?)mELCJ%ePbNtYIs%?ql zFJY@$7gxfgk-V(RBK+f<(9O!8c|L`MFmxtoV@~Vv>opIWe0I2EhX)34j=*ysyZ6aQ ziT0+e(kLzC6(R%sg`Yudi?^vBdtp|oO_?Wf9pO2w7`5}7p_h%7pR7H^NeV{Ckx@+ zfj#!CJc}KNj-pl#=$s#Wjj6=b=R7ijC`VJN!;z<|pKk5v`n3$-a07`eNM-W!NbMqX z<6yt58L&0TISUS|e>vLQ)iuuu4%?kY;^1eb5!QX&prYhm2dA=^bLrDCI8 z?Z>KN`epvHf?R%{yO;=$PlN0tVKEdJrSN z(n>AgA2YOLz!D^@{2}4aWXAF&Q`8~Z3EtyvL^?Tj+{5m4xEsj&$uixS9mK`9NmyK( z7kf*fol(eRl(?%j7!xbMYI(0gGu!;@F|R0%ZT+m$CyQVdw3_*jzQC^CNpeUW9JI87 zU$N(lOQHvu19wu#=~JneVS9zB@jx*`vGs+Q1f=6FrTZl@Y3()RkIm&x`iI$(QWyjGT2#WXJxW!MAVu|Ot5bz~+`J}q321kyU;z$$eOSH+0E~qj2hbF9y zrp55jsVA6MPL63Gd9`NE?lfm{a7s7*h`QRvr5%=&pbH^a&xv~^2F1kTy8JCBmICH_ zBz3r;syzYg;HNBa7?NIT@uVy)vCMDZd7)(fEm7y$iDx_dhc|?otb{u|h|_e6mV4E_ z8-_xmK~$fklfz9Oexj;WBL*SVrVbf%O<*~XsNN9D#2_W6rGl)go->HhkRE2c%hhd3FW)a0G`@+LIP(O7}-9C%&;)F zniO!!I_3Cxtlq*U?2P3=Ul`tU8>>1hDA$e3{TZEQ}JBKOFT?g?cbJCn!fS z429eKF`Y&N3TVs7S{Hv-?R4D##XZH0Q5Z2GZjc_`@gvqLGb$JJ`!Y8BXE7?3vpf2W zJER*DP@z9y&69R7Z7*C0Lwfirub76Twly*~>Ft>qrlmjU7H)5*`ykpM$BZz;t;uPX0!3Hy;Jc-3-1NbS(bO=0K*gr0BB) zzRwMr6HgCWCT2@lt%`3rO80OtyoErEyV|c;vWEF1VXoG-iap}0+_A5o5Km9+`1xj- z`fz*g?dq?_a2Pn>eK75714zH) z67rg}R8&Pq9dD#uxzo@C>Os}_wO=(cxl@{=Q}WOlz|cs(sN=iLy6N zxCNiXgg@q9KAf@f!%7a!7{d113wo9IUv{1Tr?Bqy1&B4*f;5ZitIUEx#xVNOAF^IU zTCMy^3@kOB!k!V+=nF}eEVP(8uZBn-ungO;k{-4$aL<19pyc=1;W}&)zGuw@U7p5g zy!Mc$;B2H#oz@=Ejnp{qdWq=ps*&w0$dbm;j!0Y9(f)V~u%ES-LMN$2n*qxc?zN|^ zouc(nYu4D{mP*`GaUsjY`w)^J4-<>=H;{{N7BC?tz9Fiqwt^TV_$@;{J8p3T&RSVC z@%jm2!HMBsVq%PIK;P%12~^jjuk~@bn3ll0x~Zzbyx@u$`Kb^~l!~jp%t6*PiHE3D zA@~#ib#*$yI!D(vPODi3H6C~PBp>xp{r8+l=*9tRfV1c?hQv=;|#dYrX3jaL)CbOCaHn1j?fYrEA@nH|0xXy19N#6d^%- za=)3T)B`oIVQ}R62~X$qI|^nzX*U#GYkS^QFreD^6=ZkryOJ6qKJ1t*38GlN(Z5!f zcWRxmRzAX+bl%wDYEr%D&eV<@0MvWc*qyBKurttlN=l)?Y}KsgbAqngRuYB{$y($9 zM7Z3R9Tz?N`9Y&6JVtqoiT3>(VHE@=9Z2F?t2owO(xH{CSc$S+IOj0t@iEwhdT(5eQJSi5Z9XJ({0zKwJtFqU8whDHvPQY$b5Z=kKVNNJ zLO#7>KnMKE?fuf5gBQRkwa$Mx5PWSZpw6_kUR)p?b(3m7;oGI;(^Xat4EHul>7iZ? zqqfQCOW2cJv*gjsc^G*m#-3_zMF~qsamtVsB+h1!3E99;l^H>=sm#|_$u7AdR{?TF z@FEya##xc1G7gcP8$Un~9CpN7h3S-SoHh^DndO`|8Ep;dilo$5klabCi_C&ipWZVC zdkn}?UT0&fqeQv98*1_3-EIRps2L*KKX)(8f~k+ESYJ~Ykl-72VeJm;I6Ju+bP-?? zP=VEaS)FQ&FnNCwEmM+3i^%cyA=|WULc%OZ<@AG)mvnLR2 zZxb?y`}rdK&`spwUkc;Cgw?!0K7vy*i_~htRcVD?oN^k=L_-BkWY~e(DLtK#?1jjO z8WWv-9k!vVG?7`CgOGz32M)0!EtHY1*moE@3*;N%O-p;B~8db2GNOdZM z2gZkbNvq{5v(6kL^6DZ7#Z)SA^K`qwcw6LvY=YhVBQX2+t3B2%qYJ`CrYI)S;1KU zI|rmipF@4}12hEYBYZOK3@-fDN-PbmG6w0F{tdEULV&_r_2Ho#LUqfEt1Uw4ViIds-Sm94(iHQ;U0V*XY&ouBC43SIp;30ElvAm0mF@jdz zj(ljzqHsi-87?;R#k5%O7t50Esc-Z-jO`oZ=Dt5jA>Ry){6dL+oZ`(C#Cjp(e_l%F z2$JQ-=UzM=ldtj#O~tM?8LWRNkT`|ulc#q`-*OORwUSE_!UT7yDQ&YAd9=Ws$)LU2 zGmTjQ6Coz^V4Z*N|*Pf5dd`yqnwqUU}U%~MA7_V`x<@LoGFhr)jf@(cG zOV<~o5i^l=wR88%sBpO*n%;gCy7o)hfDAk4ZA?+|MG;MjXQ1%V1tNrUsd0b?SFS-i zDx^Ar^}m=c97R37lpsLt_UucwEa|;TVIz25_NK;h;qsg?%(rzDz47#g{1JR@Q4W(L zLD+>1U^`9ZRxVKW#8~+^HC0N0x8{3y_CIrS%AlR_QFfZ-v=@H}28$1l^p3#ynOgZ9 z*WHBFZEm7PF4i1NDJeFM2%^xMbAC0_HjA@aO+;gZ{g_F)_XR?X(TPsO7R;7zljHn5 zH2()B-GDYZMQ?p4#7KL<6p@^}Qwg<)=N8C{(|iPHk5$WLHJu!6wkOoDPWpn$`~6<~ z&FSSMoIV{wNkdnJ?PDyBkDFdDA7cJ-0QJg(^hhpXI3{>5bR)Yk{c<9q_pW8TJG3s| zC+-aa_n-;Hk3jamvn+Rl`5uBd2qiAeUq2k**6We|*6@vEOHcTOvpbx&Y?~P0U0FSU zmgr|!oPPOLwm(|1Qr;9Wg9d?b{vToer}fCzbFjd|Uix6z#m&$wJ9%f+<)m~`g!GkJzHt<*lC<#rcWmM9myCH@FBdgH z8$+X=u6v@DN#;&4;^W?FO_j)XcREu_po~rh<37)D0hICBG7Y;wn>`lUjgra*8S%Q! z%n-_%-pKZZc>x#Y0|oZ?TL{(Wb>cBjc?gveD5Amc1B|>r)E188sM2uKaN!Vh%rYz> zO4?}}lH2B}Hsn#Eto@n_T!!R9c@?%S*I71BnKK~_T}NhDKrz@}^i7D41QK(+!jUYz zN+jSF@|9aEiImUX%+$TlD0vzF5pmTq^I%C@PorI>LCKV*d=7|?z2yFJD4Dj`^SoN zBVLyk7RJ^X|2FL-jz9PO6r<2Iq}ETgBh7RmI7+VC!z{@5kHyQp9cHE`JFVhZUDq&$ z{NQu1E(NP;=YPY%Ek(+bI;lzIR9RvEk5~spdMH~yU_*zz-rz8n*47ABq0(>oFxhho zGcloWVeXYI(Rr}b0=}09c`w(?7g3T;eyY<7ya@7ZYQQ#vNh&6tAh|c1ZQGy4Qjb63 zCq@UxCmX)eg-nNtw~2UH^m#ydC|+}_&XJtqW+$kfdd6+{fELwKV)n_v;w&UmCVK68 zfN)u!)`&1uZbwZ$@0hYyAzSXyAiQ$i{YutMY4u70!xVYbs!ox8ID^`&?(<;|+n#Wp zlvu0+U#K{PBRn9hE-G&J%;{xRYMg$YO+&{mj?7<~@uk)YZlv=YK7hi8(Wch-x{1F-Ihf;>pX~FiYC_Ir`#&IDheog}ylX`1t1xMa!MhZY~;rB||GVtMRI*{dQ5 zlxupDBR^(LP-+%nDS0KwdNWKpB;mDWQH)5FdCo8>QB(CHv|?Wa6l&9RZkVrN zNuJVilQ&X+KBUG+Cll_Cz^j8_IJrBBPefAgN@H3)C`qDiE8sgWA!-xPP@$CEiHfe* z4rt$nde$x%>(YZe7RHw`UMmz~)pRR5?y|^$v7DAFCfTj#aQ3VAr?KUv4g$+99;iPA z*{!ZS+gC+&iw={Mc57wO3gt*!a17`h+x1p#v`|6WDQIMW<%zpe+ z4~PjS$|SsxN2ek5yLx{(vWp<&b4d*q0!ambhnbq>{bOA&FH5y3rd^5kV4jv$yi&w{ z6)R1F7;)u?khxvhM5%TjPBAsX55U-b_Pyi+;iA;lz4ieUNNn@?l#@f48-W>>>{uM1 z>a4t$w^;p^DOONEGCCt}UoX15#(!~>k8Ti#JixE)qtf)KoWz*P9f-k{ae6w*do`xs zZwb_>Nhe7Pov>x8zD7;)I{1m-YvK%Ak?C6CFkGL6%bWON;Q1MUliGYMmca_!4npNZ zd$hte&R48230*<#+E+mw-!?iae^+F92H{=_Nby~lAaV|M8qDAZC9BiT_sb=?PFc$H z#n#Q-cxWHonn-^YQ{5gt8GqElI&bO0CspnWmaS&ujL95+_k3TUN3tzjOt5$&U$_NK z#cwOr=a<4v0FpR*p+?*HXuZoDrgNbFq>Cdzu=mkpfXE2Xm?R}yH(Zc^zkgpZIB)MO6?n5 zk*n^k1EgR3Tj^?!*t&#tr+THiic*!%Q}^XOAGRH{M3n)X0P2ft$)`kKzM_iL(wj1rp!8k=+B9bgx!}^NtHlE0`7KJ2d)q+z zgnkXBnO`I%6=7!&WvbOWr1DiYs3apCODry#`uM?zYrrb%TR-A%T%7}dGV-P@X0@L6 z_AUeRqU~?H`KMXp>lLY%zi{~Y?P^yhckWT7-&WI_$-E?=BtneH0KV`BzTa}RlcXsD;o?j zmCCGHBn=4p60vp+5SfFLqI^KMLK->#zIqjloD|GT5@0p2F~<%H4#RciC9=4pM#dX? zZ`WZ8VWZu^qd*G510MO3W%7KgYdZSr4K&ErXLOw=BC79;e)QmsY*oE_0FcCD$g_1} z*Gx_2PxQ2^&5+w31xvp|tlOv9Ro$3jS5-R%t#m!E|2_u0c|~`&0tmB4M_k16RNSTs*fh?pnqitw)dn z{BcwRR1qA~=l-q#`6iEbqR-@p&^RA@^g90|O{o_OVsiG@Ir?vJsyoDKrieHvhCQq~ zTv$6}`m@#kdz&Z?&6MgI)7LL|DN+nS7X|ciVU26knwWZPk<{tr0|?lI82c{cXoxTM zS>%^6(c$Nu-AGmENLQ31=GBt2QQ%$i$cvlK;ulA^4nL8#*GcXbO`*)+ z0riU?xk^i#o!jU&K~1US5+`Z7%$G)wLTnoX&WoRRw{)KYQA-t5E6p%eBRpJ?ezb*^ zTo(uhDgZ%;%xLnUiE-(xDKsb&mm-g&N*+s1%IU;-U}MpHG;M!YEUDzSiA$ zL{f3xS~XxcjTMIKwQ=MDb-C~?)rK^PoG;iiqbZr!oNRWlOeZ{-ZrN&*%Fe_QWG03f zn`SN`r1)1&zu>%&YIC33rE2!s3E!iKdKV$1Ijk&Zt9-iX8!fFapf!}XaRia#g=4?G zx`emDLU^NmK}o&<&>HIjd+l8-FdJJZ9wR{93iZ)NU;kcAQnR|4tpv2i$z{ZRU*@-LnNL#QeY!=hrE_T>-wOT99 z8}0v<23&t19D6Kz(NDd)d)BqpD{6sG1lZNCiKmN=ZgRBb4P&7LC3BtcPg+-hhpL*0 z=3O}4Zav1XNcPqLcz&uEfbL$ru$Bd26>>uKnOl10(2DGkIFt`}3q< z=iR044;$#_XH;85OL?^#jyAAc;*AHm0SCzesm$}Etxu^63mvfZMTZ81*DV1CO(ezf06^T&NmlA*8 z57D|YL9pdZm{AznwR+%MJU;%yMjugR95B9goMyfx5Wj@6Q^GevtTj@N*6j+1O}n(e z6=>gEGJNd+hvV$xr?qF}pM%@>+2?6%-yeVc@)gJWX1ToYeW=g0xO--!N3X@6dCP6z z2LsQ|-#sM($1Dgw#FWd&vx+NwEkd7&yEc7?Xv=D&rhEuvDGT(z9%{|eUTYhw0Qp1n z*DjY=mypeOe<>}YRzdB|KFrLalZ(mkQfJ>4QLt>q1#1~_z<|HcHQzmNAeH=nEN5IU z@06}Awq?ax`<>&RqK0O^ADG?Ylm(f~$tK8mugWJzAV)!g8*GdTPSf|_&m;J*gz;_G8@)i(|NbtN;4&dN~}I5)$8HOe~gWwgZNxJD}A4 zi=s1m@rW0b4W;9euMavG>cdc(8FsRFAa-y_5{UHKRhmC?rXpg{gRwt0WXYdPa{N#u zBLEA@TIBThH~v?}neI;O93_etx+6KN=TvqOZvK&M7(%?VJ@>hfF}FA!L1%E?9Wvb< zL~qUI&4|fo;@6$+`7qYm$*Z*Wzx=ra)^7v#zqB`+tt_&n@GDpCxoy#ZfxL|DAJ5G- zAFy0?_URm6K@J>WVv(vQm|7b{r7u2g*!*W-Ba00r%$xh9DRQ)Ol;b*&OZs8-NqaUy zj~s-cGExZWoT&atM$iT%%5`>U&u*ZVWMJfdUanSYAAz3UXg4P1qy0_MQ%8FPREi)R zuYvJ7K2NSlCEV|iX5ULW%1}=P>}3#JI#RMcDOdM)294{2i@)jg1aD$s%HmFJT5)|0{gLAGsmg%fP`^< zT5^0Msx0KxV170X4@xm55`@_INAJd=lh>QZsWCwA2IpyZ*X)M9uNAgvp8b{K>>+-) z-~7Azu&LdDK460(>d%eV*yR)Ik+x*qFEyMH;r5}hpgt>g`68Jlo44mw?>qeu)yIjG z=MnFPqhC zKILBT8L_DatVH1_dzYEdBWvSan8H3kh8J$U;$2fXQ0)4=`aFYGD}!Jge2#|3b9mXE z`wC&3x}nmWF0(T}?|n(e4$*t{j-{Qqm)Xj+7LZ1M;r+JO-Oajg!ZS{lZ<`_~qyoES zC0jY3*1%BeI%W+C(Bn_tYK)JBraq{U|GIXb{43bu*?si%`}g%%&c-z>-xoags<)H# zp!*XghSvMcZcSvG%N-^a!MtB_evZrGrO#_4TE)>vplO3+wI{b_p%+#hzvC)> z9}yuh-j|S1cAKQzs9!1g#Tn84^6ocfz`P8guVdXLi^eOx=YGJx9rDdaJ6>Ns5n#{7 zL3I<&R)5nU+kOw|ENnu_R0=Kn21OPdFNlulJxxOuNL9`FdpVVMiwr-iBjChuci#(* z^4hcxStsh!=9NFe*mRpff2GooMoN2uW`eJDH9@}&OhDaSV?}i&b2eT^JQ@ij;o}@W z>jp~w{oQ7HPnyGnfb8H~JzA8L$_#4Aejk*-evb(>i!xTF7V$0cG4aRx;FcwiWnyhy ze!2||g)0V%%yvgm=6k$J!8J%HThK=n%Z6G7nAk~2;O{qp!n4vU_wRYx8!^(44~>+j zU?qK$2NqY1<6b|cODFI^B;DYDCBr-7bY!@^P69dYlAN-4y2BFgu{o^T^2LSsLhrl3 z9EIIYMJNUDF&}+&G71t?>b|SY*#twbR(El*lm{n{)P|O=AahPjZTrr_BiDf^gh9)S z$d^!Ckcp{QRV8+929Vw-ajx7!X#XuI#k)z1WGd5wKpMJMPiBsl!^MY9xz}59TYJ6% z+Y^M_@3sFIkygUNOaHcZ{5EpV@`^uUVAuQwn=<~>fjjot-{1ZJ_|cr>3ANKT^pp88Ae{Yvl{Qv8{3?Q- z;J&aqek}e-+|(t*4vo-)d zfbDa{^O&v!mY?;gv`w?gl>^g(*tyO}5F_V*biZERenp>-s05HKqTwNM$=;-f0|#jJ z7;$QdXGfn=);aj>+4l*<92@rvfdGIwk6ZQi zN5lj>q-y~TLw>c0ce~N;(U`d6-TiRT(`4`pzoOY?!19M9j*Hx#CSB~*cP$G?!zV)} z?mfdm?Id(9HHB*suf}L}+!<$g3I{8WVN_vQ$0L& z7I|&&CburqDf%|5ZEkkHX~^Tl;_h|X{hPLeig?5#iGVK{4S%(cv9JN!^oZ90?Mv9; zL{{G^EW)>QzACL5iw_y^22+%aMhqSR?PPh^C;C3QB-hwn%dq99&?sv9U;y%M*_k7f z;UNDV`j;Q3j_XU71dlDXZ6&bzq=D1+g&_U9C7FizUPYnBvUqydagnHJ*zaaujBIcU zco6cr?mGx^qvcPmytkn@JBmjwc`w7!PJ>n9J3qAqpcm*C3#HDSN`>qx>X$gxR!{Jg z6APiXSrBk0@s;{fpm!rQE7i@Ru)1gi%YOyDD$S^eAwObUi5YGz7yd#k2ptwc{ix!e zVOT*cW-Fza+@kmqUul04=(6|XHe~3-qtld8y~^A5WkV^SIxZ&UANox3u>n$2gT>g0 zK0LN|ghlIkmD)D?4N^mx@cEAb-Jr=vkDK+qf!&&B@szr7Bmg(;AA@?q+|&rt%U*Yg z1aFR|E*xjWB5Q{N!gqi4u>bAs+kYk}e2O0YiT~NApg*a>V!h?ZR=rPX{|S6Q@$~QS z{vRS1|ErItVLsXStGQ#&9mUa3NBX9LH@Yy>jdGim9{Gs^=}_@TWNzfxIt|IVtg>wE zV+3%Zs3MU7&_ZPjtX1^zjQ>>=6bFE`RKjd;ZK`!0`b9Xp^tl_a*Jx}%4oR$CLSu*I z%p9J+5%F;bS?|Fd7xRWKJN_DW?`yhlwO7S89K!+A!Zt?z`FhIN8b zACPJFaU8xMWJGSO8BYOFVd~uzUWaAaBPUiYHUa<4gVMSgS$%T1xH~M~*k&*`bHk_K zeUl56B+#u_p5pu0deq)6mi5giBHP1i;5VG5?)HJ>eCCDIe*KSY)ft+| zBL+P~f{n-xgHZM%U>&??kbAVh4=q$;k8*c>@_|yu_2KRzGSK;46gsj5)U)Z?u*h)P z_`UW{4bEr5YQNFYbcge{@IGGYPx0ITH{0;POu!#9Jb$p|5A+k7{#1**_uo)%bDGm< z%kuIp?TdeV_kTd$|F1mSlrW3II&da8ejkGA`!Uf8Cz3QLb+%m{m_0!YFneUH!A3jL zEzt60Yfy<|d?@mNUi~NDAdkh5KQHH&XczPwuDT3N39$S6Fr`f{QkFC;tzlzl}38fsr-62E_d*cW=XHbw z$B^0}biE^xa`R${;sl?3hmzUXelo6!y0p9aN*`;%S|Z zMK!B_^G9(Ryelp60aTx zptj^=W$nEUj8Yga&^=Dnj_R(;O+p%Rg^{-3v8Ty)>}Q_ejIBg#$1#Zlzr_j_khoVtjY6Ql}M%nhRcB?w8y77*j;DxY8wDA*ID1#j~NbCB$U<1xsMiYiMDv#z-=!4I$T6}|#4k>T z^o0y_RG<1xvQHssT?7t5Ayo2ZY7Q5odhHrmS+~e~%%1VFcK6>I&F{RPd+hbZA1blW z+D%Wle~@cZF8`Tn{whlUg%%$CoiDd(tfCoA>TtE~~3aT9@JA3RL1zD)j9RfQT%0AiBKTq!b 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 literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/Godoxel_Preview.png.import b/game/addons/Godoxel/assets/Godoxel_Preview.png.import new file mode 100644 index 00000000..0e23ff43 --- /dev/null +++ b/game/addons/Godoxel/assets/Godoxel_Preview.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/Godoxel_Preview.png-e30103581d3fc0ed2a2c92cdf72b5c70.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/Godoxel_Preview.png" +dest_files=[ "res://.import/Godoxel_Preview.png-e30103581d3fc0ed2a2c92cdf72b5c70.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/arrow_down.png b/game/addons/Godoxel/assets/arrow_down.png new file mode 100644 index 0000000000000000000000000000000000000000..9673c8de23e86a4c1670e5017c56bdabac14a138 GIT binary patch literal 562 zcmV-20?qx2P)EX>4Tx04R}tkv&MmKpe$iQ%j{(9NIy|AwzW#3!);9T7@E12(?114knj=L6e3g z#l=x@EjakGSaoo5*44pP5ClI!oE)7LU8KbSrG*wT9vt`M-Mz=%J3weum}d2i1DbA| z>10C8=2pevD?%7R1Obf7%rfRADFx5*bq^n3@8Uem``n+SPt98l@QK8;%rI@@4dUrd z+u*!U9Azb0B|aw}GwFiFk6c$;{KmQHvcNN=W+pvP93>WuU95C5E14Sc6md+|bjla9 zEmk>ian>p|*1jiyVK}d^EOVXa5RzEL5+sOFP(v9N*of1rlVTxF`w0*KpzD{&rI4!( zMvetkp+R>2;D7MDTdOcR(Mk#@fWV96d<+A@U7%TaobO}DX`TT7XW&Zj_^Sg+c*%KcjET0g+oEwASjay^qreAVXcHZh(VB zV5CUd>mKj!?e6X0GwuF<0Awk0p;F4c2mk;824YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2jmJE6Ez?iBWtn%001sYL_t&-(_>&j1^=NK4wx7S z0HPH9$0Prr3CV5-Ebd`oBwzvqBOViw<#Brx0I&)Q0{=2~{Qv*}07*qoM6N<$f{M21 AwEzGB literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/arrow_down.png.import b/game/addons/Godoxel/assets/arrow_down.png.import new file mode 100644 index 00000000..bcb4645c --- /dev/null +++ b/game/addons/Godoxel/assets/arrow_down.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow_down.png-d2bd93428c0bc172a28a43c55aac576e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/arrow_down.png" +dest_files=[ "res://.import/arrow_down.png-d2bd93428c0bc172a28a43c55aac576e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/arrow_up.png b/game/addons/Godoxel/assets/arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..b6bec658f8564ee995f63424c1d6ca7391ccaa3c GIT binary patch literal 565 zcmV-50?Pe~P)EX>4Tx04R}tkv&MmKpe$iQ%j{(9NIy|AwzW#3!);9T7@E12(?114knj=L6e3g z#l=x@EjakGSaoo5*44pP5ClI!oE)7LU8KbSrG*wT9vt`M-Mz=%J3weum}d2i1DbA| z>10C8=2pevD?%7R1Obf7%rfRADFx5*bq^n3@8Uem``n+SPt98l@QK8;%rI@@4dUrd z+u*!U9Azb0B|aw}GwFiFk6c$;{KmQHvcNN=W+pvP93>WuU95C5E14Sc6md+|bjla9 zEmk>ian>p|*1jiyVK}d^EOVXa5RzEL5+sOFP(v9N*of1rlVTxF`w0*KpzD{&rI4!( zMvetkp+R>2;D7MDTdOcR(Mk#@fWV96d<+A@U7%TaobO}DX`TT7XW&Zj_^Sg+c*%KcjET0g+oEwASjay^qreAVXcHZh(VB zV5CUd>mKj!?e6X0GwuF<0Awk0p;F4c2mk;824YJ`L;(K){{a7>y{D4^000SaNLh0L z01FcU01FcV0GgZ_00007bV*G`2jmJE6EzS&`dc0V001#bL_t&-(_>&j1^=NK4j7Rn zumMI!Jdz9y3=9lRSWH7{ZGphy)io%`j00000NkvXXu0mjf D_50@% literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/arrow_up.png.import b/game/addons/Godoxel/assets/arrow_up.png.import new file mode 100644 index 00000000..15ac470e --- /dev/null +++ b/game/addons/Godoxel/assets/arrow_up.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/arrow_up.png-2598e148d1b795a628ce80a4fd5cf401.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/arrow_up.png" +dest_files=[ "res://.import/arrow_up.png-2598e148d1b795a628ce80a4fd5cf401.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/COPYRIGHT.TXT b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/COPYRIGHT.TXT new file mode 100644 index 00000000..e651be1c --- /dev/null +++ b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/COPYRIGHT.TXT @@ -0,0 +1,124 @@ +Bitstream Vera Fonts Copyright + +The fonts have a generous copyright, allowing derivative works (as +long as "Bitstream" or "Vera" are not in the names), and full +redistribution (so long as they are not *sold* by themselves). They +can be be bundled, redistributed and sold with any software. + +The fonts are distributed under the following copyright: + +Copyright +========= + +Copyright (c) 2003 by Bitstream, Inc. All Rights Reserved. Bitstream +Vera is a trademark of Bitstream, Inc. + +Permission is hereby granted, free of charge, to any person obtaining +a copy of the fonts accompanying this license ("Fonts") and associated +documentation files (the "Font Software"), to reproduce and distribute +the Font Software, including without limitation the rights to use, +copy, merge, publish, distribute, and/or sell copies of the Font +Software, and to permit persons to whom the Font Software is furnished +to do so, subject to the following conditions: + +The above copyright and trademark notices and this permission notice +shall be included in all copies of one or more of the Font Software +typefaces. + +The Font Software may be modified, altered, or added to, and in +particular the designs of glyphs or characters in the Fonts may be +modified and additional glyphs or characters may be added to the +Fonts, only if the fonts are renamed to names not containing either +the words "Bitstream" or the word "Vera". + +This License becomes null and void to the extent applicable to Fonts +or Font Software that has been modified and is distributed under the +"Bitstream Vera" names. + +The Font Software may be sold as part of a larger software package but +no copy of one or more of the Font Software typefaces may be sold by +itself. + +THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT +OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL +BITSTREAM OR THE GNOME FOUNDATION BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, +OR CONSEQUENTIAL DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF THE USE OR INABILITY TO USE THE FONT +SOFTWARE OR FROM OTHER DEALINGS IN THE FONT SOFTWARE. + +Except as contained in this notice, the names of Gnome, the Gnome +Foundation, and Bitstream Inc., shall not be used in advertising or +otherwise to promote the sale, use or other dealings in this Font +Software without prior written authorization from the Gnome Foundation +or Bitstream Inc., respectively. For further information, contact: +fonts at gnome dot org. + +Copyright FAQ +============= + + 1. I don't understand the resale restriction... What gives? + + Bitstream is giving away these fonts, but wishes to ensure its + competitors can't just drop the fonts as is into a font sale system + and sell them as is. It seems fair that if Bitstream can't make money + from the Bitstream Vera fonts, their competitors should not be able to + do so either. You can sell the fonts as part of any software package, + however. + + 2. I want to package these fonts separately for distribution and + sale as part of a larger software package or system. Can I do so? + + Yes. A RPM or Debian package is a "larger software package" to begin + with, and you aren't selling them independently by themselves. + See 1. above. + + 3. Are derivative works allowed? + Yes! + + 4. Can I change or add to the font(s)? + Yes, but you must change the name(s) of the font(s). + + 5. Under what terms are derivative works allowed? + + You must change the name(s) of the fonts. This is to ensure the + quality of the fonts, both to protect Bitstream and Gnome. We want to + ensure that if an application has opened a font specifically of these + names, it gets what it expects (though of course, using fontconfig, + substitutions could still could have occurred during font + opening). You must include the Bitstream copyright. Additional + copyrights can be added, as per copyright law. Happy Font Hacking! + + 6. If I have improvements for Bitstream Vera, is it possible they might get + adopted in future versions? + + Yes. The contract between the Gnome Foundation and Bitstream has + provisions for working with Bitstream to ensure quality additions to + the Bitstream Vera font family. Please contact us if you have such + additions. Note, that in general, we will want such additions for the + entire family, not just a single font, and that you'll have to keep + both Gnome and Jim Lyles, Vera's designer, happy! To make sense to add + glyphs to the font, they must be stylistically in keeping with Vera's + design. Vera cannot become a "ransom note" font. Jim Lyles will be + providing a document describing the design elements used in Vera, as a + guide and aid for people interested in contributing to Vera. + + 7. I want to sell a software package that uses these fonts: Can I do so? + + Sure. Bundle the fonts with your software and sell your software + with the fonts. That is the intent of the copyright. + + 8. If applications have built the names "Bitstream Vera" into them, + can I override this somehow to use fonts of my choosing? + + This depends on exact details of the software. Most open source + systems and software (e.g., Gnome, KDE, etc.) are now converting to + use fontconfig (see www.fontconfig.org) to handle font configuration, + selection and substitution; it has provisions for overriding font + names and subsituting alternatives. An example is provided by the + supplied local.conf file, which chooses the family Bitstream Vera for + "sans", "serif" and "monospace". Other software (e.g., the XFree86 + core server) has other mechanisms for font substitution. + diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/README.TXT b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/README.TXT new file mode 100644 index 00000000..0f71795a --- /dev/null +++ b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/README.TXT @@ -0,0 +1,11 @@ +Contained herin is the Bitstream Vera font family. + +The Copyright information is found in the COPYRIGHT.TXT file (along +with being incoporated into the fonts themselves). + +The releases notes are found in the file "RELEASENOTES.TXT". + +We hope you enjoy Vera! + + Bitstream, Inc. + The Gnome Project diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/RELEASENOTES.TXT b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/RELEASENOTES.TXT new file mode 100644 index 00000000..270bc0d4 --- /dev/null +++ b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/RELEASENOTES.TXT @@ -0,0 +1,162 @@ +Bitstream Vera Fonts - April 16, 2003 +===================================== + +The version number of these fonts is 1.10 to distinguish them from the +beta test fonts. + +Note that the Vera copyright is incorporated in the fonts themselves. +The License field in the fonts contains the copyright license as it +appears below. The TrueType copyright field is not large enough to +contain the full license, so the license is incorporated (as you might +think if you thought about it) into the license field, which +unfortunately can be obscure to find. (In pfaedit, see: Element->Font +Info->TTFNames->License). + +Our apologies for it taking longer to complete the fonts than planned. +Beta testers requested a tighter line spacing (less leading) and Jim +Lyles redesigned Vera's accents to bring its line spacing to more +typical of other fonts. This took additional time and effort. Our +thanks to Jim for this effort above and beyond the call of duty. + +There are four monospace and sans faces (normal, oblique, bold, bold +oblique) and two serif faces (normal and bold). Fontconfig/Xft2 (see +www.fontconfig.org) can artificially oblique the serif faces for you: +this loses hinting and distorts the faces slightly, but is visibly +different than normal and bold, and reasonably pleasing. + +On systems with fontconfig 2.0 or 2.1 installed, making your sans, +serif and monospace fonts default to these fonts is very easy. Just +drop the file local.conf into your /etc/fonts directory. This will +make the Bitstream fonts your default fonts for all applications using +fontconfig (if sans, serif, or monospace names are used, as they often +are as default values in many desktops). The XML in local.conf may +need modification to enable subpixel decimation, if appropriate, +however, the commented out phrase does so for XFree86 4.3, in the case +that the server does not have sufficient information to identify the +use of a flat panel. Fontconfig 2.2 adds Vera to the list of font +families and will, by default use it as the default sans, serif and +monospace fonts. + +During the testing of the final Vera fonts, we learned that screen +fonts in general are only typically hinted to work correctly at +integer pixel sizes. Vera is coded internally for integer sizes only. +We need to investigate further to see if there are commonly used fonts +that are hinted to be rounded but are not rounded to integer sizes due +to oversights in their coding. + +Most fonts work best at 8 pixels and below if anti-aliased only, as +the amount of work required to hint well at smaller and smaller sizes +becomes astronomical. GASP tables are typically used to control +whether hinting is used or not, but Freetype/Xft does not currently +support GASP tables (which are present in Vera). + +To mitigate this problem, both for Vera and other fonts, there will be +(very shortly) a new fontconfig 2.2 release that will, by default not +apply hints if the size is below 8 pixels. if you should have a font +that in fact has been hinted more agressively, you can use fontconfig +to note this exception. We believe this should improve many hinted +fonts in addition to Vera, though implemeting GASP support is likely +the right long term solution. + +Font rendering in Gnome or KDE is the combination of algorithms in +Xft2 and Freetype, along with hinting in the fonts themselves. It is +vital to have sufficient information to disentangle problems that you +may observe. + +Note that having your font rendering system set up correctly is vital +to proper judgement of problems of the fonts: + + * Freetype may or may not be configured to in ways that may + implement execution of possibly patented (in some parts of the world) + TrueType hinting algorithms, particularly at small sizes. Best + results are obtained while using these algorithms. + + * The freetype autohinter (used when the possibly patented + algorithms are not used) continues to improve with each release. If + you are using the autohinter, please ensure you are using an up to + date version of freetype before reporting problems. + + * Please identify what version of freetype you are using in any + bug reports, and how your freetype is configured. + + * Make sure you are not using the freetype version included in + XFree86 4.3, as it has bugs that significantly degrade most fonts, + including Vera. if you build XFree86 4.3 from source yourself, you may + have installed this broken version without intending it (as I + did). Vera was verified with the recently released Freetype 2.1.4. On + many systems, 'ldd" can be used to see which freetype shared library + is actually being used. + + * Xft/X Render does not (yet) implement gamma correction. This + causes significant problems rendering white text on a black background + (causing partial pixels to be insufficiently shaded) if the gamma of + your monitor has not been compensated for, and minor problems with + black text on a while background. The program "xgamma" can be used to + set a gamma correction value in the X server's color pallette. Most + monitors have a gamma near 2. + + * Note that the Vera family uses minimal delta hinting. Your + results on other systems when not used anti-aliased may not be + entirely satisfying. We are primarily interested in reports of + problems on open source systems implementing Xft2/fontconfig/freetype + (which implements antialiasing and hinting adjustements, and + sophisticated subpixel decimation on flatpanels). Also, the + algorithms used by Xft2 adjust the hints to integer widths and the + results are crisper on open source systems than on Windows or + MacIntosh. + + * Your fontconfig may (probably does) predate the release of + fontconfig 2.2, and you may see artifacts not present when the font is + used at very small sizes with hinting enabled. "vc-list -V" can be + used to see what version you have installed. + +We believe and hope that these fonts will resolve the problems +reported during beta test. The largest change is the reduction of +leading (interline spacing), which had annoyed a number of people, and +reduced Vera's utility for some applcations. The Vera monospace font +should also now make '0' and 'O' and '1' and 'l' more clearly +distinguishable. + +The version of these fonts is version 1.10. Fontconfig should be +choosing the new version of the fonts if both the released fonts and +beta test fonts are installed (though please discard them: they have +names of form tt20[1-12]gn.ttf). Note that older versions of +fontconfig sometimes did not rebuild their cache correctly when new +fonts are installed: please upgrade to fontconfig 2.2. "fc-cache -f" +can be used to force rebuilding fontconfig's cache files. + +If you note problems, please send them to fonts at gnome dot org, with +exactly which face and size and unicode point you observe the problem +at. The xfd utility from XFree86 CVS may be useful for this (e.g. "xfd +-fa sans"). A possibly more useful program to examine fonts at a +variety of sizes is the "waterfall" program found in Keith Packard's +CVS. + + $ cvs -d :pserver:anoncvs@keithp.com:/local/src/CVS login + Logging in to :pserver:anoncvs@keithp.com:2401/local/src/CVS + CVS password: + $ cvs -d :pserver:anoncvs@keithp.com:/local/src/CVS co waterfall + $ cd waterfall + $ xmkmf -a + $ make + # make install + # make install.man + +Again, please make sure you are running an up-to-date freetype, and +that you are only examining integer sizes. + +Reporting Problems +================== + +Please send problem reports to fonts at gnome org, with the following +information: + + 1. Version of Freetype, Xft2 and fontconfig + 2. Whether TT hinting is being used, or the autohinter + 3. Application being used + 4. Character/Unicode code point that has problems (if applicable) + 5. Version of which operating system + 6. Please include a screenshot, when possible. + +Please check the fonts list archives before reporting problems to cut +down on duplication. diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/Vera.ttf b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/Vera.ttf new file mode 100644 index 0000000000000000000000000000000000000000..58cd6b5e61eff273e920942e28041f8ddcf1e1b5 GIT binary patch literal 65932 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

B-* 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

1$W7r@e0!HPu@g0mkJPQ3hhEb-G4zU50u9!$ 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 W_YF69v_ymE68(IXMraZLEdC#Jb*K;k literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraBd.ttf b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/VeraBd.ttf new file mode 100644 index 0000000000000000000000000000000000000000..51d6111d722981a86766cc99c53f1956e5c0a229 GIT binary patch literal 58716 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 V!o5>kzlbDRJjU5v3Ujx#{eMf40U-bY literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/all-free-download.com.url b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/all-free-download.com.url new file mode 100644 index 00000000..be505ef8 --- /dev/null +++ b/game/addons/Godoxel/assets/bitstream_vera_sans_font_6016/all-free-download.com.url @@ -0,0 +1,8 @@ +[InternetShortcut] +URL=http://www.all-free-download.com/ +IDList= +HotKey=0 +IconFile=C:\WINDOWS\system32\SHELL32.dll +IconIndex=23 +[{000214A0-0000-0000-C000-000000000046}] +Prop3=19,2 diff --git a/game/addons/Godoxel/assets/grid.png b/game/addons/Godoxel/assets/grid.png new file mode 100644 index 0000000000000000000000000000000000000000..71a1664785972c0037b5c3d88fc9328619671bc4 GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdz#^NA%Cx&(BWL^R}ex5FlArY;~ zb4-hW)w6LmG{)Mf-jbZ5amkm};8jB)dyiGZ6~@JU5~T-LFiZHy{&x$kesE}EtB7U7 i0cV7an=Du{1H+~zob#9(9e)B%X7F_Nb6Mw<&;$U~#V#xW literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/grid.png.import b/game/addons/Godoxel/assets/grid.png.import new file mode 100644 index 00000000..846eeb62 --- /dev/null +++ b/game/addons/Godoxel/assets/grid.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/grid.png-e3d637acacdb891e09f422df261dbd1e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/grid.png" +dest_files=[ "res://.import/grid.png-e3d637acacdb891e09f422df261dbd1e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/lock_layer.png b/game/addons/Godoxel/assets/lock_layer.png new file mode 100644 index 0000000000000000000000000000000000000000..8bd4802d93a3b025750810f0304384d8e9d48fe5 GIT binary patch literal 251 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjjKx9jP7LeL$-D$|wtBiahIn*7 zoo36`Vj$3ZU+3P5ux$cCy46t|xgt8&rgvR+STs2{-DeuB{RWAS_o;O~3k8_6E*)ts zUe_`E`#cwBhKjPcsvj#OC;v!L(6#E`VtJ9l$a_iqaYA5LHD9<|(TLQ7Er z+fAWJm+y}l9Au_Q1-4bsNGT|FnOVVg)%RMFadYAvgPvg7=7@;opuH~f_9oiP79TqF zf69x$uYB3|pFQwP{Wpu}cCOQcbC-VGn#!E~&P+(V{>ww42N*nE{an^LB{Ts5He6&z literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/lock_layer.png.import b/game/addons/Godoxel/assets/lock_layer.png.import new file mode 100644 index 00000000..70c3e6e3 --- /dev/null +++ b/game/addons/Godoxel/assets/lock_layer.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/lock_layer.png-076954b389746de9e13c853ed5d9ba59.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/lock_layer.png" +dest_files=[ "res://.import/lock_layer.png-076954b389746de9e13c853ed5d9ba59.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/lock_layer_1.png b/game/addons/Godoxel/assets/lock_layer_1.png new file mode 100644 index 0000000000000000000000000000000000000000..317cb3fcedb5405b8b88c85dfa45932a95e2ec87 GIT binary patch literal 242 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 AQUCw| literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/minidotta.png.import b/game/addons/Godoxel/assets/minidotta.png.import new file mode 100644 index 00000000..b7d2a0b5 --- /dev/null +++ b/game/addons/Godoxel/assets/minidotta.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/minidotta.png-adac81df344972ef82e2499656aa288e.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/minidotta.png" +dest_files=[ "res://.import/minidotta.png-adac81df344972ef82e2499656aa288e.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/minidotta_invis.png b/game/addons/Godoxel/assets/minidotta_invis.png new file mode 100644 index 0000000000000000000000000000000000000000..305092835e71fcfca099117e59cae1de30e75fd0 GIT binary patch literal 1746 zcmV;@1}*uCP) zaB^>EX>4U6ba`-PAZ2)IW&i+q+TB-CcH}4w{O1&N1WQ5)j)TFxH#gYhZ((D%+i54A z&3x<|^V(n;q@qg5iCg~p-P|u+lwx#VErt}rgv%$NIAai}?MmyNCcoat!?X{c?CyBM zFbR6u9xadg8Fqav*kjQAY zE0po`2du5@&+f@!V5uqs3G*T(6YeYnfo#9r?YOh}J`Yb>M7-O&;S7X4ZSNp(IurCn z@;-7`_K(qpe9prz7cRr#2!od|NH2Cd!tgn;9EkY&MXbB4k0iHNV{6N{yX*rP4I`sg zvT1jNi8Cmdby+|&{1jtbTSALdo(d$dQ<-M8LWvmcH%Fc-WoopneW3z~o)vWj|D4Qd*lCe1;D4;n(S(2HC)F>h+Y%%UaBQKF9;L$nxU ziaBu-)Id!kS&Av8oY`dr%J7vjKf^NfEVG|=4zta1PIE3upW=&_P^`p~O0Ha`qD<6K zt;U*aUdSz|6pLSU35zXpNlR|XwIBe6v=el%%LOBQNKI-;Dwc5XPWmRlDg`Lw$aQYg}nWF<9)C!Im=jjK%`>BKft0Pm? zZ0(=#xp&$>ZV`0s!GaQjIc(J1SRu4LOa ze7bJrHJ;o**>^Zzg#9F{J2QU}TJJO}w^F#zwRqs-FEnuXGw;}VO@=!&DtWvLyR+r1 ztU98(WnWwW6OaRkI|K38c-OUhoe&Nf?q@h2%DT6Y>Fx2Y`&qlojRUvoYYEX>4Tx0C=2zkv&MmKpe$iQ%j{( z9NIy|AwzW#3!);9T7@E12(?114knj=L6e3g#l=x@EjakGSaoo5*44pP5ClI!oE)7L zU8KbSrG*wT9vt`M-Mz=%J3weum}d2i1DbA|>10C8=2pevD?%7R1Obf7%rfRADFx5* zbq^n3@8Uem``n+SPt98l@QK8;%rI@@4dUrd+u*!U9Azb0B|aw}GwFiFk6c$;{KmQH zvcNN=W+pvP93>WuU95C5E14Sc6md+|bjla9Emk>ian>p|*1jiyVK}d^EOVXa5RzEL z5+sOFP(v9N*of1rlVTxF`w0*KpzD{&rI4!(Mvetkp+R>2;D7MDTdOcR(Mk#@fWV96 zd<+A@U7%TaobO}DX`TT7XW&Zj_^S zg+c*%KcjET0g+oEwASjay^qreAVXcHZh(VBV5CUd>mKj!?e6X0GwuF<0Awk0p;{Ss z&j0`b24YJ`L;(K){{a7>y{D4^000SaNLh0L01FcU01FcV0GgZ_00007bV*G`2jmJE z6CxvpslJ{7009a~L_t(I%bk<4b;CdmLqB+$!G+_-17(nSp$r&jiyV=HC*>?Vh0RKj zB5?#j>U=!B1D~Kbo(g{hA37foU!W5&g|ExLxkVrWXkUyCJ#)(Gv}~V1YYp3^4fyUo zA(qzYy>EXvfM|hjBnSlnnN=21)7Zu~(SqLd7C?y6N6$oPYs@sp8$D0MEi=cSu11Np zS?L;AZUBY;^oc#s2-O5CppcL%w@x(2^2nSP4YP__3b$wvja*g-ga(a#V0Y2LlU~E8 zSYPln>ocv%QudTZt9^Efwci10wsWV!I=Tkm88Dqg$bMttLlLW>n(YEDAm23)0AKg_ o@YDA~_J5BlfXg^dUO4B=FF0h0xg6motN;K207*qoM6N<$g1a{|%m4rY literal 0 HcmV?d00001 diff --git a/game/addons/Godoxel/assets/minidotta_invis.png.import b/game/addons/Godoxel/assets/minidotta_invis.png.import new file mode 100644 index 00000000..8c3774f1 --- /dev/null +++ b/game/addons/Godoxel/assets/minidotta_invis.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/minidotta_invis.png-5232a113bb226997ae55212b2aa90bd4.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://addons/Godoxel/assets/minidotta_invis.png" +dest_files=[ "res://.import/minidotta_invis.png-5232a113bb226997ae55212b2aa90bd4.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/game/addons/Godoxel/assets/unlock_layer.png b/game/addons/Godoxel/assets/unlock_layer.png new file mode 100644 index 0000000000000000000000000000000000000000..36694fdcf3a33dffcb5825b891952f9fc4b1f303 GIT binary patch literal 240 zcmVPx#s!2paR5*>zl}iqTFbqUzs?yTlE2qxApui$sSxUgr*a4|eVqwY5;7lhH2{ER{xpeqkG_aE23k@r+Q+E|Kv`xDd3#AhW_z=U$jjQJ<(UmMp*^I6 z-4=O7*Wv&`3C>zkL1tJ~(7K{RzJ=x?TQM07 layer.layer_width: + continue + + layer.set_pixel(pos.x, pos.y, color) + layer.update_texture() + + + +func _on_LoadFileDialog_about_to_show(): + invalidate() + + +func _on_LoadFileDialog_visibility_changed(): + invalidate() diff --git a/game/addons/Godoxel/dialogs/LoadFileDialog.tscn b/game/addons/Godoxel/dialogs/LoadFileDialog.tscn new file mode 100644 index 00000000..0d083c02 --- /dev/null +++ b/game/addons/Godoxel/dialogs/LoadFileDialog.tscn @@ -0,0 +1,22 @@ +[gd_scene load_steps=2 format=2] + +[sub_resource type="GDScript" id=1] +script/source = "extends ConfirmationDialog + +func _ready(): + get_ok().connect(\"pressed\", self, \"hide\") + get_cancel().connect(\"pressed\", self, \"hide\") + + + +" + +[node name="LoadFileDialog" type="FileDialog"] +margin_right = 604.0 +margin_bottom = 367.0 +window_title = "Open a File" +mode = 0 +access = 2 +current_dir = "/Projects/BitBucket/GraphicsEditor" +current_path = "/Projects/BitBucket/GraphicsEditor/" +script = SubResource( 1 ) diff --git a/game/addons/Godoxel/plugin.cfg b/game/addons/Godoxel/plugin.cfg new file mode 100644 index 00000000..526cfb3b --- /dev/null +++ b/game/addons/Godoxel/plugin.cfg @@ -0,0 +1,7 @@ +[plugin] + +name="Godoxel - Pixel Image Editor" +description="" +author="" +version="" +script="plugin.gd" diff --git a/game/addons/Godoxel/plugin.gd b/game/addons/Godoxel/plugin.gd new file mode 100644 index 00000000..c288aafb --- /dev/null +++ b/game/addons/Godoxel/plugin.gd @@ -0,0 +1,37 @@ +tool +extends EditorPlugin + +var editor_scene = load("res://addons/Godoxel/Editor.tscn").instance() + +func _enter_tree(): + editor_scene.name = "Editor" + if get_editor_interface().get_editor_viewport().has_node("Editor"): + var n = get_editor_interface().get_editor_viewport().get_node("Editor") + n.name = "EditorDel" + n.queue_free() + get_editor_interface().get_editor_viewport().add_child(editor_scene, true) + editor_scene.owner = get_editor_interface().get_editor_viewport() + make_visible(false) + + +func _exit_tree(): + if editor_scene: + editor_scene.queue_free() + + +func has_main_screen(): + return true + + +func make_visible(visible): + if editor_scene: + editor_scene.visible = visible + + +func get_plugin_name(): + return "Godoxel" + + +func get_plugin_icon(): + # Must return some kind of Texture for the icon. + return get_editor_interface().get_base_control().get_icon("CanvasModulate", "EditorIcons") diff --git a/game/addons/addon_versions b/game/addons/addon_versions new file mode 100644 index 00000000..5be1ec8b --- /dev/null +++ b/game/addons/addon_versions @@ -0,0 +1,3 @@ +Godotxel 6e3b61c2887e51c767d0c2417e0b293a35f904ac from https://github.com/aaronfranke/GraphicsEditor + + diff --git a/game/project.godot b/game/project.godot index fa551195..f43b66e5 100644 --- a/game/project.godot +++ b/game/project.godot @@ -14,6 +14,16 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://scripts/auras/aura_script.gd" }, { +"base": "EditorSpatialGizmo", +"class": "BoneSpatialGizmo", +"language": "GDScript", +"path": "res://addons/gdpose/bonegizmo.gd" +}, { +"base": "Reference", +"class": "BrushPrefabs", +"language": "GDScript", +"path": "res://addons/Godoxel/BrushPrefabs.gd" +}, { "base": "Spatial", "class": "CharacterSkeketonAttachPoint", "language": "GDScript", @@ -39,6 +49,81 @@ _global_script_classes=[ { "language": "GDScript", "path": "res://voxelman/debug/CubicVoxelMesher.gd" }, { +"base": "Node", +"class": "GEAction", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Action.gd" +}, { +"base": "GEAction", +"class": "GEBrighten", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Brighten.gd" +}, { +"base": "GEAction", +"class": "GEBrush", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Brush.gd" +}, { +"base": "GEAction", +"class": "GEBucket", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Bucket.gd" +}, { +"base": "Control", +"class": "GECanvas", +"language": "GDScript", +"path": "res://addons/Godoxel/Canvas.gd" +}, { +"base": "GEAction", +"class": "GECut", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Cut.gd" +}, { +"base": "GEAction", +"class": "GEDarken", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Darken.gd" +}, { +"base": "Reference", +"class": "GELayer", +"language": "GDScript", +"path": "res://addons/Godoxel/Layer.gd" +}, { +"base": "GEAction", +"class": "GELine", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Line.gd" +}, { +"base": "GEAction", +"class": "GEMultiLine", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/MultiLine.gd" +}, { +"base": "GEAction", +"class": "GEPasteCut", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/PasteCut.gd" +}, { +"base": "GEAction", +"class": "GEPencil", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Pencil.gd" +}, { +"base": "GEAction", +"class": "GERainbow", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Rainbow.gd" +}, { +"base": "GEAction", +"class": "GERect", +"language": "GDScript", +"path": "res://addons/Godoxel/actions/Rect.gd" +}, { +"base": "Node", +"class": "GEUtils", +"language": "GDScript", +"path": "res://addons/Godoxel/Util.gd" +}, { "base": "Resource", "class": "GameModule", "language": "GDScript", @@ -141,11 +226,28 @@ _global_script_classes=[ { } ] _global_script_class_icons={ "AuraGD": "", +"BoneSpatialGizmo": "", +"BrushPrefabs": "", "CharacterSkeketonAttachPoint": "", "DisplayPlayerGD": "", "EntityAIGD": "", "EntityDataGD": "", "GDCubicVoxelMesher": "", +"GEAction": "", +"GEBrighten": "", +"GEBrush": "", +"GEBucket": "", +"GECanvas": "", +"GECut": "", +"GEDarken": "", +"GELayer": "", +"GELine": "", +"GEMultiLine": "", +"GEPasteCut": "", +"GEPencil": "", +"GERainbow": "", +"GERect": "", +"GEUtils": "", "GameModule": "", "HealthResource": "", "ItemTemplateGD": "", @@ -207,6 +309,10 @@ window/size/viewport_scale=100 window/size/ui_scale=1.2 window/size/ui_scale_touch=1.0 +[editor_plugins] + +enabled=PoolStringArray( "Godoxel" ) + [ess] level/auto_learn_spells=false