[
  {
    "path": ".github/FUNDING.yml",
    "content": "ko_fi: glitchedinorbit\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to Dual Grid Tilemap System for Godot (GDScript)\n\nThank you for considering contributing to the Dual Grid Tilemap System for Godot! Your contributions help improve the project and make it more useful for everyone. Here’s how you can help out.\n\n## Table of Contents\n\n- [Getting Started](#getting-started)\n- [Contributing Guidelines](#contributing-guidelines)\n- [Code Standards](#code-standards)\n- [Submitting Changes](#submitting-changes)\n- [Reporting Issues](#reporting-issues)\n- [License](#license)\n\n## Getting Started\n\n1. **Fork the repository**: Click the “Fork” button at the top right of the repository page to create your copy of the project.\n2. **Clone your fork**: Clone your forked repository to your local machine using:\n   ```bash\n   git clone https://github.com/your-username/dual-grid-tilemap-system-godot-gdscript.git\n   ```\n3. **Install Godot**: Make sure you have Godot Engine installed. You can download it from the [official website](https://godotengine.org/download).\n4. **Open the project**: Open the project in Godot to explore its structure and functionality.\n\n## Contributing Guidelines\n\n- **Be Respectful**: Treat everyone with respect and kindness. Open and constructive discussions are encouraged.\n- **Stay on Topic**: Ensure your contributions align with the project's goals.\n- **Ask Questions**: If you’re unsure about something, feel free to ask questions in the issues or discussions sections.\n\n## Code Standards\n\n- Follow the [Godot GDScript style guide](https://docs.godotengine.org/en/stable/tutorials/scripting/gdscript/gdscript_styleguide.html).\n- Ensure your code is well-commented to help others understand your contributions.\n- Write clear and concise commit messages that explain the purpose of your changes.\n\n## Submitting Changes\n\n1. **Create a branch**: Make a new branch for your changes:\n   ```bash\n   git checkout -b your-feature-branch\n   ```\n2. **Make your changes**: Implement your feature or fix.\n3. **Test your changes**: Ensure your changes do not break existing functionality.\n4. **Commit your changes**: Commit your changes with a descriptive message:\n   ```bash\n   git commit -m \"Add feature: Describe what you did\"\n   ```\n5. **Push your changes**: Push your branch to your fork:\n   ```bash\n   git push origin your-feature-branch\n   ```\n6. **Create a pull request**: Go to the original repository, and you’ll see a prompt to create a pull request. Fill in the template, detailing what you’ve done.\n\n## Reporting Issues\n\nIf you encounter any bugs or have suggestions for improvements, please report them by creating a new issue. Include the following information:\n\n- A clear title and description of the issue.\n- Steps to reproduce the issue, if applicable.\n- Any error messages or screenshots to help illustrate the problem.\n\n## License\n\nBy contributing, you agree that your contributions will be licensed under the project's existing license (check the `LICENSE` file for details).\n\nThank you for contributing to the Dual Grid Tilemap System for Godot! Your efforts are greatly appreciated!"
  },
  {
    "path": "LICENSE.md",
    "content": "MIT License\n\nCopyright (c) 2024 GlitchedinOrbit\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE."
  },
  {
    "path": "README.md",
    "content": "## Dual Grid Tilemap System For Godot In GDScript\n\nA converted version of [jess::codes' C# dual grid system repo](https://github.com/jess-hammer/dual-grid-tilemap-system-godot) into native GDScript.\n\n<b> Draw directly in the Editor with any of the fully filled tilemap tiles to see the changes! </b>\n\n![](docs/dual-tilemap-demo.gif)\n\n### Features\n- Draw in the Editor\n- Supports multiple terrains\n  - Grass\n  - Dirt\n  - Water\n  - Sand\n- Easily add new terrain types\n- Draw from multiple atlas coords\n\n![](docs/dual-tilemap-terrains.png)\n\nUsing a dual grid system has the following advantages:\n- Only 16 (or 6) tiles are required in the tileset\n- The tiles have perfectly rounded corners\n- The tiles align to the world grid\n\n![Dual grid image by Oskar Stålberg](https://pbs.twimg.com/media/FBk2PhcXsAETv1x?format=jpg&name=large)\n\n### References\n- [Dual grid Twitter post by Oskar Stålberg](https://x.com/OskSta/status/1448248658865049605)\n- ['Programming Terrain Generation' video by ThinMatrix](https://www.youtube.com/watch?v=buKQjkad2I0)\n- ['Drawing Fewer Tiles' video by jess::codes](https://www.youtube.com/watch?v=jEWFSv3ivTg)\n\n### Contributing\nIf you’d like to contribute, please see the [Contributing Guidelines](https://github.com/GlitchedinOrbit/dual-grid-tilemap-system-godot-gdscript/blob/main/CONTRIBUTING.md).\n\n### Contact\nIf you have any questions, feedback, or suggestions, feel free to reach out:\n- **Twitter**: [@glitchedinorbit](https://twitter.com/glitchedinorbit)\n- **Email**: glitchedinorbit[at]gmail.com\n\n<a href=\"https://ko-fi.com/glitchedinorbit\">\n    <img width=\"220\" alt=\"Support me on Ko-fi\" src=\"https://github.com/user-attachments/assets/a9611d0c-848c-4da3-b7b6-908809afd924\">\n</a>\n"
  },
  {
    "path": "assets/SelectionIndicator.png.import",
    "content": "[remap]\n\nimporter=\"texture\"\ntype=\"CompressedTexture2D\"\nuid=\"uid://yuxn8elmkepi\"\npath=\"res://.godot/imported/SelectionIndicator.png-77fc6f11842d7d797fee5129cf7d1aff.ctex\"\nmetadata={\n\"vram_texture\": false\n}\n\n[deps]\n\nsource_file=\"res://assets/SelectionIndicator.png\"\ndest_files=[\"res://.godot/imported/SelectionIndicator.png-77fc6f11842d7d797fee5129cf7d1aff.ctex\"]\n\n[params]\n\ncompress/mode=0\ncompress/high_quality=false\ncompress/lossy_quality=0.7\ncompress/hdr_compression=1\ncompress/normal_map=0\ncompress/channel_pack=0\nmipmaps/generate=false\nmipmaps/limit=-1\nroughness/mode=0\nroughness/src_normal=\"\"\nprocess/fix_alpha_border=true\nprocess/premult_alpha=false\nprocess/normal_map_invert_y=false\nprocess/hdr_as_srgb=false\nprocess/hdr_clamp_exposure=false\nprocess/size_limit=0\ndetect_3d/compress_to=1\n"
  },
  {
    "path": "assets/Tilemap.png.import",
    "content": "[remap]\n\nimporter=\"texture\"\ntype=\"CompressedTexture2D\"\nuid=\"uid://bglmjjbb1nivg\"\npath=\"res://.godot/imported/Tilemap.png-19909328b54cd4cfedc10cbc50054a9a.ctex\"\nmetadata={\n\"vram_texture\": false\n}\n\n[deps]\n\nsource_file=\"res://assets/Tilemap.png\"\ndest_files=[\"res://.godot/imported/Tilemap.png-19909328b54cd4cfedc10cbc50054a9a.ctex\"]\n\n[params]\n\ncompress/mode=0\ncompress/high_quality=false\ncompress/lossy_quality=0.7\ncompress/hdr_compression=1\ncompress/normal_map=0\ncompress/channel_pack=0\nmipmaps/generate=false\nmipmaps/limit=-1\nroughness/mode=0\nroughness/src_normal=\"\"\nprocess/fix_alpha_border=true\nprocess/premult_alpha=false\nprocess/normal_map_invert_y=false\nprocess/hdr_as_srgb=false\nprocess/hdr_clamp_exposure=false\nprocess/size_limit=0\ndetect_3d/compress_to=1\n"
  },
  {
    "path": "project.godot",
    "content": "; Engine configuration file.\n; It's best edited using the editor UI and not directly,\n; since the parameters that go here are not all obvious.\n;\n; Format:\n;   [section] ; section goes between []\n;   param=value ; assign values to parameters\n\nconfig_version=5\n\n[application]\n\nconfig/name=\"Dual Grid System GDScript\"\nrun/main_scene=\"res://scenes/world.tscn\"\nconfig/features=PackedStringArray(\"4.2\", \"Mobile\")\n\n[display]\n\nwindow/size/viewport_width=640\nwindow/size/viewport_height=360\nwindow/size/mode=3\nwindow/stretch/mode=\"canvas_items\"\n\n[filesystem]\n\nimport/blender/enabled=false\n\n[input]\n\nleft_click={\n\"deadzone\": 0.5,\n\"events\": [Object(InputEventMouseButton,\"resource_local_to_scene\":false,\"resource_name\":\"\",\"device\":-1,\"window_id\":0,\"alt_pressed\":false,\"shift_pressed\":false,\"ctrl_pressed\":false,\"meta_pressed\":false,\"button_mask\":0,\"position\":Vector2(0, 0),\"global_position\":Vector2(0, 0),\"factor\":1.0,\"button_index\":1,\"canceled\":false,\"pressed\":false,\"double_click\":false,\"script\":null)\n]\n}\nright_click={\n\"deadzone\": 0.5,\n\"events\": [Object(InputEventMouseButton,\"resource_local_to_scene\":false,\"resource_name\":\"\",\"device\":-1,\"window_id\":0,\"alt_pressed\":false,\"shift_pressed\":false,\"ctrl_pressed\":false,\"meta_pressed\":false,\"button_mask\":0,\"position\":Vector2(0, 0),\"global_position\":Vector2(0, 0),\"factor\":1.0,\"button_index\":2,\"canceled\":false,\"pressed\":false,\"double_click\":false,\"script\":null)\n]\n}\n\n[rendering]\n\ntextures/canvas_textures/default_texture_filter=0\nrenderer/rendering_method=\"mobile\"\n"
  },
  {
    "path": "scenes/world.tscn",
    "content": "[gd_scene load_steps=12 format=3 uid=\"uid://bj2e3y6dtnn83\"]\n\n[ext_resource type=\"Texture2D\" uid=\"uid://bglmjjbb1nivg\" path=\"res://assets/Tilemap.png\" id=\"1_ni7nt\"]\n[ext_resource type=\"Script\" path=\"res://scripts/tilemap.gd\" id=\"2_7qj53\"]\n[ext_resource type=\"Texture2D\" uid=\"uid://yuxn8elmkepi\" path=\"res://assets/SelectionIndicator.png\" id=\"4_nti6n\"]\n[ext_resource type=\"Script\" path=\"res://scripts/cursor.gd\" id=\"5_00xh7\"]\n\n[sub_resource type=\"TileSetAtlasSource\" id=\"TileSetAtlasSource_eivu5\"]\ntexture = ExtResource(\"1_ni7nt\")\n0:0/0 = 0\n1:0/0 = 0\n2:0/0 = 0\n3:0/0 = 0\n0:1/0 = 0\n1:1/0 = 0\n2:1/0 = 0\n3:1/0 = 0\n0:2/0 = 0\n1:2/0 = 0\n2:2/0 = 0\n3:2/0 = 0\n0:3/0 = 0\n1:3/0 = 0\n2:3/0 = 0\n3:3/0 = 0\n4:0/0 = 0\n5:0/0 = 0\n5:1/0 = 0\n6:1/0 = 0\n6:2/0 = 0\n6:3/0 = 0\n7:3/0 = 0\n7:2/0 = 0\n7:1/0 = 0\n7:0/0 = 0\n6:0/0 = 0\n4:1/0 = 0\n4:2/0 = 0\n4:3/0 = 0\n5:3/0 = 0\n5:2/0 = 0\n3:4/0 = 0\n3:5/0 = 0\n3:6/0 = 0\n3:7/0 = 0\n2:7/0 = 0\n1:7/0 = 0\n0:7/0 = 0\n0:6/0 = 0\n0:5/0 = 0\n0:4/0 = 0\n1:4/0 = 0\n2:4/0 = 0\n2:5/0 = 0\n2:6/0 = 0\n1:6/0 = 0\n1:5/0 = 0\n7:4/0 = 0\n6:4/0 = 0\n5:4/0 = 0\n4:4/0 = 0\n4:5/0 = 0\n4:6/0 = 0\n4:7/0 = 0\n5:7/0 = 0\n6:7/0 = 0\n7:7/0 = 0\n7:6/0 = 0\n7:5/0 = 0\n6:5/0 = 0\n5:5/0 = 0\n5:6/0 = 0\n6:6/0 = 0\n0:8/0 = 0\n0:9/0 = 0\n0:10/0 = 0\n0:11/0 = 0\n1:8/0 = 0\n1:9/0 = 0\n1:10/0 = 0\n1:11/0 = 0\n2:8/0 = 0\n2:9/0 = 0\n2:10/0 = 0\n2:11/0 = 0\n3:8/0 = 0\n3:9/0 = 0\n3:10/0 = 0\n3:11/0 = 0\n\n[sub_resource type=\"TileSet\" id=\"TileSet_hneuh\"]\nsources/0 = SubResource(\"TileSetAtlasSource_eivu5\")\n\n[sub_resource type=\"TileSetAtlasSource\" id=\"TileSetAtlasSource_s05eq\"]\ntexture = ExtResource(\"1_ni7nt\")\n0:0/0 = 0\n1:0/0 = 0\n2:0/0 = 0\n3:0/0 = 0\n0:1/0 = 0\n1:1/0 = 0\n2:1/0 = 0\n3:1/0 = 0\n0:2/0 = 0\n1:2/0 = 0\n2:2/0 = 0\n3:2/0 = 0\n0:3/0 = 0\n1:3/0 = 0\n2:3/0 = 0\n3:3/0 = 0\n4:0/0 = 0\n5:0/0 = 0\n6:0/0 = 0\n7:0/0 = 0\n7:1/0 = 0\n7:2/0 = 0\n7:3/0 = 0\n6:3/0 = 0\n5:3/0 = 0\n4:3/0 = 0\n4:2/0 = 0\n4:1/0 = 0\n5:1/0 = 0\n6:1/0 = 0\n6:2/0 = 0\n5:2/0 = 0\n3:4/0 = 0\n3:5/0 = 0\n3:6/0 = 0\n2:6/0 = 0\n2:7/0 = 0\n1:7/0 = 0\n0:7/0 = 0\n0:6/0 = 0\n0:5/0 = 0\n0:4/0 = 0\n1:4/0 = 0\n1:5/0 = 0\n2:5/0 = 0\n2:4/0 = 0\n1:6/0 = 0\n3:7/0 = 0\n4:4/0 = 0\n5:4/0 = 0\n6:4/0 = 0\n7:4/0 = 0\n7:5/0 = 0\n7:6/0 = 0\n7:7/0 = 0\n6:7/0 = 0\n5:7/0 = 0\n4:7/0 = 0\n4:6/0 = 0\n4:5/0 = 0\n5:5/0 = 0\n6:5/0 = 0\n6:6/0 = 0\n5:6/0 = 0\n0:8/0 = 0\n0:9/0 = 0\n0:10/0 = 0\n0:11/0 = 0\n1:8/0 = 0\n1:9/0 = 0\n1:10/0 = 0\n1:11/0 = 0\n2:8/0 = 0\n2:9/0 = 0\n2:10/0 = 0\n2:11/0 = 0\n3:8/0 = 0\n3:9/0 = 0\n3:10/0 = 0\n3:11/0 = 0\n\n[sub_resource type=\"TileSet\" id=\"TileSet_77ea1\"]\nsources/0 = SubResource(\"TileSetAtlasSource_s05eq\")\n\n[sub_resource type=\"AtlasTexture\" id=\"AtlasTexture_bjwxa\"]\natlas = ExtResource(\"4_nti6n\")\nregion = Rect2(0, 0, 17, 17)\n\n[sub_resource type=\"AtlasTexture\" id=\"AtlasTexture_ayys0\"]\natlas = ExtResource(\"4_nti6n\")\nregion = Rect2(17, 0, 17, 17)\n\n[sub_resource type=\"SpriteFrames\" id=\"SpriteFrames_v82uo\"]\nanimations = [{\n\"frames\": [{\n\"duration\": 1.0,\n\"texture\": SubResource(\"AtlasTexture_bjwxa\")\n}, {\n\"duration\": 1.0,\n\"texture\": SubResource(\"AtlasTexture_ayys0\")\n}],\n\"loop\": true,\n\"name\": &\"default\",\n\"speed\": 5.0\n}]\n\n[node name=\"World\" type=\"Node2D\"]\n\n[node name=\"WorldTileMap\" type=\"TileMap\" parent=\".\" node_paths=PackedStringArray(\"offset_tilemap\")]\ntile_set = SubResource(\"TileSet_hneuh\")\nformat = 2\nlayer_0/tile_data = PackedInt32Array(0, 131072, 1, 65536, 131072, 1, 131072, 131072, 1, 196608, 131072, 1, 262144, 131072, 1, 327680, 131072, 1, 393216, 131072, 1, 458752, 131072, 1, 524288, 131072, 1, 589824, 131072, 1, 1, 131072, 1, 65537, 131072, 1, 131073, 131072, 1, 196609, 131072, 1, 262145, 131072, 1, 327681, 131072, 1, 393217, 131072, 1, 458753, 131072, 1, 524289, 0, 3, 589825, 131072, 1, 2, 131072, 1, 65538, 0, 3, 131074, 131072, 1, 196610, 131072, 1, 262146, 131072, 1, 327682, 131072, 1, 393218, 131072, 1, 458754, 131072, 1, 524290, 0, 3, 589826, 131072, 1, 3, 131072, 1, 65539, 131072, 1, 131075, 131072, 1, 196611, 131072, 1, 262147, 0, 3, 327683, 0, 3, 393219, 0, 3, 458755, 0, 3, 524291, 0, 3, 589827, 131072, 1, 4, 131072, 1, 65540, 131072, 1, 131076, 131072, 1, 196612, 0, 3, 262148, 0, 3, 327684, 0, 3, 393220, 131072, 1, 458756, 131072, 1, 524292, 131072, 1, 589828, 131072, 1, 5, 131072, 1, 65541, 131072, 1, 131077, 131072, 1, 196613, 0, 3, 262149, 0, 3, 327685, 0, 3, 393221, 0, 3, 458757, 131072, 1, 524293, 131072, 1, 589829, 131072, 1, 6, 131072, 1, 65542, 131072, 1, 131078, 131072, 1, 196614, 0, 3, 262150, 131072, 1, 327686, 131072, 1, 393222, 0, 3, 458758, 131072, 1, 524294, 131072, 1, 589830, 131072, 1, 7, 131072, 1, 65543, 131072, 1, 131079, 131072, 1, 196615, 0, 3, 262151, 131072, 1, 327687, 131072, 1, 393223, 0, 3, 458759, 131072, 1, 524295, 0, 3, 589831, 131072, 1, 8, 131072, 1, 65544, 0, 3, 131080, 0, 3, 196616, 0, 3, 262152, 131072, 1, 327688, 131072, 1, 393224, 0, 3, 458760, 0, 3, 524296, 0, 3, 589832, 131072, 1, 9, 131072, 1, 65545, 131072, 1, 131081, 131072, 1, 196617, 131072, 1, 262153, 131072, 1, 327689, 131072, 1, 393225, 0, 3, 458761, 131072, 1, 524297, 131072, 1, 589833, 131072, 1, 10, 131072, 1, 65546, 131072, 1, 131082, 131072, 1, 196618, 131072, 1, 262154, 131072, 1, 327690, 131072, 1, 393226, 131072, 1, 458762, 131072, 1, 524298, 0, 3, 589834, 0, 3, 11, 131072, 1, 65547, 0, 3, 131083, 0, 3, 196619, 131072, 1, 262155, 131072, 1, 327691, 131072, 1, 393227, 131072, 1, 458763, 131072, 1, 524299, 131072, 1, 589835, 131072, 1, 12, 131072, 1, 65548, 0, 3, 131084, 0, 3, 196620, 131072, 1, 262156, 0, 3, 327692, 0, 3, 393228, 0, 3, 458764, 0, 3, 524300, 0, 3, 589836, 0, 3, 13, 131072, 1, 65549, 131072, 1, 131085, 131072, 1, 196621, 131072, 1, 262157, 131072, 1, 327693, 131072, 1, 393229, 131072, 1, 458765, 131072, 1, 524301, 131072, 1, 589837, 131072, 1, 655373, 131072, 1, 720909, 0, 3, 786445, 131072, 1, 851981, 393216, 1, 917517, 393216, 1, 983053, 131072, 1, 1048589, 0, 3, 1114125, 131072, 1, 1179661, 131072, 1, 1245197, 131072, 1, 1310733, 131072, 1, 1376269, 131072, 1, 1441805, 131072, 1, 14, 131072, 1, 65550, 131072, 1, 131086, 131072, 1, 196622, 131072, 1, 262158, 131072, 1, 327694, 0, 3, 393230, 0, 3, 458766, 131072, 1, 524302, 131072, 1, 589838, 131072, 1, 655374, 131072, 1, 720910, 131072, 1, 786446, 131072, 1, 851982, 131072, 1, 917518, 131072, 1, 983054, 131072, 1, 1048590, 0, 3, 1114126, 131072, 1, 1179662, 131072, 1, 1245198, 131072, 1, 1310734, 131072, 1, 1376270, 131072, 1, 1441806, 131072, 1, 15, 131072, 1, 65551, 131072, 1, 131087, 0, 3, 196623, 0, 3, 262159, 0, 3, 327695, 131072, 1, 393231, 0, 3, 458767, 131072, 1, 524303, 131072, 1, 589839, 131072, 1, 655375, 131072, 1, 720911, 131072, 1, 786447, 131072, 1, 851983, 131072, 1, 917519, 131072, 1, 983055, 131072, 1, 1048591, 0, 3, 1114127, 131072, 1, 1179663, 131072, 1, 1245199, 131072, 1, 1310735, 131072, 1, 1376271, 131072, 1, 1441807, 131072, 1, 16, 131072, 1, 65552, 131072, 1, 131088, 131072, 1, 196624, 131072, 1, 262160, 131072, 1, 327696, 131072, 1, 393232, 0, 3, 458768, 0, 3, 524304, 0, 3, 589840, 0, 3, 655376, 0, 3, 720912, 0, 3, 786448, 0, 3, 851984, 0, 3, 917520, 0, 3, 983056, 0, 3, 1048592, 0, 3, 1114128, 131072, 1, 1179664, 131072, 1, 1245200, 131072, 1, 1310736, 131072, 1, 1376272, 131072, 1, 1441808, 131072, 1, 17, 131072, 1, 65553, 131072, 1, 131089, 131072, 1, 196625, 393216, 1, 262161, 131072, 1, 327697, 131072, 1, 393233, 0, 3, 458769, 131072, 1, 524305, 131072, 1, 589841, 131072, 1, 655377, 131072, 1, 720913, 131072, 1, 786449, 0, 3, 851985, 131072, 1, 917521, 131072, 1, 983057, 131072, 1, 1048593, 0, 3, 1114129, 131072, 1, 1179665, 131072, 1, 1245201, 131072, 1, 1310737, 131072, 1, 1376273, 131072, 1, 1441809, 131072, 1, 18, 131072, 1, 65554, 131072, 1, 131090, 131072, 1, 196626, 131072, 1, 262162, 131072, 1, 327698, 0, 3, 393234, 131072, 1, 458770, 131072, 1, 524306, 131072, 1, 589842, 131072, 1, 655378, 131072, 1, 720914, 0, 3, 786450, 0, 3, 851986, 131072, 1, 917522, 131072, 1, 983058, 131072, 1, 1048594, 0, 3, 1114130, 131072, 1, 1179666, 131072, 1, 1245202, 131072, 1, 1310738, 0, 3, 1376274, 131072, 1, 1441810, 131072, 1, 19, 131072, 1, 65555, 131072, 1, 131091, 131072, 1, 196627, 131072, 1, 262163, 131072, 1, 327699, 0, 3, 393235, 131072, 1, 458771, 131072, 1, 524307, 131072, 1, 589843, 131072, 1, 655379, 0, 3, 720915, 0, 3, 786451, 131072, 1, 851987, 131072, 1, 917523, 131072, 1, 983059, 131072, 1, 1048595, 0, 3, 1114131, 131072, 1, 1179667, 131072, 1, 1245203, 0, 3, 1310739, 0, 3, 1376275, 131072, 1, 1441811, 131072, 1, 20, 131072, 1, 65556, 131072, 1, 131092, 131072, 1, 196628, 131072, 1, 262164, 131072, 1, 327700, 0, 3, 393236, 131072, 1, 458772, 131072, 1, 524308, 131072, 1, 589844, 131072, 1, 655380, 0, 3, 720916, 131072, 1, 786452, 131072, 1, 851988, 131072, 1, 917524, 131072, 1, 983060, 131072, 1, 1048596, 0, 3, 1114132, 131072, 1, 1179668, 0, 3, 1245204, 0, 3, 1310740, 0, 3, 1376276, 131072, 1, 1441812, 131072, 1, 65557, 131072, 1, 131093, 131072, 1, 196629, 131072, 1, 262165, 131072, 1, 458773, 131072, 1, 524309, 131072, 1, 589845, 131072, 1, 655381, 0, 3, 720917, 131072, 1, 786453, 131072, 1, 851989, 131072, 1, 917525, 131072, 1, 983061, 131072, 1, 1048597, 0, 3, 1114133, 0, 3, 1179669, 0, 3, 1245205, 131072, 1, 1310741, 131072, 1, 1376277, 131072, 1, 1441813, 131072, 1, 22, 131072, 1, 65558, 131072, 1, 131094, 131072, 1, 196630, 131072, 1, 262166, 131072, 1, 458774, 131072, 1, 524310, 131072, 1, 589846, 131072, 1, 655382, 0, 3, 720918, 131072, 1, 786454, 131072, 1, 851990, 131072, 1, 917526, 131072, 1, 983062, 131072, 1, 1048598, 131072, 1, 1114134, 0, 3, 1179670, 131072, 1, 1245206, 393216, 5, 1310742, 393216, 5, 1376278, 393216, 5, 1441814, 393216, 5, 65559, 393216, 1, 131095, 393216, 1, 196631, 393216, 1, 262167, 131072, 1, 458775, 131072, 1, 524311, 131072, 1, 589847, 131072, 1, 655383, 0, 3, 720919, 131072, 1, 786455, 131072, 1, 851991, 131072, 1, 917527, 131072, 1, 983063, 0, 3, 1048599, 0, 3, 1114135, 0, 3, 1179671, 131072, 1, 1245207, 393216, 5, 1310743, 131072, 1, 1376279, 131072, 1, 1441815, 131072, 1, 65560, 393216, 1, 131096, 131072, 1, 196632, 393216, 1, 262168, 131072, 1, 458776, 131072, 1, 524312, 131072, 1, 589848, 131072, 1, 655384, 0, 3, 720920, 131072, 1, 786456, 131072, 1, 851992, 131072, 1, 917528, 131072, 1, 983064, 0, 3, 1048600, 131072, 1, 1114136, 0, 3, 1179672, 131072, 1, 1245208, 393216, 5, 1310744, 131072, 1, 1376280, 131072, 1, 1441816, 131072, 1, 65561, 393216, 1, 131097, 131072, 1, 196633, 393216, 1, 262169, 131072, 1, 458777, 131072, 1, 524313, 131072, 1, 589849, 131072, 1, 655385, 0, 3, 720921, 131072, 1, 786457, 131072, 1, 851993, 131072, 1, 917529, 131072, 1, 983065, 0, 3, 1048601, 0, 3, 1114137, 0, 3, 1179673, 0, 3, 1245209, 393216, 5, 1310745, 131072, 1, 1376281, 131072, 1, 1441817, 131072, 1, 65562, 393216, 1, 131098, 131072, 1, 196634, 393216, 1, 262170, 131072, 1, 327706, 0, 3, 393242, 131072, 1, 458778, 131072, 1, 524314, 131072, 1, 589850, 131072, 1, 655386, 0, 3, 720922, 131072, 1, 786458, 131072, 1, 851994, 131072, 1, 917530, 131072, 1, 983066, 131072, 1, 1048602, 0, 3, 1114138, 131072, 1, 1179674, 0, 3, 1245210, 393216, 5, 1310746, 131072, 1, 1376282, 131072, 1, 1441818, 131072, 1, 65563, 393216, 1, 131099, 393216, 1, 196635, 393216, 1, 262171, 131072, 1, 327707, 0, 3, 393243, 0, 3, 458779, 0, 3, 524315, 0, 3, 589851, 0, 3, 655387, 0, 3, 720923, 131072, 1, 786459, 131072, 1, 851995, 131072, 1, 917531, 131072, 1, 1114139, 131072, 1, 1179675, 0, 3, 1245211, 393216, 5, 1310747, 131072, 1, 1376283, 131072, 1, 1441819, 131072, 1, 262172, 131072, 1, 327708, 0, 3, 393244, 0, 3, 458780, 131072, 1, 524316, 131072, 1, 589852, 0, 3, 655388, 131072, 1, 720924, 131072, 1, 786460, 131072, 1, 851996, 131072, 1, 917532, 131072, 1, 1245212, 393216, 5, 1310748, 131072, 1, 1376284, 131072, 1, 1441820, 131072, 1, 262173, 131072, 1, 327709, 131072, 1, 393245, 131072, 1, 458781, 131072, 1, 524317, 131072, 1, 589853, 0, 3, 655389, 0, 3, 720925, 131072, 1, 786461, 131072, 1, 851997, 131072, 1, 917533, 131072, 1, 1245213, 393216, 5, 1310749, 131072, 1, 1376285, 131072, 1, 1441821, 131072, 1, 262174, 131072, 1, 327710, 131072, 1, 393246, 131072, 1, 458782, 0, 3, 524318, 0, 3, 589854, 0, 3, 655390, 0, 3, 720926, 131072, 1, 786462, 131072, 1, 851998, 131072, 1, 1245214, 393216, 5, 1310750, 131072, 1, 1376286, 131072, 1, 1441822, 131072, 1, 262175, 131072, 1, 327711, 131072, 1, 393247, 0, 3, 458783, 0, 3, 524319, 131072, 1, 589855, 131072, 1, 655391, 0, 3, 720927, 0, 3, 786463, 0, 3, 851999, 0, 3, 1048607, 393216, 1, 1376287, 131072, 1, 1441823, 131072, 1, 262176, 131072, 1, 327712, 131072, 1, 393248, 131072, 1, 458784, 131072, 1, 524320, 131072, 1, 589856, 131072, 1, 655392, 131072, 1, 720928, 131072, 1, 786464, 0, 3, 852000, 0, 3, 983072, 0, 3, 1048608, 0, 3, 1179680, 131072, 1, 1245216, 393216, 5, 1376288, 131072, 1, 1441824, 131072, 1, 262177, 262144, 7, 327713, 262144, 7, 393249, 131072, 1, 458785, 131072, 1, 524321, 131072, 1, 589857, 131072, 1, 655393, 131072, 1, 720929, 131072, 1, 786465, 131072, 1, 852001, 131072, 1, 983073, 131072, 1, 1048609, 0, 3, 1179681, 131072, 1, 1245217, 393216, 5, 1310753, 393216, 5, 1376289, 393216, 5, 1441825, 393216, 5, 262178, 262144, 7, 327714, 131072, 1, 393250, 131072, 1, 458786, 131072, 1, 524322, 131072, 1, 589858, 131072, 1, 655394, 131072, 1, 720930, 262144, 7, 786466, 131072, 1, 852002, 131072, 1, 983074, 131072, 1, 1048610, 131072, 1, 1179682, 131072, 1, 1245218, 393216, 5, 1310754, 131072, 1, 1376290, 131072, 1, 1441826, 131072, 1, 262179, 131072, 1, 327715, 131072, 1, 393251, 131072, 1, 458787, 131072, 1, 524323, 262144, 7, 589859, 131072, 1, 655395, 131072, 1, 720931, 131072, 1, 786467, 131072, 1, 852003, 131072, 1, 983075, 131072, 1, 1048611, 131072, 1, 1179683, 262144, 7, 1245219, 262144, 7, 1310755, 262144, 7, 1376291, 262144, 7, 1441827, 262144, 7, 65572, 262144, 7, 131108, 131072, 1, 196644, 131072, 1, 262180, 131072, 1, 327716, 131072, 1, 393252, 131072, 1, 458788, 262144, 7, 524324, 262144, 7, 589860, 262144, 7, 655396, 131072, 1, 720932, 131072, 1, 1048612, 131072, 1, 1179684, 262144, 7, 1245220, 262144, 7, 1310756, 393216, 1, 1376292, 393216, 1, 1441828, 262144, 7, 65573, 262144, 7, 131109, 262144, 7, 196645, 131072, 1, 262181, 131072, 1, 327717, 131072, 1, 1179685, 393216, 1, 1245221, 393216, 1, 1310757, 393216, 1, 1376293, 393216, 1, 1441829, 262144, 7, 65574, 131072, 1, 131110, 262144, 7, 196646, 262144, 7, 262182, 262144, 7, 327718, 262144, 7, 1179686, 393216, 1, 1245222, 393216, 1, 1310758, 393216, 1, 1376294, 262144, 7, 1441830, 262144, 7, 65575, 131072, 1, 131111, 131072, 1, 196647, 131072, 1, 262183, 131072, 1, 327719, 131072, 1, 1441831, 131072, 1, 655360, 393216, 1, 720896, 393216, 1, 786432, 393216, 1, 851968, 393216, 1, 917504, 393216, 1, 983040, 393216, 1, 1048576, 393216, 1, 1114112, 393216, 1, 1179648, 131072, 1, 1245184, 131072, 1, 1310720, 131072, 1, 1376256, 131072, 1, 1441792, 131072, 1, 655361, 393216, 1, 720897, 131072, 1, 786433, 131072, 1, 851969, 131072, 1, 917505, 131072, 1, 983041, 393216, 1, 1048577, 131072, 1, 1114113, 393216, 1, 1179649, 131072, 1, 1245185, 131072, 1, 1310721, 131072, 1, 1376257, 131072, 1, 1441793, 131072, 1, 655362, 393216, 1, 720898, 131072, 1, 786434, 0, 3, 851970, 131072, 1, 917506, 131072, 1, 983042, 393216, 1, 1048578, 131072, 1, 1310722, 131072, 1, 1376258, 131072, 1, 1441794, 131072, 1, 655363, 393216, 1, 720899, 131072, 1, 786435, 0, 3, 851971, 131072, 1, 917507, 131072, 1, 983043, 393216, 1, 1048579, 131072, 1, 1114115, 131072, 1, 1179651, 131072, 1, 1245187, 131072, 1, 1310723, 131072, 1, 1376259, 131072, 1, 1441795, 131072, 1, 655364, 393216, 1, 720900, 131072, 1, 786436, 0, 3, 851972, 131072, 1, 917508, 131072, 1, 983044, 393216, 1, 1048580, 131072, 1, 1114116, 131072, 1, 1179652, 131072, 1, 1245188, 393216, 1, 1310724, 131072, 1, 1376260, 131072, 1, 1441796, 131072, 1, 655365, 393216, 1, 720901, 131072, 1, 786437, 0, 3, 851973, 131072, 1, 917509, 131072, 1, 983045, 131072, 1, 1048581, 393216, 1, 1114117, 393216, 1, 1179653, 393216, 1, 1245189, 131072, 1, 1310725, 131072, 1, 1376261, 131072, 1, 1441797, 131072, 1, 655366, 131072, 1, 720902, 131072, 1, 786438, 0, 3, 851974, 131072, 1, 917510, 393216, 1, 983046, 393216, 1, 1048582, 393216, 1, 1114118, 131072, 1, 1179654, 131072, 1, 1245190, 131072, 1, 1310726, 131072, 1, 1376262, 131072, 1, 1441798, 131072, 1, 655367, 131072, 1, 720903, 131072, 1, 786439, 0, 3, 851975, 131072, 1, 917511, 131072, 1, 983047, 131072, 1, 1048583, 131072, 1, 1114119, 131072, 1, 1179655, 131072, 1, 1245191, 131072, 1, 1310727, 131072, 1, 1376263, 131072, 1, 1441799, 131072, 1, 655368, 131072, 1, 720904, 131072, 1, 786440, 0, 3, 851976, 0, 3, 917512, 131072, 1, 983048, 131072, 1, 1048584, 131072, 1, 1114120, 131072, 1, 1179656, 131072, 1, 1245192, 131072, 1, 1310728, 131072, 1, 1376264, 131072, 1, 1441800, 131072, 1, 655369, 131072, 1, 720905, 131072, 1, 786441, 0, 3, 851977, 0, 3, 917513, 0, 3, 983049, 0, 3, 1048585, 0, 3, 1114121, 0, 3, 1179657, 0, 3, 1245193, 131072, 1, 1310729, 131072, 1, 1376265, 131072, 1, 1441801, 131072, 1, 655370, 0, 3, 720906, 0, 3, 786442, 0, 3, 851978, 131072, 1, 917514, 131072, 1, 983050, 131072, 1, 1048586, 0, 3, 1114122, 131072, 1, 1179658, 131072, 1, 1245194, 131072, 1, 1310730, 131072, 1, 1376266, 131072, 1, 1441802, 131072, 1, 655371, 131072, 1, 720907, 131072, 1, 786443, 131072, 1, 851979, 131072, 1, 917515, 131072, 1, 983051, 131072, 1, 1048587, 0, 3, 1114123, 131072, 1, 1179659, 131072, 1, 1245195, 131072, 1, 1310731, 131072, 1, 1376267, 131072, 1, 1441803, 131072, 1, 655372, 0, 3, 720908, 131072, 1, 786444, 131072, 1, 851980, 393216, 1, 917516, 393216, 1, 983052, 131072, 1, 1048588, 0, 3, 1114124, 131072, 1, 1179660, 131072, 1, 1245196, 131072, 1, 1310732, 131072, 1, 1376268, 131072, 1, 1441804, 131072, 1, 65576, 131072, 1, 131112, 131072, 1, 196648, 131072, 1, 262184, 131072, 1, 327720, 131072, 1, 393256, 131072, 1, -65516, 131072, 1, -65517, 131072, 1, -65518, 131072, 1, -65519, 131072, 1, -65520, 131072, 1, -65521, 131072, 1, -65522, 131072, 1, -65523, 131072, 1, -65524, 131072, 1, -65525, 131072, 1, -65526, 131072, 1, -65527, 131072, 1, -65528, 131072, 1, -65529, 131072, 1, -65530, 131072, 1, -65531, 131072, 1, -65532, 131072, 1, -65533, 131072, 1, -65534, 131072, 1, -65535, 131072, 1, -65536, 131072, 1, 1048606, 393216, 1, 786468, 131072, 1, 852004, 131072, 1, 983076, 131072, 1, 1507327, 131072, 1, 1441791, 131072, 1, 1376255, 131072, 1, 1310719, 131072, 1, 1245183, 131072, 1, 1179647, 131072, 1, 1114111, 131072, 1, 1048575, 131072, 1, 983039, 131072, 1, 917503, 131072, 1, 851967, 131072, 1, 786431, 131072, 1, 720895, 131072, 1, 655359, 131072, 1, 589823, 131072, 1, 524287, 131072, 1, 458751, 131072, 1, 393215, 131072, 1, 327679, 131072, 1, 262143, 131072, 1, 196607, 131072, 1, 131071, 131072, 1, 65535, 131072, 1, 786472, 131072, 1, 720936, 131072, 1, 655400, 131072, 1, 589864, 131072, 1, 524328, 131072, 1, 458792, 131072, 1, 1310760, 131072, 1, 1245224, 131072, 1, 1179688, 131072, 1, 917544, 131072, 1, 852008, 131072, 1, 1376295, 262144, 7, 1310759, 262144, 7, 1245223, 262144, 7, 1179687, 262144, 7, 1114151, 262144, 7, 917543, 131072, 1, 852007, 131072, 1, 786471, 131072, 1, 720935, 131072, 1, 655399, 131072, 1, 589863, 131072, 1, 524327, 131072, 1, 458791, 131072, 1, 393255, 131072, 1, 393254, 262144, 7, 393253, 262144, 7, 852005, 131072, 1, 917541, 131072, 1, 1048613, 262144, 7, 458789, 262144, 7, 524325, 131072, 1, 589861, 131072, 1, 655397, 131072, 1, 720933, 131072, 1, 786469, 131072, 1, 458790, 262144, 7, 524326, 131072, 1, 589862, 131072, 1, 655398, 131072, 1, 720934, 131072, 1, 786470, 131072, 1, 852006, 131072, 1, 917542, 131072, 1, 1048614, 262144, 7, 23, 131072, 1, 24, 131072, 1, 25, 131072, 1, 26, 131072, 1, 27, 131072, 1, -65508, 131072, 1, -65507, 131072, 1, -65506, 131072, 1, -65505, 131072, 1, -65504, 131072, 1, -65503, 131072, 1, -65502, 131072, 1, -65501, 131072, 1, -65500, 131072, 1, 36, 262144, 7, -65499, 131072, 1, 37, 262144, 7, -65498, 131072, 1, 38, 131072, 1, -65497, 131072, 1, 39, 131072, 1, -65496, 131072, 1, 40, 131072, 1, 1441832, 131072, 1, 1376296, 131072, 1, 1114152, 131072, 1, 983080, 131072, 1, 983079, 131072, 1, 983078, 131072, 1, 983077, 131072, 1, 917540, 131072, 1, 917539, 131072, 1, 917538, 131072, 1, 917537, 131072, 1, 917536, 0, 3, 917535, 131072, 1, 917534, 131072, 1, 983071, 0, 3, 983070, 0, 3, 983069, 0, 3, 983068, 0, 3, 983067, 131072, 1, 1048603, 0, 3, 1048604, 0, 3, 1114141, 0, 3, 1114142, 0, 3, 1179678, 131072, 1, 1048605, 0, 3, 1114140, 131072, 1, 1179676, 0, 3, 1179677, 0, 3, 1048616, 131072, 1, 1048615, 262144, 7, 1114150, 262144, 7, 1114149, 262144, 7, 1114148, 262144, 7, 1114147, 131072, 1, 1114146, 131072, 1, 1114145, 0, 3, 1114144, 0, 3, 1114143, 0, 3, 1179679, 131072, 1, 1245215, 393216, 5, 1310751, 131072, 1, 1310752, 131072, 1, 1572863, 131072, 1, 1507328, 131072, 1, 1507329, 131072, 1, 1507330, 131072, 1, 1507331, 131072, 1, 1507332, 131072, 1, 1507333, 131072, 1, 1507334, 131072, 1, 1507335, 131072, 1, 1507336, 131072, 1, 1507337, 131072, 1, 1507338, 131072, 1, 1507339, 131072, 1, 1507340, 131072, 1, 1507341, 131072, 1, 1507342, 131072, 1, 1507343, 131072, 1, 1507344, 131072, 1, 1507345, 131072, 1, 1507346, 131072, 1, 1507347, 131072, 1, 1507348, 131072, 1, 1507349, 131072, 1, 1507350, 393216, 5, 1507351, 393216, 5, 1507352, 393216, 5, 1507353, 393216, 5, 1507354, 393216, 5, 1507355, 393216, 5, 1507356, 393216, 5, 1507357, 393216, 5, 1507358, 393216, 5, 1507359, 393216, 5, 1507360, 393216, 5, 1507361, 393216, 5, 1507362, 131072, 1, 1507363, 131072, 1, 1507364, 131072, 1, 1507365, 131072, 1, 1507366, 131072, 1, 1507367, 131072, 1, 1507368, 131072, 1, 1114114, 393216, 1, 1179650, 393216, 1, 1245186, 131072, 1, -1, 131072, 1, 393239, 131072, 1, 393238, 131072, 1, 327702, 0, 3, 327701, 0, 3, 393237, 131072, 1, 393240, 131072, 1, 393241, 131072, 1, 327705, 0, 3, 327704, 0, 3, 327703, 0, 3, -65509, 131072, 1, -65510, 131072, 1, -65511, 131072, 1, -65512, 131072, 1, -65513, 131072, 1, -65514, 131072, 1, -65515, 131072, 1, 21, 131072, 1, 28, 131072, 1, 65564, 393216, 1, 131100, 393216, 1, 196636, 131072, 1, 29, 131072, 1, 65565, 131072, 1, 131101, 131072, 1, 196637, 131072, 1, 65570, 262144, 7, 65569, 262144, 7, 65568, 131072, 1, 65567, 131072, 1, 65566, 131072, 1, 131102, 131072, 1, 131103, 131072, 1, 131104, 131072, 1, 131105, 262144, 7, 131106, 262144, 7, 131107, 131072, 1, 196641, 131072, 1, 196642, 262144, 7, 196643, 262144, 7, 33, 131072, 1, 34, 131072, 1, 35, 262144, 7, 65571, 262144, 7, 196640, 131072, 1, 196639, 131072, 1, 196638, 131072, 1, 30, 131072, 1, 31, 131072, 1, 32, 131072, 1)\nscript = ExtResource(\"2_7qj53\")\noffset_tilemap = NodePath(\"../OffsetTileMap\")\n\n[node name=\"OffsetTileMap\" type=\"TileMap\" parent=\".\"]\nposition = Vector2(-8, -8)\ntile_set = SubResource(\"TileSet_77ea1\")\nformat = 2\nlayer_0/tile_data = PackedInt32Array(0, 393216, 5, 1, 393216, 5, 65536, 393216, 5, 65537, 393216, 5, 131072, 393216, 5, 131073, 393216, 5, 196608, 393216, 5, 196609, 393216, 5, 262144, 393216, 5, 262145, 393216, 5, 327680, 393216, 5, 327681, 393216, 5, 393216, 393216, 5, 393217, 393216, 5, 458752, 393216, 5, 458753, 393216, 5, 524288, 393216, 5, 524289, 196608, 1, 589824, 393216, 5, 589825, 131072, 0, 655360, 65536, 7, 655361, 196608, 4, 2, 393216, 5, 65538, 196608, 1, 131074, 131072, 0, 196610, 393216, 5, 262146, 393216, 5, 327682, 393216, 5, 393218, 393216, 5, 458754, 393216, 5, 524290, 65536, 2, 589826, 196608, 0, 655362, 196608, 4, 3, 393216, 5, 65539, 131072, 2, 131075, 65536, 1, 196611, 393216, 5, 262147, 196608, 1, 327683, 196608, 2, 393219, 196608, 2, 458755, 196608, 2, 524291, 196608, 3, 589827, 196608, 0, 655363, 196608, 4, 4, 393216, 5, 65540, 393216, 5, 131076, 393216, 5, 196612, 196608, 1, 262148, 196608, 3, 327684, 262144, 3, 393220, 65536, 3, 458756, 65536, 0, 524292, 65536, 0, 589828, 65536, 1, 655364, 196608, 4, 5, 393216, 5, 65541, 393216, 5, 131077, 393216, 5, 196613, 65536, 2, 262149, 262144, 3, 327685, 262144, 3, 393221, 0, 0, 458757, 131072, 0, 524293, 393216, 5, 589829, 393216, 5, 655365, 196608, 4, 6, 393216, 5, 65542, 393216, 5, 131078, 393216, 5, 196614, 65536, 2, 262150, 65536, 3, 327686, 65536, 0, 393222, 0, 2, 458758, 196608, 0, 524294, 393216, 5, 589830, 393216, 5, 655366, 0, 4, 7, 393216, 5, 65543, 393216, 5, 131079, 393216, 5, 196615, 65536, 2, 262151, 196608, 0, 327687, 393216, 5, 393223, 65536, 2, 458759, 196608, 0, 524295, 196608, 1, 589831, 131072, 0, 655367, 393216, 5, 8, 393216, 5, 65544, 196608, 1, 131080, 196608, 2, 196616, 196608, 3, 262152, 196608, 0, 327688, 393216, 5, 393224, 65536, 2, 458760, 0, 0, 524296, 196608, 3, 589832, 196608, 0, 655368, 393216, 5, 9, 393216, 5, 65545, 131072, 2, 131081, 65536, 0, 196617, 65536, 0, 262153, 65536, 1, 327689, 393216, 5, 393225, 65536, 2, 458761, 65536, 3, 524297, 65536, 0, 589833, 65536, 1, 655369, 393216, 5, 10, 393216, 5, 65546, 393216, 5, 131082, 393216, 5, 196618, 393216, 5, 262154, 393216, 5, 327690, 393216, 5, 393226, 131072, 2, 458762, 65536, 1, 524298, 196608, 1, 589834, 196608, 2, 655370, 196608, 2, 11, 393216, 5, 65547, 196608, 1, 131083, 196608, 2, 196619, 131072, 0, 262155, 393216, 5, 327691, 393216, 5, 393227, 393216, 5, 458763, 393216, 5, 524299, 131072, 2, 589835, 65536, 0, 655371, 65536, 0, 12, 393216, 5, 65548, 65536, 2, 131084, 262144, 3, 196620, 196608, 0, 262156, 196608, 1, 327692, 196608, 2, 393228, 196608, 2, 458764, 196608, 2, 524300, 196608, 2, 589836, 196608, 2, 655372, 196608, 2, 13, 393216, 5, 65549, 131072, 2, 131085, 65536, 0, 196621, 65536, 1, 262157, 131072, 2, 327693, 65536, 0, 393229, 65536, 0, 458765, 65536, 0, 524301, 65536, 0, 589837, 65536, 0, 655373, 65536, 0, 14, 393216, 5, 65550, 393216, 5, 131086, 393216, 5, 196622, 393216, 5, 262158, 393216, 5, 327694, 196608, 1, 393230, 196608, 2, 458766, 131072, 0, 524302, 393216, 5, 589838, 393216, 5, 655374, 393216, 5, 720909, 131072, 3, 720910, 131072, 2, 786445, 131072, 0, 786446, 65536, 1, 851981, 196608, 4, 851982, 0, 4, 917517, 131072, 9, 917518, 196608, 6, 1179661, 393216, 5, 1179662, 393216, 5, 1245197, 393216, 5, 1245198, 393216, 5, 1310733, 393216, 5, 1310734, 393216, 5, 1376269, 393216, 5, 1376270, 393216, 5, 1441805, 393216, 5, 1441806, 393216, 5, 1507341, 393216, 5, 1507342, 393216, 5, 15, 393216, 5, 65551, 393216, 5, 131087, 196608, 1, 196623, 196608, 2, 262159, 196608, 2, 327695, 0, 1, 393231, 0, 2, 458767, 196608, 0, 524303, 393216, 5, 589839, 393216, 5, 655375, 393216, 5, 720911, 393216, 5, 786447, 393216, 5, 851983, 393216, 5, 917519, 393216, 5, 983055, 393216, 5, 1179663, 393216, 5, 1245199, 393216, 5, 1310735, 393216, 5, 1376271, 393216, 5, 1441807, 393216, 5, 1507343, 393216, 5, 16, 393216, 5, 65552, 393216, 5, 131088, 131072, 2, 196624, 65536, 0, 262160, 65536, 0, 327696, 65536, 1, 393232, 65536, 2, 458768, 0, 0, 524304, 196608, 2, 589840, 196608, 2, 655376, 196608, 2, 720912, 196608, 2, 786448, 196608, 2, 1179664, 393216, 5, 1245200, 393216, 5, 1310736, 393216, 5, 1376272, 393216, 5, 1441808, 393216, 5, 1507344, 393216, 5, 17, 393216, 5, 65553, 393216, 5, 131089, 393216, 5, 196625, 65536, 7, 262161, 0, 6, 327697, 393216, 5, 393233, 65536, 2, 458769, 65536, 3, 524305, 65536, 0, 589841, 65536, 0, 655377, 65536, 0, 786449, 0, 2, 1179665, 393216, 5, 1245201, 393216, 5, 1310737, 393216, 5, 1376273, 393216, 5, 1441809, 393216, 5, 1507345, 393216, 5, 18, 393216, 5, 65554, 393216, 5, 131090, 393216, 5, 196626, 0, 4, 262162, 196608, 7, 327698, 196608, 1, 393234, 0, 1, 458770, 65536, 1, 524306, 393216, 5, 589842, 393216, 5, 655378, 393216, 5, 786450, 196608, 3, 851986, 196608, 0, 917522, 393216, 5, 983058, 393216, 5, 1179666, 393216, 5, 1245202, 393216, 5, 1441810, 393216, 5, 1507346, 393216, 5, 19, 393216, 5, 65555, 393216, 5, 131091, 393216, 5, 196627, 393216, 5, 262163, 393216, 5, 327699, 65536, 2, 393235, 196608, 0, 458771, 393216, 5, 524307, 393216, 5, 589843, 393216, 5, 786451, 65536, 3, 851987, 65536, 1, 917523, 393216, 5, 983059, 393216, 5, 1179667, 393216, 5, 1245203, 196608, 1, 1441811, 393216, 5, 1507347, 393216, 5, 20, 393216, 5, 65556, 393216, 5, 131092, 393216, 5, 196628, 393216, 5, 262164, 393216, 5, 327700, 65536, 2, 393236, 196608, 0, 458772, 393216, 5, 524308, 393216, 5, 589844, 393216, 5, 786452, 65536, 1, 851988, 393216, 5, 917524, 393216, 5, 983060, 393216, 5, 1310740, 262144, 3, 1441812, 393216, 5, 1507348, 393216, 5, 21, 393216, 5, 65557, 393216, 5, 131093, 393216, 5, 458773, 393216, 5, 524309, 393216, 5, 589845, 393216, 5, 786453, 393216, 5, 851989, 393216, 5, 917525, 393216, 5, 983061, 393216, 5, 1179669, 196608, 3, 1441813, 393216, 5, 1507349, 393216, 5, 22, 393216, 5, 65558, 393216, 5, 131094, 393216, 5, 196630, 393216, 5, 262166, 393216, 5, 458774, 393216, 5, 524310, 393216, 5, 589846, 393216, 5, 786454, 393216, 5, 851990, 393216, 5, 917526, 393216, 5, 983062, 393216, 5, 1310742, 393216, 5, 1376278, 393216, 5, 1441814, 393216, 5, 1507350, 393216, 5, 23, 393216, 5, 65559, 65536, 7, 131095, 65536, 4, 196631, 65536, 4, 262167, 0, 6, 458775, 393216, 5, 524311, 393216, 5, 589847, 393216, 5, 786455, 393216, 5, 851991, 393216, 5, 917527, 393216, 5, 1245207, 393216, 5, 1310743, 393216, 5, 1376279, 393216, 5, 1441815, 393216, 5, 1507351, 393216, 5, 65560, 196608, 4, 131096, 196608, 5, 196632, 131072, 4, 262168, 65536, 6, 458776, 393216, 5, 524312, 393216, 5, 589848, 393216, 5, 786456, 393216, 5, 851992, 393216, 5, 917528, 393216, 5, 1245208, 393216, 5, 1310744, 393216, 5, 1376280, 393216, 5, 1441816, 393216, 5, 1507352, 393216, 5, 65561, 196608, 4, 131097, 65536, 6, 196633, 196608, 4, 262169, 65536, 6, 458777, 393216, 5, 524313, 393216, 5, 589849, 393216, 5, 786457, 393216, 5, 851993, 393216, 5, 917529, 393216, 5, 1310745, 393216, 5, 1376281, 393216, 5, 1441817, 393216, 5, 1507353, 393216, 5, 65562, 196608, 4, 131098, 65536, 6, 196634, 196608, 4, 262170, 65536, 6, 458778, 393216, 5, 524314, 393216, 5, 589850, 393216, 5, 786458, 393216, 5, 851994, 393216, 5, 917530, 393216, 5, 1310746, 393216, 5, 1376282, 393216, 5, 1441818, 393216, 5, 1507354, 393216, 5, 65563, 196608, 4, 131099, 131072, 6, 196635, 65536, 5, 262171, 65536, 6, 524315, 196608, 2, 786459, 393216, 5, 851995, 393216, 5, 917531, 393216, 5, 983067, 393216, 5, 1310747, 393216, 5, 1376283, 393216, 5, 1441819, 393216, 5, 1507355, 393216, 5, 65564, 196608, 4, 131100, 131072, 9, 196636, 196608, 5, 262172, 196608, 7, 327708, 65536, 2, 393244, 262144, 3, 458780, 65536, 3, 524316, 65536, 0, 589852, 0, 2, 655388, 65536, 3, 720924, 65536, 1, 786460, 393216, 5, 851996, 393216, 5, 917532, 393216, 5, 983068, 196608, 1, 1310748, 393216, 5, 1376284, 393216, 5, 1441820, 393216, 5, 1507356, 393216, 5, 65565, 0, 4, 131101, 196608, 6, 196637, 196608, 7, 262173, 393216, 5, 327709, 131072, 2, 393245, 65536, 0, 458781, 65536, 1, 524317, 393216, 5, 589853, 65536, 2, 655389, 0, 0, 720925, 131072, 0, 786461, 393216, 5, 851997, 393216, 5, 917533, 393216, 5, 1310749, 393216, 5, 1376285, 393216, 5, 1441821, 393216, 5, 1507357, 393216, 5, 327710, 393216, 5, 393246, 393216, 5, 458782, 196608, 1, 524318, 196608, 2, 589854, 196608, 3, 655390, 262144, 3, 720926, 196608, 0, 786462, 393216, 5, 851998, 393216, 5, 917534, 393216, 5, 1310750, 393216, 5, 1376286, 393216, 5, 1441822, 393216, 5, 1507358, 393216, 5, 327711, 393216, 5, 393247, 196608, 1, 458783, 196608, 3, 524319, 65536, 3, 589855, 65536, 0, 655391, 0, 2, 720927, 0, 0, 1245215, 393216, 5, 1376287, 393216, 5, 1441823, 393216, 5, 1507359, 393216, 5, 327712, 393216, 5, 524320, 65536, 1, 589856, 393216, 5, 655392, 131072, 2, 852000, 262144, 3, 1376288, 393216, 5, 1441824, 393216, 5, 1507360, 393216, 5, 1114145, 262144, 3, 1245216, 393216, 5, 1245217, 393216, 5, 1310752, 393216, 5, 1310753, 393216, 5, 1376289, 393216, 5, 1507361, 393216, 5, 983074, 393216, 5, 1048610, 131072, 2, 1245218, 393216, 5, 1310754, 393216, 5, 1376290, 393216, 5, 1441826, 393216, 5, 1507362, 393216, 5, 983075, 393216, 5, 1048611, 393216, 5, 1114147, 393216, 5, 1179683, 458752, 5, 1507363, 393216, 4, 983076, 393216, 5, 1048612, 393216, 5, 1245220, 0, 11, 1376293, 131072, 9, 1310758, 131072, 9, 1441832, 327680, 5, 1507368, 393216, 5, 720896, 65536, 4, 720897, 196608, 5, 786432, 65536, 4, 786433, 196608, 6, 851968, 65536, 4, 851969, 196608, 6, 917504, 65536, 4, 917505, 196608, 6, 983040, 65536, 4, 983041, 131072, 4, 1048576, 65536, 4, 1048577, 196608, 5, 1114112, 65536, 4, 1114113, 131072, 4, 1179648, 0, 6, 1179649, 65536, 6, 1245184, 393216, 5, 1245185, 393216, 5, 1310720, 393216, 5, 1310721, 393216, 5, 1376256, 393216, 5, 1376257, 393216, 5, 1441792, 393216, 5, 1441793, 393216, 5, 1507328, 393216, 5, 1507329, 393216, 5, 720898, 65536, 6, 851970, 131072, 0, 917506, 393216, 5, 983042, 196608, 4, 1048578, 65536, 6, 1114114, 196608, 4, 1179650, 131072, 6, 1245186, 0, 6, 1310722, 393216, 5, 1376258, 393216, 5, 1441794, 393216, 5, 1507330, 393216, 5, 720899, 65536, 6, 786435, 65536, 2, 851971, 196608, 0, 917507, 393216, 5, 983043, 196608, 4, 1048579, 65536, 6, 1114115, 0, 4, 1179651, 196608, 6, 1245187, 196608, 7, 1310723, 393216, 5, 1376259, 393216, 5, 1441795, 393216, 5, 1507331, 393216, 5, 720900, 65536, 6, 786436, 65536, 2, 851972, 196608, 0, 917508, 393216, 5, 983044, 196608, 4, 1048580, 65536, 6, 1114116, 393216, 5, 1179652, 393216, 5, 1245188, 65536, 7, 1310724, 0, 6, 1376260, 393216, 5, 1441796, 393216, 5, 1507332, 393216, 5, 720901, 65536, 6, 786437, 65536, 2, 851973, 196608, 0, 917509, 393216, 5, 983045, 0, 4, 1048581, 0, 5, 1114117, 65536, 4, 1179653, 65536, 4, 1245189, 131072, 7, 1310725, 196608, 7, 1376261, 393216, 5, 1441797, 393216, 5, 1507333, 393216, 5, 720902, 196608, 7, 786438, 65536, 2, 851974, 196608, 0, 917510, 65536, 7, 983046, 65536, 4, 1048582, 65536, 5, 1114118, 196608, 5, 1179654, 196608, 6, 1245190, 196608, 7, 1310726, 393216, 5, 1376262, 393216, 5, 1441798, 393216, 5, 1507334, 393216, 5, 720903, 393216, 5, 786439, 65536, 2, 851975, 196608, 0, 917511, 0, 4, 983047, 196608, 6, 1048583, 196608, 6, 1114119, 196608, 7, 1179655, 393216, 5, 1245191, 393216, 5, 1310727, 393216, 5, 1376263, 393216, 5, 1441799, 393216, 5, 1507335, 393216, 5, 720904, 393216, 5, 786440, 65536, 2, 851976, 0, 0, 917512, 131072, 0, 983048, 393216, 5, 1048584, 393216, 5, 1114120, 393216, 5, 1179656, 393216, 5, 1245192, 393216, 5, 1310728, 393216, 5, 1376264, 393216, 5, 1441800, 393216, 5, 1507336, 393216, 5, 720905, 393216, 5, 786441, 65536, 2, 851977, 262144, 3, 917513, 0, 0, 983049, 196608, 2, 1048585, 196608, 2, 1114121, 196608, 2, 1179657, 196608, 2, 1245193, 131072, 0, 1310729, 393216, 5, 1376265, 393216, 5, 1441801, 393216, 5, 1507337, 393216, 5, 720906, 196608, 2, 786442, 196608, 3, 851978, 65536, 3, 917514, 65536, 0, 983050, 65536, 0, 1048586, 0, 2, 1114122, 65536, 3, 1179658, 65536, 0, 1245194, 65536, 1, 1310730, 393216, 5, 1376266, 393216, 5, 1441802, 393216, 5, 1507338, 393216, 5, 720907, 65536, 0, 786443, 65536, 0, 851979, 65536, 1, 917515, 393216, 5, 983051, 393216, 5, 1048587, 65536, 2, 1114123, 196608, 0, 1179659, 393216, 5, 1245195, 393216, 5, 1310731, 393216, 5, 1376267, 393216, 5, 1441803, 393216, 5, 1507339, 393216, 5, 720908, 131072, 0, 786444, 393216, 5, 851980, 65536, 7, 917516, 65536, 4, 983052, 0, 6, 1179660, 393216, 5, 1245196, 393216, 5, 1310732, 393216, 5, 1376268, 393216, 5, 1441804, 393216, 5, 1507340, 393216, 5, -65514, 131072, 1, -65513, 131072, 1, -65515, 131072, 1, -65516, 131072, 1, -65517, 131072, 1, -65518, 131072, 1, -65519, 131072, 1, -65520, 131072, 1, -65521, 131072, 1, -65522, 131072, 1, -65523, 131072, 1, -65524, 131072, 1, -65525, 131072, 1, -65526, 131072, 1, -65527, 131072, 1, -65528, 131072, 1, -65529, 131072, 1, -65530, 131072, 1, -65531, 131072, 1, -65532, 131072, 1, -65533, 131072, 1, -65534, 131072, 1, -65535, 131072, 1, -65536, 131072, 1, 1572864, 131072, 1, 1572865, 131072, 1, 1572866, 131072, 1, 1572867, 131072, 1, 1572868, 131072, 1, 1572869, 131072, 1, 1572870, 131072, 1, 1572871, 131072, 1, 1572872, 131072, 1, 1572873, 131072, 1, 1572874, 131072, 1, 1572875, 131072, 1, 1572876, 131072, 1, 1572884, 131072, 1, 1572885, 131072, 1, 1572886, 131072, 1, 1572887, 131072, 1, 1572888, 131072, 1, 1572883, 131072, 1, 1572882, 131072, 1, 1572881, 131072, 1, 1572880, 131072, 1, 1572879, 131072, 1, 1572878, 131072, 1, 1572877, 131072, 1, 1572889, 131072, 1, 1572890, 131072, 1, 1572891, 131072, 1, 1572892, 131072, 1, 1572893, 131072, 1, 1572894, 131072, 1, 1572895, 131072, 1, 1572896, 131072, 1, 1572897, 131072, 1, 1572898, 131072, 1, 1572899, 131072, 1, 1572900, 131072, 1, 1572901, 131072, 1, 1572902, 131072, 1, 1572903, 131072, 1, 1572904, 131072, 1, 983077, 393216, 5, 1572863, 131072, 1, 1638399, 131072, 1, 1507327, 131072, 1, 1441791, 131072, 1, 1376255, 131072, 1, 1310719, 131072, 1, 1245183, 131072, 1, 1179647, 131072, 1, 1114111, 131072, 1, 1048575, 131072, 1, 983039, 131072, 1, 917503, 131072, 1, 851967, 131072, 1, 786431, 131072, 1, 720895, 131072, 1, 655359, 131072, 1, 589823, 131072, 1, 524287, 131072, 1, 458751, 131072, 1, 393215, 131072, 1, 327679, 131072, 1, 262143, 131072, 1, 196607, 131072, 1, 131071, 131072, 1, 65535, 131072, 1, -1, 131072, 1, 1310761, 131072, 1, 1376297, 131072, 1, 1245225, 131072, 1, 1179689, 131072, 1, 983080, 393216, 5, 983081, 131072, 1, 983079, 393216, 5, 983078, 393216, 5, -65512, 131072, 1, 24, 393216, 5, -65511, 131072, 1, 25, 393216, 5, -65510, 131072, 1, 26, 393216, 5, -65509, 131072, 1, 27, 393216, 5, -65508, 131072, 1, 28, 393216, 5, -65507, 131072, 1, 29, 393216, 5, -65506, 131072, 1, 30, 393216, 5, -65505, 131072, 1, 31, 393216, 5, -65504, 131072, 1, 32, 393216, 5, 1507369, 131072, 1, 1572905, 131072, 1, 1441833, 131072, 1, 1114153, 131072, 1, 1048616, 393216, 6, 1048617, 131072, 1, 1048605, 262144, 3, 1245206, 65536, 1, 655385, 65536, 2, 720921, 196608, 0, 655384, 65536, 2, 720920, 196608, 0, 655382, 65536, 2, 720918, 196608, 0, 720914, 196608, 1, 655379, 196608, 1, 655380, 65536, 2, 983063, 196608, 1, 393248, 131072, 2, 458784, 65536, 0, 196629, 393216, 5, 262165, 393216, 5, 327701, 65536, 2, 393237, 196608, 0, 327702, 65536, 2, 393238, 196608, 0, 327703, 65536, 2, 393239, 196608, 0, 327704, 65536, 2, 327705, 65536, 2, 393240, 196608, 0, 458779, 196608, 2, 393241, 196608, 0, 393242, 196608, 0, 393243, 0, 0, 327706, 65536, 2, 327707, 65536, 2, 262174, 393216, 5, 262175, 393216, 5, 262176, 393216, 5, 65566, 393216, 5, 131102, 393216, 5, 196638, 393216, 5, 65568, 393216, 5, 131104, 393216, 5, 65567, 393216, 5, 131103, 393216, 5, 196639, 393216, 5, 196640, 393216, 5, 786434, 196608, 1, 720928, 65536, 0, 917536, 0, 0, 786463, 196608, 2, 851999, 196608, 2, 786464, 0, 2, 262177, 458752, 5, 327713, 458752, 6, 393249, 393216, 4, 458785, 393216, 5, 524321, 393216, 5, 589857, 393216, 5, 655393, 393216, 5, 720929, 393216, 5, 786465, 131072, 2, 852001, 65536, 0, 917537, 65536, 0, 262178, 458752, 7, 327714, 327680, 7, 393250, 327680, 5, 458786, 393216, 5, 524322, 393216, 5, 589858, 393216, 5, 655394, 393216, 5, 720930, 458752, 5, 786466, 393216, 4, 852002, 393216, 5, 917538, 393216, 5, 262179, 327680, 7, 327715, 327680, 5, 393251, 393216, 5, 458787, 393216, 5, 524323, 458752, 5, 589859, 393216, 4, 655395, 393216, 5, 720931, 393216, 6, 852003, 393216, 5, 917539, 393216, 5, 262180, 327680, 5, 327716, 393216, 5, 393252, 393216, 5, 458788, 458752, 5, 524324, 458752, 7, 589860, 262144, 4, 655396, 393216, 4, 720932, 393216, 5, 786468, 393216, 5, 852004, 393216, 5, 917540, 393216, 5, 65572, 0, 11, 65573, 0, 11, 131108, 458752, 4, 131109, 262144, 4, 196644, 393216, 6, 196645, 393216, 4, 262181, 393216, 5, 327717, 393216, 5, 393253, 458752, 5, 524325, 327680, 7, 589861, 327680, 4, 720933, 393216, 5, 786469, 393216, 5, 65574, 327680, 4, 131110, 262144, 6, 196646, 262144, 4, 262182, 458752, 6, 327718, 458752, 6, 65575, 393216, 5, 131111, 393216, 6, 196647, 327680, 4, 262183, 327680, 4, 327719, 327680, 4, 393255, 327680, 4, 65576, 393216, 5, 131112, 393216, 5, 196648, 393216, 5, 262184, 393216, 5, 327720, 393216, 5, 393256, 393216, 5, 65577, 131072, 1, 131113, 131072, 1, 196649, 131072, 1, 262185, 131072, 1, 327721, 131072, 1, 393257, 131072, 1, 458792, 393216, 5, 458793, 131072, 1, 852005, 393216, 5, 917541, 393216, 5, 786472, 393216, 5, 786473, 131072, 1, 852008, 393216, 5, 852009, 131072, 1, 720936, 393216, 5, 720937, 131072, 1, 655400, 393216, 5, 655401, 131072, 1, 589864, 393216, 5, 589865, 131072, 1, 524328, 393216, 5, 524329, 131072, 1, 917544, 393216, 5, 917545, 131072, 1, 917543, 393216, 5, 852007, 393216, 5, 786471, 393216, 5, 720935, 393216, 5, 655399, 393216, 5, 589863, 393216, 5, 524327, 327680, 5, 458791, 327680, 4, 458790, 0, 11, 852006, 393216, 5, 524326, 458752, 4, 589862, 393216, 5, 655398, 393216, 5, 720934, 393216, 5, 786470, 393216, 5, -65503, 131072, 1, 33, 393216, 5, -65502, 131072, 1, 34, 393216, 5, -65501, 131072, 1, 35, 458752, 5, -65500, 131072, 1, 36, 327680, 6, -65499, 131072, 1, 37, 327680, 6, -65498, 131072, 1, 38, 393216, 6, -65497, 131072, 1, 39, 393216, 5, -65496, 131072, 1, 40, 393216, 5, -65495, 131072, 1, 41, 131072, 1, 65570, 327680, 6, 65571, 458752, 7, 131106, 0, 11, 131107, 327680, 7, 65569, 458752, 5, 131105, 458752, 6, 196641, 393216, 4, 196642, 262144, 4, 196643, 262144, 6, 589851, 196608, 2, 655386, 65536, 2, 720922, 196608, 0, 655387, 196608, 3, 720923, 196608, 0, 786467, 327680, 5, 655397, 327680, 5, 917542, 393216, 5, 983053, 65536, 6, 983054, 196608, 7, 458789, 458752, 7, 393254, 458752, 7, 1245222, 131072, 9, 1114151, 0, 11, 1114150, 0, 11, 1048597, 65536, 2, 1114133, 0, 0, 1048598, 131072, 2, 1245205, 65536, 3, 1310741, 65536, 0, 1245204, 196608, 3, 1310739, 196608, 3, 1376275, 196608, 0, 1114134, 0, 2, 1179670, 65536, 3, 1179681, 196608, 0, 1114146, 65536, 0, 1048608, 262144, 0, 983070, 65536, 2, 983071, 65536, 2, 1179676, 65536, 2, 1179674, 0, 2, 1114138, 65536, 3, 1048602, 0, 2, 983065, 65536, 2, 1048601, 0, 0, 983064, 65536, 2, 1048599, 196608, 2, 1048600, 65536, 3, 1114137, 196608, 3, 1179673, 0, 0, 1114136, 0, 2, 1179672, 196608, 0, 1114135, 196608, 3, 1179671, 196608, 0, 917535, 131072, 0, 1114142, 262144, 2, 1114144, 458752, 3, 1048606, 327680, 3, 1310757, 65536, 9, 1179680, 196608, 0, 1179677, 196608, 3, 1179678, 65536, 3, 1245212, 196608, 0, 1245209, 131072, 0, 1245214, 65536, 1, 983066, 131072, 2, 1245210, 196608, 0, 655381, 65536, 2, 720917, 196608, 0, 655383, 65536, 2, 720919, 196608, 0, 1114140, 196608, 0, 983072, 196608, 3, 983073, 65536, 0, 1048604, 196608, 3, 1114141, 0, 0, 1048607, 458752, 0, 1114143, 327680, 2, 1048609, 0, 2, 1310751, 393216, 5, 1441825, 393216, 5, 1179682, 65536, 1, 1179679, 196608, 0, 1048603, 65536, 2, 1114139, 196608, 0, 1179675, 65536, 2, 1245211, 196608, 0, 983069, 65536, 2, 1245213, 196608, 0, 1310738, 196608, 1, 1376274, 131072, 0, 1376277, 65536, 1, 720913, 65536, 0, 720915, 196608, 3, 720916, 65536, 3, 1179668, 196608, 1, 1376276, 196608, 0, 1048596, 65536, 2, 1114132, 196608, 0, 1048595, 65536, 2, 1114131, 196608, 0, 1048594, 65536, 2, 1114130, 196608, 0, 1114129, 196608, 0, 1114128, 196608, 0, 1048591, 65536, 2, 1114127, 196608, 0, 1048590, 65536, 2, 1114126, 196608, 0, 1048589, 65536, 2, 1114125, 196608, 0, 1048588, 65536, 2, 1114124, 196608, 0, 1048592, 196608, 3, 1048593, 0, 2, 983056, 196608, 2, 983057, 65536, 0, 851984, 196608, 2, 917520, 196608, 2, 851985, 65536, 3, 917521, 65536, 0, 1441828, 0, 10, 1507367, 327680, 5, 1114148, 458752, 5, 1048613, 458752, 5, 1245221, 65536, 8, 1310756, 65536, 11, 1376292, 65536, 8, 1376291, 458752, 6, 1310755, 458752, 6, 1245219, 458752, 6, 1179684, 458752, 7, 1441829, 65536, 10, 1507365, 458752, 4, 1441830, 196608, 11, 1179685, 65536, 11, 1179686, 196608, 8, 1245223, 196608, 10, 1245224, 327680, 4, 1310759, 196608, 10, 1310760, 327680, 4, 1376294, 196608, 9, 1376295, 196608, 11, 1179687, 0, 8, 1507366, 458752, 4, 1441827, 458752, 6, 1507364, 458752, 4, 1441831, 327680, 7, 1376296, 327680, 4, 1048615, 327680, 6, 1114149, 458752, 7, 1048614, 327680, 6, 1179688, 327680, 4, 1114152, 327680, 4)\n\n[node name=\"Cursor\" type=\"AnimatedSprite2D\" parent=\".\" node_paths=PackedStringArray(\"dual_grid_tilemap\")]\nvisible = false\nsprite_frames = SubResource(\"SpriteFrames_v82uo\")\nframe_progress = 0.0325107\nscript = ExtResource(\"5_00xh7\")\ndual_grid_tilemap = NodePath(\"../WorldTileMap\")\n\n[node name=\"Camera2D\" type=\"Camera2D\" parent=\".\"]\nlimit_left = 0\nlimit_top = 0\nlimit_right = 640\nlimit_bottom = 360\n"
  },
  {
    "path": "scripts/cursor.gd",
    "content": "extends Node2D\n\nenum TileType { None, Grass, Dirt, Water, Sand }\n\n@export var dual_grid_tilemap: TileMap\n\n@onready var cursor = $\".\"\n\n\nfunc _ready():\n\tcursor.visible = true\n\n\nfunc _process(_delta: float) -> void:\n\tvar coords: Vector2i = dual_grid_tilemap.local_to_map(position)\n\n\tif Input.is_action_pressed(\"left_click\"):\n\t\tdual_grid_tilemap.set_tile(coords, dual_grid_tilemap.terrain_atlas_coords[TileType.Dirt][0])\n\telif Input.is_action_pressed(\"right_click\"):\n\t\tdual_grid_tilemap.set_tile(coords, dual_grid_tilemap.terrain_atlas_coords[TileType.Grass][0])\n\n\nfunc _physics_process(_delta: float) -> void:\n\tvar world_pos = get_world_pos_tile(get_global_mouse_position())\n\tglobal_position = world_pos + Vector2i(8, 8)\n\n\nfunc get_world_pos_tile(world_pos: Vector2) -> Vector2i:\n\tvar x_int: int = int(floor(world_pos.x / 16) * 16)\n\tvar y_int: int = int(floor(world_pos.y / 16) * 16)\n\treturn Vector2i(x_int, y_int)\n"
  },
  {
    "path": "scripts/tilemap.gd",
    "content": "@tool\nextends TileMap\n\nconst NEIGHBOURS = [Vector2i(0, 0), Vector2i(1, 0), Vector2i(0, 1), Vector2i(1, 1)]\n\nenum TileType { None, Grass, Dirt, Water, Sand }\n\n@export var offset_tilemap: TileMap\n@export var atlas_source_id: int = 0\n@export var terrain_atlas_coords: Dictionary = {\n\tTileType.Grass: [Vector2i(2, 1), Vector2i(0, 7), Vector2i(6, 5)],\n\tTileType.Dirt: [Vector2i(0, 3), Vector2i(4, 3)],\n\tTileType.Water: [Vector2i(6, 1), Vector2i(2, 5), Vector2i(2, 9)],\n\tTileType.Sand: [Vector2i(4, 7), Vector2i(0, 11)]\n}\n\nvar neighbours_to_atlas_coord := {\n\t# First terrain combination: grass and dirt\n\t[TileType.Dirt, TileType.Dirt, TileType.Grass, TileType.Dirt]: Vector2i(0, 0),\n\t[TileType.Dirt, TileType.Grass, TileType.Dirt, TileType.Grass]: Vector2i(1, 0),\n\t[TileType.Grass, TileType.Dirt, TileType.Grass, TileType.Grass]: Vector2i(2, 0),\n\t[TileType.Dirt, TileType.Dirt, TileType.Grass, TileType.Grass]: Vector2i(3, 0),\n\t[TileType.Grass, TileType.Dirt, TileType.Dirt, TileType.Grass]: Vector2i(0, 1),\n\t[TileType.Dirt, TileType.Grass, TileType.Grass, TileType.Grass]: Vector2i(1, 1),\n\t[TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass]: Vector2i(2, 1),\n\t[TileType.Grass, TileType.Grass, TileType.Grass, TileType.Dirt]: Vector2i(3, 1),\n\t[TileType.Dirt, TileType.Grass, TileType.Dirt, TileType.Dirt]: Vector2i(0, 2),\n\t[TileType.Grass, TileType.Grass, TileType.Dirt, TileType.Dirt]: Vector2i(1, 2),\n\t[TileType.Grass, TileType.Grass, TileType.Dirt, TileType.Grass]: Vector2i(2, 2),\n\t[TileType.Grass, TileType.Dirt, TileType.Grass, TileType.Dirt]: Vector2i(3, 2),\n\t[TileType.Dirt, TileType.Dirt, TileType.Dirt, TileType.Dirt]: Vector2i(0, 3),\n\t[TileType.Dirt, TileType.Dirt, TileType.Dirt, TileType.Grass]: Vector2i(1, 3),\n\t[TileType.Dirt, TileType.Grass, TileType.Grass, TileType.Dirt]: Vector2i(2, 3),\n\t[TileType.Grass, TileType.Dirt, TileType.Dirt, TileType.Dirt]: Vector2i(3, 3),\n\t\n\t# Second terrain combination: water and dirt\n\t[TileType.Dirt, TileType.Dirt, TileType.Water, TileType.Dirt]: Vector2i(4, 0),\n\t[TileType.Dirt, TileType.Water, TileType.Dirt, TileType.Water]: Vector2i(5, 0),\n\t[TileType.Water, TileType.Dirt, TileType.Water, TileType.Water]: Vector2i(6, 0),\n\t[TileType.Dirt, TileType.Dirt, TileType.Water, TileType.Water]: Vector2i(7, 0),\n\t[TileType.Water, TileType.Dirt, TileType.Dirt, TileType.Water]: Vector2i(4, 1),\n\t[TileType.Dirt, TileType.Water, TileType.Water, TileType.Water]: Vector2i(5, 1),\n\t[TileType.Water, TileType.Water, TileType.Water, TileType.Water]: Vector2i(6, 1),\n\t[TileType.Water, TileType.Water, TileType.Water, TileType.Dirt]: Vector2i(7, 1),\n\t[TileType.Dirt, TileType.Water, TileType.Dirt, TileType.Dirt]: Vector2i(4, 2),\n\t[TileType.Water, TileType.Water, TileType.Dirt, TileType.Dirt]: Vector2i(5, 2),\n\t[TileType.Water, TileType.Water, TileType.Dirt, TileType.Water]: Vector2i(6, 2),\n\t[TileType.Water, TileType.Dirt, TileType.Water, TileType.Dirt]: Vector2i(7, 2),\n\t[TileType.Dirt, TileType.Dirt, TileType.Dirt, TileType.Dirt]: Vector2i(4, 3),\n\t[TileType.Dirt, TileType.Dirt, TileType.Dirt, TileType.Water]: Vector2i(5, 3),\n\t[TileType.Dirt, TileType.Water, TileType.Water, TileType.Dirt]: Vector2i(6, 3),\n\t[TileType.Water, TileType.Dirt, TileType.Dirt, TileType.Dirt]: Vector2i(7, 3),\n\t\n\t# Third terrain combination: water and grass\n\t[TileType.Grass, TileType.Grass, TileType.Water, TileType.Grass]: Vector2i(0, 4),\n\t[TileType.Grass, TileType.Water, TileType.Grass, TileType.Water]: Vector2i(1, 4),\n\t[TileType.Water, TileType.Grass, TileType.Water, TileType.Water]: Vector2i(2, 4),\n\t[TileType.Grass, TileType.Grass, TileType.Water, TileType.Water]: Vector2i(3, 4),\n\t[TileType.Water, TileType.Grass, TileType.Grass, TileType.Water]: Vector2i(0, 5),\n\t[TileType.Grass, TileType.Water, TileType.Water, TileType.Water]: Vector2i(1, 5),\n\t[TileType.Water, TileType.Water, TileType.Water, TileType.Water]: Vector2i(2, 5),\n\t[TileType.Water, TileType.Water, TileType.Water, TileType.Grass]: Vector2i(3, 5),\n\t[TileType.Grass, TileType.Water, TileType.Grass, TileType.Grass]: Vector2i(0, 6),\n\t[TileType.Water, TileType.Water, TileType.Grass, TileType.Grass]: Vector2i(1, 6),\n\t[TileType.Water, TileType.Water, TileType.Grass, TileType.Water]: Vector2i(2, 6),\n\t[TileType.Water, TileType.Grass, TileType.Water, TileType.Grass]: Vector2i(3, 6),\n\t[TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass]: Vector2i(0, 7),\n\t[TileType.Grass, TileType.Grass, TileType.Grass, TileType.Water]: Vector2i(1, 7),\n\t[TileType.Grass, TileType.Water, TileType.Water, TileType.Grass]: Vector2i(2, 7),\n\t[TileType.Water, TileType.Grass, TileType.Grass, TileType.Grass]: Vector2i(3, 7),\n\t\n\t# Fourth terrain combination: grass and sand\n\t[TileType.Sand, TileType.Sand, TileType.Grass, TileType.Sand]: Vector2i(4, 4),\n\t[TileType.Sand, TileType.Grass, TileType.Sand, TileType.Grass]: Vector2i(5, 4),\n\t[TileType.Grass, TileType.Sand, TileType.Grass, TileType.Grass]: Vector2i(6, 4),\n\t[TileType.Sand, TileType.Sand, TileType.Grass, TileType.Grass]: Vector2i(7, 4),\n\t[TileType.Grass, TileType.Sand, TileType.Sand, TileType.Grass]: Vector2i(4, 5),\n\t[TileType.Sand, TileType.Grass, TileType.Grass, TileType.Grass]: Vector2i(5, 5),\n\t[TileType.Grass, TileType.Grass, TileType.Grass, TileType.Grass]: Vector2i(6, 5),\n\t[TileType.Grass, TileType.Grass, TileType.Grass, TileType.Sand]: Vector2i(7, 5),\n\t[TileType.Sand, TileType.Grass, TileType.Sand, TileType.Sand]: Vector2i(4, 6),\n\t[TileType.Grass, TileType.Grass, TileType.Sand, TileType.Sand]: Vector2i(5, 6),\n\t[TileType.Grass, TileType.Grass, TileType.Sand, TileType.Grass]: Vector2i(6, 6),\n\t[TileType.Grass, TileType.Sand, TileType.Grass, TileType.Sand]: Vector2i(7, 6),\n\t[TileType.Sand, TileType.Sand, TileType.Sand, TileType.Sand]: Vector2i(4, 7),\n\t[TileType.Sand, TileType.Sand, TileType.Sand, TileType.Grass]: Vector2i(5, 7),\n\t[TileType.Sand, TileType.Grass, TileType.Grass, TileType.Sand]: Vector2i(6, 7),\n\t[TileType.Grass, TileType.Sand, TileType.Sand, TileType.Sand]: Vector2i(7, 7),\n\t\n\t# Fifth terrain combination: water and sand\n\t[TileType.Sand, TileType.Sand, TileType.Water, TileType.Sand]: Vector2i(0, 8),\n\t[TileType.Sand, TileType.Water, TileType.Sand, TileType.Water]: Vector2i(1, 8),\n\t[TileType.Water, TileType.Sand, TileType.Water, TileType.Water]: Vector2i(2, 8),\n\t[TileType.Sand, TileType.Sand, TileType.Water, TileType.Water]: Vector2i(3, 8),\n\t[TileType.Water, TileType.Sand, TileType.Sand, TileType.Water]: Vector2i(0, 9),\n\t[TileType.Sand, TileType.Water, TileType.Water, TileType.Water]: Vector2i(1, 9),\n\t[TileType.Water, TileType.Water, TileType.Water, TileType.Water]: Vector2i(2, 9),\n\t[TileType.Water, TileType.Water, TileType.Water, TileType.Sand]: Vector2i(3, 9),\n\t[TileType.Sand, TileType.Water, TileType.Sand, TileType.Sand]: Vector2i(0, 10),\n\t[TileType.Water, TileType.Water, TileType.Sand, TileType.Sand]: Vector2i(1, 10),\n\t[TileType.Water, TileType.Water, TileType.Sand, TileType.Water]: Vector2i(2, 10),\n\t[TileType.Water, TileType.Sand, TileType.Water, TileType.Sand]: Vector2i(3, 10),\n\t[TileType.Sand, TileType.Sand, TileType.Sand, TileType.Sand]: Vector2i(0, 11),\n\t[TileType.Sand, TileType.Sand, TileType.Sand, TileType.Water]: Vector2i(1, 11),\n\t[TileType.Sand, TileType.Water, TileType.Water, TileType.Sand]: Vector2i(2, 11),\n\t[TileType.Water, TileType.Sand, TileType.Sand, TileType.Sand]: Vector2i(3, 11)\n}\n\n\nfunc _ready() -> void:\n\t#print(\"Dictionary keys:\")\n\tfor key in neighbours_to_atlas_coord.keys():\n\t\t#print(key)\n\t\tpass\n\tfor coord in get_used_cells(0):\n\t\t#print(\"Initial tile at \", coord)\n\t\tset_display_tile(Vector2i(coord))\n\n\nfunc _process(_delta):\n\t# Only update in editor mode\n\tif Engine.is_editor_hint():\n\t\tupdate_all_tiles()\n\n\nfunc update_all_tiles() -> void:\n\t# Go through all the used cells and set their display tiles\n\tfor coord in get_used_cells(0):\n\t\tset_display_tile(Vector2i(coord))\n\n\nfunc set_tile(coords: Vector2i, atlas_coords: Vector2i) -> void:\n\tset_cell(0, coords, atlas_source_id, atlas_coords)\n\tset_display_tile(coords) # Update the OffsetTileMap immediately\n\n\nfunc set_display_tile(pos: Vector2i) -> void:\n\tfor i in range(NEIGHBOURS.size()):\n\t\tvar new_pos = pos + NEIGHBOURS[i]\n\t\toffset_tilemap.set_cell(0, new_pos, atlas_source_id, calculate_display_tile(new_pos))\n\n\nfunc calculate_display_tile(coords: Vector2i) -> Vector2i:\n\tvar bottom_right = get_world_tile(coords - NEIGHBOURS[0])\n\tvar bottom_left = get_world_tile(coords - NEIGHBOURS[1])\n\tvar top_right = get_world_tile(coords - NEIGHBOURS[2])\n\tvar top_left = get_world_tile(coords - NEIGHBOURS[3])\n\n\tvar tile_key = [top_left, top_right, bottom_left, bottom_right]\n\t#print(\"Generated tile key for \", coords, \": \", tile_key)\n\t\n\t# Track number of terrain types\n\tvar terrain_tiles = {}\n\tfor tile in tile_key:\n\t\tif tile != TileType.None:\n\t\t\tterrain_tiles[tile] = true  # Use a dictionary to track unique types\n\n\t# If there are more than 2 unique terrains, return a special value (e.g., -1)\n\tif terrain_tiles.size() > 2:\n\t\treturn Vector2i(-1, -1)  # Special value to indicate skipping tile placement\n\n\t# Existing behavior if 2 or fewer terrains are detected\n\tif tile_key in neighbours_to_atlas_coord:\n\t\treturn neighbours_to_atlas_coord[tile_key]\n\t\n\tif bottom_right != TileType.None or bottom_left != TileType.None or top_right != TileType.None or top_left != TileType.None:\n\t\t\n\t\tif bottom_right == TileType.Grass or bottom_left == TileType.Grass or top_right == TileType.Grass or top_left == TileType.Grass:\n\t\t\t#print(\"Grass border found at \", coords)\n\t\t\treturn terrain_atlas_coords[TileType.Grass][0]  # Return the first coordinate for grass\n\t\telif bottom_right == TileType.Dirt or bottom_left == TileType.Dirt or top_right == TileType.Dirt or top_left == TileType.Dirt:\n\t\t\t#print(\"Dirt border found at \", coords)\n\t\t\treturn terrain_atlas_coords[TileType.Dirt][0]  # Return the first coordinate for dirt\n\t\telif bottom_right == TileType.Water or bottom_left == TileType.Water or top_right == TileType.Water or top_left == TileType.Water:\n\t\t\t#print(\"Water border found at \", coords)\n\t\t\treturn terrain_atlas_coords[TileType.Water][0]  # Return the first coordinate for water\n\t\telif bottom_right == TileType.Sand or bottom_left == TileType.Sand or top_right == TileType.Sand or top_left == TileType.Sand:\n\t\t\t#print(\"Sand border found at \", coords)\n\t\t\treturn terrain_atlas_coords[TileType.Sand][0]  # Return the first coordinate for sand\n\t\n\t# If no valid neighbours, return a default tile\n\t#print(\"Tile key not found in dictionary, defaulting to (0, 0) at \", coords)\n\treturn Vector2i(0, 0)\n\n\nfunc get_world_tile(coords: Vector2i) -> TileType:\n\tvar atlas_coord = get_cell_atlas_coords(0, coords)\n\t\n\t# Iterate through the dictionary to find which terrain type the atlas_coord belongs to\n\tfor terrain in terrain_atlas_coords.keys():\n\t\tif atlas_coord in terrain_atlas_coords[terrain]:\n\t\t\treturn terrain  # Return the terrain type if atlas_coord is found in its list\n\t\n\treturn TileType.None  # Return None if no match is found\n"
  }
]