From a844ba46f8f3d58ccf006787972d7d19d9875178 Mon Sep 17 00:00:00 2001 From: Dominic Szablewski Date: Mon, 13 Sep 2021 09:34:08 +0200 Subject: [PATCH] Initial --- .gitignore | 6 + LICENSE.md | 21 + README.md | 36 + assets/maps/m1.map | 3516 +++++++++++++++++++++++ assets/maps/m2.map | 2613 +++++++++++++++++ assets/models/boulder.obj | 22 + assets/models/box.obj | 25 + assets/models/grenade.obj | 33 + assets/models/hound.obj | 54 + assets/models/hound_run_1.obj | 54 + assets/models/hound_run_2.obj | 54 + assets/models/nailgun.obj | 46 + assets/models/q.obj | 55 + assets/models/torch_1.obj | 27 + assets/models/torch_2.obj | 27 + assets/models/torch_3.obj | 27 + assets/models/unit_fire.obj | 111 + assets/models/unit_idle.obj | 111 + assets/models/unit_run_1.obj | 111 + assets/models/unit_run_2.obj | 111 + assets/models/unit_run_3.obj | 111 + assets/models/unit_run_4.obj | 111 + assets/textures/0.png | Bin 0 -> 13141 bytes assets/textures/1.png | Bin 0 -> 11744 bytes assets/textures/10.png | Bin 0 -> 1646 bytes assets/textures/11.png | Bin 0 -> 1644 bytes assets/textures/12.png | Bin 0 -> 3050 bytes assets/textures/13.png | Bin 0 -> 2855 bytes assets/textures/14.png | Bin 0 -> 1884 bytes assets/textures/15.png | Bin 0 -> 2839 bytes assets/textures/16.png | Bin 0 -> 3145 bytes assets/textures/2.png | Bin 0 -> 11639 bytes assets/textures/20.png | Bin 0 -> 3326 bytes assets/textures/21.png | Bin 0 -> 7093 bytes assets/textures/22.png | Bin 0 -> 10609 bytes assets/textures/25.png | Bin 0 -> 2620 bytes assets/textures/26.png | Bin 0 -> 2956 bytes assets/textures/27.png | Bin 0 -> 3299 bytes assets/textures/28.png | Bin 0 -> 2387 bytes assets/textures/29.png | Bin 0 -> 1480 bytes assets/textures/3.png | Bin 0 -> 11712 bytes assets/textures/4.png | Bin 0 -> 3061 bytes assets/textures/5.png | Bin 0 -> 2699 bytes assets/textures/6.png | Bin 0 -> 2857 bytes assets/textures/7.png | Bin 0 -> 2695 bytes assets/textures/8.png | Bin 0 -> 2811 bytes assets/textures/9.png | Bin 0 -> 2916 bytes build.sh | 124 + build/dummy.txt | 1 + index.html | 55 + pack_js.php | 449 +++ pack_map.c | 1077 +++++++ pack_model.php | 103 + source/audio.js | 240 ++ source/document.js | 24 + source/entity.js | 226 ++ source/entity_barrel.js | 30 + source/entity_door.js | 44 + source/entity_enemy.js | 199 ++ source/entity_enemy_enforcer.js | 15 + source/entity_enemy_grunt.js | 21 + source/entity_enemy_hound.js | 53 + source/entity_enemy_ogre.js | 25 + source/entity_enemy_zombie.js | 34 + source/entity_light.js | 35 + source/entity_particle.js | 14 + source/entity_pickup.js | 18 + source/entity_pickup_grenadelauncher.js | 19 + source/entity_pickup_grenades.js | 18 + source/entity_pickup_health.js | 13 + source/entity_pickup_key.js | 25 + source/entity_pickup_nailgun.js | 19 + source/entity_pickup_nails.js | 17 + source/entity_player.js | 125 + source/entity_projectile_gib.js | 29 + source/entity_projectile_grenade.js | 43 + source/entity_projectile_nail.js | 26 + source/entity_projectile_plasma.js | 27 + source/entity_projectile_shell.js | 22 + source/entity_torch.js | 35 + source/entity_trigger_level.js | 9 + source/game.js | 92 + source/html_template.html | 3 + source/input.js | 83 + source/main.js | 189 ++ source/map.js | 170 ++ source/math_utils.js | 21 + source/model.js | 107 + source/music.js | 2 + source/renderer.js | 354 +++ source/textures.js | 2 + source/ttt.js | 111 + source/weapons.js | 86 + source/wrap_post.js | 2 + source/wrap_pre.js | 9 + 95 files changed, 11727 insertions(+) create mode 100755 .gitignore create mode 100755 LICENSE.md create mode 100755 README.md create mode 100644 assets/maps/m1.map create mode 100644 assets/maps/m2.map create mode 100755 assets/models/boulder.obj create mode 100644 assets/models/box.obj create mode 100644 assets/models/grenade.obj create mode 100644 assets/models/hound.obj create mode 100644 assets/models/hound_run_1.obj create mode 100644 assets/models/hound_run_2.obj create mode 100644 assets/models/nailgun.obj create mode 100644 assets/models/q.obj create mode 100644 assets/models/torch_1.obj create mode 100644 assets/models/torch_2.obj create mode 100644 assets/models/torch_3.obj create mode 100755 assets/models/unit_fire.obj create mode 100755 assets/models/unit_idle.obj create mode 100755 assets/models/unit_run_1.obj create mode 100755 assets/models/unit_run_2.obj create mode 100755 assets/models/unit_run_3.obj create mode 100755 assets/models/unit_run_4.obj create mode 100644 assets/textures/0.png create mode 100644 assets/textures/1.png create mode 100644 assets/textures/10.png create mode 100644 assets/textures/11.png create mode 100644 assets/textures/12.png create mode 100644 assets/textures/13.png create mode 100644 assets/textures/14.png create mode 100644 assets/textures/15.png create mode 100644 assets/textures/16.png create mode 100644 assets/textures/2.png create mode 100644 assets/textures/20.png create mode 100644 assets/textures/21.png create mode 100644 assets/textures/22.png create mode 100644 assets/textures/25.png create mode 100644 assets/textures/26.png create mode 100644 assets/textures/27.png create mode 100644 assets/textures/28.png create mode 100644 assets/textures/29.png create mode 100644 assets/textures/3.png create mode 100644 assets/textures/4.png create mode 100644 assets/textures/5.png create mode 100644 assets/textures/6.png create mode 100644 assets/textures/7.png create mode 100644 assets/textures/8.png create mode 100644 assets/textures/9.png create mode 100755 build.sh create mode 100644 build/dummy.txt create mode 100755 index.html create mode 100644 pack_js.php create mode 100644 pack_map.c create mode 100755 pack_model.php create mode 100644 source/audio.js create mode 100644 source/document.js create mode 100755 source/entity.js create mode 100644 source/entity_barrel.js create mode 100644 source/entity_door.js create mode 100644 source/entity_enemy.js create mode 100644 source/entity_enemy_enforcer.js create mode 100644 source/entity_enemy_grunt.js create mode 100644 source/entity_enemy_hound.js create mode 100644 source/entity_enemy_ogre.js create mode 100644 source/entity_enemy_zombie.js create mode 100644 source/entity_light.js create mode 100755 source/entity_particle.js create mode 100644 source/entity_pickup.js create mode 100644 source/entity_pickup_grenadelauncher.js create mode 100644 source/entity_pickup_grenades.js create mode 100644 source/entity_pickup_health.js create mode 100644 source/entity_pickup_key.js create mode 100644 source/entity_pickup_nailgun.js create mode 100644 source/entity_pickup_nails.js create mode 100755 source/entity_player.js create mode 100644 source/entity_projectile_gib.js create mode 100644 source/entity_projectile_grenade.js create mode 100755 source/entity_projectile_nail.js create mode 100644 source/entity_projectile_plasma.js create mode 100644 source/entity_projectile_shell.js create mode 100644 source/entity_torch.js create mode 100644 source/entity_trigger_level.js create mode 100755 source/game.js create mode 100755 source/html_template.html create mode 100755 source/input.js create mode 100755 source/main.js create mode 100755 source/map.js create mode 100755 source/math_utils.js create mode 100755 source/model.js create mode 100644 source/music.js create mode 100755 source/renderer.js create mode 100644 source/textures.js create mode 100644 source/ttt.js create mode 100644 source/weapons.js create mode 100644 source/wrap_post.js create mode 100644 source/wrap_pre.js diff --git a/.gitignore b/.gitignore new file mode 100755 index 0000000..bba51cb --- /dev/null +++ b/.gitignore @@ -0,0 +1,6 @@ +node_modules +package.json +package-lock.json +autosave/ +\#* +*~ diff --git a/LICENSE.md b/LICENSE.md new file mode 100755 index 0000000..8a9f2cc --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2021 Dominic Szablewski + +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. diff --git a/README.md b/README.md new file mode 100755 index 0000000..ded10ac --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +# Q1K3 - A JS13k GAME + +My entry for the 2021 [js13k](https://js13kgames.com/) competition. + +Play here: https://phoboslab.org/q1k3/ + +### Controls +- Movement: WASD or Arrow Keys +- Attack: Left Mouse Button +- Jump: Space or Right Mouse Button +- Switch Weapon: Q/E or Mousewheel + +### Features +- 2 Levels +- 5 Types of enemies +- 3 Weapons +- 30 different textures +- Music from Andy Lösch: [no-fate](http://no-fate.net/) +- Dynamic lighting +- Doors(!) +- Somewhat robust collision detection, even for fast moving objects +- Enemy AI with line of sight checks. No pathfinding, but still does a reasonable job following the player +- "Spacial" Audio (Stero separation and falloff by distance) +- Maps build with [TrenchBroom](https://trenchbroom.github.io/) +- A map compiler written in C (used during build) + +### Libs used +- [Tiny Texture Tumbler](https://github.com/phoboslab/ttt) for texture generation +- A minified fork of [Sonant-X](https://github.com/nicolas-van/sonant-x) for sounds and music + + +### License +MIT Licensed + +Please be aware that this projects makes use of Sonant-X (albeit heavily modified) +which is published under the zlib license. diff --git a/assets/maps/m1.map b/assets/maps/m1.map new file mode 100644 index 0000000..ff1f1ab --- /dev/null +++ b/assets/maps/m1.map @@ -0,0 +1,3516 @@ +// Game: qu1k3 +// Format: Standard +// entity 0 +{ +"message" "the Slipgate Complex" +"wad" "gfx/base.wad" +"classname" "worldspawn" +"sounds" "6" +"worldtype" "2" +"_tb_textures" "assets/textures" +// brush 0 +{ +( 1056 128 688 ) ( 1056 64 688 ) ( 1056 64 624 ) 8 0 0 0 1 1 +( 1056 64 688 ) ( 1120 64 688 ) ( 1120 64 624 ) 8 0 0 0 1 1 +( 1120 128 672 ) ( 1056 128 672 ) ( 1056 64 672 ) 8 0 0 0 1 1 +( 1056 64 688 ) ( 1056 128 688 ) ( 1120 128 688 ) 8 0 0 0 1 1 +( 1120 128 688 ) ( 1056 128 688 ) ( 1056 128 624 ) 8 0 0 0 1 1 +( 1120 64 688 ) ( 1120 128 688 ) ( 1120 128 624 ) 8 0 0 0 1 1 +} +// brush 1 +{ +( 960 776 624 ) ( 960 584 624 ) ( 960 584 608 ) 9 0 0 0 1 1 +( 1008 416 624 ) ( 1200 416 624 ) ( 1200 416 608 ) 9 0 0 0 1 1 +( 1200 704 608 ) ( 1008 704 608 ) ( 1008 512 608 ) 9 0 0 0 1 1 +( 1008 512 624 ) ( 1008 704 624 ) ( 1200 704 624 ) 9 0 0 0 1 1 +( 1144 1216 624 ) ( 952 1216 624 ) ( 952 1216 608 ) 9 0 0 0 1 1 +( 1216 504 624 ) ( 1216 696 624 ) ( 1216 696 608 ) 9 0 0 0 1 1 +} +// brush 2 +{ +( 832 640 640 ) ( 832 584 640 ) ( 832 584 624 ) 6 0 0 0 1 1 +( 928 480 800 ) ( 944 480 800 ) ( 944 480 608 ) 6 0 0 0 1 1 +( 944 576 736 ) ( 928 576 736 ) ( 928 512 736 ) 6 0 0 0 1 1 +( 928 584 832 ) ( 928 640 832 ) ( 944 640 832 ) 6 0 0 0 1 1 +( 936 768 800 ) ( 920 768 800 ) ( 920 768 608 ) 6 0 0 0 1 1 +( 928 584 640 ) ( 928 640 640 ) ( 928 640 624 ) 6 0 0 0 1 1 +} +// brush 3 +{ +( 832 784 816 ) ( 832 496 816 ) ( 832 496 624 ) 12 0 0 0 1 1 +( 856 480 816 ) ( 872 480 816 ) ( 872 480 624 ) 12 0 0 0 1 1 +( 864 784 672 ) ( 848 784 672 ) ( 848 496 672 ) 12 0 0 0 1 1 +( 848 496 736 ) ( 848 784 736 ) ( 864 784 736 ) 12 0 0 0 1 1 +( 872 768 816 ) ( 856 768 816 ) ( 856 768 624 ) 12 0 0 0 1 1 +( 864 496 816 ) ( 864 784 816 ) ( 864 784 624 ) 12 0 0 0 1 1 +} +// brush 4 +{ +( 864 768 672 ) ( 864 512 672 ) ( 864 512 608 ) 6 0 0 0 1 1 +( 864 480 672 ) ( 928 480 672 ) ( 928 480 608 ) 6 0 0 0 1 1 +( 928 768 640 ) ( 864 768 640 ) ( 864 512 640 ) 6 0 0 0 1 1 +( 864 512 672 ) ( 864 768 672 ) ( 928 768 672 ) 6 0 0 0 1 1 +( 928 768 672 ) ( 864 768 672 ) ( 864 768 608 ) 6 0 0 0 1 1 +( 928 512 672 ) ( 928 768 672 ) ( 928 768 608 ) 6 0 0 0 1 1 +} +// brush 5 +{ +( 928 832 640 ) ( 928 448 640 ) ( 928 448 624 ) 4 0 0 0 1 1 +( 944 448 640 ) ( 1008 448 640 ) ( 1008 448 624 ) 4 0 0 0 1 1 +( 1008 832 624 ) ( 944 832 624 ) ( 944 448 624 ) 4 0 0 0 1 1 +( 944 448 640 ) ( 944 832 640 ) ( 1008 832 640 ) 4 0 0 0 1 1 +( 1008 832 640 ) ( 944 832 640 ) ( 944 832 624 ) 4 0 0 0 1 1 +( 992 448 640 ) ( 992 832 640 ) ( 992 832 624 ) 4 0 0 0 1 1 +} +// brush 6 +{ +( 832 496 640 ) ( 832 448 640 ) ( 832 448 624 ) 1 0 0 0 1 1 +( 944 416 640 ) ( 976 416 640 ) ( 976 416 624 ) 1 0 0 0 1 1 +( 976 496 640 ) ( 944 496 640 ) ( 944 448 640 ) 1 0 0 0 1 1 +( 944 448 816 ) ( 944 496 816 ) ( 976 496 816 ) 1 0 0 0 1 1 +( 976 480 640 ) ( 944 480 640 ) ( 944 480 624 ) 1 0 0 0 1 1 +( 960 448 640 ) ( 960 496 640 ) ( 960 496 624 ) 1 0 0 0 1 1 +} +// brush 7 +{ +( 1248 496 640 ) ( 1248 448 640 ) ( 1248 448 624 ) 1 0 0 0 1 1 +( 1232 416 640 ) ( 1264 416 640 ) ( 1264 416 624 ) 1 0 0 0 1 1 +( 1264 496 640 ) ( 1232 496 640 ) ( 1232 448 640 ) 1 0 0 0 1 1 +( 1232 448 816 ) ( 1232 496 816 ) ( 1264 496 816 ) 1 0 0 0 1 1 +( 1264 512 640 ) ( 1232 512 640 ) ( 1232 512 624 ) 1 0 0 0 1 1 +( 1280 448 640 ) ( 1280 496 640 ) ( 1280 496 624 ) 1 0 0 0 1 1 +} +// brush 8 +{ +( 1344 784 624 ) ( 1344 784 816 ) ( 1344 496 816 ) 12 0 0 0 1 1 +( 1336 416 624 ) ( 1336 416 816 ) ( 1352 416 816 ) 12 0 0 0 1 1 +( 1360 496 672 ) ( 1360 784 672 ) ( 1344 784 672 ) 12 0 0 0 1 1 +( 1344 784 736 ) ( 1360 784 736 ) ( 1360 496 736 ) 12 0 0 0 1 1 +( 1352 768 624 ) ( 1352 768 816 ) ( 1336 768 816 ) 12 0 0 0 1 1 +( 1376 496 624 ) ( 1376 496 816 ) ( 1376 784 816 ) 12 0 0 0 1 1 +} +// brush 9 +{ +( 1280 768 608 ) ( 1280 768 672 ) ( 1280 512 672 ) 6 0 0 0 1 1 +( 1280 416 608 ) ( 1280 416 672 ) ( 1344 416 672 ) 6 0 0 0 1 1 +( 1344 512 640 ) ( 1344 768 640 ) ( 1280 768 640 ) 6 0 0 0 1 1 +( 1280 768 672 ) ( 1344 768 672 ) ( 1344 512 672 ) 6 0 0 0 1 1 +( 1344 768 608 ) ( 1344 768 672 ) ( 1280 768 672 ) 6 0 0 0 1 1 +( 1344 512 608 ) ( 1344 512 672 ) ( 1344 768 672 ) 6 0 0 0 1 1 +} +// brush 10 +{ +( 1280 768 688 ) ( 1280 768 752 ) ( 1280 736 752 ) 1 0 0 0 1 1 +( 1296 416 688 ) ( 1296 416 752 ) ( 1336 416 752 ) 1 0 0 0 1 1 +( 1320 736 736 ) ( 1320 768 736 ) ( 1280 768 736 ) 1 0 0 0 1 1 +( 1280 768 832 ) ( 1320 768 832 ) ( 1320 736 832 ) 1 0 0 0 1 1 +( 1320 768 688 ) ( 1320 768 752 ) ( 1280 768 752 ) 1 0 0 0 1 1 +( 1344 512 688 ) ( 1344 512 752 ) ( 1344 544 752 ) 1 0 0 0 1 1 +} +// brush 11 +{ +( 1216 832 624 ) ( 1216 832 640 ) ( 1216 448 640 ) 4 0 0 0 1 1 +( 1200 448 624 ) ( 1200 448 640 ) ( 1264 448 640 ) 4 0 0 0 1 1 +( 1264 448 624 ) ( 1264 832 624 ) ( 1200 832 624 ) 4 0 0 0 1 1 +( 1200 832 640 ) ( 1264 832 640 ) ( 1264 448 640 ) 4 0 0 0 1 1 +( 1272 1216 624 ) ( 1272 1216 640 ) ( 1208 1216 640 ) 4 0 0 0 1 1 +( 1344 448 624 ) ( 1344 448 640 ) ( 1344 832 640 ) 4 0 0 0 1 1 +} +// brush 12 +{ +( 1248 832 640 ) ( 1248 784 640 ) ( 1248 784 624 ) 3 0 0 0 1 1 +( 1232 768 640 ) ( 1264 768 640 ) ( 1264 768 624 ) 3 0 0 0 1 1 +( 1264 832 640 ) ( 1232 832 640 ) ( 1232 784 640 ) 3 0 0 0 1 1 +( 1232 784 832 ) ( 1232 832 832 ) ( 1264 832 832 ) 3 0 0 0 1 1 +( 1264 896 640 ) ( 1232 896 640 ) ( 1232 896 624 ) 3 0 0 0 1 1 +( 1344 784 640 ) ( 1344 832 640 ) ( 1344 832 624 ) 3 0 0 0 1 1 +} +// brush 13 +{ +( 960 832 816 ) ( 960 784 816 ) ( 960 784 640 ) 7 0 0 270 1 -1 +( 976 768 816 ) ( 1016 768 816 ) ( 1016 768 640 ) 7 0 0 270 1 -1 +( 1016 832 800 ) ( 976 832 800 ) ( 976 784 800 ) 7 0 0 270 1 -1 +( 976 784 832 ) ( 976 832 832 ) ( 1016 832 832 ) 7 0 0 270 1 -1 +( 1016 832 816 ) ( 976 832 816 ) ( 976 832 640 ) 7 0 0 270 1 -1 +( 1248 784 816 ) ( 1248 832 816 ) ( 1248 832 640 ) 7 0 0 270 1 -1 +} +// brush 14 +{ +( 992 240 672 ) ( 992 128 672 ) ( 992 128 656 ) 4 0 0 0 1 1 +( 1008 32 672 ) ( 1200 32 672 ) ( 1200 32 656 ) 4 0 0 0 1 1 +( 1200 240 656 ) ( 1008 240 656 ) ( 1008 128 656 ) 4 0 0 0 1 1 +( 1008 128 672 ) ( 1008 240 672 ) ( 1200 240 672 ) 4 0 0 0 1 1 +( 1200 224 672 ) ( 1008 224 672 ) ( 1008 224 656 ) 4 0 0 0 1 1 +( 1216 128 672 ) ( 1216 240 672 ) ( 1216 240 656 ) 4 0 0 0 1 1 +} +// brush 15 +{ +( 1184 432 816 ) ( 1184 400 816 ) ( 1184 400 624 ) 1 0 0 0 1 1 +( 1176 32 816 ) ( 1192 32 816 ) ( 1192 32 624 ) 1 0 0 0 1 1 +( 1200 432 624 ) ( 1184 432 624 ) ( 1184 400 624 ) 1 0 0 0 1 1 +( 1184 400 816 ) ( 1184 432 816 ) ( 1200 432 816 ) 1 0 0 0 1 1 +( 1200 416 816 ) ( 1184 416 816 ) ( 1184 416 624 ) 1 0 0 0 1 1 +( 1344 400 816 ) ( 1344 432 816 ) ( 1344 432 624 ) 1 0 0 0 1 1 +} +// brush 16 +{ +( 960 432 816 ) ( 960 400 816 ) ( 960 400 624 ) 1 0 0 0 1 1 +( 968 32 816 ) ( 984 32 816 ) ( 984 32 624 ) 1 0 0 0 1 1 +( 992 432 624 ) ( 976 432 624 ) ( 976 400 624 ) 1 0 0 0 1 1 +( 976 400 816 ) ( 976 432 816 ) ( 992 432 816 ) 1 0 0 0 1 1 +( 992 416 816 ) ( 976 416 816 ) ( 976 416 624 ) 1 0 0 0 1 1 +( 992 400 816 ) ( 992 432 816 ) ( 992 432 624 ) 1 0 0 0 1 1 +} +// brush 17 +{ +( 992 32 816 ) ( 992 16 816 ) ( 992 16 624 ) 1 0 0 0 1 1 +( 992 0 816 ) ( 1216 0 816 ) ( 1216 0 624 ) 1 0 0 0 1 1 +( 1216 32 624 ) ( 992 32 624 ) ( 992 16 624 ) 1 0 0 0 1 1 +( 992 16 816 ) ( 992 32 816 ) ( 1216 32 816 ) 1 0 0 0 1 1 +( 1216 32 816 ) ( 992 32 816 ) ( 992 32 624 ) 1 0 0 0 1 1 +( 1200 16 816 ) ( 1200 32 816 ) ( 1200 32 624 ) 1 0 0 0 1 1 +} +// brush 18 +{ +( 992 384 816 ) ( 992 352 816 ) ( 992 352 624 ) 6 0 0 0 1 1 +( 992 352 816 ) ( 1008 352 816 ) ( 1008 352 624 ) 6 0 0 0 1 1 +( 1008 384 624 ) ( 992 384 624 ) ( 992 352 624 ) 6 0 0 0 1 1 +( 992 352 816 ) ( 992 384 816 ) ( 1008 384 816 ) 6 0 0 0 1 1 +( 1008 384 816 ) ( 992 384 816 ) ( 992 384 624 ) 6 0 0 0 1 1 +( 1024 352 816 ) ( 1024 384 816 ) ( 1024 384 624 ) 6 0 0 0 1 1 +} +// brush 19 +{ +( 1152 384 816 ) ( 1152 352 816 ) ( 1152 352 624 ) 6 0 0 0 1 1 +( 1176 352 816 ) ( 1192 352 816 ) ( 1192 352 624 ) 6 0 0 0 1 1 +( 1192 384 624 ) ( 1176 384 624 ) ( 1176 352 624 ) 6 0 0 0 1 1 +( 1176 352 816 ) ( 1176 384 816 ) ( 1192 384 816 ) 6 0 0 0 1 1 +( 1192 384 816 ) ( 1176 384 816 ) ( 1176 384 624 ) 6 0 0 0 1 1 +( 1184 352 816 ) ( 1184 384 816 ) ( 1184 384 624 ) 6 0 0 0 1 1 +} +// brush 20 +{ +( 992 256 816 ) ( 992 224 816 ) ( 992 224 624 ) 6 0 0 0 1 1 +( 992 224 816 ) ( 1008 224 816 ) ( 1008 224 624 ) 6 0 0 0 1 1 +( 1008 256 624 ) ( 992 256 624 ) ( 992 224 624 ) 6 0 0 0 1 1 +( 992 224 816 ) ( 992 256 816 ) ( 1008 256 816 ) 6 0 0 0 1 1 +( 1008 256 816 ) ( 992 256 816 ) ( 992 256 624 ) 6 0 0 0 1 1 +( 1024 224 816 ) ( 1024 256 816 ) ( 1024 256 624 ) 6 0 0 0 1 1 +} +// brush 21 +{ +( 1152 256 816 ) ( 1152 224 816 ) ( 1152 224 624 ) 6 0 0 0 1 1 +( 1160 224 816 ) ( 1176 224 816 ) ( 1176 224 624 ) 6 0 0 0 1 1 +( 1176 256 624 ) ( 1160 256 624 ) ( 1160 224 624 ) 6 0 0 0 1 1 +( 1160 224 816 ) ( 1160 256 816 ) ( 1176 256 816 ) 6 0 0 0 1 1 +( 1176 256 816 ) ( 1160 256 816 ) ( 1160 256 624 ) 6 0 0 0 1 1 +( 1184 224 816 ) ( 1184 256 816 ) ( 1184 256 624 ) 6 0 0 0 1 1 +} +// brush 22 +{ +( 992 128 816 ) ( 992 96 816 ) ( 992 96 624 ) 6 0 0 0 1 1 +( 992 96 816 ) ( 1008 96 816 ) ( 1008 96 624 ) 6 0 0 0 1 1 +( 1008 128 624 ) ( 992 128 624 ) ( 992 96 624 ) 6 0 0 0 1 1 +( 992 96 816 ) ( 992 128 816 ) ( 1008 128 816 ) 6 0 0 0 1 1 +( 1008 128 816 ) ( 992 128 816 ) ( 992 128 624 ) 6 0 0 0 1 1 +( 1024 96 816 ) ( 1024 128 816 ) ( 1024 128 624 ) 6 0 0 0 1 1 +} +// brush 23 +{ +( 1152 128 816 ) ( 1152 96 816 ) ( 1152 96 624 ) 6 0 0 0 1 1 +( 1160 96 816 ) ( 1176 96 816 ) ( 1176 96 624 ) 6 0 0 0 1 1 +( 1176 128 624 ) ( 1160 128 624 ) ( 1160 96 624 ) 6 0 0 0 1 1 +( 1160 96 816 ) ( 1160 128 816 ) ( 1176 128 816 ) 6 0 0 0 1 1 +( 1176 128 816 ) ( 1160 128 816 ) ( 1160 128 624 ) 6 0 0 0 1 1 +( 1184 96 816 ) ( 1184 128 816 ) ( 1184 128 624 ) 6 0 0 0 1 1 +} +// brush 24 +{ +( 1024 384 816 ) ( 1024 352 816 ) ( 1024 352 624 ) 6 0 0 0 1 1 +( 1016 352 816 ) ( 1160 352 816 ) ( 1160 352 624 ) 6 0 0 0 1 1 +( 1160 384 784 ) ( 1016 384 784 ) ( 1016 352 784 ) 6 0 0 270 1 -1 +( 1016 352 816 ) ( 1016 384 816 ) ( 1160 384 816 ) 6 0 0 0 1 1 +( 1160 384 816 ) ( 1016 384 816 ) ( 1016 384 624 ) 6 0 0 0 1 1 +( 1152 352 816 ) ( 1152 384 816 ) ( 1152 384 624 ) 6 0 0 0 1 1 +} +// brush 25 +{ +( 1024 256 816 ) ( 1024 224 816 ) ( 1024 224 624 ) 6 0 0 0 1 1 +( 1032 224 816 ) ( 1176 224 816 ) ( 1176 224 624 ) 6 0 0 0 1 1 +( 1176 256 784 ) ( 1032 256 784 ) ( 1032 224 784 ) 6 0 0 0 1 1 +( 1032 224 816 ) ( 1032 256 816 ) ( 1176 256 816 ) 6 0 0 0 1 1 +( 1176 256 816 ) ( 1032 256 816 ) ( 1032 256 624 ) 6 0 0 0 1 1 +( 1152 224 816 ) ( 1152 256 816 ) ( 1152 256 624 ) 6 0 0 0 1 1 +} +// brush 26 +{ +( 1024 128 816 ) ( 1024 96 816 ) ( 1024 96 624 ) 6 0 0 0 1 1 +( 1032 96 816 ) ( 1176 96 816 ) ( 1176 96 624 ) 6 0 0 0 1 1 +( 1176 128 784 ) ( 1032 128 784 ) ( 1032 96 784 ) 6 0 0 270 1 -1 +( 1032 96 816 ) ( 1032 128 816 ) ( 1176 128 816 ) 6 0 0 0 1 1 +( 1176 128 816 ) ( 1032 128 816 ) ( 1032 128 624 ) 6 0 0 0 1 1 +( 1152 96 816 ) ( 1152 128 816 ) ( 1152 128 624 ) 6 0 0 0 1 1 +} +// brush 27 +{ +( 928 960 656 ) ( 928 832 656 ) ( 928 832 640 ) 4 0 0 0 1 1 +( 944 832 656 ) ( 1008 832 656 ) ( 1008 832 640 ) 4 0 0 0 1 1 +( 1008 960 624 ) ( 944 960 624 ) ( 944 832 624 ) 4 0 0 0 1 1 +( 944 832 656 ) ( 944 960 656 ) ( 1008 960 656 ) 4 0 0 0 1 1 +( 1008 960 656 ) ( 944 960 656 ) ( 944 960 640 ) 4 0 0 0 1 1 +( 1024 832 656 ) ( 1024 960 656 ) ( 1024 960 640 ) 4 0 0 0 1 1 +} +// brush 28 +{ +( 960 1152 672 ) ( 960 1088 672 ) ( 960 1088 640 ) 9 0 0 0 1 1 +( 944 1088 672 ) ( 1008 1088 672 ) ( 1008 1088 640 ) 9 0 0 0 1 1 +( 1008 1152 672 ) ( 944 1152 672 ) ( 944 1088 672 ) 9 0 0 0 1 1 +( 944 1088 688 ) ( 944 1152 688 ) ( 1008 1152 688 ) 9 0 0 0 1 1 +( 1008 1216 672 ) ( 944 1216 672 ) ( 944 1216 640 ) 9 0 0 0 1 1 +( 1024 1088 672 ) ( 1024 1152 672 ) ( 1024 1152 640 ) 9 0 0 0 1 1 +} +// brush 29 +{ +( 1024 1208 656 ) ( 1024 1144 656 ) ( 1024 1144 624 ) 9 0 0 0 1 1 +( 944 1152 656 ) ( 1008 1152 656 ) ( 1008 1152 624 ) 9 0 0 0 1 1 +( 1008 1216 672 ) ( 944 1216 672 ) ( 944 1152 672 ) 9 0 0 0 1 1 +( 944 1152 688 ) ( 944 1216 688 ) ( 1008 1216 688 ) 9 0 0 0 1 1 +( 1008 1216 656 ) ( 944 1216 656 ) ( 944 1216 624 ) 9 0 0 0 1 1 +( 1328 1144 656 ) ( 1328 1208 656 ) ( 1328 1208 624 ) 9 0 0 0 1 1 +} +// brush 30 +{ +( 832 936 832 ) ( 832 864 832 ) ( 832 864 624 ) 1 0 0 0 1 1 +( 912 832 832 ) ( 928 832 832 ) ( 928 832 624 ) 1 0 0 0 1 1 +( 928 936 624 ) ( 912 936 624 ) ( 912 864 624 ) 1 0 0 0 1 1 +( 912 864 832 ) ( 912 936 832 ) ( 928 936 832 ) 1 0 0 0 1 1 +( 944 960 832 ) ( 928 960 832 ) ( 928 960 624 ) 1 0 0 0 1 1 +( 928 864 832 ) ( 928 936 832 ) ( 928 936 624 ) 1 0 0 0 1 1 +} +// brush 31 +{ +( 736 1216 832 ) ( 736 1136 832 ) ( 736 1136 624 ) 2 0 0 0 1 1 +( 928 1120 832 ) ( 944 1120 832 ) ( 944 1120 624 ) 2 0 0 0 1 1 +( 944 1216 384 ) ( 928 1216 384 ) ( 928 1136 384 ) 2 0 0 0 1 1 +( 928 1136 832 ) ( 928 1216 832 ) ( 944 1216 832 ) 2 0 0 0 1 1 +( 944 1216 832 ) ( 928 1216 832 ) ( 928 1216 624 ) 2 0 0 0 1 1 +( 960 1136 832 ) ( 960 1216 832 ) ( 960 1216 624 ) 2 0 0 0 1 1 +} +// brush 32 +{ +( 1248 1120 832 ) ( 1248 864 832 ) ( 1248 864 624 ) 1 0 0 0 1 1 +( 1232 896 832 ) ( 1264 896 832 ) ( 1264 896 624 ) 1 0 0 0 1 1 +( 1264 1120 624 ) ( 1232 1120 624 ) ( 1232 864 624 ) 1 0 0 0 1 1 +( 1232 864 832 ) ( 1232 1120 832 ) ( 1264 1120 832 ) 1 0 0 0 1 1 +( 1240 992 624 ) ( 1240 992 832 ) ( 1232 992 832 ) 1 0 0 0 1 1 +( 1280 976 832 ) ( 1280 1008 832 ) ( 1280 1008 624 ) 1 0 0 0 1 1 +} +// brush 33 +{ +( 928 928 832 ) ( 928 896 832 ) ( 928 896 816 ) 7 0 0 0 1 1 +( 1216 896 832 ) ( 1232 896 832 ) ( 1232 896 816 ) 7 0 0 0 1 1 +( 1232 928 800 ) ( 1216 928 800 ) ( 1216 896 800 ) 7 0 0 0 1 1 +( 1216 896 832 ) ( 1216 928 832 ) ( 1232 928 832 ) 7 0 0 0 1 1 +( 1232 928 832 ) ( 1216 928 832 ) ( 1216 928 816 ) 7 0 0 0 1 1 +( 1248 896 832 ) ( 1248 928 832 ) ( 1248 928 816 ) 7 0 0 0 1 1 +} +// brush 34 +{ +( 896 1072 832 ) ( 896 1040 832 ) ( 896 1040 816 ) 7 0 0 0 1 1 +( 1216 1024 832 ) ( 1232 1024 832 ) ( 1232 1024 816 ) 7 0 0 0 1 1 +( 1232 1056 800 ) ( 1216 1056 800 ) ( 1216 1024 800 ) 7 0 0 0 1 1 +( 1216 1024 832 ) ( 1216 1056 832 ) ( 1232 1056 832 ) 7 0 0 0 1 1 +( 1232 1056 832 ) ( 1216 1056 832 ) ( 1216 1056 816 ) 7 0 0 0 1 1 +( 1344 1024 832 ) ( 1344 1056 832 ) ( 1344 1056 816 ) 7 0 0 0 1 1 +} +// brush 35 +{ +( 1088 1088 832 ) ( 1088 1072 832 ) ( 1088 1072 816 ) 7 0 0 0 1 1 +( 1088 1056 832 ) ( 1120 1056 832 ) ( 1120 1056 816 ) 7 0 0 0 1 1 +( 1120 1088 800 ) ( 1088 1088 800 ) ( 1088 1072 800 ) 7 0 0 0 1 1 +( 1088 1072 832 ) ( 1088 1088 832 ) ( 1120 1088 832 ) 7 0 0 0 1 1 +( 1120 1216 832 ) ( 1088 1216 832 ) ( 1088 1216 816 ) 7 0 0 0 1 1 +( 1120 1072 832 ) ( 1120 1088 832 ) ( 1120 1088 816 ) 7 0 0 0 1 1 +} +// brush 36 +{ +( 736 1144 656 ) ( 736 888 656 ) ( 736 888 608 ) 9 0 0 0 1 1 +( 880 928 656 ) ( 928 928 656 ) ( 928 928 608 ) 9 0 0 0 1 1 +( 928 1152 608 ) ( 880 1152 608 ) ( 880 896 608 ) 9 0 0 0 1 1 +( 880 896 624 ) ( 880 1152 624 ) ( 928 1152 624 ) 9 0 0 0 1 1 +( 928 1120 656 ) ( 880 1120 656 ) ( 880 1120 608 ) 9 0 0 0 1 1 +( 960 896 656 ) ( 960 1152 656 ) ( 960 1152 608 ) 9 0 0 0 1 1 +} +// brush 37 +{ +( 1344 1232 832 ) ( 1344 1200 832 ) ( 1344 1200 624 ) 1 0 0 0 1 1 +( 1368 896 832 ) ( 1384 896 832 ) ( 1384 896 624 ) 1 0 0 0 1 1 +( 1376 1232 640 ) ( 1360 1232 640 ) ( 1360 1200 640 ) 1 0 0 0 1 1 +( 1360 1200 832 ) ( 1360 1232 832 ) ( 1376 1232 832 ) 1 0 0 0 1 1 +( 1376 1216 688 ) ( 1376 1216 832 ) ( 1360 1216 832 ) 1 0 0 0 1 1 +( 1376 1200 832 ) ( 1376 1232 832 ) ( 1376 1232 624 ) 1 0 0 0 1 1 +} +// brush 38 +{ +( 1280 1152 704 ) ( 1280 896 704 ) ( 1280 896 688 ) 9 0 0 0 1 1 +( 1264 896 704 ) ( 1360 896 704 ) ( 1360 896 688 ) 9 0 0 0 1 1 +( 1360 1152 688 ) ( 1264 1152 688 ) ( 1264 896 688 ) 9 0 0 0 1 1 +( 1264 896 704 ) ( 1264 1152 704 ) ( 1360 1152 704 ) 9 0 0 0 1 1 +( 1360 1216 704 ) ( 1264 1216 704 ) ( 1264 1216 688 ) 9 0 0 0 1 1 +( 1344 896 704 ) ( 1344 1152 704 ) ( 1344 1152 688 ) 9 0 0 0 1 1 +} +// brush 39 +{ +( 576 968 768 ) ( 576 952 768 ) ( 576 952 624 ) 1 0 0 0 1 1 +( 560 928 768 ) ( 688 928 768 ) ( 688 928 624 ) 1 0 0 0 1 1 +( 688 960 368 ) ( 560 960 368 ) ( 560 944 368 ) 1 0 0 0 1 1 +( 560 944 768 ) ( 560 960 768 ) ( 688 960 768 ) 1 0 0 0 1 1 +( 688 960 768 ) ( 560 960 768 ) ( 560 960 624 ) 1 0 0 0 1 1 +( 704 944 768 ) ( 704 960 768 ) ( 704 960 624 ) 1 0 0 0 1 1 +} +// brush 40 +{ +( 576 1104 400 ) ( 576 1088 400 ) ( 576 1088 384 ) 3 0 0 0 1 1 +( 560 1088 768 ) ( 688 1088 768 ) ( 688 1088 624 ) 3 0 0 0 1 1 +( 656 1104 480 ) ( 592 1104 480 ) ( 592 1088 480 ) 3 0 0 0 1 1 +( 560 1088 768 ) ( 560 1104 768 ) ( 688 1104 768 ) 3 0 0 0 1 1 +( 688 1152 768 ) ( 560 1152 768 ) ( 560 1152 624 ) 3 0 0 0 1 1 +( 736 1088 400 ) ( 736 1104 400 ) ( 736 1104 384 ) 3 0 0 0 1 1 +} +// brush 41 +{ +( 544 1104 768 ) ( 544 944 768 ) ( 544 944 368 ) 1 0 0 0 1 1 +( 544 928 768 ) ( 560 928 768 ) ( 560 928 368 ) 1 0 0 0 1 1 +( 560 1104 480 ) ( 544 1104 480 ) ( 544 944 480 ) 1 0 0 0 1 1 +( 544 944 768 ) ( 544 1104 768 ) ( 560 1104 768 ) 1 0 0 0 1 1 +( 560 1120 768 ) ( 544 1120 768 ) ( 544 1120 368 ) 1 0 0 0 1 1 +( 576 1008 656 ) ( 576 1008 672 ) ( 576 1040 672 ) 1 0 0 0 1 1 +} +// brush 42 +{ +( 704 1104 768 ) ( 704 944 768 ) ( 704 944 368 ) 2 0 0 0 1 1 +( 704 928 768 ) ( 720 928 768 ) ( 720 928 368 ) 2 0 0 0 1 1 +( 720 1104 368 ) ( 704 1104 368 ) ( 704 944 368 ) 2 0 0 0 1 1 +( 704 944 608 ) ( 704 1104 608 ) ( 720 1104 608 ) 2 0 0 0 1 1 +( 720 1184 768 ) ( 704 1184 768 ) ( 704 1184 368 ) 2 0 0 0 1 1 +( 736 944 768 ) ( 736 1104 768 ) ( 736 1104 368 ) 2 0 0 0 1 1 +} +// brush 43 +{ +( 544 1088 384 ) ( 544 976 384 ) ( 544 976 368 ) 9 0 0 0 1 1 +( 568 960 384 ) ( 656 960 384 ) ( 656 960 368 ) 9 0 0 0 1 1 +( 648 1088 368 ) ( 560 1088 368 ) ( 560 976 368 ) 9 0 0 0 1 1 +( 560 976 384 ) ( 560 1088 384 ) ( 648 1088 384 ) 9 0 0 0 1 1 +( 648 1120 384 ) ( 560 1120 384 ) ( 560 1120 368 ) 9 0 0 0 1 1 +( 704 984 384 ) ( 704 1096 384 ) ( 704 1096 368 ) 9 0 0 0 1 1 +} +// brush 44 +{ +( 448 1280 400 ) ( 448 1152 400 ) ( 448 1152 384 ) 10 0 0 0 1 1 +( 496 1344 400 ) ( 752 1344 400 ) ( 752 1344 384 ) 10 0 0 0 1 1 +( 752 1280 384 ) ( 496 1280 384 ) ( 496 1152 384 ) 10 0 0 0 1 1 +( 496 1152 400 ) ( 496 1280 400 ) ( 752 1280 400 ) 10 0 0 0 1 1 +( 744 1536 400 ) ( 488 1536 400 ) ( 488 1536 384 ) 10 0 0 0 1 1 +( 992 1144 400 ) ( 992 1272 400 ) ( 992 1272 384 ) 10 0 0 0 1 1 +} +// brush 45 +{ +( 320 1376 832 ) ( 320 1280 832 ) ( 320 1280 384 ) 11 0 0 0 1 1 +( 416 1152 832 ) ( 448 1152 832 ) ( 448 1152 384 ) 11 0 0 0 1 1 +( 448 1376 368 ) ( 416 1376 368 ) ( 416 1280 368 ) 11 0 0 0 1 1 +( 416 1280 752 ) ( 416 1376 752 ) ( 448 1376 752 ) 11 0 0 0 1 1 +( 448 1424 832 ) ( 416 1424 832 ) ( 416 1424 384 ) 11 0 0 0 1 1 +( 448 1280 832 ) ( 448 1376 832 ) ( 448 1376 384 ) 11 0 0 0 1 1 +} +// brush 46 +{ +( 512 1552 384 ) ( 512 1536 384 ) ( 512 1536 368 ) 11 0 0 0 1 1 +( 528 1536 384 ) ( 552 1536 384 ) ( 552 1536 368 ) 11 0 0 0 1 1 +( 552 1552 336 ) ( 528 1552 336 ) ( 528 1536 336 ) 11 0 0 0 1 1 +( 528 1536 384 ) ( 528 1552 384 ) ( 552 1552 384 ) 11 0 0 0 1 1 +( 552 1568 384 ) ( 528 1568 384 ) ( 528 1568 368 ) 11 0 0 0 1 1 +( 992 1536 384 ) ( 992 1552 384 ) ( 992 1552 368 ) 11 0 0 0 1 1 +} +// brush 47 +{ +( 512 1800 384 ) ( 512 1784 384 ) ( 512 1784 272 ) 11 0 0 0 1 1 +( 528 1760 384 ) ( 992 1760 384 ) ( 992 1760 272 ) 11 0 0 0 1 1 +( 992 1792 288 ) ( 528 1792 288 ) ( 528 1776 288 ) 11 0 0 0 1 1 +( 528 1776 384 ) ( 528 1792 384 ) ( 992 1792 384 ) 11 0 0 0 1 1 +( 992 1792 384 ) ( 528 1792 384 ) ( 528 1792 272 ) 11 0 0 0 1 1 +( 992 1768 384 ) ( 992 1784 384 ) ( 992 1784 272 ) 11 0 0 0 1 1 +} +// brush 48 +{ +( 320 1728 832 ) ( 320 1536 832 ) ( 320 1536 288 ) 11 0 0 0 1 1 +( 432 1424 832 ) ( 528 1424 832 ) ( 528 1424 288 ) 11 0 0 0 1 1 +( 528 1728 336 ) ( 432 1728 336 ) ( 432 1536 336 ) 11 0 0 0 1 1 +( 432 1536 816 ) ( 432 1728 816 ) ( 528 1728 816 ) 11 0 0 0 1 1 +( 528 1792 832 ) ( 432 1792 832 ) ( 432 1792 288 ) 11 0 0 0 1 1 +( 512 1536 832 ) ( 512 1728 832 ) ( 512 1728 288 ) 11 0 0 0 1 1 +} +// brush 49 +{ +( 992 1728 832 ) ( 992 1536 832 ) ( 992 1536 288 ) 11 0 0 0 1 1 +( 984 1248 832 ) ( 1080 1248 832 ) ( 1080 1248 288 ) 11 0 0 0 1 1 +( 1080 1728 336 ) ( 984 1728 336 ) ( 984 1536 336 ) 11 0 0 0 1 1 +( 984 1536 784 ) ( 984 1728 784 ) ( 1080 1728 784 ) 11 0 0 0 1 1 +( 1064 1824 832 ) ( 984 1824 832 ) ( 984 1824 288 ) 11 0 0 0 1 1 +( 1216 1536 832 ) ( 1216 1728 832 ) ( 1216 1728 288 ) 11 0 0 0 1 1 +} +// brush 50 +{ +( 256 1840 400 ) ( 256 1784 400 ) ( 256 1784 384 ) 10 0 0 0 1 1 +( 536 1760 400 ) ( 712 1760 400 ) ( 712 1760 384 ) 10 0 0 0 1 1 +( 704 1840 384 ) ( 528 1840 384 ) ( 528 1784 384 ) 10 0 0 0 1 1 +( 528 1784 400 ) ( 528 1840 400 ) ( 704 1840 400 ) 10 0 0 0 1 1 +( 688 2176 400 ) ( 512 2176 400 ) ( 512 2176 384 ) 10 0 0 0 1 1 +( 1296 1768 400 ) ( 1296 1824 400 ) ( 1296 1824 384 ) 10 0 0 0 1 1 +} +// brush 51 +{ +( 640 1776 416 ) ( 640 1536 416 ) ( 640 1536 400 ) 4 0 0 0 1 1 +( 688 1504 416 ) ( 816 1504 416 ) ( 816 1504 400 ) 4 0 0 0 1 1 +( 816 1776 400 ) ( 688 1776 400 ) ( 688 1536 400 ) 4 0 0 0 1 1 +( 688 1536 416 ) ( 688 1776 416 ) ( 816 1776 416 ) 4 0 0 0 1 1 +( 816 1792 416 ) ( 688 1792 416 ) ( 688 1792 400 ) 4 0 0 0 1 1 +( 832 1536 416 ) ( 832 1776 416 ) ( 832 1776 400 ) 4 0 0 0 1 1 +} +// brush 52 +{ +( 640 1616 784 ) ( 640 1600 784 ) ( 640 1600 384 ) 2 0 0 0 1 1 +( 624 1600 784 ) ( 848 1600 784 ) ( 848 1600 384 ) 2 0 0 0 1 1 +( 848 1616 640 ) ( 624 1616 640 ) ( 624 1600 640 ) 2 0 0 0 1 1 +( 624 1600 768 ) ( 624 1616 768 ) ( 848 1616 768 ) 2 0 0 0 1 1 +( 848 2112 784 ) ( 624 2112 784 ) ( 624 2112 384 ) 2 0 0 0 1 1 +( 864 1600 784 ) ( 864 1616 784 ) ( 864 1616 384 ) 2 0 0 0 1 1 +} +// brush 53 +{ +( 608 1664 768 ) ( 608 1616 768 ) ( 608 1616 624 ) 16 0 0 0 1 1 +( 624 1632 768 ) ( 640 1632 768 ) ( 640 1632 624 ) 16 0 0 0 1 1 +( 640 1664 640 ) ( 624 1664 640 ) ( 624 1616 640 ) 16 0 0 0 1 1 +( 624 1616 768 ) ( 624 1664 768 ) ( 640 1664 768 ) 16 0 0 0 1 1 +( 632 2112 768 ) ( 616 2112 768 ) ( 616 2112 624 ) 16 0 0 0 1 1 +( 640 1616 768 ) ( 640 1664 768 ) ( 640 1664 624 ) 16 0 0 0 1 1 +} +// brush 54 +{ +( 864 1664 768 ) ( 864 1616 768 ) ( 864 1616 624 ) 16 0 0 0 1 1 +( 856 1632 768 ) ( 872 1632 768 ) ( 872 1632 624 ) 16 0 0 0 1 1 +( 880 1664 640 ) ( 864 1664 640 ) ( 864 1616 640 ) 16 0 0 0 1 1 +( 864 1616 768 ) ( 864 1664 768 ) ( 880 1664 768 ) 16 0 0 0 1 1 +( 856 2112 768 ) ( 840 2112 768 ) ( 840 2112 624 ) 16 0 0 0 1 1 +( 896 1616 768 ) ( 896 1664 768 ) ( 896 1664 624 ) 16 0 0 0 1 1 +} +// brush 55 +{ +( 576 2272 640 ) ( 576 2224 640 ) ( 576 2224 624 ) 6 0 0 0 1 1 +( 576 2272 624 ) ( 576 2272 640 ) ( 632 2272 640 ) 6 0 0 0 1 1 +( 1072 2304 624 ) ( 424 2304 624 ) ( 424 2120 624 ) 6 0 0 0 1 1 +( 424 2120 640 ) ( 424 2304 640 ) ( 1072 2304 640 ) 6 0 0 0 1 1 +( 1072 2304 640 ) ( 424 2304 640 ) ( 424 2304 624 ) 6 0 0 0 1 1 +( 608 2288 624 ) ( 608 2288 640 ) ( 608 2352 640 ) 6 0 0 0 1 1 +} +// brush 56 +{ +( 896 2352 624 ) ( 896 2352 640 ) ( 896 2288 640 ) 6 0 0 0 1 1 +( 576 2272 624 ) ( 576 2272 640 ) ( 632 2272 640 ) 6 0 0 0 1 1 +( 1072 2304 624 ) ( 424 2304 624 ) ( 424 2120 624 ) 6 0 0 0 1 1 +( 424 2120 640 ) ( 424 2304 640 ) ( 1072 2304 640 ) 6 0 0 0 1 1 +( 1072 2304 640 ) ( 424 2304 640 ) ( 424 2304 624 ) 6 0 0 0 1 1 +( 1072 2120 640 ) ( 1072 2304 640 ) ( 1072 2304 624 ) 6 0 0 0 1 1 +} +// brush 57 +{ +( 256 2208 624 ) ( 256 2192 624 ) ( 256 2192 400 ) 2 0 0 0 1 1 +( 600 2176 624 ) ( 624 2176 624 ) ( 624 2176 400 ) 2 0 0 0 1 1 +( 616 2208 400 ) ( 592 2208 400 ) ( 592 2192 400 ) 2 0 0 0 1 1 +( 592 2192 624 ) ( 592 2208 624 ) ( 616 2208 624 ) 2 0 0 0 1 1 +( 616 2304 624 ) ( 592 2304 624 ) ( 592 2304 400 ) 2 0 0 0 1 1 +( 672 2176 400 ) ( 672 2176 624 ) ( 672 2208 624 ) 2 0 0 0 1 1 +} +// brush 58 +{ +( 832 2208 400 ) ( 832 2208 624 ) ( 832 2176 624 ) 2 0 0 0 1 1 +( 592 2176 624 ) ( 616 2176 624 ) ( 616 2176 400 ) 2 0 0 0 1 1 +( 616 2208 400 ) ( 592 2208 400 ) ( 592 2192 400 ) 2 0 0 0 1 1 +( 592 2192 624 ) ( 592 2208 624 ) ( 616 2208 624 ) 2 0 0 0 1 1 +( 824 2304 624 ) ( 816 2304 624 ) ( 816 2304 400 ) 2 0 0 0 1 1 +( 1296 2160 624 ) ( 1296 2176 624 ) ( 1296 2176 400 ) 2 0 0 0 1 1 +} +// brush 59 +{ +( 672 2208 480 ) ( 672 2192 480 ) ( 672 2192 448 ) 6 0 0 0 1 1 +( 592 2144 624 ) ( 616 2144 624 ) ( 616 2144 400 ) 6 0 0 0 1 1 +( 816 2208 544 ) ( 688 2208 544 ) ( 688 2192 544 ) 6 0 0 0 1 1 +( 592 2192 624 ) ( 592 2208 624 ) ( 616 2208 624 ) 6 0 0 0 1 1 +( 616 2272 624 ) ( 592 2272 624 ) ( 592 2272 400 ) 6 0 0 0 1 1 +( 832 2192 480 ) ( 832 2208 480 ) ( 832 2208 448 ) 6 0 0 0 1 1 +} +// brush 60 +{ +( 672 2240 416 ) ( 672 2192 416 ) ( 672 2192 400 ) 9 0 0 0 1 1 +( 688 2080 416 ) ( 816 2080 416 ) ( 816 2080 400 ) 9 0 0 0 1 1 +( 816 2208 400 ) ( 688 2208 400 ) ( 688 2160 400 ) 9 0 0 0 1 1 +( 688 2160 416 ) ( 688 2208 416 ) ( 816 2208 416 ) 9 0 0 0 1 1 +( 824 2304 416 ) ( 696 2304 416 ) ( 696 2304 400 ) 9 0 0 0 1 1 +( 832 2160 416 ) ( 832 2208 416 ) ( 832 2208 400 ) 9 0 0 0 1 1 +} +// brush 61 +{ +( 320 2432 416 ) ( 320 2288 416 ) ( 320 2288 400 ) 9 0 0 0 1 1 +( 592 2304 416 ) ( 912 2304 416 ) ( 912 2304 400 ) 9 0 0 0 1 1 +( 912 2432 400 ) ( 592 2432 400 ) ( 592 2288 400 ) 9 0 0 0 1 1 +( 592 2288 416 ) ( 592 2432 416 ) ( 912 2432 416 ) 9 0 0 0 1 1 +( 920 2560 416 ) ( 600 2560 416 ) ( 600 2560 400 ) 9 0 0 0 1 1 +( 896 2288 416 ) ( 896 2432 416 ) ( 896 2432 400 ) 9 0 0 0 1 1 +} +// brush 62 +{ +( 896 1728 720 ) ( 896 1688 720 ) ( 896 1688 648 ) 16 0 0 0 1 1 +( 880 1664 720 ) ( 984 1664 720 ) ( 984 1664 648 ) 16 0 0 0 1 1 +( 984 1728 640 ) ( 880 1728 640 ) ( 880 1688 640 ) 16 0 0 0 1 1 +( 880 1688 704 ) ( 880 1728 704 ) ( 984 1728 704 ) 16 0 0 0 1 1 +( 984 1728 720 ) ( 880 1728 720 ) ( 880 1728 648 ) 16 0 0 0 1 1 +( 992 1688 720 ) ( 992 1728 720 ) ( 992 1728 648 ) 16 0 0 0 1 1 +} +// brush 63 +{ +( 512 1728 720 ) ( 512 1664 720 ) ( 512 1664 648 ) 16 0 0 0 1 1 +( 528 1664 720 ) ( 624 1664 720 ) ( 624 1664 648 ) 16 0 0 0 1 1 +( 624 1728 640 ) ( 528 1728 640 ) ( 528 1664 640 ) 16 0 0 0 1 1 +( 528 1664 704 ) ( 528 1728 704 ) ( 624 1728 704 ) 16 0 0 0 1 1 +( 624 1728 720 ) ( 528 1728 720 ) ( 528 1728 648 ) 16 0 0 0 1 1 +( 608 1664 720 ) ( 608 1728 720 ) ( 608 1728 648 ) 16 0 0 0 1 1 +} +// brush 64 +{ +( 224 1840 832 ) ( 224 1792 832 ) ( 224 1792 288 ) 11 0 0 0 1 1 +( 320 1792 832 ) ( 432 1792 832 ) ( 432 1792 288 ) 11 0 0 0 1 1 +( 432 1840 400 ) ( 320 1840 400 ) ( 320 1792 400 ) 11 0 0 0 1 1 +( 320 1792 720 ) ( 320 1840 720 ) ( 432 1840 720 ) 11 0 0 0 1 1 +( 432 1904 832 ) ( 320 1904 832 ) ( 320 1904 288 ) 11 0 0 0 1 1 +( 448 1792 832 ) ( 448 1840 832 ) ( 448 1840 288 ) 11 0 0 0 1 1 +} +// brush 65 +{ +( 896 2560 432 ) ( 896 2368 432 ) ( 896 2368 416 ) 9 0 0 0 1 1 +( 912 2304 432 ) ( 1136 2304 432 ) ( 1136 2304 416 ) 9 0 0 0 1 1 +( 1136 2560 416 ) ( 912 2560 416 ) ( 912 2368 416 ) 9 0 0 0 1 1 +( 912 2368 432 ) ( 912 2560 432 ) ( 1136 2560 432 ) 9 0 0 0 1 1 +( 1136 2624 432 ) ( 912 2624 432 ) ( 912 2624 416 ) 9 0 0 0 1 1 +( 1184 2368 432 ) ( 1184 2560 432 ) ( 1184 2560 416 ) 9 0 0 0 1 1 +} +// brush 66 +{ +( 1024 2504 448 ) ( 1024 2440 448 ) ( 1024 2440 432 ) 15 0 0 0 1 1 +( 1032 2432 448 ) ( 1088 2432 448 ) ( 1088 2432 432 ) 15 0 0 0 1 1 +( 1088 2496 432 ) ( 1032 2496 432 ) ( 1032 2432 432 ) 15 0 0 0 1 1 +( 1032 2432 592 ) ( 1032 2496 592 ) ( 1088 2496 592 ) 15 0 0 0 1 1 +( 1088 2496 448 ) ( 1032 2496 448 ) ( 1032 2496 432 ) 15 0 0 0 1 1 +( 1088 2488 432 ) ( 1088 2488 624 ) ( 1088 2496 624 ) 15 0 0 0 1 1 +} +// brush 67 +{ +( 1184 2640 624 ) ( 1184 2288 624 ) ( 1184 2288 416 ) 2 0 0 0 1 1 +( 1200 2304 624 ) ( 1216 2304 624 ) ( 1216 2304 416 ) 2 0 0 0 1 1 +( 1216 2640 416 ) ( 1200 2640 416 ) ( 1200 2288 416 ) 2 0 0 0 1 1 +( 1200 2288 624 ) ( 1200 2640 624 ) ( 1216 2640 624 ) 2 0 0 0 1 1 +( 1528 2368 496 ) ( 1528 2368 560 ) ( 1208 2368 560 ) 2 0 0 0 1 1 +( 1248 2288 624 ) ( 1248 2640 624 ) ( 1248 2640 416 ) 2 0 0 0 1 1 +} +// brush 68 +{ +( 832 2648 576 ) ( 832 2640 576 ) ( 832 2640 512 ) 12 0 0 0 1 1 +( 944 2624 576 ) ( 1048 2624 576 ) ( 1048 2624 512 ) 12 0 0 0 1 1 +( 1048 2648 560 ) ( 944 2648 560 ) ( 944 2640 560 ) 12 0 0 0 1 1 +( 944 2640 768 ) ( 944 2648 768 ) ( 1048 2648 768 ) 12 0 0 0 1 1 +( 1048 2720 576 ) ( 944 2720 576 ) ( 944 2720 512 ) 12 0 0 0 1 1 +( 1248 2640 576 ) ( 1248 2648 576 ) ( 1248 2648 512 ) 12 0 0 0 1 1 +} +// brush 69 +{ +( 1184 2640 576 ) ( 1184 2336 576 ) ( 1184 2336 560 ) 12 0 0 0 1 1 +( 1216 2368 576 ) ( 1264 2368 576 ) ( 1264 2368 560 ) 12 0 0 0 1 1 +( 1264 2640 560 ) ( 1216 2640 560 ) ( 1216 2336 560 ) 12 0 0 0 1 1 +( 1216 2336 640 ) ( 1216 2640 640 ) ( 1264 2640 640 ) 12 0 0 0 1 1 +( 1264 2624 576 ) ( 1216 2624 576 ) ( 1216 2624 560 ) 12 0 0 0 1 1 +( 1248 2336 576 ) ( 1248 2640 576 ) ( 1248 2640 560 ) 12 0 0 0 1 1 +} +// brush 70 +{ +( 896 2648 496 ) ( 896 2640 496 ) ( 896 2640 432 ) 12 0 0 0 1 1 +( 944 2624 496 ) ( 1048 2624 496 ) ( 1048 2624 432 ) 12 0 0 0 1 1 +( 1048 2648 432 ) ( 944 2648 432 ) ( 944 2640 432 ) 12 0 0 0 1 1 +( 944 2640 496 ) ( 944 2648 496 ) ( 1048 2648 496 ) 12 0 0 0 1 1 +( 1048 2688 496 ) ( 944 2688 496 ) ( 944 2688 432 ) 12 0 0 0 1 1 +( 1184 2640 496 ) ( 1184 2648 496 ) ( 1184 2648 432 ) 12 0 0 0 1 1 +} +// brush 71 +{ +( 1184 2640 496 ) ( 1184 2336 496 ) ( 1184 2336 480 ) 12 0 0 0 1 1 +( 1200 2368 496 ) ( 1248 2368 496 ) ( 1248 2368 480 ) 12 0 0 0 1 1 +( 1248 2640 432 ) ( 1200 2640 432 ) ( 1200 2336 432 ) 12 0 0 0 1 1 +( 1200 2336 496 ) ( 1200 2640 496 ) ( 1248 2640 496 ) 12 0 0 0 1 1 +( 1248 2688 496 ) ( 1200 2688 496 ) ( 1200 2688 480 ) 12 0 0 0 1 1 +( 1248 2336 496 ) ( 1248 2640 496 ) ( 1248 2640 480 ) 12 0 0 0 1 1 +} +// brush 72 +{ +( 928 2704 496 ) ( 928 2688 496 ) ( 928 2688 480 ) 2 0 0 0 1 1 +( 944 2688 496 ) ( 1264 2688 496 ) ( 1264 2688 480 ) 2 0 0 0 1 1 +( 1264 2704 64 ) ( 944 2704 64 ) ( 944 2688 64 ) 2 0 0 0 1 1 +( 944 2688 896 ) ( 944 2704 896 ) ( 1264 2704 896 ) 2 0 0 0 1 1 +( 1264 3072 496 ) ( 944 3072 496 ) ( 944 3072 480 ) 2 0 0 0 1 1 +( 1248 2680 496 ) ( 1248 2696 496 ) ( 1248 2696 480 ) 2 0 0 0 1 1 +} +// brush 73 +{ +( 512 2584 624 ) ( 512 2568 624 ) ( 512 2568 416 ) 2 0 0 0 1 1 +( 872 2560 624 ) ( 896 2560 624 ) ( 896 2560 416 ) 2 0 0 0 1 1 +( 896 2576 416 ) ( 872 2576 416 ) ( 872 2560 416 ) 2 0 0 0 1 1 +( 872 2560 656 ) ( 872 2576 656 ) ( 896 2576 656 ) 2 0 0 0 1 1 +( 896 2992 624 ) ( 872 2992 624 ) ( 872 2992 416 ) 2 0 0 0 1 1 +( 928 2560 624 ) ( 928 2576 624 ) ( 928 2576 416 ) 2 0 0 0 1 1 +} +// brush 74 +{ +( 896 2560 624 ) ( 896 2304 624 ) ( 896 2304 416 ) 16 0 0 0 1 1 +( 896 2304 624 ) ( 912 2304 624 ) ( 912 2304 416 ) 16 0 0 0 1 1 +( 912 2560 592 ) ( 896 2560 592 ) ( 896 2304 592 ) 16 0 0 0 1 1 +( 896 2304 624 ) ( 896 2560 624 ) ( 912 2560 624 ) 16 0 0 0 1 1 +( 912 2560 624 ) ( 896 2560 624 ) ( 896 2560 416 ) 16 0 0 0 1 1 +( 928 2304 624 ) ( 928 2560 624 ) ( 928 2560 416 ) 16 0 0 0 1 1 +} +// brush 75 +{ +( 1024 2624 624 ) ( 1024 2496 624 ) ( 1024 2496 608 ) 16 0 0 0 1 1 +( 1024 2080 624 ) ( 1056 2080 624 ) ( 1056 2080 608 ) 16 0 0 0 1 1 +( 1056 2624 592 ) ( 1024 2624 592 ) ( 1024 2496 592 ) 16 0 0 0 1 1 +( 1024 2496 816 ) ( 1024 2624 816 ) ( 1056 2624 816 ) 16 0 0 0 1 1 +( 1056 2624 624 ) ( 1024 2624 624 ) ( 1024 2624 608 ) 16 0 0 0 1 1 +( 1088 2496 624 ) ( 1088 2624 624 ) ( 1088 2624 608 ) 16 0 0 0 1 1 +} +// brush 76 +{ +( 928 2480 624 ) ( 928 2448 624 ) ( 928 2448 608 ) 16 0 0 0 1 1 +( 912 2432 624 ) ( 1040 2432 624 ) ( 1040 2432 608 ) 16 0 0 0 1 1 +( 1040 2448 592 ) ( 1040 2480 592 ) ( 912 2480 592 ) 16 0 0 0 1 1 +( 912 2480 624 ) ( 1040 2480 624 ) ( 1040 2448 624 ) 16 0 0 0 1 1 +( 1040 2496 624 ) ( 912 2496 624 ) ( 912 2496 608 ) 16 0 0 0 1 1 +( 1184 2448 624 ) ( 1184 2480 624 ) ( 1184 2480 608 ) 16 0 0 0 1 1 +} +// brush 77 +{ +( 128 2408 624 ) ( 128 2392 624 ) ( 128 2392 400 ) 1 0 0 0 1 1 +( 304 2304 624 ) ( 336 2304 624 ) ( 336 2304 400 ) 1 0 0 0 1 1 +( 336 2400 400 ) ( 304 2400 400 ) ( 304 2384 400 ) 1 0 0 0 1 1 +( 304 2384 752 ) ( 304 2400 752 ) ( 336 2400 752 ) 1 0 0 0 1 1 +( 336 2400 624 ) ( 304 2400 624 ) ( 304 2400 400 ) 1 0 0 0 1 1 +( 320 2384 624 ) ( 320 2400 624 ) ( 320 2400 400 ) 1 0 0 0 1 1 +} +// brush 78 +{ +( 400 2528 432 ) ( 400 2464 432 ) ( 400 2464 416 ) 4 0 0 0 1 1 +( 400 2464 432 ) ( 464 2464 432 ) ( 464 2464 416 ) 4 0 0 0 1 1 +( 496 2560 416 ) ( 432 2560 416 ) ( 432 2496 416 ) 4 0 0 0 1 1 +( 432 2496 432 ) ( 432 2560 432 ) ( 496 2560 432 ) 4 0 0 0 1 1 +( 496 2560 432 ) ( 432 2560 432 ) ( 432 2560 416 ) 4 0 0 0 1 1 +( 544 2488 432 ) ( 544 2552 432 ) ( 544 2552 416 ) 4 0 0 0 1 1 +} +// brush 79 +{ +( 304 2432 432 ) ( 304 2368 432 ) ( 304 2368 416 ) 4 0 0 0 1 1 +( 304 2368 432 ) ( 368 2368 432 ) ( 368 2368 416 ) 4 0 0 0 1 1 +( 400 2464 416 ) ( 336 2464 416 ) ( 336 2400 416 ) 4 0 0 0 1 1 +( 336 2400 432 ) ( 336 2464 432 ) ( 400 2464 432 ) 4 0 0 0 1 1 +( 392 2560 432 ) ( 328 2560 432 ) ( 328 2560 416 ) 4 0 0 0 1 1 +( 400 2400 432 ) ( 400 2464 432 ) ( 400 2464 416 ) 4 0 0 0 1 1 +} +// brush 80 +{ +( 352 2584 448 ) ( 352 2520 448 ) ( 352 2520 432 ) 4 0 0 0 1 1 +( 400 2512 448 ) ( 464 2512 448 ) ( 464 2512 432 ) 4 0 0 0 1 1 +( 496 2616 432 ) ( 432 2616 432 ) ( 432 2552 432 ) 4 0 0 0 1 1 +( 432 2552 448 ) ( 432 2616 448 ) ( 496 2616 448 ) 4 0 0 0 1 1 +( 496 2616 448 ) ( 432 2616 448 ) ( 432 2616 432 ) 4 0 0 0 1 1 +( 512 2552 448 ) ( 512 2616 448 ) ( 512 2616 432 ) 4 0 0 0 1 1 +} +// brush 81 +{ +( 256 2568 448 ) ( 256 2504 448 ) ( 256 2504 432 ) 4 0 0 0 1 1 +( 280 2400 448 ) ( 344 2400 448 ) ( 344 2400 432 ) 4 0 0 0 1 1 +( 352 2472 432 ) ( 352 2536 432 ) ( 288 2536 432 ) 4 0 0 0 1 1 +( 288 2536 448 ) ( 352 2536 448 ) ( 352 2472 448 ) 4 0 0 0 1 1 +( 320 2616 448 ) ( 256 2616 448 ) ( 256 2616 432 ) 4 0 0 0 1 1 +( 352 2472 448 ) ( 352 2536 448 ) ( 352 2536 432 ) 4 0 0 0 1 1 +} +// brush 82 +{ +( 128 2648 464 ) ( 128 2608 464 ) ( 128 2608 448 ) 9 0 0 0 1 1 +( 424 2592 464 ) ( 496 2592 464 ) ( 496 2592 448 ) 9 0 0 0 1 1 +( 496 2616 448 ) ( 424 2616 448 ) ( 424 2576 448 ) 9 0 0 0 1 1 +( 424 2576 464 ) ( 424 2616 464 ) ( 496 2616 464 ) 9 0 0 0 1 1 +( 464 3008 464 ) ( 392 3008 464 ) ( 392 3008 448 ) 9 0 0 0 1 1 +( 512 2576 464 ) ( 512 2616 464 ) ( 512 2616 448 ) 9 0 0 0 1 1 +} +// brush 83 +{ +( 128 2576 464 ) ( 128 2400 464 ) ( 128 2400 448 ) 9 0 0 0 1 1 +( 112 2400 464 ) ( 304 2400 464 ) ( 304 2400 448 ) 9 0 0 0 1 1 +( 304 2576 448 ) ( 112 2576 448 ) ( 112 2400 448 ) 9 0 0 0 1 1 +( 112 2400 464 ) ( 112 2576 464 ) ( 304 2576 464 ) 9 0 0 0 1 1 +( 304 2592 464 ) ( 112 2592 464 ) ( 112 2592 448 ) 9 0 0 0 1 1 +( 288 2400 464 ) ( 288 2576 464 ) ( 288 2576 448 ) 9 0 0 0 1 1 +} +// brush 84 +{ +( 256 2568 640 ) ( 256 2296 640 ) ( 256 2296 624 ) 12 0 0 0 1 1 +( 416 2112 640 ) ( 896 2112 640 ) ( 896 2112 624 ) 12 0 0 0 1 1 +( 896 2560 624 ) ( 416 2560 624 ) ( 416 2288 624 ) 12 0 0 0 1 1 +( 416 2288 800 ) ( 416 2560 800 ) ( 896 2560 800 ) 12 0 0 0 1 1 +( 896 2624 640 ) ( 416 2624 640 ) ( 416 2624 624 ) 12 0 0 0 1 1 +( 1216 2288 624 ) ( 1216 2288 640 ) ( 1216 2352 640 ) 12 0 0 0 1 1 +} +// brush 85 +{ +( 672 2560 624 ) ( 672 2520 624 ) ( 672 2520 608 ) 16 0 0 270 1 -1 +( 704 2272 624 ) ( 720 2272 624 ) ( 720 2272 608 ) 16 0 0 0 1 1 +( 688 2560 592 ) ( 672 2560 592 ) ( 672 2520 592 ) 16 0 0 0 1 1 +( 672 2520 624 ) ( 672 2560 624 ) ( 688 2560 624 ) 16 0 0 0 1 1 +( 688 2560 624 ) ( 672 2560 624 ) ( 672 2560 608 ) 16 0 0 0 1 1 +( 704 2520 624 ) ( 704 2560 624 ) ( 704 2560 608 ) 16 0 0 270 1 -1 +} +// brush 86 +{ +( 800 2560 624 ) ( 800 2520 624 ) ( 800 2520 608 ) 16 0 0 270 1 -1 +( 824 2368 624 ) ( 840 2368 624 ) ( 840 2368 608 ) 16 0 0 0 1 1 +( 816 2560 592 ) ( 800 2560 592 ) ( 800 2520 592 ) 16 0 0 0 1 1 +( 800 2520 624 ) ( 800 2560 624 ) ( 816 2560 624 ) 16 0 0 0 1 1 +( 816 2560 624 ) ( 800 2560 624 ) ( 800 2560 608 ) 16 0 0 0 1 1 +( 832 2520 624 ) ( 832 2560 624 ) ( 832 2560 608 ) 16 0 0 270 1 -1 +} +// brush 87 +{ +( 512 2560 624 ) ( 512 2520 624 ) ( 512 2520 608 ) 16 0 0 270 1 -1 +( 536 2336 624 ) ( 552 2336 624 ) ( 552 2336 608 ) 16 0 0 0 1 1 +( 528 2560 592 ) ( 512 2560 592 ) ( 512 2520 592 ) 16 0 0 0 1 1 +( 512 2520 624 ) ( 512 2560 624 ) ( 528 2560 624 ) 16 0 0 0 1 1 +( 528 2560 624 ) ( 512 2560 624 ) ( 512 2560 608 ) 16 0 0 0 1 1 +( 544 2520 624 ) ( 544 2560 624 ) ( 544 2560 608 ) 16 0 0 270 1 -1 +} +// brush 88 +{ +( 416 2560 624 ) ( 416 2520 624 ) ( 416 2520 608 ) 16 0 0 270 1 -1 +( 440 2080 624 ) ( 456 2080 624 ) ( 456 2080 608 ) 16 0 0 0 1 1 +( 432 2560 592 ) ( 416 2560 592 ) ( 416 2520 592 ) 16 0 0 0 1 1 +( 416 2520 784 ) ( 416 2560 784 ) ( 432 2560 784 ) 16 0 0 0 1 1 +( 432 2656 624 ) ( 416 2656 624 ) ( 416 2656 608 ) 16 0 0 0 1 1 +( 448 2520 624 ) ( 448 2560 624 ) ( 448 2560 608 ) 16 0 0 270 1 -1 +} +// brush 89 +{ +( 448 2464 624 ) ( 448 2448 624 ) ( 448 2448 608 ) 16 0 0 0 1 1 +( 520 2464 624 ) ( 560 2464 624 ) ( 560 2464 608 ) 16 0 0 270 1 -1 +( 560 2480 592 ) ( 560 2496 592 ) ( 520 2496 592 ) 16 0 0 0 1 1 +( 520 2496 624 ) ( 560 2496 624 ) ( 560 2480 624 ) 16 0 0 0 1 1 +( 560 2496 624 ) ( 520 2496 624 ) ( 520 2496 608 ) 16 0 0 270 1 -1 +( 512 2480 624 ) ( 512 2496 624 ) ( 512 2496 608 ) 16 0 0 0 1 1 +} +// brush 90 +{ +( 704 2464 624 ) ( 704 2448 624 ) ( 704 2448 608 ) 16 0 0 0 1 1 +( 776 2464 624 ) ( 816 2464 624 ) ( 816 2464 608 ) 16 0 0 270 1 -1 +( 816 2480 592 ) ( 816 2496 592 ) ( 776 2496 592 ) 16 0 0 0 1 1 +( 776 2496 624 ) ( 816 2496 624 ) ( 816 2480 624 ) 16 0 0 0 1 1 +( 816 2496 624 ) ( 776 2496 624 ) ( 776 2496 608 ) 16 0 0 270 1 -1 +( 800 2480 624 ) ( 800 2496 624 ) ( 800 2496 608 ) 16 0 0 0 1 1 +} +// brush 91 +{ +( 544 2368 624 ) ( 544 2352 624 ) ( 544 2352 608 ) 16 0 0 0 1 1 +( 648 2368 624 ) ( 688 2368 624 ) ( 688 2368 608 ) 16 0 0 270 1 -1 +( 688 2384 592 ) ( 688 2400 592 ) ( 648 2400 592 ) 16 0 0 0 1 1 +( 648 2400 624 ) ( 688 2400 624 ) ( 688 2384 624 ) 16 0 0 0 1 1 +( 688 2400 624 ) ( 648 2400 624 ) ( 648 2400 608 ) 16 0 0 270 1 -1 +( 800 2384 624 ) ( 800 2400 624 ) ( 800 2400 608 ) 16 0 0 0 1 1 +} +// brush 92 +{ +( 32 2872 656 ) ( 32 2776 656 ) ( 32 2776 640 ) 9 0 0 0 1 1 +( 312 2752 656 ) ( 496 2752 656 ) ( 496 2752 640 ) 9 0 0 0 1 1 +( 496 2848 640 ) ( 312 2848 640 ) ( 312 2752 640 ) 9 0 0 0 1 1 +( 312 2752 672 ) ( 312 2848 672 ) ( 496 2848 672 ) 9 0 0 0 1 1 +( 496 2848 656 ) ( 312 2848 656 ) ( 312 2848 640 ) 9 0 0 0 1 1 +( 576 2744 656 ) ( 576 2840 656 ) ( 576 2840 640 ) 9 0 0 0 1 1 +} +// brush 93 +{ +( 32 2848 672 ) ( 32 2752 672 ) ( 32 2752 400 ) 3 0 0 0 1 1 +( 112 2752 672 ) ( 128 2752 672 ) ( 128 2752 400 ) 3 0 0 0 1 1 +( 128 2848 400 ) ( 112 2848 400 ) ( 112 2752 400 ) 3 0 0 0 1 1 +( 112 2752 640 ) ( 112 2848 640 ) ( 128 2848 640 ) 3 0 0 0 1 1 +( 128 3072 672 ) ( 112 3072 672 ) ( 112 3072 400 ) 3 0 0 0 1 1 +( 128 2752 672 ) ( 128 2848 672 ) ( 128 2848 400 ) 3 0 0 0 1 1 +} +// brush 94 +{ +( 224 2816 608 ) ( 224 2784 608 ) ( 224 2784 448 ) 16 0 0 0 1 1 +( 256 2784 608 ) ( 368 2784 608 ) ( 368 2784 448 ) 16 0 0 0 1 1 +( 368 2816 576 ) ( 256 2816 576 ) ( 256 2784 576 ) 16 0 0 0 1 1 +( 256 2784 608 ) ( 256 2816 608 ) ( 368 2816 608 ) 16 0 0 0 1 1 +( 368 2816 608 ) ( 256 2816 608 ) ( 256 2816 448 ) 16 0 0 0 1 1 +( 416 2784 608 ) ( 416 2816 608 ) ( 416 2816 448 ) 16 0 0 0 1 1 +} +// brush 95 +{ +( 128 2816 576 ) ( 128 2784 576 ) ( 128 2784 416 ) 16 0 0 0 1 1 +( 144 2784 576 ) ( 256 2784 576 ) ( 256 2784 416 ) 16 0 0 0 1 1 +( 256 2816 544 ) ( 144 2816 544 ) ( 144 2784 544 ) 16 0 0 0 1 1 +( 144 2784 576 ) ( 144 2816 576 ) ( 256 2816 576 ) 16 0 0 0 1 1 +( 256 2816 576 ) ( 144 2816 576 ) ( 144 2816 416 ) 16 0 0 0 1 1 +( 192 2792 576 ) ( 192 2824 576 ) ( 192 2824 416 ) 16 0 0 0 1 1 +} +// brush 96 +{ +( 448 2816 576 ) ( 448 2784 576 ) ( 448 2784 416 ) 16 0 0 0 1 1 +( 464 2784 576 ) ( 576 2784 576 ) ( 576 2784 416 ) 16 0 0 0 1 1 +( 576 2816 544 ) ( 464 2816 544 ) ( 464 2784 544 ) 16 0 0 0 1 1 +( 464 2784 576 ) ( 464 2816 576 ) ( 576 2816 576 ) 16 0 0 0 1 1 +( 576 2816 576 ) ( 464 2816 576 ) ( 464 2816 416 ) 16 0 0 0 1 1 +( 512 2792 576 ) ( 512 2824 576 ) ( 512 2824 416 ) 16 0 0 0 1 1 +} +// brush 97 +{ +( 480 2944 752 ) ( 480 2848 752 ) ( 480 2848 448 ) 3 0 0 0 1 1 +( 496 2976 544 ) ( 496 2976 672 ) ( 512 2976 672 ) 3 0 0 0 1 1 +( 512 2944 448 ) ( 496 2944 448 ) ( 496 2848 448 ) 3 0 0 0 1 1 +( 496 2848 864 ) ( 496 2944 864 ) ( 512 2944 864 ) 3 0 0 0 1 1 +( 512 3104 752 ) ( 496 3104 752 ) ( 496 3104 448 ) 3 0 0 0 1 1 +( 608 2848 752 ) ( 608 2944 752 ) ( 608 2944 448 ) 3 0 0 0 1 1 +} +// brush 98 +{ +( 480 2944 752 ) ( 480 2848 752 ) ( 480 2848 448 ) 3 0 0 0 1 1 +( 496 2848 672 ) ( 512 2848 672 ) ( 512 2848 544 ) 3 0 0 0 1 1 +( 512 2928 576 ) ( 496 2928 576 ) ( 496 2848 576 ) 3 0 0 0 1 1 +( 496 2848 864 ) ( 496 2944 864 ) ( 512 2944 864 ) 3 0 0 0 1 1 +( 512 2944 672 ) ( 496 2944 672 ) ( 496 2944 544 ) 3 0 0 0 1 1 +( 512 2848 752 ) ( 512 2944 752 ) ( 512 2944 448 ) 3 0 0 0 1 1 +} +// brush 99 +{ +( 32 2752 752 ) ( 32 2736 752 ) ( 32 2736 400 ) 1 0 0 0 1 1 +( 48 2400 752 ) ( 112 2400 752 ) ( 112 2400 400 ) 1 0 0 0 1 1 +( 112 2752 448 ) ( 48 2752 448 ) ( 48 2736 448 ) 1 0 0 0 1 1 +( 48 2736 864 ) ( 48 2752 864 ) ( 112 2752 864 ) 1 0 0 0 1 1 +( 112 2752 752 ) ( 48 2752 752 ) ( 48 2752 400 ) 1 0 0 0 1 1 +( 128 2736 752 ) ( 128 2752 752 ) ( 128 2752 400 ) 1 0 0 0 1 1 +} +// brush 100 +{ +( 128 2416 800 ) ( 128 2400 800 ) ( 128 2400 448 ) 2 0 0 0 1 1 +( 128 2400 800 ) ( 152 2400 800 ) ( 152 2400 448 ) 2 0 0 0 1 1 +( 496 2752 768 ) ( 472 2752 768 ) ( 472 2736 768 ) 2 0 0 0 1 1 +( 472 2736 864 ) ( 472 2752 864 ) ( 496 2752 864 ) 2 0 0 0 1 1 +( 496 2720 800 ) ( 472 2720 800 ) ( 472 2720 448 ) 2 0 0 0 1 1 +( 480 2736 800 ) ( 480 2752 800 ) ( 480 2752 448 ) 2 0 0 0 1 1 +} +// brush 101 +{ +( 288 2736 784 ) ( 288 2712 784 ) ( 288 2712 736 ) 7 0 0 0 1 1 +( 288 2624 784 ) ( 320 2624 784 ) ( 320 2624 736 ) 7 0 0 0 1 1 +( 320 2736 736 ) ( 288 2736 736 ) ( 288 2712 736 ) 7 0 0 0 1 1 +( 288 2712 864 ) ( 288 2736 864 ) ( 320 2736 864 ) 7 0 0 0 1 1 +( 320 2752 784 ) ( 288 2752 784 ) ( 288 2752 736 ) 7 0 0 0 1 1 +( 320 2712 784 ) ( 320 2736 784 ) ( 320 2736 736 ) 7 0 0 0 1 1 +} +// brush 102 +{ +( 128 2592 784 ) ( 128 2560 784 ) ( 128 2560 736 ) 7 0 0 0 1 1 +( 264 2560 784 ) ( 288 2560 784 ) ( 288 2560 736 ) 7 0 0 0 1 1 +( 288 2560 736 ) ( 288 2592 736 ) ( 264 2592 736 ) 7 0 0 0 1 1 +( 264 2592 768 ) ( 288 2592 768 ) ( 288 2560 768 ) 7 0 0 0 1 1 +( 288 2592 784 ) ( 264 2592 784 ) ( 264 2592 736 ) 7 0 0 0 1 1 +( 256 2560 784 ) ( 256 2592 784 ) ( 256 2592 736 ) 7 0 0 0 1 1 +} +// brush 103 +{ +( 192 2392 784 ) ( 192 2368 784 ) ( 192 2368 736 ) 7 0 0 0 1 1 +( 192 2400 784 ) ( 224 2400 784 ) ( 224 2400 736 ) 7 0 0 0 1 1 +( 192 2368 736 ) ( 224 2368 736 ) ( 224 2392 736 ) 7 0 0 0 1 1 +( 224 2392 768 ) ( 224 2368 768 ) ( 192 2368 768 ) 7 0 0 0 1 1 +( 224 2560 784 ) ( 192 2560 784 ) ( 192 2560 736 ) 7 0 0 0 1 1 +( 224 2368 784 ) ( 224 2392 784 ) ( 224 2392 736 ) 7 0 0 0 1 1 +} +// brush 104 +{ +( 128 3008 480 ) ( 128 2944 480 ) ( 128 2944 464 ) 4 0 0 0 1 1 +( 128 2944 480 ) ( 240 2944 480 ) ( 240 2944 464 ) 4 0 0 0 1 1 +( 240 3008 464 ) ( 128 3008 464 ) ( 128 2944 464 ) 4 0 0 0 1 1 +( 128 2944 480 ) ( 128 3008 480 ) ( 240 3008 480 ) 4 0 0 0 1 1 +( 240 3008 480 ) ( 128 3008 480 ) ( 128 3008 464 ) 4 0 0 0 1 1 +( 256 2944 480 ) ( 256 3008 480 ) ( 256 3008 464 ) 4 0 0 0 1 1 +} +// brush 105 +{ +( 352 3008 480 ) ( 352 2944 480 ) ( 352 2944 464 ) 4 0 0 0 1 1 +( 384 2944 480 ) ( 496 2944 480 ) ( 496 2944 464 ) 4 0 0 0 1 1 +( 496 3008 464 ) ( 384 3008 464 ) ( 384 2944 464 ) 4 0 0 0 1 1 +( 384 2944 480 ) ( 384 3008 480 ) ( 496 3008 480 ) 4 0 0 0 1 1 +( 496 3008 480 ) ( 384 3008 480 ) ( 384 3008 464 ) 4 0 0 0 1 1 +( 496 2944 480 ) ( 496 3008 480 ) ( 496 3008 464 ) 4 0 0 0 1 1 +} +// brush 106 +{ +( 16 3088 480 ) ( 16 3024 480 ) ( 16 3024 464 ) 9 0 0 0 1 1 +( 384 3008 480 ) ( 496 3008 480 ) ( 496 3008 464 ) 9 0 0 0 1 1 +( 496 3072 464 ) ( 384 3072 464 ) ( 384 3008 464 ) 9 0 0 0 1 1 +( 384 3008 496 ) ( 384 3072 496 ) ( 496 3072 496 ) 9 0 0 0 1 1 +( 496 3264 480 ) ( 384 3264 480 ) ( 384 3264 464 ) 9 0 0 0 1 1 +( 496 3008 480 ) ( 496 3072 480 ) ( 496 3072 464 ) 9 0 0 0 1 1 +} +// brush 107 +{ +( 0 3200 800 ) ( 0 3072 800 ) ( 0 3072 400 ) 1 0 0 0 1 1 +( 16 2752 800 ) ( 32 2752 800 ) ( 32 2752 400 ) 1 0 0 0 1 1 +( 32 3200 400 ) ( 16 3200 400 ) ( 16 3072 400 ) 1 0 0 0 1 1 +( 16 3072 864 ) ( 16 3200 864 ) ( 32 3200 864 ) 1 0 0 0 1 1 +( 32 3264 800 ) ( 16 3264 800 ) ( 16 3264 400 ) 1 0 0 0 1 1 +( 32 3168 528 ) ( 32 3168 560 ) ( 32 3200 560 ) 1 0 0 0 1 1 +} +// brush 108 +{ +( 256 3224 496 ) ( 256 3224 512 ) ( 256 3160 512 ) 4 0 0 0 1 1 +( 336 3136 496 ) ( 336 3136 512 ) ( 400 3136 512 ) 4 0 0 0 1 1 +( 368 3168 496 ) ( 368 3232 496 ) ( 304 3232 496 ) 4 0 0 0 1 1 +( 304 3232 512 ) ( 368 3232 512 ) ( 368 3168 512 ) 4 0 0 0 1 1 +( 368 3264 496 ) ( 368 3264 512 ) ( 304 3264 512 ) 4 0 0 0 1 1 +( 384 3136 496 ) ( 384 3136 512 ) ( 384 3200 512 ) 4 0 0 0 1 1 +} +// brush 109 +{ +( 384 3136 496 ) ( 384 3136 512 ) ( 384 3072 512 ) 4 0 0 0 1 1 +( 432 3040 496 ) ( 432 3040 512 ) ( 496 3040 512 ) 4 0 0 0 1 1 +( 464 3072 496 ) ( 464 3136 496 ) ( 400 3136 496 ) 4 0 0 0 1 1 +( 400 3136 512 ) ( 464 3136 512 ) ( 464 3072 512 ) 4 0 0 0 1 1 +( 472 3232 496 ) ( 472 3232 512 ) ( 408 3232 512 ) 4 0 0 0 1 1 +( 496 3040 496 ) ( 496 3040 512 ) ( 496 3104 512 ) 4 0 0 0 1 1 +} +// brush 110 +{ +( 288 3288 512 ) ( 288 3288 528 ) ( 288 3224 528 ) 4 0 0 0 1 1 +( 336 3168 512 ) ( 336 3168 528 ) ( 400 3168 528 ) 4 0 0 0 1 1 +( 368 3224 512 ) ( 368 3288 512 ) ( 304 3288 512 ) 4 0 0 0 1 1 +( 304 3288 528 ) ( 368 3288 528 ) ( 368 3224 528 ) 4 0 0 0 1 1 +( 368 3296 512 ) ( 368 3296 528 ) ( 304 3296 528 ) 4 0 0 0 1 1 +( 448 3192 512 ) ( 448 3192 528 ) ( 448 3256 528 ) 4 0 0 0 1 1 +} +// brush 111 +{ +( 0 3280 800 ) ( 0 3272 800 ) ( 0 3272 400 ) 1 0 0 0 1 1 +( 0 3264 800 ) ( 240 3264 800 ) ( 240 3264 400 ) 1 0 0 0 1 1 +( 240 3280 464 ) ( 0 3280 464 ) ( 0 3272 464 ) 1 0 0 0 1 1 +( 0 3272 864 ) ( 0 3280 864 ) ( 240 3280 864 ) 1 0 0 0 1 1 +( 240 3456 800 ) ( 0 3456 800 ) ( 0 3456 400 ) 1 0 0 0 1 1 +( 320 3264 464 ) ( 320 3264 800 ) ( 320 3280 800 ) 1 0 0 0 1 1 +} +// brush 112 +{ +( 32 3200 880 ) ( 32 3152 880 ) ( 32 3152 816 ) 12 0 0 0 1 1 +( 392 2720 880 ) ( 432 2720 880 ) ( 432 2720 816 ) 12 0 0 0 1 1 +( 136 3200 864 ) ( 96 3200 864 ) ( 96 3152 864 ) 12 0 0 0 1 1 +( 96 3152 880 ) ( 96 3200 880 ) ( 136 3200 880 ) 12 0 0 0 1 1 +( 136 3296 880 ) ( 96 3296 880 ) ( 96 3296 816 ) 12 0 0 0 1 1 +( 512 2848 880 ) ( 512 2896 880 ) ( 512 2896 816 ) 12 0 0 0 1 1 +} +// brush 113 +{ +( 32 3232 864 ) ( 32 3168 864 ) ( 32 3168 848 ) 7 0 0 0 1 1 +( 176 3168 864 ) ( 368 3168 864 ) ( 368 3168 848 ) 7 0 0 0 1 1 +( 368 3232 832 ) ( 176 3232 832 ) ( 176 3168 832 ) 7 0 0 270 1 -1 +( 176 3168 864 ) ( 176 3232 864 ) ( 368 3232 864 ) 7 0 0 0 1 1 +( 368 3200 864 ) ( 176 3200 864 ) ( 176 3200 848 ) 7 0 0 0 1 1 +( 512 3168 864 ) ( 512 3232 864 ) ( 512 3232 848 ) 7 0 0 0 1 1 +} +// brush 114 +{ +( 32 2944 864 ) ( 32 2880 864 ) ( 32 2880 848 ) 7 0 0 0 1 1 +( 176 2912 864 ) ( 368 2912 864 ) ( 368 2912 848 ) 7 0 0 0 1 1 +( 368 2944 832 ) ( 176 2944 832 ) ( 176 2880 832 ) 7 0 0 270 1 -1 +( 176 2880 864 ) ( 176 2944 864 ) ( 368 2944 864 ) 7 0 0 0 1 1 +( 368 2944 864 ) ( 176 2944 864 ) ( 176 2944 848 ) 7 0 0 0 1 1 +( 480 2880 864 ) ( 480 2944 864 ) ( 480 2944 848 ) 7 0 0 0 1 1 +} +// brush 115 +{ +( 288 3072 864 ) ( 288 2944 864 ) ( 288 2944 848 ) 7 0 0 0 1 1 +( 288 2720 864 ) ( 320 2720 864 ) ( 320 2720 848 ) 7 0 0 0 1 1 +( 320 3072 832 ) ( 288 3072 832 ) ( 288 2944 832 ) 7 0 0 0 1 1 +( 288 2944 864 ) ( 288 3072 864 ) ( 320 3072 864 ) 7 0 0 0 1 1 +( 320 3168 864 ) ( 288 3168 864 ) ( 288 3168 848 ) 7 0 0 0 1 1 +( 320 2944 864 ) ( 320 3072 864 ) ( 320 3072 848 ) 7 0 0 0 1 1 +} +// brush 116 +{ +( 544 3184 544 ) ( 544 3128 544 ) ( 544 3128 528 ) 9 0 0 0 1 1 +( 536 3072 544 ) ( 568 3072 544 ) ( 568 3072 528 ) 9 0 0 0 1 1 +( 576 3184 528 ) ( 544 3184 528 ) ( 544 3128 528 ) 9 0 0 0 1 1 +( 544 3128 544 ) ( 544 3184 544 ) ( 576 3184 544 ) 9 0 0 0 1 1 +( 584 3456 544 ) ( 552 3456 544 ) ( 552 3456 528 ) 9 0 0 0 1 1 +( 640 3128 544 ) ( 640 3184 544 ) ( 640 3184 528 ) 9 0 0 0 1 1 +} +// brush 117 +{ +( 320 3456 544 ) ( 320 3288 544 ) ( 320 3288 528 ) 9 0 0 0 1 1 +( 360 3296 544 ) ( 544 3296 544 ) ( 544 3296 528 ) 9 0 0 0 1 1 +( 544 3456 528 ) ( 360 3456 528 ) ( 360 3288 528 ) 9 0 0 0 1 1 +( 360 3288 544 ) ( 360 3456 544 ) ( 544 3456 544 ) 9 0 0 0 1 1 +( 544 3456 544 ) ( 360 3456 544 ) ( 360 3456 528 ) 9 0 0 0 1 1 +( 544 3288 544 ) ( 544 3456 544 ) ( 544 3456 528 ) 9 0 0 0 1 1 +} +// brush 118 +{ +( 608 3456 528 ) ( 608 3360 528 ) ( 608 3360 432 ) 6 0 0 0 1 1 +( 616 3088 528 ) ( 664 3088 528 ) ( 664 3088 432 ) 6 0 0 0 1 1 +( 656 3456 432 ) ( 608 3456 432 ) ( 608 3360 432 ) 6 0 0 0 1 1 +( 608 3360 448 ) ( 608 3456 448 ) ( 656 3456 448 ) 6 0 0 0 1 1 +( 656 3456 528 ) ( 608 3456 528 ) ( 608 3456 432 ) 6 0 0 0 1 1 +( 944 3344 528 ) ( 944 3440 528 ) ( 944 3440 432 ) 6 0 0 0 1 1 +} +// brush 119 +{ +( 768 3448 464 ) ( 768 3472 464 ) ( 768 3472 816 ) 16 0 0 0 1 1 +( 752 3424 784 ) ( 816 3424 784 ) ( 816 3424 432 ) 16 0 0 0 1 1 +( 768 3472 496 ) ( 768 3448 496 ) ( 800 3448 496 ) 16 0 0 0 1 1 +( 752 3440 784 ) ( 752 3456 784 ) ( 816 3456 784 ) 16 0 0 0 1 1 +( 816 3456 784 ) ( 752 3456 784 ) ( 752 3456 432 ) 16 0 0 0 1 1 +( 832 3472 464 ) ( 832 3448 464 ) ( 832 3448 816 ) 16 0 0 0 1 1 +} +// brush 120 +{ +( 320 3472 784 ) ( 320 3456 784 ) ( 320 3456 528 ) 2 0 0 0 1 1 +( 368 3456 784 ) ( 496 3456 784 ) ( 496 3456 528 ) 2 0 0 0 1 1 +( 496 3472 480 ) ( 368 3472 480 ) ( 368 3456 480 ) 2 0 0 0 1 1 +( 368 3456 784 ) ( 368 3472 784 ) ( 496 3472 784 ) 2 0 0 0 1 1 +( 496 3488 784 ) ( 368 3488 784 ) ( 368 3488 528 ) 2 0 0 0 1 1 +( 1120 3456 784 ) ( 1120 3472 784 ) ( 1120 3472 528 ) 2 0 0 0 1 1 +} +// brush 121 +{ +( 576 3088 544 ) ( 576 3040 544 ) ( 576 3040 528 ) 3 0 0 0 1 1 +( 720 2992 432 ) ( 720 2992 784 ) ( 736 2992 784 ) 3 0 0 0 1 1 +( 848 3088 576 ) ( 624 3088 576 ) ( 624 3040 576 ) 3 0 0 0 1 1 +( 736 3056 768 ) ( 720 3056 768 ) ( 720 3072 768 ) 3 0 0 0 1 1 +( 736 3072 432 ) ( 736 3072 784 ) ( 720 3072 784 ) 3 0 0 0 1 1 +( 928 3056 432 ) ( 928 3056 784 ) ( 928 3072 784 ) 3 0 0 0 1 1 +} +// brush 122 +{ +( 944 3456 544 ) ( 944 3088 544 ) ( 944 3088 528 ) 9 0 0 0 1 1 +( 1072 3072 544 ) ( 1200 3072 544 ) ( 1200 3072 528 ) 9 0 0 0 1 1 +( 1200 3456 496 ) ( 1072 3456 496 ) ( 1072 3088 496 ) 9 0 0 0 1 1 +( 1072 3088 544 ) ( 1072 3456 544 ) ( 1200 3456 544 ) 9 0 0 0 1 1 +( 1200 3456 544 ) ( 1072 3456 544 ) ( 1072 3456 528 ) 9 0 0 0 1 1 +( 1216 3088 544 ) ( 1216 3456 544 ) ( 1216 3456 528 ) 9 0 0 0 1 1 +} +// brush 123 +{ +( 928 3456 784 ) ( 928 3432 784 ) ( 928 3432 432 ) 1 0 0 0 1 1 +( 936 3072 784 ) ( 952 3072 784 ) ( 952 3072 432 ) 1 0 0 0 1 1 +( 960 3456 736 ) ( 944 3456 736 ) ( 944 3432 736 ) 1 0 0 0 1 1 +( 944 3432 816 ) ( 944 3456 816 ) ( 960 3456 816 ) 1 0 0 0 1 1 +( 960 3456 784 ) ( 944 3456 784 ) ( 944 3456 432 ) 1 0 0 0 1 1 +( 992 3432 784 ) ( 992 3456 784 ) ( 992 3456 432 ) 1 0 0 0 1 1 +} +// brush 124 +{ +( 592 3128 784 ) ( 592 3112 784 ) ( 592 3112 432 ) 16 0 0 0 1 1 +( 920 3072 784 ) ( 944 3072 784 ) ( 944 3072 432 ) 16 0 0 0 1 1 +( 944 3104 736 ) ( 944 3120 736 ) ( 920 3120 736 ) 16 0 0 0 1 1 +( 920 3120 816 ) ( 944 3120 816 ) ( 944 3104 816 ) 16 0 0 0 1 1 +( 944 3136 784 ) ( 920 3136 784 ) ( 920 3136 432 ) 16 0 0 0 1 1 +( 928 3104 784 ) ( 928 3120 784 ) ( 928 3120 432 ) 16 0 0 0 1 1 +} +// brush 125 +{ +( 736 3296 816 ) ( 736 3184 816 ) ( 736 3184 784 ) 16 0 0 0 1 1 +( 752 3136 816 ) ( 816 3136 816 ) ( 816 3136 784 ) 16 0 0 0 1 1 +( 816 3296 784 ) ( 752 3296 784 ) ( 752 3184 784 ) 16 0 0 0 1 1 +( 752 3184 816 ) ( 752 3296 816 ) ( 816 3296 816 ) 16 0 0 0 1 1 +( 816 3392 816 ) ( 752 3392 816 ) ( 752 3392 784 ) 16 0 0 0 1 1 +( 800 3184 816 ) ( 800 3296 816 ) ( 800 3296 784 ) 16 0 0 0 1 1 +} +// brush 126 +{ +( 608 3448 816 ) ( 608 3424 816 ) ( 608 3424 784 ) 16 0 0 0 1 1 +( 944 3392 816 ) ( 968 3392 816 ) ( 968 3392 784 ) 16 0 0 0 1 1 +( 960 3136 784 ) ( 960 3160 784 ) ( 936 3160 784 ) 16 0 0 0 1 1 +( 936 3160 816 ) ( 960 3160 816 ) ( 960 3136 816 ) 16 0 0 0 1 1 +( 680 3456 816 ) ( 656 3456 816 ) ( 656 3456 784 ) 16 0 0 0 1 1 +( 928 3136 816 ) ( 928 3160 816 ) ( 928 3160 784 ) 16 0 0 0 1 1 +} +// brush 127 +{ +( 320 3320 800 ) ( 320 3296 800 ) ( 320 3296 768 ) 6 0 0 0 1 1 +( 320 3296 800 ) ( 344 3296 800 ) ( 344 3296 768 ) 6 0 0 0 1 1 +( 344 3320 736 ) ( 320 3320 736 ) ( 320 3296 736 ) 6 0 0 0 1 1 +( 320 3296 896 ) ( 320 3320 896 ) ( 344 3320 896 ) 6 0 0 0 1 1 +( 408 3456 800 ) ( 384 3456 800 ) ( 384 3456 768 ) 6 0 0 0 1 1 +( 608 3448 800 ) ( 608 3472 800 ) ( 608 3472 768 ) 6 0 0 0 1 1 +} +// brush 128 +{ +( 608 3456 464 ) ( 608 3408 464 ) ( 608 3408 448 ) 4 0 0 0 1 1 +( 656 3392 464 ) ( 672 3392 464 ) ( 672 3392 448 ) 4 0 0 0 1 1 +( 672 3456 496 ) ( 656 3456 496 ) ( 656 3408 496 ) 4 0 0 0 1 1 +( 656 3408 528 ) ( 656 3456 528 ) ( 672 3456 528 ) 4 0 0 0 1 1 +( 672 3456 464 ) ( 656 3456 464 ) ( 656 3456 448 ) 4 0 0 0 1 1 +( 672 3408 464 ) ( 672 3456 464 ) ( 672 3456 448 ) 4 0 0 0 1 1 +} +// brush 129 +{ +( 672 3456 464 ) ( 672 3408 464 ) ( 672 3408 448 ) 4 0 0 0 1 1 +( 688 3392 464 ) ( 704 3392 464 ) ( 704 3392 448 ) 4 0 0 0 1 1 +( 704 3456 496 ) ( 688 3456 496 ) ( 688 3408 496 ) 4 0 0 0 1 1 +( 688 3408 512 ) ( 688 3456 512 ) ( 704 3456 512 ) 4 0 0 0 1 1 +( 704 3456 464 ) ( 688 3456 464 ) ( 688 3456 448 ) 4 0 0 0 1 1 +( 704 3408 464 ) ( 704 3456 464 ) ( 704 3456 448 ) 4 0 0 0 1 1 +} +// brush 130 +{ +( 704 3456 448 ) ( 704 3456 464 ) ( 704 3408 464 ) 6 0 0 0 1 1 +( 704 3392 448 ) ( 704 3392 464 ) ( 720 3392 464 ) 6 0 0 0 1 1 +( 720 3408 448 ) ( 720 3456 448 ) ( 704 3456 448 ) 6 0 0 0 1 1 +( 704 3456 480 ) ( 720 3456 480 ) ( 720 3408 480 ) 6 0 0 0 1 1 +( 720 3456 448 ) ( 720 3456 464 ) ( 704 3456 464 ) 6 0 0 0 1 1 +( 736 3408 448 ) ( 736 3408 464 ) ( 736 3456 464 ) 6 0 0 0 1 1 +} +// brush 131 +{ +( 672 3456 448 ) ( 672 3456 464 ) ( 672 3408 464 ) 6 0 0 0 1 1 +( 728 3360 448 ) ( 728 3360 464 ) ( 744 3360 464 ) 6 0 0 0 1 1 +( 752 3408 448 ) ( 752 3456 448 ) ( 736 3456 448 ) 6 0 0 0 1 1 +( 736 3456 464 ) ( 752 3456 464 ) ( 752 3408 464 ) 6 0 0 0 1 1 +( 752 3456 448 ) ( 752 3456 464 ) ( 736 3456 464 ) 6 0 0 0 1 1 +( 768 3408 448 ) ( 768 3408 464 ) ( 768 3456 464 ) 6 0 0 0 1 1 +} +// brush 132 +{ +( 608 3456 480 ) ( 608 3408 480 ) ( 608 3408 464 ) 13 0 0 0 1 1 +( 928 3040 480 ) ( 960 3040 480 ) ( 960 3040 464 ) 13 0 0 0 1 1 +( 640 3456 464 ) ( 608 3456 464 ) ( 608 3408 464 ) 13 0 0 0 1 1 +( 608 3408 496 ) ( 608 3456 496 ) ( 640 3456 496 ) 13 0 0 0 1 1 +( 640 3456 480 ) ( 608 3456 480 ) ( 608 3456 464 ) 13 0 0 0 1 1 +( 960 3088 480 ) ( 960 3136 480 ) ( 960 3136 464 ) 13 0 0 0 1 1 +} +// brush 133 +{ +( 1152 3200 784 ) ( 1152 3152 784 ) ( 1152 3152 528 ) 6 0 0 0 1 1 +( 1168 3136 784 ) ( 1184 3136 784 ) ( 1184 3136 528 ) 6 0 0 0 1 1 +( 1184 3200 528 ) ( 1168 3200 528 ) ( 1168 3152 528 ) 6 0 0 0 1 1 +( 1168 3152 784 ) ( 1168 3200 784 ) ( 1184 3200 784 ) 6 0 0 0 1 1 +( 1184 3200 784 ) ( 1168 3200 784 ) ( 1168 3200 528 ) 6 0 0 0 1 1 +( 1248 3152 784 ) ( 1248 3200 784 ) ( 1248 3200 528 ) 6 0 0 0 1 1 +} +// brush 134 +{ +( 992 3456 784 ) ( 992 3088 784 ) ( 992 3088 752 ) 6 0 0 0 1 1 +( 1104 3072 784 ) ( 1168 3072 784 ) ( 1168 3072 752 ) 6 0 0 0 1 1 +( 1168 3456 768 ) ( 1104 3456 768 ) ( 1104 3088 768 ) 6 0 0 0 1 1 +( 1104 3088 784 ) ( 1104 3456 784 ) ( 1168 3456 784 ) 6 0 0 0 1 1 +( 1168 3456 784 ) ( 1104 3456 784 ) ( 1104 3456 752 ) 6 0 0 0 1 1 +( 1184 3088 784 ) ( 1184 3456 784 ) ( 1184 3456 752 ) 6 0 0 0 1 1 +} +// brush 135 +{ +( 1216 3328 528 ) ( 1216 3200 528 ) ( 1216 3200 512 ) 9 0 0 0 1 1 +( 1168 2720 528 ) ( 1232 2720 528 ) ( 1232 2720 512 ) 9 0 0 0 1 1 +( 1232 3328 416 ) ( 1168 3328 416 ) ( 1168 3200 416 ) 9 0 0 0 1 1 +( 1168 3200 528 ) ( 1168 3328 528 ) ( 1232 3328 528 ) 9 0 0 0 1 1 +( 1232 3360 528 ) ( 1168 3360 528 ) ( 1168 3360 512 ) 9 0 0 0 1 1 +( 1536 3200 528 ) ( 1536 3328 528 ) ( 1536 3328 512 ) 9 0 0 0 1 1 +} +// brush 136 +{ +( 1184 3344 784 ) ( 1184 3328 784 ) ( 1184 3328 528 ) 6 0 0 0 1 1 +( 1184 3328 784 ) ( 1232 3328 784 ) ( 1232 3328 528 ) 6 0 0 0 1 1 +( 1232 3344 528 ) ( 1184 3344 528 ) ( 1184 3328 528 ) 6 0 0 0 1 1 +( 1184 3328 784 ) ( 1184 3344 784 ) ( 1232 3344 784 ) 6 0 0 0 1 1 +( 1232 3424 784 ) ( 1184 3424 784 ) ( 1184 3424 528 ) 6 0 0 0 1 1 +( 1248 3328 784 ) ( 1248 3344 784 ) ( 1248 3344 528 ) 6 0 0 0 1 1 +} +// brush 137 +{ +( 1184 3328 784 ) ( 1184 3200 784 ) ( 1184 3200 528 ) 12 0 0 0 1 1 +( 1184 2848 784 ) ( 1232 2848 784 ) ( 1232 2848 528 ) 12 0 0 0 1 1 +( 1232 3328 736 ) ( 1184 3328 736 ) ( 1184 3200 736 ) 12 0 0 0 1 1 +( 1184 3200 896 ) ( 1184 3328 896 ) ( 1232 3328 896 ) 12 0 0 0 1 1 +( 1232 3360 784 ) ( 1184 3360 784 ) ( 1184 3360 528 ) 12 0 0 0 1 1 +( 1536 3200 784 ) ( 1536 3328 784 ) ( 1536 3328 528 ) 12 0 0 0 1 1 +} +// brush 138 +{ +( 1120 3360 784 ) ( 1120 3344 784 ) ( 1120 3344 528 ) 2 0 0 0 1 1 +( 1232 3360 784 ) ( 1264 3360 784 ) ( 1264 3360 528 ) 2 0 0 0 1 1 +( 1264 3360 528 ) ( 1232 3360 528 ) ( 1232 3344 528 ) 2 0 0 0 1 1 +( 1232 3344 784 ) ( 1232 3360 784 ) ( 1264 3360 784 ) 2 0 0 0 1 1 +( 1264 3456 784 ) ( 1232 3456 784 ) ( 1232 3456 528 ) 2 0 0 0 1 1 +( 1536 3352 784 ) ( 1536 3368 784 ) ( 1536 3368 528 ) 2 0 0 0 1 1 +} +// brush 139 +{ +( 832 2944 824 ) ( 832 2640 824 ) ( 832 2640 624 ) 12 0 0 0 1 1 +( 824 2880 624 ) ( 824 2880 824 ) ( 840 2880 824 ) 12 0 0 0 1 1 +( 848 2944 656 ) ( 832 2944 656 ) ( 832 2640 656 ) 12 0 0 0 1 1 +( 832 2640 768 ) ( 832 2944 768 ) ( 848 2944 768 ) 12 0 0 0 1 1 +( 848 2944 824 ) ( 832 2944 824 ) ( 832 2944 624 ) 12 0 0 0 1 1 +( 928 2640 824 ) ( 928 2944 824 ) ( 928 2944 624 ) 12 0 0 0 1 1 +} +// brush 140 +{ +( 512 2952 824 ) ( 512 2936 824 ) ( 512 2936 624 ) 6 0 0 0 1 1 +( 800 2944 824 ) ( 832 2944 824 ) ( 832 2944 624 ) 6 0 0 0 1 1 +( 832 2944 656 ) ( 800 2944 656 ) ( 800 2928 656 ) 6 0 0 0 1 1 +( 800 2928 864 ) ( 800 2944 864 ) ( 832 2944 864 ) 6 0 0 0 1 1 +( 832 2976 824 ) ( 800 2976 824 ) ( 800 2976 624 ) 6 0 0 0 1 1 +( 832 2928 824 ) ( 832 2944 824 ) ( 832 2944 624 ) 6 0 0 0 1 1 +} +// brush 141 +{ +( 1536 3360 784 ) ( 1536 3072 784 ) ( 1536 3072 528 ) 1 0 0 0 1 1 +( 1520 2848 784 ) ( 1536 2848 784 ) ( 1536 2848 528 ) 1 0 0 0 1 1 +( 1536 3360 496 ) ( 1520 3360 496 ) ( 1520 3072 496 ) 1 0 0 0 1 1 +( 1520 3072 768 ) ( 1520 3360 768 ) ( 1536 3360 768 ) 1 0 0 0 1 1 +( 1536 3360 784 ) ( 1520 3360 784 ) ( 1520 3360 528 ) 1 0 0 0 1 1 +( 1568 3072 784 ) ( 1568 3360 784 ) ( 1568 3360 528 ) 1 0 0 0 1 1 +} +// brush 142 +{ +( 1248 3168 784 ) ( 1248 3072 784 ) ( 1248 3072 528 ) 2 0 0 0 1 1 +( 1384 2880 496 ) ( 1384 2880 784 ) ( 1400 2880 784 ) 2 0 0 0 1 1 +( 1392 3168 528 ) ( 1376 3168 528 ) ( 1376 3072 528 ) 2 0 0 0 1 1 +( 1376 3072 784 ) ( 1376 3168 784 ) ( 1392 3168 784 ) 2 0 0 0 1 1 +( 1392 3168 784 ) ( 1376 3168 784 ) ( 1376 3168 528 ) 2 0 0 0 1 1 +( 1376 3072 784 ) ( 1376 3168 784 ) ( 1376 3168 528 ) 2 0 0 0 1 1 +} +// brush 143 +{ +( 1376 3136 760 ) ( 1376 3104 760 ) ( 1376 3104 744 ) 6 0 0 270 1 -1 +( 1392 3104 760 ) ( 1520 3104 760 ) ( 1520 3104 744 ) 6 0 0 270 1 -1 +( 1520 3136 744 ) ( 1392 3136 744 ) ( 1392 3104 744 ) 6 0 0 270 1 -1 +( 1392 3104 768 ) ( 1392 3136 768 ) ( 1520 3136 768 ) 6 0 0 270 1 -1 +( 1520 3136 760 ) ( 1392 3136 760 ) ( 1392 3136 744 ) 6 0 0 270 1 -1 +( 1536 3104 760 ) ( 1536 3136 760 ) ( 1536 3136 744 ) 6 0 0 270 1 -1 +} +// brush 144 +{ +( 1376 3136 744 ) ( 1376 3104 744 ) ( 1376 3104 728 ) 7 0 0 0 1 1 +( 1392 3104 744 ) ( 1408 3104 744 ) ( 1408 3104 728 ) 7 0 0 0 1 1 +( 1408 3136 528 ) ( 1392 3136 528 ) ( 1392 3104 528 ) 7 0 0 0 1 1 +( 1392 3104 744 ) ( 1392 3136 744 ) ( 1408 3136 744 ) 7 0 0 0 1 1 +( 1408 3136 744 ) ( 1392 3136 744 ) ( 1392 3136 728 ) 7 0 0 0 1 1 +( 1408 3104 744 ) ( 1408 3136 744 ) ( 1408 3136 728 ) 7 0 0 0 1 1 +} +// brush 145 +{ +( 1504 3136 744 ) ( 1504 3104 744 ) ( 1504 3104 728 ) 7 0 0 0 1 1 +( 1504 3104 744 ) ( 1520 3104 744 ) ( 1520 3104 728 ) 7 0 0 0 1 1 +( 1520 3136 528 ) ( 1504 3136 528 ) ( 1504 3104 528 ) 7 0 0 0 1 1 +( 1504 3104 744 ) ( 1504 3136 744 ) ( 1520 3136 744 ) 7 0 0 0 1 1 +( 1520 3136 744 ) ( 1504 3136 744 ) ( 1504 3136 728 ) 7 0 0 0 1 1 +( 1536 3104 744 ) ( 1536 3136 744 ) ( 1536 3136 728 ) 7 0 0 0 1 1 +} +// brush 146 +{ +( 1376 3008 744 ) ( 1376 2976 744 ) ( 1376 2976 728 ) 7 0 0 270 1 -1 +( 1392 2976 744 ) ( 1520 2976 744 ) ( 1520 2976 728 ) 7 0 0 270 1 -1 +( 1520 3008 704 ) ( 1392 3008 704 ) ( 1392 2976 704 ) 7 0 0 270 1 -1 +( 1392 2976 736 ) ( 1392 3008 736 ) ( 1520 3008 736 ) 7 0 0 270 1 -1 +( 1520 3008 744 ) ( 1392 3008 744 ) ( 1392 3008 728 ) 7 0 0 270 1 -1 +( 1536 2976 744 ) ( 1536 3008 744 ) ( 1536 3008 728 ) 7 0 0 270 1 -1 +} +// brush 147 +{ +( 1376 2880 744 ) ( 1376 2848 744 ) ( 1376 2848 728 ) 7 0 0 0 1 1 +( 1392 2848 744 ) ( 1408 2848 744 ) ( 1408 2848 728 ) 7 0 0 0 1 1 +( 1408 2880 528 ) ( 1392 2880 528 ) ( 1392 2848 528 ) 7 0 0 0 1 1 +( 1392 2848 744 ) ( 1392 2880 744 ) ( 1408 2880 744 ) 7 0 0 0 1 1 +( 1408 2880 744 ) ( 1392 2880 744 ) ( 1392 2880 728 ) 7 0 0 0 1 1 +( 1408 2848 744 ) ( 1408 2880 744 ) ( 1408 2880 728 ) 7 0 0 0 1 1 +} +// brush 148 +{ +( 1504 2880 744 ) ( 1504 2848 744 ) ( 1504 2848 728 ) 7 0 0 0 1 1 +( 1520 2848 744 ) ( 1536 2848 744 ) ( 1536 2848 728 ) 7 0 0 0 1 1 +( 1536 2880 528 ) ( 1520 2880 528 ) ( 1520 2848 528 ) 7 0 0 0 1 1 +( 1520 2848 736 ) ( 1520 2880 736 ) ( 1536 2880 736 ) 7 0 0 0 1 1 +( 1536 2880 744 ) ( 1520 2880 744 ) ( 1520 2880 728 ) 7 0 0 0 1 1 +( 1536 2848 744 ) ( 1536 2880 744 ) ( 1536 2880 728 ) 7 0 0 0 1 1 +} +// brush 149 +{ +( 1536 2768 784 ) ( 1536 2752 784 ) ( 1536 2752 496 ) 7 0 0 0 1 1 +( 1536 2720 784 ) ( 1560 2720 784 ) ( 1560 2720 496 ) 7 0 0 0 1 1 +( 1560 2768 384 ) ( 1536 2768 384 ) ( 1536 2752 384 ) 7 0 0 0 1 1 +( 1536 2752 784 ) ( 1536 2768 784 ) ( 1560 2768 784 ) 7 0 0 0 1 1 +( 1560 2848 784 ) ( 1536 2848 784 ) ( 1536 2848 496 ) 7 0 0 0 1 1 +( 1664 2744 784 ) ( 1664 2760 784 ) ( 1664 2760 496 ) 7 0 0 0 1 1 +} +// brush 150 +{ +( 1248 2704 784 ) ( 1248 2680 784 ) ( 1248 2680 304 ) 7 0 0 0 1 1 +( 1264 2368 784 ) ( 1280 2368 784 ) ( 1280 2368 304 ) 7 0 0 0 1 1 +( 1280 2704 96 ) ( 1264 2704 96 ) ( 1264 2680 96 ) 7 0 0 0 1 1 +( 1264 2680 896 ) ( 1264 2704 896 ) ( 1280 2704 896 ) 7 0 0 0 1 1 +( 1280 2688 784 ) ( 1264 2688 784 ) ( 1264 2688 304 ) 7 0 0 0 1 1 +( 1280 2680 784 ) ( 1280 2704 784 ) ( 1280 2704 304 ) 7 0 0 0 1 1 +} +// brush 151 +{ +( 1376 2568 512 ) ( 1376 2440 512 ) ( 1376 2440 432 ) 6 0 0 0 1 1 +( 1392 2432 512 ) ( 1520 2432 512 ) ( 1520 2432 432 ) 6 0 0 0 1 1 +( 1520 2560 432 ) ( 1392 2560 432 ) ( 1392 2432 432 ) 6 0 0 0 1 1 +( 1392 2432 448 ) ( 1392 2560 448 ) ( 1520 2560 448 ) 6 0 0 0 1 1 +( 1520 2592 512 ) ( 1392 2592 512 ) ( 1392 2592 432 ) 6 0 0 0 1 1 +( 1600 2432 512 ) ( 1600 2560 512 ) ( 1600 2560 432 ) 6 0 0 0 1 1 +} +// brush 152 +{ +( 1760 2560 448 ) ( 1760 2432 448 ) ( 1760 2432 368 ) 6 0 0 0 1 1 +( 1792 2432 448 ) ( 1920 2432 448 ) ( 1920 2432 368 ) 6 0 0 0 1 1 +( 1920 2560 368 ) ( 1792 2560 368 ) ( 1792 2432 368 ) 6 0 0 0 1 1 +( 1792 2432 384 ) ( 1792 2560 384 ) ( 1920 2560 384 ) 6 0 0 0 1 1 +( 1920 2560 448 ) ( 1792 2560 448 ) ( 1792 2560 368 ) 6 0 0 0 1 1 +( 1920 2432 448 ) ( 1920 2560 448 ) ( 1920 2560 368 ) 6 0 0 0 1 1 +} +// brush 153 +{ +( 1792 2960 368 ) ( 1792 2832 368 ) ( 1792 2832 288 ) 6 0 0 0 1 1 +( 1792 2784 368 ) ( 1920 2784 368 ) ( 1920 2784 288 ) 6 0 0 0 1 1 +( 1920 2960 288 ) ( 1792 2960 288 ) ( 1792 2832 288 ) 6 0 0 0 1 1 +( 1792 2832 304 ) ( 1792 2960 304 ) ( 1920 2960 304 ) 6 0 0 0 1 1 +( 1920 2976 368 ) ( 1792 2976 368 ) ( 1792 2976 288 ) 6 0 0 0 1 1 +( 1920 2832 368 ) ( 1920 2960 368 ) ( 1920 2960 288 ) 6 0 0 0 1 1 +} +// brush 154 +{ +( 1376 2960 320 ) ( 1376 2832 320 ) ( 1376 2832 240 ) 6 0 0 0 1 1 +( 1392 2848 320 ) ( 1520 2848 320 ) ( 1520 2848 240 ) 6 0 0 0 1 1 +( 1520 2960 240 ) ( 1392 2960 240 ) ( 1392 2832 240 ) 6 0 0 0 1 1 +( 1392 2832 256 ) ( 1392 2960 256 ) ( 1520 2960 256 ) 6 0 0 0 1 1 +( 1520 2976 320 ) ( 1392 2976 320 ) ( 1392 2976 240 ) 6 0 0 0 1 1 +( 1504 2832 320 ) ( 1504 2960 320 ) ( 1504 2960 240 ) 6 0 0 0 1 1 +} +// brush 155 +{ +( 1344 2632 192 ) ( 1344 2592 192 ) ( 1344 2592 176 ) 6 0 0 0 1 1 +( 1296 2400 176 ) ( 1296 2400 192 ) ( 1328 2400 192 ) 6 0 0 0 1 1 +( 1584 2624 176 ) ( 1560 2624 176 ) ( 1560 2584 176 ) 6 0 0 0 1 1 +( 1560 2584 192 ) ( 1560 2624 192 ) ( 1584 2624 192 ) 6 0 0 0 1 1 +( 1544 2656 192 ) ( 1520 2656 192 ) ( 1520 2656 176 ) 6 0 0 0 1 1 +( 1600 2616 192 ) ( 1600 2656 192 ) ( 1600 2656 176 ) 6 0 0 0 1 1 +} +// brush 156 +{ +( 1248 2552 160 ) ( 1248 2528 160 ) ( 1248 2528 80 ) 13 0 0 0 1 1 +( 1336 2112 160 ) ( 1352 2112 160 ) ( 1352 2112 80 ) 13 0 0 0 1 1 +( 1328 2552 80 ) ( 1312 2552 80 ) ( 1312 2528 80 ) 13 0 0 0 1 1 +( 1312 2528 96 ) ( 1312 2552 96 ) ( 1328 2552 96 ) 13 0 0 0 1 1 +( 1288 3072 160 ) ( 1272 3072 160 ) ( 1272 3072 80 ) 13 0 0 0 1 1 +( 2048 2536 160 ) ( 2048 2560 160 ) ( 2048 2560 80 ) 13 0 0 0 1 1 +} +// brush 157 +{ +( 1568 3072 784 ) ( 1568 2848 784 ) ( 1568 2848 368 ) 7 0 0 0 1 1 +( 1608 2944 368 ) ( 1608 2944 784 ) ( 1624 2944 784 ) 7 0 0 0 1 1 +( 1648 3072 384 ) ( 1632 3072 384 ) ( 1632 2848 384 ) 7 0 0 0 1 1 +( 1632 2848 784 ) ( 1632 3072 784 ) ( 1648 3072 784 ) 7 0 0 0 1 1 +( 1648 3072 784 ) ( 1632 3072 784 ) ( 1632 3072 368 ) 7 0 0 0 1 1 +( 1664 2848 784 ) ( 1664 3072 784 ) ( 1664 3072 368 ) 7 0 0 0 1 1 +} +// brush 158 +{ +( 1568 3072 784 ) ( 1568 2848 784 ) ( 1568 2848 368 ) 7 0 0 0 1 1 +( 1632 2848 784 ) ( 1648 2848 784 ) ( 1648 2848 368 ) 7 0 0 0 1 1 +( 1648 2912 592 ) ( 1632 2912 592 ) ( 1632 2840 592 ) 7 0 0 0 1 1 +( 1632 2848 784 ) ( 1632 3072 784 ) ( 1648 3072 784 ) 7 0 0 0 1 1 +( 1624 2944 784 ) ( 1608 2944 784 ) ( 1608 2944 368 ) 7 0 0 0 1 1 +( 1632 2848 784 ) ( 1632 3072 784 ) ( 1632 3072 368 ) 7 0 0 0 1 1 +} +// brush 159 +{ +( 1504 2352 784 ) ( 1504 2336 784 ) ( 1504 2336 304 ) 7 0 0 0 1 1 +( 1520 2304 784 ) ( 1544 2304 784 ) ( 1544 2304 304 ) 7 0 0 0 1 1 +( 1544 2352 80 ) ( 1520 2352 80 ) ( 1520 2336 80 ) 7 0 0 0 1 1 +( 1520 2336 896 ) ( 1520 2352 896 ) ( 1544 2352 896 ) 7 0 0 0 1 1 +( 1544 2336 784 ) ( 1520 2336 784 ) ( 1520 2336 304 ) 7 0 0 0 1 1 +( 2048 2336 784 ) ( 2048 2352 784 ) ( 2048 2352 304 ) 7 0 0 0 1 1 +} +// brush 160 +{ +( 2048 2352 784 ) ( 2048 2336 784 ) ( 2048 2336 80 ) 7 0 0 0 1 1 +( 2048 2336 784 ) ( 2064 2336 784 ) ( 2064 2336 80 ) 7 0 0 0 1 1 +( 2064 2352 80 ) ( 2048 2352 80 ) ( 2048 2336 80 ) 7 0 0 0 1 1 +( 2048 2336 896 ) ( 2048 2352 896 ) ( 2064 2352 896 ) 7 0 0 0 1 1 +( 2056 3072 784 ) ( 2040 3072 784 ) ( 2040 3072 80 ) 7 0 0 0 1 1 +( 2080 2336 784 ) ( 2080 2352 784 ) ( 2080 2352 80 ) 7 0 0 0 1 1 +} +// brush 161 +{ +( 1568 3088 784 ) ( 1568 3072 784 ) ( 1568 3072 80 ) 7 0 0 0 1 1 +( 2016 3072 784 ) ( 2040 3072 784 ) ( 2040 3072 80 ) 7 0 0 0 1 1 +( 2040 3088 80 ) ( 2016 3088 80 ) ( 2016 3072 80 ) 7 0 0 0 1 1 +( 2016 3072 896 ) ( 2016 3088 896 ) ( 2040 3088 896 ) 7 0 0 0 1 1 +( 2040 3104 784 ) ( 2016 3104 784 ) ( 2016 3104 80 ) 7 0 0 0 1 1 +( 2048 3072 784 ) ( 2048 3088 784 ) ( 2048 3088 80 ) 7 0 0 0 1 1 +} +// brush 162 +{ +( 1376 2528 432 ) ( 1376 2464 432 ) ( 1376 2464 416 ) 16 0 0 0 1 1 +( 1488 2464 432 ) ( 1568 2464 432 ) ( 1568 2464 416 ) 16 0 0 0 1 1 +( 1568 2528 400 ) ( 1488 2528 400 ) ( 1488 2464 400 ) 16 0 0 0 1 1 +( 1488 2464 432 ) ( 1488 2528 432 ) ( 1568 2528 432 ) 16 0 0 0 1 1 +( 1568 2528 432 ) ( 1488 2528 432 ) ( 1488 2528 416 ) 16 0 0 0 1 1 +( 1568 2464 432 ) ( 1568 2528 432 ) ( 1568 2528 416 ) 16 0 0 0 1 1 +} +// brush 163 +{ +( 1376 2528 400 ) ( 1376 2464 400 ) ( 1376 2464 368 ) 16 0 0 0 1 1 +( 1376 2464 400 ) ( 1408 2464 400 ) ( 1408 2464 368 ) 16 0 0 0 1 1 +( 1408 2528 96 ) ( 1376 2528 96 ) ( 1376 2464 96 ) 16 0 0 0 1 1 +( 1376 2464 400 ) ( 1376 2528 400 ) ( 1408 2528 400 ) 16 0 0 0 1 1 +( 1408 2528 400 ) ( 1376 2528 400 ) ( 1376 2528 368 ) 16 0 0 0 1 1 +( 1408 2464 400 ) ( 1408 2528 400 ) ( 1408 2528 368 ) 16 0 0 0 1 1 +} +// brush 164 +{ +( 1536 2528 400 ) ( 1536 2464 400 ) ( 1536 2464 368 ) 16 0 0 0 1 1 +( 1536 2464 400 ) ( 1568 2464 400 ) ( 1568 2464 368 ) 16 0 0 0 1 1 +( 1568 2528 96 ) ( 1536 2528 96 ) ( 1536 2464 96 ) 16 0 0 0 1 1 +( 1536 2464 400 ) ( 1536 2528 400 ) ( 1568 2528 400 ) 16 0 0 0 1 1 +( 1568 2528 400 ) ( 1536 2528 400 ) ( 1536 2528 368 ) 16 0 0 0 1 1 +( 1568 2464 400 ) ( 1568 2528 400 ) ( 1568 2528 368 ) 16 0 0 0 1 1 +} +// brush 165 +{ +( 2016 2560 784 ) ( 2016 2496 784 ) ( 2016 2496 304 ) 16 0 0 270 1 -1 +( 2016 2496 784 ) ( 2032 2496 784 ) ( 2032 2496 304 ) 16 0 0 270 1 -1 +( 2032 2560 80 ) ( 2016 2560 80 ) ( 2016 2496 80 ) 16 0 0 270 1 -1 +( 2016 2496 896 ) ( 2016 2560 896 ) ( 2032 2560 896 ) 16 0 0 270 1 -1 +( 2032 2560 784 ) ( 2016 2560 784 ) ( 2016 2560 304 ) 16 0 0 270 1 -1 +( 2080 2496 784 ) ( 2080 2560 784 ) ( 2080 2560 304 ) 16 0 0 270 1 -1 +} +// brush 166 +{ +( 2016 2752 784 ) ( 2016 2688 784 ) ( 2016 2688 304 ) 16 0 0 270 1 -1 +( 2016 2688 784 ) ( 2032 2688 784 ) ( 2032 2688 304 ) 16 0 0 270 1 -1 +( 2032 2752 80 ) ( 2016 2752 80 ) ( 2016 2688 80 ) 16 0 0 270 1 -1 +( 2016 2688 896 ) ( 2016 2752 896 ) ( 2032 2752 896 ) 16 0 0 270 1 -1 +( 2032 2752 784 ) ( 2016 2752 784 ) ( 2016 2752 304 ) 16 0 0 270 1 -1 +( 2080 2688 784 ) ( 2080 2752 784 ) ( 2080 2752 304 ) 16 0 0 270 1 -1 +} +// brush 167 +{ +( 2016 2944 784 ) ( 2016 2880 784 ) ( 2016 2880 304 ) 16 0 0 270 1 -1 +( 2016 2880 784 ) ( 2032 2880 784 ) ( 2032 2880 304 ) 16 0 0 270 1 -1 +( 2032 2944 80 ) ( 2016 2944 80 ) ( 2016 2880 80 ) 16 0 0 270 1 -1 +( 2016 2880 896 ) ( 2016 2944 896 ) ( 2032 2944 896 ) 16 0 0 270 1 -1 +( 2032 2944 784 ) ( 2016 2944 784 ) ( 2016 2944 304 ) 16 0 0 270 1 -1 +( 2080 2880 784 ) ( 2080 2944 784 ) ( 2080 2944 304 ) 16 0 0 270 1 -1 +} +// brush 168 +{ +( 1248 2944 784 ) ( 1248 2880 784 ) ( 1248 2880 304 ) 6 0 0 270 1 -1 +( 1264 2880 784 ) ( 1280 2880 784 ) ( 1280 2880 304 ) 6 0 0 270 1 -1 +( 1280 2944 80 ) ( 1264 2944 80 ) ( 1264 2880 80 ) 6 0 0 270 1 -1 +( 1264 2880 384 ) ( 1264 2944 384 ) ( 1280 2944 384 ) 6 0 0 270 1 -1 +( 1280 2944 784 ) ( 1264 2944 784 ) ( 1264 2944 304 ) 6 0 0 270 1 -1 +( 1280 2880 784 ) ( 1280 2944 784 ) ( 1280 2944 304 ) 6 0 0 270 1 -1 +} +// brush 169 +{ +( 1248 2752 784 ) ( 1248 2688 784 ) ( 1248 2688 304 ) 16 0 0 270 1 -1 +( 1280 2688 784 ) ( 1296 2688 784 ) ( 1296 2688 304 ) 16 0 0 270 1 -1 +( 1296 2752 80 ) ( 1280 2752 80 ) ( 1280 2688 80 ) 16 0 0 270 1 -1 +( 1280 2688 896 ) ( 1280 2752 896 ) ( 1296 2752 896 ) 16 0 0 270 1 -1 +( 1296 2752 784 ) ( 1280 2752 784 ) ( 1280 2752 304 ) 16 0 0 270 1 -1 +( 1312 2688 784 ) ( 1312 2752 784 ) ( 1312 2752 304 ) 16 0 0 270 1 -1 +} +// brush 170 +{ +( 1216 2560 784 ) ( 1216 2496 784 ) ( 1216 2496 304 ) 16 0 0 270 1 -1 +( 1280 2496 784 ) ( 1296 2496 784 ) ( 1296 2496 304 ) 16 0 0 270 1 -1 +( 1296 2560 80 ) ( 1280 2560 80 ) ( 1280 2496 80 ) 16 0 0 270 1 -1 +( 1280 2496 896 ) ( 1280 2560 896 ) ( 1296 2560 896 ) 16 0 0 270 1 -1 +( 1296 2560 784 ) ( 1280 2560 784 ) ( 1280 2560 304 ) 16 0 0 270 1 -1 +( 1312 2496 784 ) ( 1312 2560 784 ) ( 1312 2560 304 ) 16 0 0 270 1 -1 +} +// brush 171 +{ +( 1888 2352 784 ) ( 1888 2336 784 ) ( 1888 2336 304 ) 16 0 0 270 1 -1 +( 1888 2272 784 ) ( 1952 2272 784 ) ( 1952 2272 304 ) 16 0 0 270 1 -1 +( 1952 2336 80 ) ( 1952 2352 80 ) ( 1888 2352 80 ) 16 0 0 270 1 -1 +( 1888 2352 896 ) ( 1952 2352 896 ) ( 1952 2336 896 ) 16 0 0 270 1 -1 +( 1952 2368 784 ) ( 1888 2368 784 ) ( 1888 2368 304 ) 16 0 0 270 1 -1 +( 1952 2336 784 ) ( 1952 2352 784 ) ( 1952 2352 304 ) 16 0 0 270 1 -1 +} +// brush 172 +{ +( 1696 2352 784 ) ( 1696 2336 784 ) ( 1696 2336 304 ) 16 0 0 270 1 -1 +( 1696 2272 784 ) ( 1760 2272 784 ) ( 1760 2272 304 ) 16 0 0 270 1 -1 +( 1760 2336 80 ) ( 1760 2352 80 ) ( 1696 2352 80 ) 16 0 0 270 1 -1 +( 1696 2352 896 ) ( 1760 2352 896 ) ( 1760 2336 896 ) 16 0 0 270 1 -1 +( 1760 2368 784 ) ( 1696 2368 784 ) ( 1696 2368 304 ) 16 0 0 270 1 -1 +( 1760 2336 784 ) ( 1760 2352 784 ) ( 1760 2352 304 ) 16 0 0 270 1 -1 +} +// brush 173 +{ +( 1536 2352 784 ) ( 1536 2336 784 ) ( 1536 2336 304 ) 16 0 0 270 1 -1 +( 1536 2272 784 ) ( 1600 2272 784 ) ( 1600 2272 304 ) 16 0 0 270 1 -1 +( 1600 2336 80 ) ( 1600 2352 80 ) ( 1536 2352 80 ) 16 0 0 270 1 -1 +( 1536 2352 896 ) ( 1600 2352 896 ) ( 1600 2336 896 ) 16 0 0 270 1 -1 +( 1600 2368 784 ) ( 1536 2368 784 ) ( 1536 2368 304 ) 16 0 0 270 1 -1 +( 1600 2336 784 ) ( 1600 2352 784 ) ( 1600 2352 304 ) 16 0 0 270 1 -1 +} +// brush 174 +{ +( 1888 3072 784 ) ( 1888 3056 784 ) ( 1888 3056 304 ) 16 0 0 270 1 -1 +( 1888 3040 784 ) ( 1952 3040 784 ) ( 1952 3040 304 ) 16 0 0 270 1 -1 +( 1952 3056 80 ) ( 1952 3072 80 ) ( 1888 3072 80 ) 16 0 0 270 1 -1 +( 1888 3072 896 ) ( 1952 3072 896 ) ( 1952 3056 896 ) 16 0 0 270 1 -1 +( 1952 3104 784 ) ( 1888 3104 784 ) ( 1888 3104 304 ) 16 0 0 270 1 -1 +( 1952 3056 784 ) ( 1952 3072 784 ) ( 1952 3072 304 ) 16 0 0 270 1 -1 +} +// brush 175 +{ +( 1696 3072 784 ) ( 1696 3056 784 ) ( 1696 3056 304 ) 16 0 0 270 1 -1 +( 1696 3040 784 ) ( 1760 3040 784 ) ( 1760 3040 304 ) 16 0 0 270 1 -1 +( 1760 3056 80 ) ( 1760 3072 80 ) ( 1696 3072 80 ) 16 0 0 270 1 -1 +( 1696 3072 896 ) ( 1760 3072 896 ) ( 1760 3056 896 ) 16 0 0 270 1 -1 +( 1760 3104 784 ) ( 1696 3104 784 ) ( 1696 3104 304 ) 16 0 0 270 1 -1 +( 1760 3056 784 ) ( 1760 3072 784 ) ( 1760 3072 304 ) 16 0 0 270 1 -1 +} +// brush 176 +{ +( 1536 3072 784 ) ( 1536 3056 784 ) ( 1536 3056 304 ) 6 0 0 270 1 -1 +( 1520 3040 784 ) ( 1584 3040 784 ) ( 1584 3040 304 ) 6 0 0 270 1 -1 +( 1584 3056 80 ) ( 1584 3072 80 ) ( 1520 3072 80 ) 6 0 0 270 1 -1 +( 1520 3072 384 ) ( 1584 3072 384 ) ( 1584 3056 384 ) 6 0 0 270 1 -1 +( 1584 3072 784 ) ( 1520 3072 784 ) ( 1520 3072 304 ) 6 0 0 270 1 -1 +( 1600 3056 784 ) ( 1600 3072 784 ) ( 1600 3072 304 ) 6 0 0 270 1 -1 +} +// brush 177 +{ +( 1344 3072 784 ) ( 1344 3056 784 ) ( 1344 3056 304 ) 6 0 0 270 1 -1 +( 1336 3040 784 ) ( 1400 3040 784 ) ( 1400 3040 304 ) 6 0 0 270 1 -1 +( 1400 3056 96 ) ( 1400 3072 96 ) ( 1336 3072 96 ) 6 0 0 270 1 -1 +( 1336 3072 384 ) ( 1400 3072 384 ) ( 1400 3056 384 ) 6 0 0 270 1 -1 +( 1400 3072 784 ) ( 1336 3072 784 ) ( 1336 3072 304 ) 6 0 0 270 1 -1 +( 1408 3056 784 ) ( 1408 3072 784 ) ( 1408 3072 304 ) 6 0 0 270 1 -1 +} +// brush 178 +{ +( 1296 2744 784 ) ( 1296 2680 784 ) ( 1296 2680 720 ) 16 0 0 0 1 1 +( 1984 2688 784 ) ( 2016 2688 784 ) ( 2016 2688 720 ) 16 0 0 0 1 1 +( 2016 2752 720 ) ( 1984 2752 720 ) ( 1984 2688 720 ) 16 0 0 0 1 1 +( 1984 2688 752 ) ( 1984 2752 752 ) ( 2016 2752 752 ) 16 0 0 0 1 1 +( 2016 2752 784 ) ( 1984 2752 784 ) ( 1984 2752 720 ) 16 0 0 0 1 1 +( 2016 2688 784 ) ( 2016 2752 784 ) ( 2016 2752 720 ) 16 0 0 0 1 1 +} +// brush 179 +{ +( 1296 2552 784 ) ( 1296 2488 784 ) ( 1296 2488 720 ) 16 0 0 0 1 1 +( 1984 2496 784 ) ( 2016 2496 784 ) ( 2016 2496 720 ) 16 0 0 0 1 1 +( 2016 2560 720 ) ( 1984 2560 720 ) ( 1984 2496 720 ) 16 0 0 0 1 1 +( 1984 2496 752 ) ( 1984 2560 752 ) ( 2016 2560 752 ) 16 0 0 0 1 1 +( 2016 2560 784 ) ( 1984 2560 784 ) ( 1984 2560 720 ) 16 0 0 0 1 1 +( 2016 2496 784 ) ( 2016 2560 784 ) ( 2016 2560 720 ) 16 0 0 0 1 1 +} +// brush 180 +{ +( 1632 2952 784 ) ( 1632 2888 784 ) ( 1632 2888 720 ) 16 0 0 0 1 1 +( 1984 2880 784 ) ( 2016 2880 784 ) ( 2016 2880 720 ) 16 0 0 0 1 1 +( 2016 2944 720 ) ( 1984 2944 720 ) ( 1984 2880 720 ) 16 0 0 0 1 1 +( 1984 2880 752 ) ( 1984 2944 752 ) ( 2016 2944 752 ) 16 0 0 0 1 1 +( 2016 2944 784 ) ( 1984 2944 784 ) ( 1984 2944 720 ) 16 0 0 0 1 1 +( 2016 2880 784 ) ( 2016 2944 784 ) ( 2016 2944 720 ) 16 0 0 0 1 1 +} +// brush 181 +{ +( 1888 2720 784 ) ( 1888 2688 784 ) ( 1888 2688 720 ) 16 0 0 0 1 1 +( 1864 2368 784 ) ( 1928 2368 784 ) ( 1928 2368 720 ) 16 0 0 0 1 1 +( 1952 2688 720 ) ( 1952 2720 720 ) ( 1888 2720 720 ) 16 0 0 0 1 1 +( 1888 2720 752 ) ( 1952 2720 752 ) ( 1952 2688 752 ) 16 0 0 0 1 1 +( 1960 3040 784 ) ( 1896 3040 784 ) ( 1896 3040 720 ) 16 0 0 0 1 1 +( 1952 2688 784 ) ( 1952 2720 784 ) ( 1952 2720 720 ) 16 0 0 0 1 1 +} +// brush 182 +{ +( 1696 2720 784 ) ( 1696 2688 784 ) ( 1696 2688 720 ) 16 0 0 0 1 1 +( 1672 2368 784 ) ( 1736 2368 784 ) ( 1736 2368 720 ) 16 0 0 0 1 1 +( 1760 2688 720 ) ( 1760 2720 720 ) ( 1696 2720 720 ) 16 0 0 0 1 1 +( 1696 2720 752 ) ( 1760 2720 752 ) ( 1760 2688 752 ) 16 0 0 0 1 1 +( 1768 3040 784 ) ( 1704 3040 784 ) ( 1704 3040 720 ) 16 0 0 0 1 1 +( 1760 2688 784 ) ( 1760 2720 784 ) ( 1760 2720 720 ) 16 0 0 0 1 1 +} +// brush 183 +{ +( 1536 2720 784 ) ( 1536 2688 784 ) ( 1536 2688 720 ) 16 0 0 0 1 1 +( 1512 2368 784 ) ( 1576 2368 784 ) ( 1576 2368 720 ) 16 0 0 0 1 1 +( 1600 2688 720 ) ( 1600 2720 720 ) ( 1536 2720 720 ) 16 0 0 0 1 1 +( 1536 2720 752 ) ( 1600 2720 752 ) ( 1600 2688 752 ) 16 0 0 0 1 1 +( 1592 2752 784 ) ( 1528 2752 784 ) ( 1528 2752 720 ) 16 0 0 0 1 1 +( 1600 2688 784 ) ( 1600 2720 784 ) ( 1600 2720 720 ) 16 0 0 0 1 1 +} +// brush 184 +{ +( 1344 2704 784 ) ( 1344 2672 784 ) ( 1344 2672 720 ) 16 0 0 0 1 1 +( 1320 2304 784 ) ( 1384 2304 784 ) ( 1384 2304 720 ) 16 0 0 0 1 1 +( 1408 2672 720 ) ( 1408 2704 720 ) ( 1344 2704 720 ) 16 0 0 0 1 1 +( 1344 2704 752 ) ( 1408 2704 752 ) ( 1408 2672 752 ) 16 0 0 0 1 1 +( 1392 2832 784 ) ( 1328 2832 784 ) ( 1328 2832 720 ) 16 0 0 0 1 1 +( 1408 2672 784 ) ( 1408 2704 784 ) ( 1408 2704 720 ) 16 0 0 0 1 1 +} +// brush 185 +{ +( 1280 2336 304 ) ( 1280 2312 304 ) ( 1280 2312 80 ) 7 0 0 0 1 1 +( 1344 2112 304 ) ( 1360 2112 304 ) ( 1360 2112 80 ) 7 0 0 0 1 1 +( 1360 2336 80 ) ( 1344 2336 80 ) ( 1344 2312 80 ) 7 0 0 0 1 1 +( 1344 2312 896 ) ( 1344 2336 896 ) ( 1360 2336 896 ) 7 0 0 0 1 1 +( 1360 2368 192 ) ( 1360 2368 304 ) ( 1280 2368 304 ) 7 0 0 0 1 1 +( 1344 2312 304 ) ( 1344 2336 304 ) ( 1344 2336 80 ) 7 0 0 0 1 1 +} +// brush 186 +{ +( 1376 2368 192 ) ( 1376 2320 192 ) ( 1376 2320 176 ) 9 0 0 0 1 1 +( 1400 2144 192 ) ( 1528 2144 192 ) ( 1528 2144 176 ) 9 0 0 0 1 1 +( 1520 2368 176 ) ( 1392 2368 176 ) ( 1392 2320 176 ) 9 0 0 0 1 1 +( 1392 2320 192 ) ( 1392 2368 192 ) ( 1520 2368 192 ) 9 0 0 0 1 1 +( 1520 2400 192 ) ( 1392 2400 192 ) ( 1392 2400 176 ) 9 0 0 0 1 1 +( 1536 2320 192 ) ( 1536 2368 192 ) ( 1536 2368 176 ) 9 0 0 0 1 1 +} +// brush 187 +{ +( 1536 2272 192 ) ( 1536 2144 192 ) ( 1536 2144 176 ) 9 0 0 0 1 1 +( 1520 2144 192 ) ( 1600 2144 192 ) ( 1600 2144 176 ) 9 0 0 0 1 1 +( 1600 2272 176 ) ( 1520 2272 176 ) ( 1520 2144 176 ) 9 0 0 0 1 1 +( 1520 2144 192 ) ( 1520 2272 192 ) ( 1600 2272 192 ) 9 0 0 0 1 1 +( 1600 2272 192 ) ( 1520 2272 192 ) ( 1520 2272 176 ) 9 0 0 0 1 1 +( 2016 2224 192 ) ( 2016 2352 192 ) ( 2016 2352 176 ) 9 0 0 0 1 1 +} +// brush 188 +{ +( 2016 2336 336 ) ( 2016 1920 336 ) ( 2016 1920 16 ) 3 0 0 0 1 1 +( 2032 1920 336 ) ( 2048 1920 336 ) ( 2048 1920 16 ) 3 0 0 0 1 1 +( 2048 2336 16 ) ( 2032 2336 16 ) ( 2032 1920 16 ) 3 0 0 0 1 1 +( 2032 1920 352 ) ( 2032 2336 352 ) ( 2048 2336 352 ) 3 0 0 0 1 1 +( 2048 2112 16 ) ( 2048 2112 336 ) ( 2032 2112 336 ) 3 0 0 0 1 1 +( 2080 1920 336 ) ( 2080 2336 336 ) ( 2080 2336 16 ) 3 0 0 0 1 1 +} +// brush 189 +{ +( 1344 2112 16 ) ( 1344 2112 336 ) ( 1344 2096 336 ) 1 0 0 0 1 1 +( 1360 1600 336 ) ( 1840 1600 336 ) ( 1840 1600 16 ) 1 0 0 0 1 1 +( 1840 2112 16 ) ( 1360 2112 16 ) ( 1360 2096 16 ) 1 0 0 0 1 1 +( 1360 2096 512 ) ( 1360 2112 512 ) ( 1840 2112 512 ) 1 0 0 0 1 1 +( 1840 2112 336 ) ( 1360 2112 336 ) ( 1360 2112 16 ) 1 0 0 0 1 1 +( 1856 2096 336 ) ( 1856 2112 336 ) ( 1856 2112 16 ) 1 0 0 0 1 1 +} +// brush 190 +{ +( 1856 2112 336 ) ( 1856 2080 336 ) ( 1856 2080 304 ) 16 0 0 0 1 1 +( 1856 2080 336 ) ( 1880 2080 336 ) ( 1880 2080 304 ) 16 0 0 0 1 1 +( 1880 2080 320 ) ( 1880 2112 320 ) ( 1856 2112 320 ) 16 0 0 0 1 1 +( 1856 2112 352 ) ( 1880 2112 352 ) ( 1880 2080 352 ) 16 0 0 0 1 1 +( 1880 2112 336 ) ( 1856 2112 336 ) ( 1856 2112 304 ) 16 0 0 0 1 1 +( 2016 2080 320 ) ( 2016 2080 336 ) ( 2016 2112 336 ) 16 0 0 0 1 1 +} +// brush 191 +{ +( 1856 1984 336 ) ( 1856 1952 336 ) ( 1856 1952 304 ) 16 0 0 0 1 1 +( 1856 1952 336 ) ( 1880 1952 336 ) ( 1880 1952 304 ) 16 0 0 0 1 1 +( 1880 1952 320 ) ( 1880 1984 320 ) ( 1856 1984 320 ) 16 0 0 0 1 1 +( 1856 1984 352 ) ( 1880 1984 352 ) ( 1880 1952 352 ) 16 0 0 0 1 1 +( 1880 1984 336 ) ( 1856 1984 336 ) ( 1856 1984 304 ) 16 0 0 0 1 1 +( 2016 1952 320 ) ( 2016 1952 336 ) ( 2016 1984 336 ) 16 0 0 0 1 1 +} +// brush 192 +{ +( 1856 2144 192 ) ( 1856 1952 192 ) ( 1856 1952 176 ) 9 0 0 0 1 1 +( 1880 1888 192 ) ( 2008 1888 192 ) ( 2008 1888 176 ) 9 0 0 0 1 1 +( 2000 2144 96 ) ( 1872 2144 96 ) ( 1872 1952 96 ) 9 0 0 0 1 1 +( 1872 1952 192 ) ( 1872 2144 192 ) ( 2000 2144 192 ) 9 0 0 0 1 1 +( 2000 2144 192 ) ( 1872 2144 192 ) ( 1872 2144 176 ) 9 0 0 0 1 1 +( 2016 1952 192 ) ( 2016 2144 192 ) ( 2016 2144 176 ) 9 0 0 0 1 1 +} +// brush 193 +{ +( 1344 2208 336 ) ( 1344 2176 336 ) ( 1344 2176 320 ) 16 0 0 0 1 1 +( 1776 2176 336 ) ( 1808 2176 336 ) ( 1808 2176 320 ) 16 0 0 0 1 1 +( 1808 2208 320 ) ( 1776 2208 320 ) ( 1776 2176 320 ) 16 0 0 0 1 1 +( 1776 2176 352 ) ( 1776 2208 352 ) ( 1808 2208 352 ) 16 0 0 0 1 1 +( 1808 2208 336 ) ( 1776 2208 336 ) ( 1776 2208 320 ) 16 0 0 0 1 1 +( 2048 2176 320 ) ( 2048 2176 336 ) ( 2048 2208 336 ) 16 0 0 0 1 1 +} +// brush 194 +{ +( 1920 2080 336 ) ( 1920 2048 336 ) ( 1920 2048 320 ) 16 0 0 0 1 1 +( 1920 1984 320 ) ( 1920 1984 336 ) ( 1952 1984 336 ) 16 0 0 0 1 1 +( 1952 2048 320 ) ( 1952 2080 320 ) ( 1920 2080 320 ) 16 0 0 0 1 1 +( 1920 2080 352 ) ( 1952 2080 352 ) ( 1952 2048 352 ) 16 0 0 0 1 1 +( 1952 2080 320 ) ( 1952 2080 336 ) ( 1920 2080 336 ) 16 0 0 0 1 1 +( 1952 2048 336 ) ( 1952 2080 336 ) ( 1952 2080 320 ) 16 0 0 0 1 1 +} +// brush 195 +{ +( 1984 1984 192 ) ( 1984 1952 192 ) ( 1984 1952 176 ) 8 0 0 0 1 1 +( 2000 1952 192 ) ( 2016 1952 192 ) ( 2016 1952 176 ) 8 0 0 0 1 1 +( 2016 1952 192 ) ( 2016 1984 192 ) ( 2000 1984 192 ) 8 0 0 0 1 1 +( 2000 1984 224 ) ( 2016 1984 224 ) ( 2016 1952 224 ) 8 0 0 0 1 1 +( 2016 1984 192 ) ( 2000 1984 192 ) ( 2000 1984 176 ) 8 0 0 0 1 1 +( 2016 1952 192 ) ( 2016 1984 192 ) ( 2016 1984 176 ) 8 0 0 0 1 1 +} +// brush 196 +{ +( 1856 1984 208 ) ( 1856 1952 208 ) ( 1856 1952 192 ) 8 0 0 0 1 1 +( 1856 1952 208 ) ( 1872 1952 208 ) ( 1872 1952 192 ) 8 0 0 0 1 1 +( 1872 1952 192 ) ( 1872 1984 192 ) ( 1856 1984 192 ) 8 0 0 0 1 1 +( 1856 1984 224 ) ( 1872 1984 224 ) ( 1872 1952 224 ) 8 0 0 0 1 1 +( 1872 1984 208 ) ( 1856 1984 208 ) ( 1856 1984 192 ) 8 0 0 0 1 1 +( 1888 1952 208 ) ( 1888 1984 208 ) ( 1888 1984 192 ) 8 0 0 0 1 1 +} +// brush 197 +{ +( 1760 1520 294 ) ( 1760 1504 294 ) ( 1760 1504 278 ) 9 0 0 0 1 1 +( 1776 1200 280 ) ( 2096 1200 280 ) ( 2096 1200 264 ) 9 0 0 0 1 1 +( 2096 1520 272 ) ( 1776 1520 272 ) ( 1776 1200 272 ) 9 0 0 0 1 1 +( 1776 1200 304 ) ( 1776 1520 304 ) ( 2096 1520 304 ) 9 0 0 0 1 1 +( 2000 1504 278 ) ( 2000 1504 294 ) ( 1872 1504 294 ) 9 0 0 0 1 1 +( 2112 1504 294 ) ( 2112 1520 294 ) ( 2112 1520 278 ) 9 0 0 0 1 1 +} +// brush 198 +{ +( 2016 1920 336 ) ( 2016 1904 336 ) ( 2016 1904 16 ) 1 0 0 0 1 1 +( 2040 1600 336 ) ( 2056 1600 336 ) ( 2056 1600 16 ) 1 0 0 0 1 1 +( 2048 1920 16 ) ( 2032 1920 16 ) ( 2032 1904 16 ) 1 0 0 0 1 1 +( 2032 1904 512 ) ( 2032 1920 512 ) ( 2048 1920 512 ) 1 0 0 0 1 1 +( 2048 1920 336 ) ( 2032 1920 336 ) ( 2032 1920 16 ) 1 0 0 0 1 1 +( 2080 1904 336 ) ( 2080 1920 336 ) ( 2080 1920 16 ) 1 0 0 0 1 1 +} +// brush 199 +{ +( 1760 1408 480 ) ( 1760 1408 496 ) ( 1760 1376 496 ) 6 0 0 0 1 1 +( 1760 1376 496 ) ( 1784 1376 496 ) ( 1784 1376 464 ) 6 0 0 0 1 1 +( 1784 1376 480 ) ( 1784 1408 480 ) ( 1760 1408 480 ) 6 0 0 0 1 1 +( 1760 1408 512 ) ( 1784 1408 512 ) ( 1784 1376 512 ) 6 0 0 0 1 1 +( 1784 1408 496 ) ( 1760 1408 496 ) ( 1760 1408 464 ) 6 0 0 0 1 1 +( 2104 1368 496 ) ( 2104 1400 496 ) ( 2104 1400 464 ) 6 0 0 0 1 1 +} +// brush 200 +{ +( 1920 1568 496 ) ( 1920 1424 496 ) ( 1920 1424 480 ) 6 0 0 0 1 1 +( 1920 1408 496 ) ( 1952 1408 496 ) ( 1952 1408 480 ) 6 0 0 0 1 1 +( 1952 1568 480 ) ( 1920 1568 480 ) ( 1920 1424 480 ) 6 0 0 0 1 1 +( 1920 1424 512 ) ( 1920 1568 512 ) ( 1952 1568 512 ) 6 0 0 0 1 1 +( 1952 1696 496 ) ( 1920 1696 496 ) ( 1920 1696 480 ) 6 0 0 0 1 1 +( 1952 1424 496 ) ( 1952 1568 496 ) ( 1952 1568 480 ) 6 0 0 0 1 1 +} +// brush 201 +{ +( 800 1792 440 ) ( 800 1736 440 ) ( 800 1736 400 ) 16 0 0 0 1 1 +( 800 1504 440 ) ( 816 1504 440 ) ( 816 1504 400 ) 16 0 0 0 1 1 +( 816 1792 416 ) ( 800 1792 416 ) ( 800 1736 416 ) 16 0 0 0 1 1 +( 800 1736 440 ) ( 800 1792 440 ) ( 816 1792 440 ) 16 0 0 0 1 1 +( 816 1792 440 ) ( 800 1792 440 ) ( 800 1792 400 ) 16 0 0 0 1 1 +( 832 1736 440 ) ( 832 1792 440 ) ( 832 1792 400 ) 16 0 0 0 1 1 +} +// brush 202 +{ +( 800 1488 440 ) ( 800 1472 440 ) ( 800 1472 400 ) 16 0 0 0 1 1 +( 816 1472 440 ) ( 832 1472 440 ) ( 832 1472 400 ) 16 0 0 0 1 1 +( 832 1488 400 ) ( 816 1488 400 ) ( 816 1472 400 ) 16 0 0 0 1 1 +( 816 1472 464 ) ( 816 1488 464 ) ( 832 1488 464 ) 16 0 0 0 1 1 +( 832 1504 440 ) ( 816 1504 440 ) ( 816 1504 400 ) 16 0 0 0 1 1 +( 832 1472 440 ) ( 832 1488 440 ) ( 832 1488 400 ) 16 0 0 0 1 1 +} +// brush 203 +{ +( 640 1792 440 ) ( 640 1736 440 ) ( 640 1736 400 ) 16 0 0 0 1 1 +( 656 1504 440 ) ( 672 1504 440 ) ( 672 1504 400 ) 16 0 0 0 1 1 +( 672 1792 416 ) ( 656 1792 416 ) ( 656 1736 416 ) 16 0 0 0 1 1 +( 656 1736 440 ) ( 656 1792 440 ) ( 672 1792 440 ) 16 0 0 0 1 1 +( 672 1792 440 ) ( 656 1792 440 ) ( 656 1792 400 ) 16 0 0 0 1 1 +( 672 1736 440 ) ( 672 1792 440 ) ( 672 1792 400 ) 16 0 0 0 1 1 +} +// brush 204 +{ +( 640 1488 440 ) ( 640 1472 440 ) ( 640 1472 400 ) 16 0 0 0 1 1 +( 656 1472 440 ) ( 672 1472 440 ) ( 672 1472 400 ) 16 0 0 0 1 1 +( 672 1488 400 ) ( 656 1488 400 ) ( 656 1472 400 ) 16 0 0 0 1 1 +( 656 1472 464 ) ( 656 1488 464 ) ( 672 1488 464 ) 16 0 0 0 1 1 +( 672 1504 440 ) ( 656 1504 440 ) ( 656 1504 400 ) 16 0 0 0 1 1 +( 672 1472 440 ) ( 672 1488 440 ) ( 672 1488 400 ) 16 0 0 0 1 1 +} +// brush 205 +{ +( 256 2960 480 ) ( 256 2960 464 ) ( 256 3008 464 ) 4 0 0 0 1 1 +( 272 2976 464 ) ( 272 2976 480 ) ( 336 2976 480 ) 4 0 0 0 1 1 +( 432 2944 464 ) ( 432 3008 464 ) ( 320 3008 464 ) 4 0 0 0 1 1 +( 320 3008 480 ) ( 432 3008 480 ) ( 432 2944 480 ) 4 0 0 0 1 1 +( 432 3008 464 ) ( 432 3008 480 ) ( 320 3008 480 ) 4 0 0 0 1 1 +( 352 2944 464 ) ( 352 2944 480 ) ( 352 3008 480 ) 4 0 0 0 1 1 +} +// brush 206 +{ +( 832 832 640 ) ( 832 784 640 ) ( 832 784 624 ) 3 0 0 0 1 1 +( 912 768 640 ) ( 944 768 640 ) ( 944 768 624 ) 3 0 0 0 1 1 +( 944 832 640 ) ( 912 832 640 ) ( 912 784 640 ) 3 0 0 0 1 1 +( 912 784 832 ) ( 912 832 832 ) ( 944 832 832 ) 3 0 0 0 1 1 +( 944 832 640 ) ( 912 832 640 ) ( 912 832 624 ) 3 0 0 0 1 1 +( 960 784 640 ) ( 960 832 640 ) ( 960 832 624 ) 3 0 0 0 1 1 +} +// brush 207 +{ +( 672 2256 544 ) ( 672 2208 544 ) ( 672 2208 480 ) 16 0 0 0 1 1 +( 688 2208 544 ) ( 704 2208 544 ) ( 704 2208 480 ) 16 0 0 0 1 1 +( 704 2256 416 ) ( 688 2256 416 ) ( 688 2208 416 ) 16 0 0 0 1 1 +( 688 2208 544 ) ( 688 2256 544 ) ( 704 2256 544 ) 16 0 0 0 1 1 +( 704 2240 544 ) ( 688 2240 544 ) ( 688 2240 480 ) 16 0 0 0 1 1 +( 704 2208 544 ) ( 704 2256 544 ) ( 704 2256 480 ) 16 0 0 0 1 1 +} +// brush 208 +{ +( 800 2256 544 ) ( 800 2208 544 ) ( 800 2208 480 ) 16 0 0 0 1 1 +( 816 2208 544 ) ( 832 2208 544 ) ( 832 2208 480 ) 16 0 0 0 1 1 +( 832 2256 416 ) ( 816 2256 416 ) ( 816 2208 416 ) 16 0 0 0 1 1 +( 816 2208 544 ) ( 816 2256 544 ) ( 832 2256 544 ) 16 0 0 0 1 1 +( 832 2240 544 ) ( 816 2240 544 ) ( 816 2240 480 ) 16 0 0 0 1 1 +( 832 2208 544 ) ( 832 2256 544 ) ( 832 2256 480 ) 16 0 0 0 1 1 +} +// brush 209 +{ +( 416 1120 376 ) ( 416 1064 376 ) ( 416 1064 344 ) 10 0 0 0 1 1 +( 440 928 376 ) ( 552 928 376 ) ( 552 928 344 ) 10 0 0 0 1 1 +( 544 1120 336 ) ( 432 1120 336 ) ( 432 1064 336 ) 10 0 0 0 1 1 +( 432 1064 368 ) ( 432 1120 368 ) ( 544 1120 368 ) 10 0 0 0 1 1 +( 544 1184 376 ) ( 432 1184 376 ) ( 432 1184 344 ) 10 0 0 0 1 1 +( 736 1064 376 ) ( 736 1120 376 ) ( 736 1120 344 ) 10 0 0 0 1 1 +} +// brush 210 +{ +( 1600 2624 160 ) ( 1600 2528 160 ) ( 1600 2528 144 ) 9 0 0 0 1 1 +( 1600 2528 160 ) ( 1616 2528 160 ) ( 1616 2528 144 ) 9 0 0 0 1 1 +( 1616 2624 96 ) ( 1600 2624 96 ) ( 1600 2528 96 ) 9 0 0 0 1 1 +( 1600 2528 160 ) ( 1600 2624 160 ) ( 1616 2624 160 ) 9 0 0 0 1 1 +( 1616 2624 160 ) ( 1600 2624 160 ) ( 1600 2624 144 ) 9 0 0 0 1 1 +( 1632 2528 160 ) ( 1632 2624 160 ) ( 1632 2624 144 ) 9 0 0 0 1 1 +} +// brush 211 +{ +( 2016 1200 512 ) ( 2016 1216 16 ) ( 2016 1216 512 ) 3 0 0 0 1 1 +( 2128 1152 512 ) ( 2112 1152 16 ) ( 2112 1152 512 ) 3 0 0 0 1 1 +( 2112 1216 304 ) ( 2128 1200 304 ) ( 2128 1216 304 ) 3 0 0 0 1 1 +( 2128 1200 512 ) ( 2112 1216 512 ) ( 2128 1216 512 ) 3 0 0 0 1 1 +( 2112 1216 512 ) ( 2128 1216 16 ) ( 2128 1216 512 ) 3 0 0 0 1 1 +( 2144 1216 512 ) ( 2144 1200 16 ) ( 2144 1200 512 ) 3 0 0 0 1 1 +} +// brush 212 +{ +( 1760 1216 512 ) ( 1760 1200 512 ) ( 1760 1200 16 ) 3 0 0 0 1 1 +( 1824 1152 512 ) ( 1840 1152 512 ) ( 1840 1152 16 ) 3 0 0 0 1 1 +( 1840 1216 304 ) ( 1824 1216 304 ) ( 1824 1200 304 ) 3 0 0 0 1 1 +( 1824 1200 512 ) ( 1824 1216 512 ) ( 1840 1216 512 ) 3 0 0 0 1 1 +( 1840 1216 512 ) ( 1824 1216 512 ) ( 1824 1216 16 ) 3 0 0 0 1 1 +( 1856 1200 512 ) ( 1856 1216 512 ) ( 1856 1216 16 ) 3 0 0 0 1 1 +} +// brush 213 +{ +( 1888 1024 344 ) ( 1888 960 344 ) ( 1888 960 328 ) 8 0 0 90 1 1 +( 1904 960 344 ) ( 1968 960 344 ) ( 1968 960 328 ) 8 0 0 90 1 1 +( 1968 1024 336 ) ( 1904 1024 336 ) ( 1904 960 336 ) 8 0 0 90 1 1 +( 1904 960 352 ) ( 1904 1024 352 ) ( 1968 1024 352 ) 8 0 0 0 1 1 +( 1968 1056 344 ) ( 1904 1056 344 ) ( 1904 1056 328 ) 8 0 0 90 1 1 +( 1984 960 344 ) ( 1984 1024 344 ) ( 1984 1024 328 ) 8 0 0 90 1 1 +} +// brush 214 +{ +( 1888 1024 520 ) ( 1888 960 520 ) ( 1888 960 504 ) 8 0 0 90 1 1 +( 1904 960 520 ) ( 1968 960 520 ) ( 1968 960 504 ) 8 0 0 90 1 1 +( 1968 1024 504 ) ( 1904 1024 504 ) ( 1904 960 504 ) 8 0 0 0 1 1 +( 1904 960 520 ) ( 1904 1024 520 ) ( 1968 1024 520 ) 8 0 0 90 1 1 +( 1968 1024 520 ) ( 1904 1024 520 ) ( 1904 1024 504 ) 8 0 0 90 1 1 +( 1984 960 520 ) ( 1984 1024 520 ) ( 1984 1024 504 ) 8 0 0 90 1 1 +} +// brush 215 +{ +( 1760 1216 624 ) ( 1760 1200 624 ) ( 1760 1200 336 ) 6 0 0 0 1 1 +( 2000 1152 624 ) ( 2032 1152 624 ) ( 2032 1152 336 ) 6 0 0 0 1 1 +( 2032 1216 512 ) ( 2000 1216 512 ) ( 2000 1200 512 ) 6 0 0 0 1 1 +( 2000 1200 576 ) ( 2000 1216 576 ) ( 2032 1216 576 ) 6 0 0 0 1 1 +( 2032 1376 624 ) ( 2000 1376 624 ) ( 2000 1376 336 ) 6 0 0 0 1 1 +( 2112 1200 624 ) ( 2112 1216 624 ) ( 2112 1216 336 ) 6 0 0 0 1 1 +} +// brush 216 +{ +( 1792 1120 344 ) ( 1792 1056 344 ) ( 1792 1056 328 ) 14 0 0 0 1 1 +( 1808 1056 344 ) ( 1872 1056 344 ) ( 1872 1056 328 ) 14 0 0 0 1 1 +( 1872 1120 336 ) ( 1808 1120 336 ) ( 1808 1056 336 ) 14 0 0 0 1 1 +( 1808 1056 368 ) ( 1808 1120 368 ) ( 1872 1120 368 ) 14 0 0 0 1 1 +( 1872 1120 344 ) ( 1808 1120 344 ) ( 1808 1120 328 ) 14 0 0 0 1 1 +( 1856 1056 344 ) ( 1856 1120 344 ) ( 1856 1120 328 ) 14 0 0 0 1 1 +} +// brush 217 +{ +( 1792 1048 392 ) ( 1792 984 392 ) ( 1792 984 376 ) 14 0 0 0 1 1 +( 1776 992 392 ) ( 1840 992 392 ) ( 1840 992 376 ) 14 0 0 0 1 1 +( 1840 1048 368 ) ( 1776 1048 368 ) ( 1776 984 368 ) 14 0 0 0 1 1 +( 1776 984 400 ) ( 1776 1048 400 ) ( 1840 1048 400 ) 14 0 0 0 1 1 +( 1840 1024 392 ) ( 1776 1024 392 ) ( 1776 1024 376 ) 14 0 0 0 1 1 +( 1824 984 392 ) ( 1824 1048 392 ) ( 1824 1048 376 ) 14 0 0 0 1 1 +} +// brush 218 +{ +( 2080 1584 360 ) ( 2080 1520 360 ) ( 2080 1520 344 ) 1 0 0 0 1 1 +( 2080 1504 360 ) ( 2144 1504 360 ) ( 2144 1504 344 ) 1 0 0 0 1 1 +( 2144 1584 272 ) ( 2080 1584 272 ) ( 2080 1520 272 ) 1 0 0 0 1 1 +( 2080 1520 512 ) ( 2080 1584 512 ) ( 2144 1584 512 ) 1 0 0 0 1 1 +( 2144 1600 360 ) ( 2080 1600 360 ) ( 2080 1600 344 ) 1 0 0 0 1 1 +( 2144 1520 360 ) ( 2144 1584 360 ) ( 2144 1584 344 ) 1 0 0 0 1 1 +} +// brush 219 +{ +( 992 448 656 ) ( 992 336 656 ) ( 992 336 640 ) 4 0 0 0 1 1 +( 1008 224 656 ) ( 1200 224 656 ) ( 1200 224 640 ) 4 0 0 0 1 1 +( 1200 448 640 ) ( 1008 448 640 ) ( 1008 336 640 ) 4 0 0 0 1 1 +( 1008 336 656 ) ( 1008 448 656 ) ( 1200 448 656 ) 4 0 0 0 1 1 +( 1200 320 656 ) ( 1008 320 656 ) ( 1008 320 640 ) 4 0 0 0 1 1 +( 1216 336 656 ) ( 1216 448 656 ) ( 1216 448 640 ) 4 0 0 0 1 1 +} +// brush 220 +{ +( 960 448 640 ) ( 960 336 640 ) ( 960 336 624 ) 4 0 0 0 1 1 +( 1008 240 640 ) ( 1200 240 640 ) ( 1200 240 624 ) 4 0 0 0 1 1 +( 1200 448 624 ) ( 1008 448 624 ) ( 1008 336 624 ) 4 0 0 0 1 1 +( 1008 336 640 ) ( 1008 448 640 ) ( 1200 448 640 ) 4 0 0 0 1 1 +( 1200 448 640 ) ( 1008 448 640 ) ( 1008 448 624 ) 4 0 0 0 1 1 +( 1248 336 640 ) ( 1248 448 640 ) ( 1248 448 624 ) 4 0 0 0 1 1 +} +// brush 221 +{ +( 1856 960 512 ) ( 1856 832 512 ) ( 1856 832 336 ) 7 0 0 0 1 1 +( 1872 864 512 ) ( 2000 864 512 ) ( 2000 864 336 ) 7 0 0 0 1 1 +( 2000 960 336 ) ( 1872 960 336 ) ( 1872 832 336 ) 7 0 0 0 1 1 +( 1872 832 536 ) ( 1872 960 536 ) ( 2000 960 536 ) 7 0 0 0 1 1 +( 2000 960 512 ) ( 1872 960 512 ) ( 1872 960 336 ) 7 0 0 0 1 1 +( 2016 832 512 ) ( 2016 960 512 ) ( 2016 960 336 ) 7 0 0 0 1 1 +} +// brush 222 +{ +( 1920 904 608 ) ( 1920 880 608 ) ( 1920 880 592 ) 16 0 0 0 1 1 +( 1920 864 608 ) ( 1952 864 608 ) ( 1952 864 592 ) 16 0 0 0 1 1 +( 1952 880 576 ) ( 1952 904 576 ) ( 1920 904 576 ) 16 0 0 0 1 1 +( 1920 904 608 ) ( 1952 904 608 ) ( 1952 880 608 ) 16 0 0 0 1 1 +( 1960 1248 608 ) ( 1928 1248 608 ) ( 1928 1248 592 ) 16 0 0 0 1 1 +( 1952 880 608 ) ( 1952 904 608 ) ( 1952 904 592 ) 16 0 0 0 1 1 +} +// brush 223 +{ +( 1760 1600 512 ) ( 1760 1536 512 ) ( 1760 1536 496 ) 6 0 0 0 1 1 +( 2056 1376 512 ) ( 2128 1376 512 ) ( 2128 1376 496 ) 6 0 0 0 1 1 +( 1960 1456 512 ) ( 1888 1456 512 ) ( 1888 1392 512 ) 6 0 0 0 1 1 +( 1888 1392 544 ) ( 1888 1456 544 ) ( 1960 1456 544 ) 6 0 0 0 1 1 +( 1816 1920 512 ) ( 1744 1920 512 ) ( 1744 1920 496 ) 6 0 0 0 1 1 +( 2112 1216 512 ) ( 2112 1280 512 ) ( 2112 1280 496 ) 6 0 0 0 1 1 +} +// brush 224 +{ +( 1776 1032 608 ) ( 1776 1000 608 ) ( 1776 1000 592 ) 16 0 0 0 1 1 +( 2072 992 608 ) ( 2096 992 608 ) ( 2096 992 592 ) 16 0 0 0 1 1 +( 2096 1024 576 ) ( 2072 1024 576 ) ( 2072 992 576 ) 16 0 0 0 1 1 +( 2072 992 608 ) ( 2072 1024 608 ) ( 2096 1024 608 ) 16 0 0 0 1 1 +( 2096 1024 608 ) ( 2072 1024 608 ) ( 2072 1024 592 ) 16 0 0 0 1 1 +( 2112 992 608 ) ( 2112 1024 608 ) ( 2112 1024 592 ) 16 0 0 0 1 1 +} +// brush 225 +{ +( 1792 1248 344 ) ( 1792 1184 344 ) ( 1792 1184 328 ) 9 0 0 0 1 1 +( 1832 864 344 ) ( 2024 864 344 ) ( 2024 864 328 ) 9 0 0 0 1 1 +( 2032 1248 304 ) ( 1840 1248 304 ) ( 1840 1184 304 ) 9 0 0 0 1 1 +( 1840 1184 336 ) ( 1840 1248 336 ) ( 2032 1248 336 ) 9 0 0 0 1 1 +( 2032 1152 344 ) ( 1840 1152 344 ) ( 1840 1152 328 ) 9 0 0 0 1 1 +( 2144 1184 344 ) ( 2144 1248 344 ) ( 2144 1248 328 ) 9 0 0 0 1 1 +} +// brush 226 +{ +( 1760 1088 512 ) ( 1760 1072 512 ) ( 1760 1072 16 ) 2 0 0 0 1 1 +( 1776 896 512 ) ( 1792 896 512 ) ( 1792 896 16 ) 2 0 0 0 1 1 +( 1792 1088 336 ) ( 1776 1088 336 ) ( 1776 1072 336 ) 2 0 0 0 1 1 +( 1776 1072 608 ) ( 1776 1088 608 ) ( 1792 1088 608 ) 2 0 0 0 1 1 +( 1792 1200 512 ) ( 1776 1200 512 ) ( 1776 1200 16 ) 2 0 0 0 1 1 +( 1792 1072 512 ) ( 1792 1088 512 ) ( 1792 1088 16 ) 2 0 0 0 1 1 +} +// brush 227 +{ +( 2112 1088 512 ) ( 2112 1072 512 ) ( 2112 1072 16 ) 2 0 0 0 1 1 +( 2112 896 512 ) ( 2128 896 512 ) ( 2128 896 16 ) 2 0 0 0 1 1 +( 2128 1088 336 ) ( 2112 1088 336 ) ( 2112 1072 336 ) 2 0 0 0 1 1 +( 2112 1072 608 ) ( 2112 1088 608 ) ( 2128 1088 608 ) 2 0 0 0 1 1 +( 2128 1216 512 ) ( 2112 1216 512 ) ( 2112 1216 16 ) 2 0 0 0 1 1 +( 2144 1072 512 ) ( 2144 1088 512 ) ( 2144 1088 16 ) 2 0 0 0 1 1 +} +// brush 228 +{ +( 1824 832 512 ) ( 1824 816 512 ) ( 1824 816 336 ) 2 0 0 0 1 1 +( 1840 832 512 ) ( 2032 832 512 ) ( 2032 832 336 ) 2 0 0 0 1 1 +( 2032 832 336 ) ( 1840 832 336 ) ( 1840 816 336 ) 2 0 0 0 1 1 +( 1840 816 608 ) ( 1840 832 608 ) ( 2032 832 608 ) 2 0 0 0 1 1 +( 2032 864 512 ) ( 1840 864 512 ) ( 1840 864 336 ) 2 0 0 0 1 1 +( 2080 816 512 ) ( 2080 832 512 ) ( 2080 832 336 ) 2 0 0 0 1 1 +} +// brush 229 +{ +( 928 1552 832 ) ( 928 1520 832 ) ( 928 1520 624 ) 1 0 0 0 1 1 +( 1368 1216 832 ) ( 1384 1216 832 ) ( 1384 1216 624 ) 1 0 0 0 1 1 +( 1376 1552 384 ) ( 1360 1552 384 ) ( 1360 1520 384 ) 1 0 0 0 1 1 +( 1360 1520 832 ) ( 1360 1552 832 ) ( 1376 1552 832 ) 1 0 0 0 1 1 +( 1376 1248 688 ) ( 1376 1248 832 ) ( 1360 1248 832 ) 1 0 0 0 1 1 +( 1376 1520 832 ) ( 1376 1552 832 ) ( 1376 1552 624 ) 1 0 0 0 1 1 +} +// brush 230 +{ +( 704 928 768 ) ( 704 912 768 ) ( 704 912 624 ) 1 0 0 0 1 1 +( 848 928 768 ) ( 864 928 768 ) ( 864 928 624 ) 1 0 0 0 1 1 +( 864 944 608 ) ( 848 944 608 ) ( 848 928 608 ) 1 0 0 0 1 1 +( 848 928 768 ) ( 848 944 768 ) ( 864 944 768 ) 1 0 0 0 1 1 +( 864 960 768 ) ( 848 960 768 ) ( 848 960 624 ) 1 0 0 0 1 1 +( 832 928 768 ) ( 832 944 768 ) ( 832 944 624 ) 1 0 0 0 1 1 +} +// brush 231 +{ +( 320 1072 832 ) ( 320 1008 832 ) ( 320 1008 384 ) 11 0 0 0 1 1 +( 376 928 832 ) ( 408 928 832 ) ( 408 928 384 ) 11 0 0 0 1 1 +( 416 1072 360 ) ( 384 1072 360 ) ( 384 1008 360 ) 11 0 0 0 1 1 +( 384 1008 704 ) ( 384 1072 704 ) ( 416 1072 704 ) 11 0 0 0 1 1 +( 416 1152 832 ) ( 384 1152 832 ) ( 384 1152 384 ) 11 0 0 0 1 1 +( 416 1008 832 ) ( 416 1072 832 ) ( 416 1072 384 ) 11 0 0 0 1 1 +} +// brush 232 +{ +( 384 928 832 ) ( 384 904 832 ) ( 384 904 360 ) 2 0 0 0 1 1 +( 400 864 832 ) ( 576 864 832 ) ( 576 864 360 ) 2 0 0 0 1 1 +( 576 928 360 ) ( 400 928 360 ) ( 400 904 360 ) 2 0 0 0 1 1 +( 400 904 832 ) ( 400 928 832 ) ( 576 928 832 ) 2 0 0 0 1 1 +( 576 928 832 ) ( 400 928 832 ) ( 400 928 360 ) 2 0 0 0 1 1 +( 576 904 832 ) ( 576 928 832 ) ( 576 928 360 ) 2 0 0 0 1 1 +} +// brush 233 +{ +( 448 1232 392 ) ( 448 1176 392 ) ( 448 1176 360 ) 10 0 0 0 1 1 +( 440 1184 392 ) ( 552 1184 392 ) ( 552 1184 360 ) 10 0 0 0 1 1 +( 544 1232 352 ) ( 432 1232 352 ) ( 432 1176 352 ) 10 0 0 0 1 1 +( 432 1176 384 ) ( 432 1232 384 ) ( 544 1232 384 ) 10 0 0 0 1 1 +( 544 1344 392 ) ( 432 1344 392 ) ( 432 1344 360 ) 10 0 0 0 1 1 +( 992 1176 392 ) ( 992 1232 392 ) ( 992 1232 360 ) 10 0 0 0 1 1 +} +// brush 234 +{ +( 576 928 832 ) ( 576 929 832 ) ( 576 928 833 ) 6 0 0 0 1 1 +( 688 928 832 ) ( 688 928 833 ) ( 689 928 832 ) 6 0 0 0 1 1 +( 688 928 768 ) ( 689 928 768 ) ( 688 929 768 ) 6 0 0 0 1 1 +( 768 1024 848 ) ( 768 1025 848 ) ( 769 1024 848 ) 6 0 0 0 1 1 +( 768 1120 848 ) ( 769 1120 848 ) ( 768 1120 849 ) 6 0 0 0 1 1 +( 896 1024 848 ) ( 896 1024 849 ) ( 896 1025 848 ) 6 0 0 0 1 1 +} +// brush 235 +{ +( 800 1808 440 ) ( 800 1792 440 ) ( 800 1792 400 ) 16 0 0 0 1 1 +( 816 1792 440 ) ( 832 1792 440 ) ( 832 1792 400 ) 16 0 0 0 1 1 +( 832 1808 400 ) ( 816 1808 400 ) ( 816 1792 400 ) 16 0 0 0 1 1 +( 816 1792 464 ) ( 816 1808 464 ) ( 832 1808 464 ) 16 0 0 0 1 1 +( 832 1824 440 ) ( 816 1824 440 ) ( 816 1824 400 ) 16 0 0 0 1 1 +( 832 1792 440 ) ( 832 1808 440 ) ( 832 1808 400 ) 16 0 0 0 1 1 +} +// brush 236 +{ +( 640 1808 440 ) ( 640 1792 440 ) ( 640 1792 400 ) 16 0 0 0 1 1 +( 656 1792 440 ) ( 672 1792 440 ) ( 672 1792 400 ) 16 0 0 0 1 1 +( 672 1808 400 ) ( 656 1808 400 ) ( 656 1792 400 ) 16 0 0 0 1 1 +( 656 1792 464 ) ( 656 1808 464 ) ( 672 1808 464 ) 16 0 0 0 1 1 +( 672 1824 440 ) ( 656 1824 440 ) ( 656 1824 400 ) 16 0 0 0 1 1 +( 672 1792 440 ) ( 672 1808 440 ) ( 672 1808 400 ) 16 0 0 0 1 1 +} +// brush 237 +{ +( 224 1952 832 ) ( 224 1904 832 ) ( 224 1904 288 ) 11 0 0 0 1 1 +( 144 1904 832 ) ( 256 1904 832 ) ( 256 1904 288 ) 11 0 0 0 1 1 +( 256 1952 400 ) ( 144 1952 400 ) ( 144 1904 400 ) 11 0 0 0 1 1 +( 144 1904 656 ) ( 144 1952 656 ) ( 256 1952 656 ) 11 0 0 0 1 1 +( 256 2176 832 ) ( 144 2176 832 ) ( 144 2176 288 ) 11 0 0 0 1 1 +( 256 1904 832 ) ( 256 1952 832 ) ( 256 1952 288 ) 11 0 0 0 1 1 +} +// brush 238 +{ +( 480 2112 400 ) ( 480 2113 400 ) ( 480 2112 401 ) 6 0 0 0 1 1 +( 464 2112 400 ) ( 464 2112 401 ) ( 465 2112 400 ) 6 0 0 0 1 1 +( 464 2112 400 ) ( 465 2112 400 ) ( 464 2113 400 ) 6 0 0 0 1 1 +( 576 2160 624 ) ( 576 2161 624 ) ( 577 2160 624 ) 6 0 0 0 1 1 +( 576 2336 416 ) ( 577 2336 416 ) ( 576 2336 417 ) 6 0 0 0 1 1 +( 576 2160 416 ) ( 576 2160 417 ) ( 576 2161 416 ) 6 0 0 0 1 1 +} +// brush 239 +{ +( 1216 1776 832 ) ( 1216 1584 832 ) ( 1216 1584 288 ) 11 0 0 0 1 1 +( 1208 1792 832 ) ( 1304 1792 832 ) ( 1304 1792 288 ) 11 0 0 0 1 1 +( 1304 1776 400 ) ( 1208 1776 400 ) ( 1208 1584 400 ) 11 0 0 0 1 1 +( 1208 1584 784 ) ( 1208 1776 784 ) ( 1304 1776 784 ) 11 0 0 0 1 1 +( 1288 2176 832 ) ( 1208 2176 832 ) ( 1208 2176 288 ) 11 0 0 0 1 1 +( 1296 1584 832 ) ( 1296 1776 832 ) ( 1296 1776 288 ) 11 0 0 0 1 1 +} +// brush 240 +{ +( 928 2112 400 ) ( 928 2113 400 ) ( 928 2112 401 ) 6 0 0 0 1 1 +( 912 2112 400 ) ( 912 2112 401 ) ( 913 2112 400 ) 6 0 0 0 1 1 +( 912 2112 400 ) ( 913 2112 400 ) ( 912 2113 400 ) 6 0 0 0 1 1 +( 1024 2160 624 ) ( 1024 2161 624 ) ( 1025 2160 624 ) 6 0 0 0 1 1 +( 1024 2336 416 ) ( 1025 2336 416 ) ( 1024 2336 417 ) 6 0 0 0 1 1 +( 1024 2160 416 ) ( 1024 2160 417 ) ( 1024 2161 416 ) 6 0 0 0 1 1 +} +// brush 241 +{ +( 384 2112 400 ) ( 384 2113 400 ) ( 384 2112 401 ) 6 0 0 0 1 1 +( 368 2240 400 ) ( 368 2240 401 ) ( 369 2240 400 ) 6 0 0 0 1 1 +( 368 2112 400 ) ( 369 2112 400 ) ( 368 2113 400 ) 6 0 0 0 1 1 +( 480 2160 608 ) ( 480 2161 608 ) ( 481 2160 608 ) 6 0 0 0 1 1 +( 480 2272 416 ) ( 481 2272 416 ) ( 480 2272 417 ) 6 0 0 0 1 1 +( 480 2160 416 ) ( 480 2160 417 ) ( 480 2161 416 ) 6 0 0 0 1 1 +} +// brush 242 +{ +( 512 1680 320 ) ( 512 1681 320 ) ( 512 1680 321 ) 13 0 0 0 1 1 +( 512 1568 320 ) ( 512 1568 321 ) ( 513 1568 320 ) 13 0 0 0 1 1 +( 512 1680 320 ) ( 513 1680 320 ) ( 512 1681 320 ) 13 0 0 0 1 1 +( 688 1760 336 ) ( 688 1761 336 ) ( 689 1760 336 ) 13 0 0 0 1 1 +( 688 1760 336 ) ( 689 1760 336 ) ( 688 1760 337 ) 13 0 0 0 1 1 +( 992 1760 336 ) ( 992 1760 337 ) ( 992 1761 336 ) 13 0 0 0 1 1 +} +// brush 243 +{ +( 896 1584 384 ) ( 896 1568 384 ) ( 896 1568 368 ) 11 0 0 0 1 1 +( 528 1568 384 ) ( 552 1568 384 ) ( 552 1568 368 ) 11 0 0 0 1 1 +( 552 1584 336 ) ( 528 1584 336 ) ( 528 1568 336 ) 11 0 0 0 1 1 +( 528 1568 352 ) ( 528 1584 352 ) ( 552 1584 352 ) 11 0 0 0 1 1 +( 552 1632 384 ) ( 528 1632 384 ) ( 528 1632 368 ) 11 0 0 0 1 1 +( 992 1568 384 ) ( 992 1584 384 ) ( 992 1584 368 ) 11 0 0 0 1 1 +} +// brush 244 +{ +( 192 2784 464 ) ( 192 2785 464 ) ( 192 2784 465 ) 16 0 0 0 1 1 +( 192 2784 464 ) ( 192 2784 465 ) ( 193 2784 464 ) 16 0 0 0 1 1 +( 192 2784 464 ) ( 193 2784 464 ) ( 192 2785 464 ) 16 0 0 0 1 1 +( 224 2816 640 ) ( 224 2817 640 ) ( 225 2816 640 ) 16 0 0 0 1 1 +( 224 2816 480 ) ( 225 2816 480 ) ( 224 2816 481 ) 16 0 0 0 1 1 +( 224 2816 480 ) ( 224 2816 481 ) ( 224 2817 480 ) 16 0 0 0 1 1 +} +// brush 245 +{ +( 416 2784 464 ) ( 416 2785 464 ) ( 416 2784 465 ) 16 0 0 0 1 1 +( 416 2784 464 ) ( 416 2784 465 ) ( 417 2784 464 ) 16 0 0 0 1 1 +( 416 2784 464 ) ( 417 2784 464 ) ( 416 2785 464 ) 16 0 0 0 1 1 +( 448 2816 640 ) ( 448 2817 640 ) ( 449 2816 640 ) 16 0 0 0 1 1 +( 448 2816 480 ) ( 449 2816 480 ) ( 448 2816 481 ) 16 0 0 0 1 1 +( 448 2816 480 ) ( 448 2816 481 ) ( 448 2817 480 ) 16 0 0 0 1 1 +} +// brush 246 +{ +( 480 2720 752 ) ( 480 2624 752 ) ( 480 2624 448 ) 3 0 0 0 1 1 +( 496 2624 672 ) ( 512 2624 672 ) ( 512 2624 544 ) 3 0 0 0 1 1 +( 512 2704 576 ) ( 496 2704 576 ) ( 496 2624 576 ) 3 0 0 0 1 1 +( 496 2624 864 ) ( 496 2720 864 ) ( 512 2720 864 ) 3 0 0 0 1 1 +( 512 2752 672 ) ( 496 2752 672 ) ( 496 2752 544 ) 3 0 0 0 1 1 +( 512 2624 752 ) ( 512 2720 752 ) ( 512 2720 448 ) 3 0 0 0 1 1 +} +// brush 247 +{ +( 800 2640 768 ) ( 800 2641 768 ) ( 800 2640 769 ) 6 0 0 0 1 1 +( 752 2624 768 ) ( 752 2624 769 ) ( 753 2624 768 ) 6 0 0 0 1 1 +( 752 2640 768 ) ( 753 2640 768 ) ( 752 2641 768 ) 6 0 0 0 1 1 +( 912 2944 800 ) ( 912 2945 800 ) ( 913 2944 800 ) 6 0 0 0 1 1 +( 912 2944 784 ) ( 913 2944 784 ) ( 912 2944 785 ) 6 0 0 0 1 1 +( 928 2944 784 ) ( 928 2944 785 ) ( 928 2945 784 ) 6 0 0 0 1 1 +} +// brush 248 +{ +( 512 3296 864 ) ( 512 3088 864 ) ( 512 3088 848 ) 6 0 0 0 1 1 +( 528 3040 864 ) ( 592 3040 864 ) ( 592 3040 848 ) 6 0 0 0 1 1 +( 592 3296 800 ) ( 528 3296 800 ) ( 528 3088 800 ) 6 0 0 0 1 1 +( 528 3088 896 ) ( 528 3296 896 ) ( 592 3296 896 ) 6 0 0 0 1 1 +( 592 3296 864 ) ( 528 3296 864 ) ( 528 3296 848 ) 6 0 0 0 1 1 +( 608 3088 864 ) ( 608 3296 864 ) ( 608 3296 848 ) 6 0 0 0 1 1 +} +// brush 249 +{ +( 512 2624 800 ) ( 512 2625 800 ) ( 512 2624 801 ) 6 0 0 0 1 1 +( 512 2624 800 ) ( 512 2624 801 ) ( 513 2624 800 ) 6 0 0 0 1 1 +( 512 2624 800 ) ( 513 2624 800 ) ( 512 2625 800 ) 6 0 0 0 1 1 +( 800 2944 864 ) ( 800 2945 864 ) ( 801 2944 864 ) 6 0 0 0 1 1 +( 800 2944 816 ) ( 801 2944 816 ) ( 800 2944 817 ) 6 0 0 0 1 1 +( 800 2944 816 ) ( 800 2944 817 ) ( 800 2945 816 ) 6 0 0 0 1 1 +} +// brush 250 +{ +( 768 3056 480 ) ( 768 3057 480 ) ( 768 3056 481 ) 16 0 0 0 1 1 +( 752 3056 480 ) ( 752 3056 481 ) ( 753 3056 480 ) 16 0 0 0 1 1 +( 752 3056 576 ) ( 753 3056 576 ) ( 752 3057 576 ) 16 0 0 0 1 1 +( 800 3088 736 ) ( 800 3089 736 ) ( 801 3088 736 ) 16 0 0 0 1 1 +( 800 3104 496 ) ( 801 3104 496 ) ( 800 3104 497 ) 16 0 0 0 1 1 +( 832 3088 496 ) ( 832 3088 497 ) ( 832 3089 496 ) 16 0 0 0 1 1 +} +// brush 251 +{ +( 448 3208 512 ) ( 448 3208 528 ) ( 448 3144 528 ) 4 0 0 0 1 1 +( 456 3072 512 ) ( 456 3072 528 ) ( 520 3072 528 ) 4 0 0 0 1 1 +( 512 3208 496 ) ( 448 3208 496 ) ( 448 3144 496 ) 4 0 0 0 1 1 +( 448 3144 528 ) ( 448 3208 528 ) ( 512 3208 528 ) 4 0 0 0 1 1 +( 544 3456 512 ) ( 544 3456 528 ) ( 480 3456 528 ) 4 0 0 0 1 1 +( 608 3176 512 ) ( 608 3176 528 ) ( 608 3240 528 ) 4 0 0 0 1 1 +} +// brush 252 +{ +( 1056 3136 784 ) ( 1056 3088 784 ) ( 1056 3088 528 ) 3 0 0 0 1 1 +( 1120 2976 784 ) ( 1136 2976 784 ) ( 1136 2976 528 ) 3 0 0 0 1 1 +( 1136 3136 528 ) ( 1120 3136 528 ) ( 1120 3088 528 ) 3 0 0 0 1 1 +( 1120 3088 784 ) ( 1120 3136 784 ) ( 1136 3136 784 ) 3 0 0 0 1 1 +( 1136 3136 784 ) ( 1120 3136 784 ) ( 1120 3136 528 ) 3 0 0 0 1 1 +( 1168 3088 784 ) ( 1168 3136 784 ) ( 1168 3136 528 ) 3 0 0 0 1 1 +} +// brush 253 +{ +( 896 3248 720 ) ( 896 3249 720 ) ( 896 3248 721 ) 16 0 0 0 1 1 +( 1184 3232 720 ) ( 1184 3232 721 ) ( 1185 3232 720 ) 16 0 0 0 1 1 +( 1184 3248 704 ) ( 1185 3248 704 ) ( 1184 3249 704 ) 16 0 0 0 1 1 +( 1312 3296 832 ) ( 1312 3297 832 ) ( 1313 3296 832 ) 16 0 0 0 1 1 +( 1312 3296 736 ) ( 1313 3296 736 ) ( 1312 3296 737 ) 16 0 0 0 1 1 +( 1536 3296 736 ) ( 1536 3296 737 ) ( 1536 3297 736 ) 16 0 0 0 1 1 +} +// brush 254 +{ +( 896 144 848 ) ( 896 145 848 ) ( 896 144 849 ) 12 0 0 0 1 1 +( 1024 512 848 ) ( 1024 512 849 ) ( 1025 512 848 ) 12 0 0 0 1 1 +( 1024 144 832 ) ( 1025 144 832 ) ( 1024 145 832 ) 12 0 0 0 1 1 +( 1376 1248 864 ) ( 1376 1249 864 ) ( 1377 1248 864 ) 12 0 0 0 1 1 +( 1376 1248 864 ) ( 1377 1248 864 ) ( 1376 1248 865 ) 12 0 0 0 1 1 +( 1376 1248 864 ) ( 1376 1248 865 ) ( 1376 1249 864 ) 12 0 0 0 1 1 +} +// brush 255 +{ +( 928 128 816 ) ( 928 129 816 ) ( 928 128 817 ) 6 0 0 0 1 1 +( 928 32 816 ) ( 928 32 817 ) ( 929 32 816 ) 6 0 0 0 1 1 +( 928 128 816 ) ( 929 128 816 ) ( 928 129 816 ) 6 0 0 0 1 1 +( 1280 704 832 ) ( 1280 705 832 ) ( 1281 704 832 ) 6 0 0 0 1 1 +( 1280 512 832 ) ( 1281 512 832 ) ( 1280 512 833 ) 6 0 0 0 1 1 +( 1280 704 832 ) ( 1280 704 833 ) ( 1280 705 832 ) 6 0 0 0 1 1 +} +// brush 256 +{ +( 32 3136 496 ) ( 32 3137 496 ) ( 32 3136 497 ) 14 0 0 0 1 1 +( 32 3168 496 ) ( 32 3168 497 ) ( 33 3168 496 ) 14 0 0 0 1 1 +( 32 3136 496 ) ( 33 3136 496 ) ( 32 3137 496 ) 14 0 0 0 1 1 +( 112 3200 528 ) ( 112 3201 528 ) ( 113 3200 528 ) 14 0 0 0 1 1 +( 112 3200 512 ) ( 113 3200 512 ) ( 112 3200 513 ) 14 0 0 0 1 1 +( 64 3200 512 ) ( 64 3200 513 ) ( 64 3201 512 ) 14 0 0 0 1 1 +} +// brush 257 +{ +( 32 3104 496 ) ( 32 3105 496 ) ( 32 3104 497 ) 14 0 0 0 1 1 +( 32 3136 496 ) ( 32 3136 497 ) ( 33 3136 496 ) 14 0 0 0 1 1 +( 32 3104 496 ) ( 33 3104 496 ) ( 32 3105 496 ) 14 0 0 0 1 1 +( 112 3168 560 ) ( 112 3169 560 ) ( 113 3168 560 ) 14 0 0 0 1 1 +( 112 3168 512 ) ( 113 3168 512 ) ( 112 3168 513 ) 14 0 0 0 1 1 +( 96 3168 512 ) ( 96 3168 513 ) ( 96 3169 512 ) 14 0 0 0 1 1 +} +// brush 258 +{ +( 32 3040 496 ) ( 32 3041 496 ) ( 32 3040 497 ) 14 0 0 0 1 1 +( 32 3072 496 ) ( 32 3072 497 ) ( 33 3072 496 ) 14 0 0 0 1 1 +( 32 3040 496 ) ( 33 3040 496 ) ( 32 3041 496 ) 14 0 0 0 1 1 +( 112 3104 592 ) ( 112 3105 592 ) ( 113 3104 592 ) 14 0 0 0 1 1 +( 112 3104 512 ) ( 113 3104 512 ) ( 112 3104 513 ) 14 0 0 0 1 1 +( 64 3104 512 ) ( 64 3104 513 ) ( 64 3105 512 ) 14 0 0 0 1 1 +} +// brush 259 +{ +( 992 2560 432 ) ( 992 2561 432 ) ( 992 2560 433 ) 8 0 0 0 1 1 +( 992 2560 432 ) ( 992 2560 433 ) ( 993 2560 432 ) 8 0 0 0 1 1 +( 992 2560 432 ) ( 993 2560 432 ) ( 992 2561 432 ) 8 0 0 0 1 1 +( 1024 2592 464 ) ( 1024 2593 464 ) ( 1025 2592 464 ) 8 0 0 0 1 1 +( 1024 2592 448 ) ( 1025 2592 448 ) ( 1024 2592 449 ) 8 0 0 0 1 1 +( 1024 2592 448 ) ( 1024 2592 449 ) ( 1024 2593 448 ) 8 0 0 0 1 1 +} +// brush 260 +{ +( 672 3184 560 ) ( 672 3128 560 ) ( 672 3128 544 ) 16 0 0 0 1 1 +( 600 2992 560 ) ( 632 2992 560 ) ( 632 2992 544 ) 16 0 0 0 1 1 +( 640 3184 544 ) ( 608 3184 544 ) ( 608 3128 544 ) 16 0 0 0 1 1 +( 608 3128 560 ) ( 608 3184 560 ) ( 640 3184 560 ) 16 0 0 0 1 1 +( 648 3264 560 ) ( 616 3264 560 ) ( 616 3264 544 ) 16 0 0 0 1 1 +( 912 3128 560 ) ( 912 3184 560 ) ( 912 3184 544 ) 16 0 0 0 1 1 +} +// brush 261 +{ +( 576 3088 416 ) ( 576 3040 416 ) ( 576 3040 400 ) 6 0 0 0 1 1 +( 720 2976 304 ) ( 720 2976 656 ) ( 736 2976 656 ) 6 0 0 0 1 1 +( 848 3088 496 ) ( 624 3088 496 ) ( 624 3040 496 ) 6 0 0 0 1 1 +( 736 3056 544 ) ( 720 3056 544 ) ( 720 3072 544 ) 6 0 0 0 1 1 +( 736 3072 304 ) ( 736 3072 656 ) ( 720 3072 656 ) 6 0 0 0 1 1 +( 1120 3056 304 ) ( 1120 3056 656 ) ( 1120 3072 656 ) 6 0 0 0 1 1 +} +// brush 262 +{ +( 2048 2256 272 ) ( 2048 2256 304 ) ( 2048 2224 304 ) 7 0 0 0 1 1 +( 2048 2112 336 ) ( 2064 2112 336 ) ( 2064 2112 16 ) 7 0 0 0 1 1 +( 2064 2240 16 ) ( 2048 2240 16 ) ( 2048 2120 16 ) 7 0 0 0 1 1 +( 2048 2120 352 ) ( 2048 2240 352 ) ( 2064 2240 352 ) 7 0 0 0 1 1 +( 2064 2304 336 ) ( 2048 2304 336 ) ( 2048 2304 16 ) 7 0 0 0 1 1 +( 2080 2120 336 ) ( 2080 2240 336 ) ( 2080 2240 16 ) 7 0 0 0 1 1 +} +// brush 263 +{ +( 1536 2752 96 ) ( 1536 2753 96 ) ( 1536 2752 97 ) 16 0 0 0 1 1 +( 1536 2752 96 ) ( 1536 2752 97 ) ( 1537 2752 96 ) 16 0 0 0 1 1 +( 1536 2752 96 ) ( 1537 2752 96 ) ( 1536 2753 96 ) 16 0 0 0 1 1 +( 1632 2816 384 ) ( 1632 2817 384 ) ( 1633 2816 384 ) 16 0 0 0 1 1 +( 1632 2816 112 ) ( 1633 2816 112 ) ( 1632 2816 113 ) 16 0 0 0 1 1 +( 1632 2816 112 ) ( 1632 2816 113 ) ( 1632 2817 112 ) 16 0 0 0 1 1 +} +// brush 264 +{ +( 1248 3072 784 ) ( 1248 3048 784 ) ( 1248 3048 368 ) 7 0 0 0 1 1 +( 1616 2848 784 ) ( 1632 2848 784 ) ( 1632 2848 368 ) 7 0 0 0 1 1 +( 1632 2872 384 ) ( 1616 2872 384 ) ( 1616 2848 384 ) 7 0 0 0 1 1 +( 1616 2848 496 ) ( 1616 2872 496 ) ( 1632 2872 496 ) 7 0 0 0 1 1 +( 1296 3072 784 ) ( 1280 3072 784 ) ( 1280 3072 368 ) 7 0 0 0 1 1 +( 1632 2848 784 ) ( 1632 2872 784 ) ( 1632 2872 368 ) 7 0 0 0 1 1 +} +// brush 265 +{ +( 1344 2336 352 ) ( 1344 2112 352 ) ( 1344 2112 336 ) 7 0 0 0 1 1 +( 1360 2112 352 ) ( 1840 2112 352 ) ( 1840 2112 336 ) 7 0 0 0 1 1 +( 1840 2112 352 ) ( 1840 2336 352 ) ( 1360 2336 352 ) 7 0 0 0 1 1 +( 1360 2336 896 ) ( 1840 2336 896 ) ( 1840 2112 896 ) 7 0 0 0 1 1 +( 1840 2304 336 ) ( 1840 2304 352 ) ( 1360 2304 352 ) 7 0 0 0 1 1 +( 1824 2112 352 ) ( 1824 2336 352 ) ( 1824 2336 336 ) 7 0 0 0 1 1 +} +// brush 266 +{ +( 1856 2912 304 ) ( 1856 2913 304 ) ( 1856 2912 305 ) 8 0 0 0 1 1 +( 1856 2912 304 ) ( 1856 2912 305 ) ( 1857 2912 304 ) 8 0 0 0 1 1 +( 1856 2912 304 ) ( 1857 2912 304 ) ( 1856 2913 304 ) 8 0 0 0 1 1 +( 1888 2944 336 ) ( 1888 2945 336 ) ( 1889 2944 336 ) 8 0 0 0 1 1 +( 1888 2944 320 ) ( 1889 2944 320 ) ( 1888 2944 321 ) 8 0 0 0 1 1 +( 1888 2944 320 ) ( 1888 2944 321 ) ( 1888 2945 320 ) 8 0 0 0 1 1 +} +// brush 267 +{ +( 1856 2464 384 ) ( 1856 2465 384 ) ( 1856 2464 385 ) 8 0 0 0 1 1 +( 1856 2464 384 ) ( 1856 2464 385 ) ( 1857 2464 384 ) 8 0 0 0 1 1 +( 1856 2464 384 ) ( 1857 2464 384 ) ( 1856 2465 384 ) 8 0 0 0 1 1 +( 1888 2496 416 ) ( 1888 2497 416 ) ( 1889 2496 416 ) 8 0 0 0 1 1 +( 1888 2496 400 ) ( 1889 2496 400 ) ( 1888 2496 401 ) 8 0 0 0 1 1 +( 1888 2496 400 ) ( 1888 2496 401 ) ( 1888 2497 400 ) 8 0 0 0 1 1 +} +// brush 268 +{ +( 1408 2448 448 ) ( 1408 2449 448 ) ( 1408 2448 449 ) 8 0 0 0 1 1 +( 1408 2464 448 ) ( 1408 2464 449 ) ( 1409 2464 448 ) 8 0 0 0 1 1 +( 1408 2448 448 ) ( 1409 2448 448 ) ( 1408 2449 448 ) 8 0 0 0 1 1 +( 1440 2496 480 ) ( 1440 2497 480 ) ( 1441 2496 480 ) 8 0 0 0 1 1 +( 1440 2496 464 ) ( 1441 2496 464 ) ( 1440 2496 465 ) 8 0 0 0 1 1 +( 1440 2496 464 ) ( 1440 2496 465 ) ( 1440 2497 464 ) 8 0 0 0 1 1 +} +// brush 269 +{ +( 1824 2464 96 ) ( 1824 2465 96 ) ( 1824 2464 97 ) 16 0 0 0 1 1 +( 1824 2464 96 ) ( 1824 2464 97 ) ( 1825 2464 96 ) 16 0 0 0 1 1 +( 1824 2464 96 ) ( 1825 2464 96 ) ( 1824 2465 96 ) 16 0 0 0 1 1 +( 1888 2528 368 ) ( 1888 2529 368 ) ( 1889 2528 368 ) 16 0 0 0 1 1 +( 1888 2528 112 ) ( 1889 2528 112 ) ( 1888 2528 113 ) 16 0 0 0 1 1 +( 1888 2528 112 ) ( 1888 2528 113 ) ( 1888 2529 112 ) 16 0 0 0 1 1 +} +// brush 270 +{ +( 1824 2880 96 ) ( 1824 2881 96 ) ( 1824 2880 97 ) 16 0 0 0 1 1 +( 1840 2880 96 ) ( 1840 2880 97 ) ( 1841 2880 96 ) 16 0 0 0 1 1 +( 1840 2880 96 ) ( 1841 2880 96 ) ( 1840 2881 96 ) 16 0 0 0 1 1 +( 1888 2944 288 ) ( 1888 2945 288 ) ( 1889 2944 288 ) 16 0 0 0 1 1 +( 1888 2944 112 ) ( 1889 2944 112 ) ( 1888 2944 113 ) 16 0 0 0 1 1 +( 1888 2944 112 ) ( 1888 2944 113 ) ( 1888 2945 112 ) 16 0 0 0 1 1 +} +// brush 271 +{ +( 1408 2880 96 ) ( 1408 2881 96 ) ( 1408 2880 97 ) 16 0 0 0 1 1 +( 1408 2880 96 ) ( 1408 2880 97 ) ( 1409 2880 96 ) 16 0 0 0 1 1 +( 1408 2880 96 ) ( 1409 2880 96 ) ( 1408 2881 96 ) 16 0 0 0 1 1 +( 1472 2944 240 ) ( 1472 2945 240 ) ( 1473 2944 240 ) 16 0 0 0 1 1 +( 1472 2944 112 ) ( 1473 2944 112 ) ( 1472 2944 113 ) 16 0 0 0 1 1 +( 1472 2944 112 ) ( 1472 2944 113 ) ( 1472 2945 112 ) 16 0 0 0 1 1 +} +// brush 272 +{ +( 1408 2912 256 ) ( 1408 2913 256 ) ( 1408 2912 257 ) 8 0 0 0 1 1 +( 1408 2912 256 ) ( 1408 2912 257 ) ( 1409 2912 256 ) 8 0 0 0 1 1 +( 1408 2912 256 ) ( 1409 2912 256 ) ( 1408 2913 256 ) 8 0 0 0 1 1 +( 1440 2944 288 ) ( 1440 2945 288 ) ( 1441 2944 288 ) 8 0 0 0 1 1 +( 1440 2944 272 ) ( 1441 2944 272 ) ( 1440 2944 273 ) 8 0 0 0 1 1 +( 1440 2944 272 ) ( 1440 2944 273 ) ( 1440 2945 272 ) 8 0 0 0 1 1 +} +// brush 273 +{ +( 1632 2624 128 ) ( 1632 2528 128 ) ( 1632 2528 112 ) 9 0 0 0 1 1 +( 1632 2528 128 ) ( 1648 2528 128 ) ( 1648 2528 112 ) 9 0 0 0 1 1 +( 1648 2624 96 ) ( 1632 2624 96 ) ( 1632 2528 96 ) 9 0 0 0 1 1 +( 1632 2528 128 ) ( 1632 2624 128 ) ( 1648 2624 128 ) 9 0 0 0 1 1 +( 1648 2624 128 ) ( 1632 2624 128 ) ( 1632 2624 112 ) 9 0 0 0 1 1 +( 1664 2528 128 ) ( 1664 2624 128 ) ( 1664 2624 112 ) 9 0 0 0 1 1 +} +// brush 274 +{ +( 832 1088 608 ) ( 832 1089 608 ) ( 832 1088 609 ) 6 0 0 0 1 1 +( 832 1088 608 ) ( 832 1088 609 ) ( 833 1088 608 ) 6 0 0 0 1 1 +( 832 1088 624 ) ( 833 1088 624 ) ( 832 1089 624 ) 6 0 0 0 1 1 +( 896 1120 832 ) ( 896 1121 832 ) ( 897 1120 832 ) 6 0 0 0 1 1 +( 896 1120 640 ) ( 897 1120 640 ) ( 896 1120 641 ) 6 0 0 0 1 1 +( 928 1120 640 ) ( 928 1120 641 ) ( 928 1121 640 ) 6 0 0 0 1 1 +} +// brush 275 +{ +( 864 928 624 ) ( 864 929 624 ) ( 864 928 625 ) 6 0 0 0 1 1 +( 864 960 624 ) ( 864 960 625 ) ( 865 960 624 ) 6 0 0 0 1 1 +( 864 928 624 ) ( 865 928 624 ) ( 864 929 624 ) 6 0 0 0 1 1 +( 928 992 832 ) ( 928 993 832 ) ( 929 992 832 ) 6 0 0 0 1 1 +( 928 992 640 ) ( 929 992 640 ) ( 928 992 641 ) 6 0 0 0 1 1 +( 928 992 640 ) ( 928 992 641 ) ( 928 993 640 ) 6 0 0 0 1 1 +} +// brush 276 +{ +( 1632 2560 480 ) ( 1632 2432 480 ) ( 1632 2432 400 ) 9 0 0 0 1 1 +( 1600 2464 480 ) ( 1728 2464 480 ) ( 1728 2464 400 ) 9 0 0 0 1 1 +( 1728 2560 400 ) ( 1600 2560 400 ) ( 1600 2432 400 ) 9 0 0 0 1 1 +( 1600 2432 416 ) ( 1600 2560 416 ) ( 1728 2560 416 ) 9 0 0 0 1 1 +( 1728 2528 480 ) ( 1600 2528 480 ) ( 1600 2528 400 ) 9 0 0 0 1 1 +( 1728 2432 480 ) ( 1728 2560 480 ) ( 1728 2560 400 ) 9 0 0 0 1 1 +} +// brush 277 +{ +( 1568 2560 496 ) ( 1568 2432 496 ) ( 1568 2432 416 ) 9 0 0 0 1 1 +( 1536 2464 496 ) ( 1664 2464 496 ) ( 1664 2464 416 ) 9 0 0 0 1 1 +( 1664 2560 416 ) ( 1536 2560 416 ) ( 1536 2432 416 ) 9 0 0 0 1 1 +( 1536 2432 432 ) ( 1536 2560 432 ) ( 1664 2560 432 ) 9 0 0 0 1 1 +( 1664 2528 496 ) ( 1536 2528 496 ) ( 1536 2528 416 ) 9 0 0 0 1 1 +( 1664 2432 496 ) ( 1664 2560 496 ) ( 1664 2560 416 ) 9 0 0 0 1 1 +} +// brush 278 +{ +( 1408 2664 528 ) ( 1408 2536 528 ) ( 1408 2536 448 ) 9 0 0 0 1 1 +( 1392 2560 528 ) ( 1520 2560 528 ) ( 1520 2560 448 ) 9 0 0 0 1 1 +( 1520 2656 448 ) ( 1392 2656 448 ) ( 1392 2528 448 ) 9 0 0 0 1 1 +( 1392 2528 464 ) ( 1392 2656 464 ) ( 1520 2656 464 ) 9 0 0 0 1 1 +( 1520 2624 528 ) ( 1392 2624 528 ) ( 1392 2624 448 ) 9 0 0 0 1 1 +( 1504 2528 528 ) ( 1504 2656 528 ) ( 1504 2656 448 ) 9 0 0 0 1 1 +} +// brush 279 +{ +( 1408 2760 576 ) ( 1408 2632 576 ) ( 1408 2632 496 ) 9 0 0 0 1 1 +( 1392 2656 576 ) ( 1520 2656 576 ) ( 1520 2656 496 ) 9 0 0 0 1 1 +( 1520 2752 496 ) ( 1392 2752 496 ) ( 1392 2624 496 ) 9 0 0 0 1 1 +( 1392 2624 512 ) ( 1392 2752 512 ) ( 1520 2752 512 ) 9 0 0 0 1 1 +( 1520 2720 576 ) ( 1392 2720 576 ) ( 1392 2720 496 ) 9 0 0 0 1 1 +( 1504 2624 576 ) ( 1504 2752 576 ) ( 1504 2752 496 ) 9 0 0 0 1 1 +} +// brush 280 +{ +( 1408 2728 560 ) ( 1408 2600 560 ) ( 1408 2600 480 ) 9 0 0 0 1 1 +( 1392 2624 560 ) ( 1520 2624 560 ) ( 1520 2624 480 ) 9 0 0 0 1 1 +( 1520 2720 480 ) ( 1392 2720 480 ) ( 1392 2592 480 ) 9 0 0 0 1 1 +( 1392 2592 496 ) ( 1392 2720 496 ) ( 1520 2720 496 ) 9 0 0 0 1 1 +( 1520 2688 560 ) ( 1392 2688 560 ) ( 1392 2688 480 ) 9 0 0 0 1 1 +( 1504 2592 560 ) ( 1504 2720 560 ) ( 1504 2720 480 ) 9 0 0 0 1 1 +} +// brush 281 +{ +( 1408 2696 544 ) ( 1408 2568 544 ) ( 1408 2568 464 ) 9 0 0 0 1 1 +( 1392 2592 544 ) ( 1520 2592 544 ) ( 1520 2592 464 ) 9 0 0 0 1 1 +( 1520 2688 464 ) ( 1392 2688 464 ) ( 1392 2560 464 ) 9 0 0 0 1 1 +( 1392 2560 480 ) ( 1392 2688 480 ) ( 1520 2688 480 ) 9 0 0 0 1 1 +( 1520 2656 544 ) ( 1392 2656 544 ) ( 1392 2656 464 ) 9 0 0 0 1 1 +( 1504 2560 544 ) ( 1504 2688 544 ) ( 1504 2688 464 ) 9 0 0 0 1 1 +} +// brush 282 +{ +( 1696 2560 464 ) ( 1696 2432 464 ) ( 1696 2432 384 ) 9 0 0 0 1 1 +( 1664 2464 464 ) ( 1792 2464 464 ) ( 1792 2464 384 ) 9 0 0 0 1 1 +( 1792 2560 384 ) ( 1664 2560 384 ) ( 1664 2432 384 ) 9 0 0 0 1 1 +( 1664 2432 400 ) ( 1664 2560 400 ) ( 1792 2560 400 ) 9 0 0 0 1 1 +( 1792 2528 464 ) ( 1664 2528 464 ) ( 1664 2528 384 ) 9 0 0 0 1 1 +( 1792 2432 464 ) ( 1792 2560 464 ) ( 1792 2560 384 ) 9 0 0 0 1 1 +} +// brush 283 +{ +( 1824 2688 432 ) ( 1824 2560 432 ) ( 1824 2560 352 ) 9 0 0 0 1 1 +( 1792 2528 432 ) ( 1920 2528 432 ) ( 1920 2528 352 ) 9 0 0 0 1 1 +( 1920 2688 352 ) ( 1792 2688 352 ) ( 1792 2560 352 ) 9 0 0 0 1 1 +( 1792 2560 368 ) ( 1792 2688 368 ) ( 1920 2688 368 ) 9 0 0 0 1 1 +( 1920 2624 432 ) ( 1792 2624 432 ) ( 1792 2624 352 ) 9 0 0 0 1 1 +( 1888 2560 432 ) ( 1888 2688 432 ) ( 1888 2688 352 ) 9 0 0 0 1 1 +} +// brush 284 +{ +( 1824 2752 416 ) ( 1824 2624 416 ) ( 1824 2624 336 ) 9 0 0 0 1 1 +( 1792 2592 416 ) ( 1920 2592 416 ) ( 1920 2592 336 ) 9 0 0 0 1 1 +( 1920 2752 336 ) ( 1792 2752 336 ) ( 1792 2624 336 ) 9 0 0 0 1 1 +( 1792 2624 352 ) ( 1792 2752 352 ) ( 1920 2752 352 ) 9 0 0 0 1 1 +( 1920 2688 416 ) ( 1792 2688 416 ) ( 1792 2688 336 ) 9 0 0 0 1 1 +( 1888 2624 416 ) ( 1888 2752 416 ) ( 1888 2752 336 ) 9 0 0 0 1 1 +} +// brush 285 +{ +( 1824 2816 400 ) ( 1824 2688 400 ) ( 1824 2688 320 ) 9 0 0 0 1 1 +( 1792 2656 400 ) ( 1920 2656 400 ) ( 1920 2656 320 ) 9 0 0 0 1 1 +( 1920 2816 320 ) ( 1792 2816 320 ) ( 1792 2688 320 ) 9 0 0 0 1 1 +( 1792 2688 336 ) ( 1792 2816 336 ) ( 1920 2816 336 ) 9 0 0 0 1 1 +( 1920 2752 400 ) ( 1792 2752 400 ) ( 1792 2752 320 ) 9 0 0 0 1 1 +( 1888 2688 400 ) ( 1888 2816 400 ) ( 1888 2816 320 ) 9 0 0 0 1 1 +} +// brush 286 +{ +( 1824 2880 384 ) ( 1824 2752 384 ) ( 1824 2752 304 ) 9 0 0 0 1 1 +( 1792 2720 384 ) ( 1920 2720 384 ) ( 1920 2720 304 ) 9 0 0 0 1 1 +( 1920 2880 304 ) ( 1792 2880 304 ) ( 1792 2752 304 ) 9 0 0 0 1 1 +( 1792 2752 320 ) ( 1792 2880 320 ) ( 1920 2880 320 ) 9 0 0 0 1 1 +( 1920 2816 384 ) ( 1792 2816 384 ) ( 1792 2816 304 ) 9 0 0 0 1 1 +( 1888 2752 384 ) ( 1888 2880 384 ) ( 1888 2880 304 ) 9 0 0 0 1 1 +} +// brush 287 +{ +( 1632 2960 352 ) ( 1632 2832 352 ) ( 1632 2832 272 ) 9 0 0 0 1 1 +( 1760 2880 352 ) ( 1888 2880 352 ) ( 1888 2880 272 ) 9 0 0 0 1 1 +( 1888 2960 272 ) ( 1760 2960 272 ) ( 1760 2832 272 ) 9 0 0 0 1 1 +( 1760 2832 288 ) ( 1760 2960 288 ) ( 1888 2960 288 ) 9 0 0 0 1 1 +( 1888 2944 352 ) ( 1760 2944 352 ) ( 1760 2944 272 ) 9 0 0 0 1 1 +( 1824 2832 352 ) ( 1824 2960 352 ) ( 1824 2960 272 ) 9 0 0 0 1 1 +} +// brush 288 +{ +( 1472 2960 336 ) ( 1472 2832 336 ) ( 1472 2832 256 ) 9 0 0 0 1 1 +( 1600 2880 336 ) ( 1728 2880 336 ) ( 1728 2880 256 ) 9 0 0 0 1 1 +( 1728 2960 256 ) ( 1600 2960 256 ) ( 1600 2832 256 ) 9 0 0 0 1 1 +( 1600 2832 272 ) ( 1600 2960 272 ) ( 1728 2960 272 ) 9 0 0 0 1 1 +( 1728 2944 336 ) ( 1600 2944 336 ) ( 1600 2944 256 ) 9 0 0 0 1 1 +( 1664 2832 336 ) ( 1664 2960 336 ) ( 1664 2960 256 ) 9 0 0 0 1 1 +} +// brush 289 +{ +( 1408 2928 304 ) ( 1408 2800 304 ) ( 1408 2800 224 ) 9 0 0 0 1 1 +( 1392 2752 304 ) ( 1520 2752 304 ) ( 1520 2752 224 ) 9 0 0 0 1 1 +( 1520 2928 224 ) ( 1392 2928 224 ) ( 1392 2800 224 ) 9 0 0 0 1 1 +( 1392 2800 240 ) ( 1392 2928 240 ) ( 1520 2928 240 ) 9 0 0 0 1 1 +( 1520 2880 304 ) ( 1392 2880 304 ) ( 1392 2880 224 ) 9 0 0 0 1 1 +( 1472 2800 304 ) ( 1472 2928 304 ) ( 1472 2928 224 ) 9 0 0 0 1 1 +} +// brush 290 +{ +( 1408 2832 288 ) ( 1408 2704 288 ) ( 1408 2704 208 ) 9 0 0 0 1 1 +( 1392 2656 288 ) ( 1520 2656 288 ) ( 1520 2656 208 ) 9 0 0 0 1 1 +( 1520 2832 208 ) ( 1392 2832 208 ) ( 1392 2704 208 ) 9 0 0 0 1 1 +( 1392 2704 224 ) ( 1392 2832 224 ) ( 1520 2832 224 ) 9 0 0 0 1 1 +( 1520 2784 288 ) ( 1392 2784 288 ) ( 1392 2784 208 ) 9 0 0 0 1 1 +( 1472 2704 288 ) ( 1472 2832 288 ) ( 1472 2832 208 ) 9 0 0 0 1 1 +} +// brush 291 +{ +( 1408 2736 272 ) ( 1408 2608 272 ) ( 1408 2608 192 ) 9 0 0 0 1 1 +( 1392 2560 272 ) ( 1520 2560 272 ) ( 1520 2560 192 ) 9 0 0 0 1 1 +( 1520 2736 192 ) ( 1392 2736 192 ) ( 1392 2608 192 ) 9 0 0 0 1 1 +( 1392 2608 208 ) ( 1392 2736 208 ) ( 1520 2736 208 ) 9 0 0 0 1 1 +( 1520 2688 272 ) ( 1392 2688 272 ) ( 1392 2688 192 ) 9 0 0 0 1 1 +( 1472 2608 272 ) ( 1472 2736 272 ) ( 1472 2736 192 ) 9 0 0 0 1 1 +} +// brush 292 +{ +( 1248 3088 784 ) ( 1248 3072 784 ) ( 1248 3072 80 ) 6 0 0 0 1 1 +( 1984 3072 784 ) ( 2008 3072 784 ) ( 2008 3072 80 ) 6 0 0 0 1 1 +( 2008 3088 80 ) ( 1984 3088 80 ) ( 1984 3072 80 ) 6 0 0 0 1 1 +( 1984 3072 384 ) ( 1984 3088 384 ) ( 2008 3088 384 ) 6 0 0 0 1 1 +( 2008 3104 784 ) ( 1984 3104 784 ) ( 1984 3104 80 ) 6 0 0 0 1 1 +( 1568 3072 784 ) ( 1568 3088 784 ) ( 1568 3088 80 ) 6 0 0 0 1 1 +} +// brush 293 +{ +( 1696 2192 784 ) ( 1696 2176 784 ) ( 1696 2176 304 ) 16 0 0 270 1 -1 +( 1696 2112 784 ) ( 1760 2112 784 ) ( 1760 2112 304 ) 16 0 0 270 1 -1 +( 1760 2176 96 ) ( 1760 2192 96 ) ( 1696 2192 96 ) 16 0 0 270 1 -1 +( 1696 2192 336 ) ( 1760 2192 336 ) ( 1760 2176 336 ) 16 0 0 270 1 -1 +( 1760 2144 784 ) ( 1696 2144 784 ) ( 1696 2144 304 ) 16 0 0 270 1 -1 +( 1760 2176 784 ) ( 1760 2192 784 ) ( 1760 2192 304 ) 16 0 0 270 1 -1 +} +// brush 294 +{ +( 1536 2192 784 ) ( 1536 2176 784 ) ( 1536 2176 304 ) 16 0 0 270 1 -1 +( 1536 2112 784 ) ( 1600 2112 784 ) ( 1600 2112 304 ) 16 0 0 270 1 -1 +( 1600 2176 96 ) ( 1600 2192 96 ) ( 1536 2192 96 ) 16 0 0 270 1 -1 +( 1536 2192 336 ) ( 1600 2192 336 ) ( 1600 2176 336 ) 16 0 0 270 1 -1 +( 1600 2144 784 ) ( 1536 2144 784 ) ( 1536 2144 304 ) 16 0 0 270 1 -1 +( 1600 2176 784 ) ( 1600 2192 784 ) ( 1600 2192 304 ) 16 0 0 270 1 -1 +} +// brush 295 +{ +( 1344 2160 96 ) ( 1344 2161 96 ) ( 1344 2160 97 ) 16 0 0 0 1 1 +( 1344 2176 96 ) ( 1344 2176 97 ) ( 1345 2176 96 ) 16 0 0 0 1 1 +( 1344 2160 96 ) ( 1345 2160 96 ) ( 1344 2161 96 ) 16 0 0 0 1 1 +( 1376 2208 320 ) ( 1376 2209 320 ) ( 1377 2208 320 ) 16 0 0 0 1 1 +( 1376 2208 112 ) ( 1377 2208 112 ) ( 1376 2208 113 ) 16 0 0 0 1 1 +( 1376 2208 112 ) ( 1376 2208 113 ) ( 1376 2209 112 ) 16 0 0 0 1 1 +} +// brush 296 +{ +( 2016 2176 112 ) ( 2016 2177 112 ) ( 2016 2176 113 ) 16 0 0 0 1 1 +( 2016 2176 112 ) ( 2016 2176 113 ) ( 2017 2176 112 ) 16 0 0 0 1 1 +( 2016 2176 96 ) ( 2017 2176 96 ) ( 2016 2177 96 ) 16 0 0 0 1 1 +( 2048 2208 320 ) ( 2048 2209 320 ) ( 2049 2208 320 ) 16 0 0 0 1 1 +( 2048 2208 128 ) ( 2049 2208 128 ) ( 2048 2208 129 ) 16 0 0 0 1 1 +( 2048 2208 128 ) ( 2048 2208 129 ) ( 2048 2209 128 ) 16 0 0 0 1 1 +} +// brush 297 +{ +( 1856 1888 224 ) ( 1856 1856 224 ) ( 1856 1856 208 ) 4 0 0 0 1 1 +( 1968 1824 224 ) ( 1984 1824 224 ) ( 1984 1824 208 ) 4 0 0 0 1 1 +( 1984 1856 192 ) ( 1984 1888 192 ) ( 1968 1888 192 ) 4 0 0 0 1 1 +( 1968 1888 208 ) ( 1984 1888 208 ) ( 1984 1856 208 ) 4 0 0 0 1 1 +( 1984 1888 224 ) ( 1968 1888 224 ) ( 1968 1888 208 ) 4 0 0 0 1 1 +( 2016 1856 224 ) ( 2016 1888 224 ) ( 2016 1888 208 ) 4 0 0 0 1 1 +} +// brush 298 +{ +( 1856 1824 240 ) ( 1856 1792 240 ) ( 1856 1792 224 ) 4 0 0 0 1 1 +( 1968 1760 240 ) ( 1984 1760 240 ) ( 1984 1760 224 ) 4 0 0 0 1 1 +( 1984 1792 208 ) ( 1984 1824 208 ) ( 1968 1824 208 ) 4 0 0 0 1 1 +( 1968 1824 224 ) ( 1984 1824 224 ) ( 1984 1792 224 ) 4 0 0 0 1 1 +( 1984 1824 240 ) ( 1968 1824 240 ) ( 1968 1824 224 ) 4 0 0 0 1 1 +( 2016 1792 240 ) ( 2016 1824 240 ) ( 2016 1824 224 ) 4 0 0 0 1 1 +} +// brush 299 +{ +( 1856 1760 256 ) ( 1856 1728 256 ) ( 1856 1728 240 ) 4 0 0 0 1 1 +( 1968 1696 256 ) ( 1984 1696 256 ) ( 1984 1696 240 ) 4 0 0 0 1 1 +( 1984 1728 224 ) ( 1984 1760 224 ) ( 1968 1760 224 ) 4 0 0 0 1 1 +( 1968 1760 240 ) ( 1984 1760 240 ) ( 1984 1728 240 ) 4 0 0 0 1 1 +( 1984 1760 256 ) ( 1968 1760 256 ) ( 1968 1760 240 ) 4 0 0 0 1 1 +( 2016 1728 256 ) ( 2016 1760 256 ) ( 2016 1760 240 ) 4 0 0 0 1 1 +} +// brush 300 +{ +( 1856 1696 272 ) ( 1856 1664 272 ) ( 1856 1664 256 ) 4 0 0 0 1 1 +( 1968 1632 272 ) ( 1984 1632 272 ) ( 1984 1632 256 ) 4 0 0 0 1 1 +( 1984 1664 240 ) ( 1984 1696 240 ) ( 1968 1696 240 ) 4 0 0 0 1 1 +( 1968 1696 256 ) ( 1984 1696 256 ) ( 1984 1664 256 ) 4 0 0 0 1 1 +( 1984 1696 272 ) ( 1968 1696 272 ) ( 1968 1696 256 ) 4 0 0 0 1 1 +( 2016 1664 272 ) ( 2016 1696 272 ) ( 2016 1696 256 ) 4 0 0 0 1 1 +} +// brush 301 +{ +( 1792 1632 288 ) ( 1792 1600 288 ) ( 1792 1600 272 ) 4 0 0 0 1 1 +( 1968 1568 288 ) ( 1984 1568 288 ) ( 1984 1568 272 ) 4 0 0 0 1 1 +( 1984 1600 256 ) ( 1984 1632 256 ) ( 1968 1632 256 ) 4 0 0 0 1 1 +( 1968 1632 272 ) ( 1984 1632 272 ) ( 1984 1600 272 ) 4 0 0 0 1 1 +( 1984 1632 288 ) ( 1968 1632 288 ) ( 1968 1632 272 ) 4 0 0 0 1 1 +( 2080 1600 288 ) ( 2080 1632 288 ) ( 2080 1632 272 ) 4 0 0 0 1 1 +} +// brush 302 +{ +( 1792 1568 304 ) ( 1792 1536 304 ) ( 1792 1536 288 ) 4 0 0 0 1 1 +( 1968 1504 304 ) ( 1984 1504 304 ) ( 1984 1504 288 ) 4 0 0 0 1 1 +( 1984 1536 272 ) ( 1984 1568 272 ) ( 1968 1568 272 ) 4 0 0 0 1 1 +( 1968 1568 288 ) ( 1984 1568 288 ) ( 1984 1536 288 ) 4 0 0 0 1 1 +( 1984 1568 304 ) ( 1968 1568 304 ) ( 1968 1568 288 ) 4 0 0 0 1 1 +( 2080 1536 304 ) ( 2080 1568 304 ) ( 2080 1568 288 ) 4 0 0 0 1 1 +} +// brush 303 +{ +( 1824 2128 352 ) ( 1824 2129 352 ) ( 1824 2128 353 ) 7 0 0 0 1 1 +( 1824 1920 352 ) ( 1824 1920 353 ) ( 1825 1920 352 ) 7 0 0 0 1 1 +( 1824 2128 352 ) ( 1825 2128 352 ) ( 1824 2129 352 ) 7 0 0 0 1 1 +( 2080 2304 512 ) ( 2080 2305 512 ) ( 2081 2304 512 ) 7 0 0 0 1 1 +( 2080 2304 368 ) ( 2081 2304 368 ) ( 2080 2304 369 ) 7 0 0 0 1 1 +( 2080 2304 368 ) ( 2080 2304 369 ) ( 2080 2305 368 ) 7 0 0 0 1 1 +} +// brush 304 +{ +( 1920 1696 480 ) ( 1920 1697 480 ) ( 1920 1696 481 ) 6 0 0 0 1 1 +( 1920 1696 480 ) ( 1920 1696 481 ) ( 1921 1696 480 ) 6 0 0 0 1 1 +( 1920 1696 480 ) ( 1921 1696 480 ) ( 1920 1697 480 ) 6 0 0 0 1 1 +( 1952 1728 512 ) ( 1952 1729 512 ) ( 1953 1728 512 ) 6 0 0 0 1 1 +( 1952 1728 496 ) ( 1953 1728 496 ) ( 1952 1728 497 ) 6 0 0 0 1 1 +( 1952 1728 496 ) ( 1952 1728 497 ) ( 1952 1729 496 ) 6 0 0 0 1 1 +} +// brush 305 +{ +( 1728 1584 360 ) ( 1728 1520 360 ) ( 1728 1520 344 ) 1 0 0 0 1 1 +( 1728 1504 360 ) ( 1792 1504 360 ) ( 1792 1504 344 ) 1 0 0 0 1 1 +( 1792 1584 272 ) ( 1728 1584 272 ) ( 1728 1520 272 ) 1 0 0 0 1 1 +( 1728 1520 512 ) ( 1728 1584 512 ) ( 1792 1584 512 ) 1 0 0 0 1 1 +( 1792 1600 360 ) ( 1728 1600 360 ) ( 1728 1600 344 ) 1 0 0 0 1 1 +( 1792 1520 360 ) ( 1792 1584 360 ) ( 1792 1584 344 ) 1 0 0 0 1 1 +} +// brush 306 +{ +( 1728 1488 360 ) ( 1728 1424 360 ) ( 1728 1424 344 ) 1 0 0 0 1 1 +( 1696 1216 360 ) ( 1760 1216 360 ) ( 1760 1216 344 ) 1 0 0 0 1 1 +( 1760 1488 272 ) ( 1696 1488 272 ) ( 1696 1424 272 ) 1 0 0 0 1 1 +( 1696 1424 512 ) ( 1696 1488 512 ) ( 1760 1488 512 ) 1 0 0 0 1 1 +( 1760 1504 360 ) ( 1696 1504 360 ) ( 1696 1504 344 ) 1 0 0 0 1 1 +( 1760 1424 360 ) ( 1760 1488 360 ) ( 1760 1488 344 ) 1 0 0 0 1 1 +} +// brush 307 +{ +( 2112 1488 360 ) ( 2112 1424 360 ) ( 2112 1424 344 ) 1 0 0 0 1 1 +( 2080 1216 360 ) ( 2144 1216 360 ) ( 2144 1216 344 ) 1 0 0 0 1 1 +( 2144 1488 272 ) ( 2080 1488 272 ) ( 2080 1424 272 ) 1 0 0 0 1 1 +( 2080 1424 512 ) ( 2080 1488 512 ) ( 2144 1488 512 ) 1 0 0 0 1 1 +( 2144 1504 360 ) ( 2080 1504 360 ) ( 2080 1504 344 ) 1 0 0 0 1 1 +( 2144 1424 360 ) ( 2144 1488 360 ) ( 2144 1488 344 ) 1 0 0 0 1 1 +} +// brush 308 +{ +( 1856 1152 304 ) ( 1856 1153 304 ) ( 1856 1152 305 ) 4 0 0 0 1 1 +( 1856 1152 304 ) ( 1856 1152 305 ) ( 1857 1152 304 ) 4 0 0 0 1 1 +( 1856 1152 304 ) ( 1857 1152 304 ) ( 1856 1153 304 ) 4 0 0 0 1 1 +( 2016 1248 320 ) ( 2016 1249 320 ) ( 2017 1248 320 ) 4 0 0 0 1 1 +( 2016 1248 320 ) ( 2017 1248 320 ) ( 2016 1248 321 ) 4 0 0 0 1 1 +( 2016 1248 320 ) ( 2016 1248 321 ) ( 2016 1249 320 ) 4 0 0 0 1 1 +} +// brush 309 +{ +( 2080 832 336 ) ( 2080 833 336 ) ( 2080 832 337 ) 16 0 0 0 1 1 +( 2064 832 336 ) ( 2064 832 337 ) ( 2065 832 336 ) 16 0 0 0 1 1 +( 2064 832 336 ) ( 2065 832 336 ) ( 2064 833 336 ) 16 0 0 0 1 1 +( 2144 896 832 ) ( 2144 897 832 ) ( 2145 896 832 ) 16 0 0 0 1 1 +( 2144 896 352 ) ( 2145 896 352 ) ( 2144 896 353 ) 16 0 0 0 1 1 +( 2144 896 352 ) ( 2144 896 353 ) ( 2144 897 352 ) 16 0 0 0 1 1 +} +// brush 310 +{ +( 1760 832 336 ) ( 1760 833 336 ) ( 1760 832 337 ) 16 0 0 0 1 1 +( 1744 832 336 ) ( 1744 832 337 ) ( 1745 832 336 ) 16 0 0 0 1 1 +( 1744 832 336 ) ( 1745 832 336 ) ( 1744 833 336 ) 16 0 0 0 1 1 +( 1824 896 832 ) ( 1824 897 832 ) ( 1825 896 832 ) 16 0 0 0 1 1 +( 1824 896 352 ) ( 1825 896 352 ) ( 1824 896 353 ) 16 0 0 0 1 1 +( 1824 896 352 ) ( 1824 896 353 ) ( 1824 897 352 ) 16 0 0 0 1 1 +} +// brush 311 +{ +( 1792 1024 344 ) ( 1792 960 344 ) ( 1792 960 328 ) 14 0 0 0 1 1 +( 1808 960 344 ) ( 1872 960 344 ) ( 1872 960 328 ) 14 0 0 0 1 1 +( 1872 1024 336 ) ( 1808 1024 336 ) ( 1808 960 336 ) 14 0 0 0 1 1 +( 1808 960 368 ) ( 1808 1024 368 ) ( 1872 1024 368 ) 14 0 0 0 1 1 +( 1872 1024 344 ) ( 1808 1024 344 ) ( 1808 1024 328 ) 14 0 0 0 1 1 +( 1856 960 344 ) ( 1856 1024 344 ) ( 1856 1024 328 ) 14 0 0 0 1 1 +} +// brush 312 +{ +( 2048 1024 336 ) ( 2048 1025 336 ) ( 2048 1024 337 ) 14 0 0 0 1 1 +( 2032 1024 336 ) ( 2032 1024 337 ) ( 2033 1024 336 ) 14 0 0 0 1 1 +( 2032 1024 336 ) ( 2033 1024 336 ) ( 2032 1025 336 ) 14 0 0 0 1 1 +( 2080 1056 368 ) ( 2080 1057 368 ) ( 2081 1056 368 ) 14 0 0 0 1 1 +( 2080 1056 352 ) ( 2081 1056 352 ) ( 2080 1056 353 ) 14 0 0 0 1 1 +( 2080 1056 352 ) ( 2080 1056 353 ) ( 2080 1057 352 ) 14 0 0 0 1 1 +} +// brush 313 +{ +( 32 2848 640 ) ( 32 2849 640 ) ( 32 2848 641 ) 9 0 0 0 1 1 +( 32 2848 640 ) ( 32 2848 641 ) ( 33 2848 640 ) 9 0 0 0 1 1 +( 32 2848 640 ) ( 33 2848 640 ) ( 32 2849 640 ) 9 0 0 0 1 1 +( 128 3040 656 ) ( 128 3041 656 ) ( 129 3040 656 ) 9 0 0 0 1 1 +( 128 3040 656 ) ( 129 3040 656 ) ( 128 3040 657 ) 9 0 0 0 1 1 +( 160 3040 656 ) ( 160 3040 657 ) ( 160 3041 656 ) 9 0 0 0 1 1 +} +// brush 314 +{ +( 960 1184 688 ) ( 960 1185 688 ) ( 960 1184 689 ) 8 0 0 0 1 1 +( 960 1184 688 ) ( 960 1184 689 ) ( 961 1184 688 ) 8 0 0 0 1 1 +( 960 1184 688 ) ( 961 1184 688 ) ( 960 1185 688 ) 8 0 0 0 1 1 +( 992 1216 720 ) ( 992 1217 720 ) ( 993 1216 720 ) 8 0 0 0 1 1 +( 992 1216 704 ) ( 993 1216 704 ) ( 992 1216 705 ) 8 0 0 0 1 1 +( 992 1216 704 ) ( 992 1216 705 ) ( 992 1217 704 ) 8 0 0 0 1 1 +} +// brush 315 +{ +( 1088 672 816 ) ( 1088 673 816 ) ( 1088 672 817 ) 8 0 0 0 1 1 +( 1088 672 816 ) ( 1088 672 817 ) ( 1089 672 816 ) 8 0 0 0 1 1 +( 1088 672 800 ) ( 1089 672 800 ) ( 1088 673 800 ) 8 0 0 0 1 1 +( 1120 704 832 ) ( 1120 705 832 ) ( 1121 704 832 ) 8 0 0 0 1 1 +( 1120 704 832 ) ( 1121 704 832 ) ( 1120 704 833 ) 8 0 0 0 1 1 +( 1120 704 832 ) ( 1120 704 833 ) ( 1120 705 832 ) 8 0 0 0 1 1 +} +// brush 316 +{ +( 1152 416 640 ) ( 1152 417 640 ) ( 1152 416 641 ) 8 0 0 0 1 1 +( 1152 416 640 ) ( 1152 416 641 ) ( 1153 416 640 ) 8 0 0 0 1 1 +( 1152 416 640 ) ( 1153 416 640 ) ( 1152 417 640 ) 8 0 0 0 1 1 +( 1184 448 672 ) ( 1184 449 672 ) ( 1185 448 672 ) 8 0 0 0 1 1 +( 1184 448 656 ) ( 1185 448 656 ) ( 1184 448 657 ) 8 0 0 0 1 1 +( 1184 448 656 ) ( 1184 448 657 ) ( 1184 449 656 ) 8 0 0 0 1 1 +} +// brush 317 +{ +( 992 416 640 ) ( 992 417 640 ) ( 992 416 641 ) 8 0 0 0 1 1 +( 992 416 640 ) ( 992 416 641 ) ( 993 416 640 ) 8 0 0 0 1 1 +( 992 416 640 ) ( 993 416 640 ) ( 992 417 640 ) 8 0 0 0 1 1 +( 1024 448 672 ) ( 1024 449 672 ) ( 1025 448 672 ) 8 0 0 0 1 1 +( 1024 448 656 ) ( 1025 448 656 ) ( 1024 448 657 ) 8 0 0 0 1 1 +( 1024 448 656 ) ( 1024 448 657 ) ( 1024 449 656 ) 8 0 0 0 1 1 +} +// brush 318 +{ +( 1088 672 816 ) ( 1088 624 816 ) ( 1088 624 640 ) 7 0 0 270 1 -1 +( 960 384 816 ) ( 1000 384 816 ) ( 1000 384 640 ) 7 0 0 270 1 -1 +( 1000 672 800 ) ( 960 672 800 ) ( 960 624 800 ) 7 0 0 270 1 -1 +( 960 624 832 ) ( 960 672 832 ) ( 1000 672 832 ) 7 0 0 270 1 -1 +( 1000 672 816 ) ( 960 672 816 ) ( 960 672 640 ) 7 0 0 270 1 -1 +( 1120 624 816 ) ( 1120 672 816 ) ( 1120 672 640 ) 7 0 0 270 1 -1 +} +// brush 319 +{ +( 192 2848 464 ) ( 192 2849 464 ) ( 192 2848 465 ) 8 0 0 0 1 1 +( 192 2848 464 ) ( 192 2848 465 ) ( 193 2848 464 ) 8 0 0 0 1 1 +( 192 2848 464 ) ( 193 2848 464 ) ( 192 2849 464 ) 8 0 0 0 1 1 +( 224 2880 496 ) ( 224 2881 496 ) ( 225 2880 496 ) 8 0 0 0 1 1 +( 224 2880 480 ) ( 225 2880 480 ) ( 224 2880 481 ) 8 0 0 0 1 1 +( 224 2880 480 ) ( 224 2880 481 ) ( 224 2881 480 ) 8 0 0 0 1 1 +} +// brush 320 +{ +( 416 2848 464 ) ( 416 2849 464 ) ( 416 2848 465 ) 8 0 0 0 1 1 +( 416 2848 464 ) ( 416 2848 465 ) ( 417 2848 464 ) 8 0 0 0 1 1 +( 416 2848 464 ) ( 417 2848 464 ) ( 416 2849 464 ) 8 0 0 0 1 1 +( 448 2880 496 ) ( 448 2881 496 ) ( 449 2880 496 ) 8 0 0 0 1 1 +( 448 2880 480 ) ( 449 2880 480 ) ( 448 2880 481 ) 8 0 0 0 1 1 +( 448 2880 480 ) ( 448 2880 481 ) ( 448 2881 480 ) 8 0 0 0 1 1 +} +// brush 321 +{ +( 112 3232 496 ) ( 112 3233 496 ) ( 112 3232 497 ) 8 0 0 0 1 1 +( 112 3232 496 ) ( 112 3232 497 ) ( 113 3232 496 ) 8 0 0 0 1 1 +( 112 3232 496 ) ( 113 3232 496 ) ( 112 3233 496 ) 8 0 0 0 1 1 +( 144 3264 528 ) ( 144 3265 528 ) ( 145 3264 528 ) 8 0 0 0 1 1 +( 144 3264 512 ) ( 145 3264 512 ) ( 144 3264 513 ) 8 0 0 0 1 1 +( 144 3264 512 ) ( 144 3264 513 ) ( 144 3265 512 ) 8 0 0 0 1 1 +} +// brush 322 +{ +( 640 2784 784 ) ( 640 2785 784 ) ( 640 2784 785 ) 8 0 0 0 1 1 +( 640 2784 784 ) ( 640 2784 785 ) ( 641 2784 784 ) 8 0 0 0 1 1 +( 640 2784 784 ) ( 641 2784 784 ) ( 640 2785 784 ) 8 0 0 0 1 1 +( 672 2816 800 ) ( 672 2817 800 ) ( 673 2816 800 ) 8 0 0 0 1 1 +( 672 2816 800 ) ( 673 2816 800 ) ( 672 2816 801 ) 8 0 0 0 1 1 +( 672 2816 800 ) ( 672 2816 801 ) ( 672 2817 800 ) 8 0 0 0 1 1 +} +// brush 323 +{ +( 1792 1312 304 ) ( 1792 1313 304 ) ( 1792 1312 305 ) 14 0 0 0 1 1 +( 1792 1312 304 ) ( 1792 1312 305 ) ( 1793 1312 304 ) 14 0 0 0 1 1 +( 1792 1312 304 ) ( 1793 1312 304 ) ( 1792 1313 304 ) 14 0 0 0 1 1 +( 1824 1344 336 ) ( 1824 1345 336 ) ( 1825 1344 336 ) 14 0 0 0 1 1 +( 1824 1344 320 ) ( 1825 1344 320 ) ( 1824 1344 321 ) 14 0 0 0 1 1 +( 1824 1344 320 ) ( 1824 1344 321 ) ( 1824 1345 320 ) 14 0 0 0 1 1 +} +// brush 324 +{ +( 2048 1376 304 ) ( 2048 1377 304 ) ( 2048 1376 305 ) 14 0 0 0 1 1 +( 2048 1344 304 ) ( 2048 1344 305 ) ( 2049 1344 304 ) 14 0 0 0 1 1 +( 2048 1376 304 ) ( 2049 1376 304 ) ( 2048 1377 304 ) 14 0 0 0 1 1 +( 2080 1408 336 ) ( 2080 1409 336 ) ( 2081 1408 336 ) 14 0 0 0 1 1 +( 2080 1408 320 ) ( 2081 1408 320 ) ( 2080 1408 321 ) 14 0 0 0 1 1 +( 2080 1408 320 ) ( 2080 1408 321 ) ( 2080 1409 320 ) 14 0 0 0 1 1 +} +// brush 325 +{ +( 1248 2304 880 ) ( 1248 2305 880 ) ( 1248 2304 881 ) 12 0 0 0 1 1 +( 1248 2304 880 ) ( 1248 2304 881 ) ( 1249 2304 880 ) 12 0 0 0 1 1 +( 1248 2304 896 ) ( 1249 2304 896 ) ( 1248 2305 896 ) 12 0 0 0 1 1 +( 1824 2848 928 ) ( 1824 2849 928 ) ( 1825 2848 928 ) 12 0 0 0 1 1 +( 1824 3072 896 ) ( 1825 3072 896 ) ( 1824 3072 897 ) 12 0 0 0 1 1 +( 2048 2848 896 ) ( 2048 2848 897 ) ( 2048 2849 896 ) 12 0 0 0 1 1 +} +// brush 326 +{ +( 1504 2400 192 ) ( 1504 2401 192 ) ( 1504 2400 193 ) 8 0 0 0 1 1 +( 1504 2400 192 ) ( 1504 2400 193 ) ( 1505 2400 192 ) 8 0 0 0 1 1 +( 1504 2400 192 ) ( 1505 2400 192 ) ( 1504 2401 192 ) 8 0 0 0 1 1 +( 1536 2432 224 ) ( 1536 2433 224 ) ( 1537 2432 224 ) 8 0 0 0 1 1 +( 1536 2432 208 ) ( 1537 2432 208 ) ( 1536 2432 209 ) 8 0 0 0 1 1 +( 1536 2432 208 ) ( 1536 2432 209 ) ( 1536 2433 208 ) 8 0 0 0 1 1 +} +// brush 327 +{ +( 1664 3040 368 ) ( 1664 3041 368 ) ( 1664 3040 369 ) 9 0 0 0 1 1 +( 1760 3008 368 ) ( 1760 3008 369 ) ( 1761 3008 368 ) 9 0 0 0 1 1 +( 1760 3040 368 ) ( 1761 3040 368 ) ( 1760 3041 368 ) 9 0 0 0 1 1 +( 1800 3080 384 ) ( 1800 3081 384 ) ( 1801 3080 384 ) 9 0 0 0 1 1 +( 1800 3072 376 ) ( 1801 3072 376 ) ( 1800 3072 377 ) 9 0 0 0 1 1 +( 1792 3080 376 ) ( 1792 3080 377 ) ( 1792 3081 376 ) 9 0 0 0 1 1 +} +// brush 328 +{ +( 1632 2976 416 ) ( 1632 2977 416 ) ( 1632 2976 417 ) 9 0 0 0 1 1 +( 1760 2960 416 ) ( 1760 2960 417 ) ( 1761 2960 416 ) 9 0 0 0 1 1 +( 1760 2976 416 ) ( 1761 2976 416 ) ( 1760 2977 416 ) 9 0 0 0 1 1 +( 1800 3016 432 ) ( 1800 3017 432 ) ( 1801 3016 432 ) 9 0 0 0 1 1 +( 1800 3008 424 ) ( 1801 3008 424 ) ( 1800 3008 425 ) 9 0 0 0 1 1 +( 1696 3016 424 ) ( 1696 3016 425 ) ( 1696 3017 424 ) 9 0 0 0 1 1 +} +// brush 329 +{ +( 1632 2976 448 ) ( 1632 2977 448 ) ( 1632 2976 449 ) 9 0 0 0 1 1 +( 1760 2912 448 ) ( 1760 2912 449 ) ( 1761 2912 448 ) 9 0 0 0 1 1 +( 1760 2976 448 ) ( 1761 2976 448 ) ( 1760 2977 448 ) 9 0 0 0 1 1 +( 1800 3016 464 ) ( 1800 3017 464 ) ( 1801 3016 464 ) 9 0 0 0 1 1 +( 1800 2960 456 ) ( 1801 2960 456 ) ( 1800 2960 457 ) 9 0 0 0 1 1 +( 1696 3016 456 ) ( 1696 3016 457 ) ( 1696 3017 456 ) 9 0 0 0 1 1 +} +// brush 330 +{ +( 704 1696 608 ) ( 704 1697 608 ) ( 704 1696 609 ) 8 0 0 0 1 1 +( 704 1696 608 ) ( 704 1696 609 ) ( 705 1696 608 ) 8 0 0 0 1 1 +( 704 1696 624 ) ( 705 1696 624 ) ( 704 1697 624 ) 8 0 0 0 1 1 +( 768 1728 640 ) ( 768 1729 640 ) ( 769 1728 640 ) 8 0 0 0 1 1 +( 768 1728 640 ) ( 769 1728 640 ) ( 768 1728 641 ) 8 0 0 0 1 1 +( 800 1728 640 ) ( 800 1728 641 ) ( 800 1729 640 ) 8 0 0 0 1 1 +} +} +// entity 1 +{ +"classname" "info_player_start" +"origin" "1088 96 712" +} +// entity 2 +{ +"classname" "light" +"origin" "1144 440 696" +"light" "10" +"color" "255 192 64" +} +// entity 3 +{ +"classname" "light" +"origin" "1016 440 696" +"light" "10" +"color" "255 192 64" +} +// entity 4 +{ +"classname" "light" +"origin" "1112 696 760" +"light" "10" +"color" "255 192 64" +} +// entity 5 +{ +"classname" "light" +"origin" "1016 1128 760" +"light" "10" +"color" "255 192 64" +} +// entity 6 +{ +"classname" "light" +"origin" "664 1032 696" +"light" "10" +"color" "255 64 0" +} +// entity 7 +{ +"classname" "light" +"origin" "840 1416 632" +"light" "100" +"color" "192 192 255" +} +// entity 8 +{ +"classname" "light" +"origin" "888 1832 872" +"light" "150" +"color" "192 192 255" +} +// entity 9 +{ +"classname" "light" +"origin" "728 1672 536" +"light" "20" +"color" "255 192 64" +} +// entity 10 +{ +"classname" "light" +"origin" "248 2904 520" +"light" "10" +"color" "255 192 64" +} +// entity 11 +{ +"classname" "light" +"origin" "392 2904 520" +"light" "10" +"color" "255 192 64" +} +// entity 12 +{ +"classname" "light" +"origin" "280 2808 776" +"light" "10" +"color" "255 192 64" +} +// entity 13 +{ +"classname" "light" +"origin" "632 2792 728" +"light" "5" +"color" "255 192 64" +} +// entity 14 +{ +"classname" "light" +"origin" "184 3192 552" +"light" "10" +"color" "255 192 64" +} +// entity 15 +{ +"classname" "light" +"origin" "1464 2520 536" +"light" "20" +"color" "128 54 255" +"delay" "" +} +// entity 16 +{ +"classname" "light" +"origin" "1832 2520 472" +"light" "20" +"color" "128 54 255" +"delay" "" +} +// entity 17 +{ +"classname" "light" +"origin" "1848 2904 408" +"light" "20" +"color" "128 54 255" +"delay" "" +} +// entity 18 +{ +"classname" "light" +"origin" "1448 2872 328" +"light" "10" +"color" "128 54 255" +"delay" "" +} +// entity 19 +{ +"classname" "light" +"origin" "1928 2008 264" +"light" "10" +"color" "128 54 255" +"delay" "" +} +// entity 20 +{ +"classname" "light" +"origin" "1928 1720 408" +"light" "20" +"color" "128 54 255" +"delay" "" +} +// entity 21 +{ +"classname" "light" +"origin" "1944 1096 424" +"light" "20" +"color" "255 0 0" +"delay" "" +} +// entity 22 +{ +"classname" "light" +"origin" "1288 600 712" +"light" "1" +"color" "255 192 64" +} +// entity 23 +{ +"classname" "light" +"origin" "680 3128 1000" +"light" "150" +"color" "192 192 255" +} +// entity 24 +{ +"classname" "light" +"origin" "1480 2472 280" +"light" "10" +"color" "128 54 255" +"delay" "" +} +// entity 25 +{ +"classname" "light" +"origin" "1096 152 744" +"light" "5" +"color" "255 0 0" +} +// entity 26 +{ +"classname" "light" +"origin" "1688 2216 264" +"light" "1" +"color" "0 128 255" +"delay" "" +} +// entity 27 +{ +"classname" "light" +"origin" "1624 2896 552" +"light" "5" +"color" "0 0 255" +"delay" "" +} +// entity 28 +{ +"classname" "enemy_grunt" +"origin" "1072 976 664" +"patrol" "1" +} +// entity 29 +{ +"classname" "light" +"origin" "984 2536 520" +"light" "10" +"color" "128 54 255" +"delay" "" +} +// entity 30 +{ +"classname" "enemy_grunt" +"origin" "800 1040 648" +} +// entity 31 +{ +"classname" "enemy_grunt" +"origin" "560 1856 440" +} +// entity 32 +{ +"classname" "enemy_grunt" +"origin" "736 1632 440" +} +// entity 33 +{ +"classname" "enemy_grunt" +"origin" "1056 1920 440" +} +// entity 34 +{ +"classname" "enemy_grunt" +"origin" "1024 2400 456" +"patrol" "3" +} +// entity 35 +{ +"classname" "enemy_grunt" +"origin" "608 2416 456" +"patrol" "1" +} +// entity 36 +{ +"classname" "enemy_grunt" +"origin" "416 2720 520" +} +// entity 37 +{ +"classname" "enemy_grunt" +"origin" "448 3376 584" +} +// entity 38 +{ +"classname" "enemy_grunt" +"origin" "1056 3232 584" +} +// entity 39 +{ +"classname" "enemy_grunt" +"origin" "784 3200 600" +} +// entity 40 +{ +"classname" "enemy_grunt" +"origin" "576 2896 696" +} +// entity 41 +{ +"classname" "enemy_grunt" +"origin" "64 2912 680" +} +// entity 42 +{ +"classname" "enemy_grunt" +"origin" "576 2672 696" +} +// entity 43 +{ +"classname" "enemy_grunt" +"origin" "1328 2800 584" +} +// entity 44 +{ +"classname" "enemy_grunt" +"origin" "1456 2960 584" +} +// entity 45 +{ +"classname" "enemy_grunt" +"origin" "1488 2512 504" +} +// entity 46 +{ +"classname" "enemy_grunt" +"origin" "1856 2864 344" +} +// entity 47 +{ +"classname" "enemy_grunt" +"origin" "1648 2224 248" +"patrol" "1" +} +// entity 48 +{ +"classname" "enemy_grunt" +"origin" "1920 2064 248" +} +// entity 49 +{ +"classname" "enemy_grunt" +"origin" "1920 1792 248" +} +// entity 50 +{ +"classname" "enemy_grunt" +"origin" "1952 1728 280" +} +// entity 51 +{ +"classname" "enemy_grunt" +"origin" "2064 1440 328" +} +// entity 52 +{ +"classname" "enemy_grunt" +"origin" "1872 1360 328" +} +// entity 53 +{ +"classname" "enemy_grunt" +"origin" "1920 1232 360" +} +// entity 54 +{ +"classname" "barrel" +"origin" "720 2480 440" +} +// entity 55 +{ +"classname" "barrel" +"origin" "176 3056 520" +} +// entity 56 +{ +"classname" "barrel" +"origin" "1056 3408 568" +} +// entity 57 +{ +"classname" "barrel" +"origin" "1808 1440 328" +} +// entity 58 +{ +"classname" "pickup_health" +"origin" "1312 944 728" +} +// entity 59 +{ +"classname" "enemy_hound" +"origin" "656 1952 424" +} +// entity 60 +{ +"classname" "enemy_hound" +"origin" "208 2640 488" +} +// entity 61 +{ +"classname" "enemy_hound" +"origin" "352 2880 488" +} +// entity 62 +{ +"classname" "enemy_enforcer" +"origin" "992 3296 568" +} +// entity 63 +{ +"classname" "enemy_grunt" +"origin" "1008 3136 568" +} +// entity 64 +{ +"classname" "enemy_enforcer" +"origin" "1840 2528 408" +} +// entity 65 +{ +"classname" "enemy_enforcer" +"origin" "1520 2560 216" +} +// entity 66 +{ +"classname" "enemy_hound" +"origin" "2000 1408 328" +} +// entity 67 +{ +"classname" "enemy_hound" +"origin" "1968 1296 328" +} +// entity 68 +{ +"classname" "enemy_enforcer" +"origin" "1904 1408 328" +} +// entity 69 +{ +"classname" "pickup_health" +"origin" "1604 2876 508" +} +// entity 70 +{ +"classname" "pickup_nails" +"origin" "1604 2924 508" +} +// entity 71 +{ +"classname" "pickup_health" +"origin" "1524 2452 460" +} +// entity 72 +{ +"classname" "pickup_nails" +"origin" "1964 2236 124" +} +// entity 73 +{ +"classname" "pickup_health" +"origin" "1964 2180 124" +} +// entity 74 +{ +"classname" "pickup_health" +"origin" "1284 2796 572" +} +// entity 75 +{ +"classname" "pickup_health" +"origin" "356 3420 572" +} +// entity 76 +{ +"classname" "pickup_nails" +"origin" "844 2836 700" +} +// entity 77 +{ +"classname" "pickup_nailgun" +"origin" "684 2796 716" +} +// entity 78 +{ +"classname" "pickup_nails" +"origin" "844 2772 700" +} +// entity 79 +{ +"classname" "pickup_health" +"origin" "1212 2420 524" +} +// entity 80 +{ +"classname" "pickup_health" +"origin" "1212 2468 524" +} +// entity 81 +{ +"classname" "pickup_health" +"origin" "180 2452 476" +} +// entity 82 +{ +"classname" "pickup_health" +"origin" "780 2660 668" +} +// entity 83 +{ +"classname" "pickup_nails" +"origin" "1380 2436 204" +} +// entity 84 +{ +"classname" "pickup_health" +"origin" "1796 2164 204" +} +// entity 85 +{ +"classname" "pickup_health" +"origin" "2028 1316 316" +} +// entity 86 +{ +"classname" "pickup_nails" +"origin" "1796 1268 316" +} +// entity 87 +{ +"classname" "trigger_levelchange" +"origin" "1936 992 416" +} +// entity 88 +{ +"classname" "pickup_health" +"origin" "1312 464 696" +} +// entity 89 +{ +"classname" "pickup_health" +"origin" "292 1940 412" +} +// entity 90 +{ +"classname" "pickup_health" +"origin" "340 1940 412" +} +// entity 91 +{ +"classname" "door" +"origin" "756 2236 480" +"texture" "12" +"dir" "0" +} diff --git a/assets/maps/m2.map b/assets/maps/m2.map new file mode 100644 index 0000000..48a74c5 --- /dev/null +++ b/assets/maps/m2.map @@ -0,0 +1,2613 @@ +// Game: qu1k3 +// Format: Standard +// entity 0 +{ +"sounds" "9" +"message" "the Necropolis" +"worldtype" "0" +"wad" "gfx/wizard.wad" +"classname" "worldspawn" +"_tb_textures" "assets/textures" +// brush 0 +{ +( 832 528 720 ) ( 832 504 720 ) ( 832 504 640 ) 29 0 0 0 1 1 +( 896 512 720 ) ( 1224 512 720 ) ( 1224 512 640 ) 29 0 0 0 1 1 +( 1160 520 640 ) ( 832 520 640 ) ( 832 496 640 ) 29 0 0 0 1 1 +( 832 496 1016 ) ( 832 520 1016 ) ( 1160 520 1016 ) 29 0 0 0 1 1 +( 1160 544 720 ) ( 832 544 720 ) ( 832 544 640 ) 29 0 0 0 1 1 +( 1280 488 720 ) ( 1280 512 720 ) ( 1280 512 640 ) 29 0 0 0 1 1 +} +// brush 1 +{ +( 800 520 1008 ) ( 800 272 1008 ) ( 800 272 632 ) 29 0 0 0 1 1 +( 784 0 1008 ) ( 1296 0 1008 ) ( 1296 0 632 ) 29 0 0 0 1 1 +( 1312 520 544 ) ( 800 520 544 ) ( 800 272 544 ) 29 0 0 0 1 1 +( 800 272 640 ) ( 800 520 640 ) ( 1312 520 640 ) 29 0 0 0 1 1 +( 1312 672 1008 ) ( 800 672 1008 ) ( 800 672 632 ) 29 0 0 0 1 1 +( 1312 272 1008 ) ( 1312 520 1008 ) ( 1312 520 632 ) 29 0 0 0 1 1 +} +// brush 2 +{ +( 832 48 1016 ) ( 832 32 1016 ) ( 832 32 640 ) 29 0 0 0 1 1 +( 1168 0 1016 ) ( 1304 0 1016 ) ( 1304 0 640 ) 29 0 0 0 1 1 +( 1304 48 640 ) ( 1168 48 640 ) ( 1168 32 640 ) 29 0 0 0 1 1 +( 1168 32 1024 ) ( 1168 48 1024 ) ( 1304 48 1024 ) 29 0 0 0 1 1 +( 1304 32 1016 ) ( 1168 32 1016 ) ( 1168 32 640 ) 29 0 0 0 1 1 +( 1280 32 1016 ) ( 1280 48 1016 ) ( 1280 48 640 ) 29 0 0 0 1 1 +} +// brush 3 +{ +( 800 120 1016 ) ( 800 104 1016 ) ( 800 104 640 ) 29 0 0 0 1 1 +( 808 0 1016 ) ( 936 0 1016 ) ( 936 0 640 ) 29 0 0 0 1 1 +( 936 120 640 ) ( 808 120 640 ) ( 808 104 640 ) 29 0 0 0 1 1 +( 808 104 896 ) ( 808 120 896 ) ( 936 120 896 ) 29 0 0 0 1 1 +( 936 512 1016 ) ( 808 512 1016 ) ( 808 512 640 ) 29 0 0 0 1 1 +( 832 104 1016 ) ( 832 120 1016 ) ( 832 120 640 ) 29 0 0 0 1 1 +} +// brush 4 +{ +( 1312 280 1084 ) ( 1312 112 1084 ) ( 1312 112 664 ) 27 0 0 0 1 1 +( 1312 96 1084 ) ( 1336 96 1084 ) ( 1336 96 664 ) 27 0 0 0 1 1 +( 1328 280 864 ) ( 1304 280 864 ) ( 1304 112 864 ) 27 0 0 0 1 1 +( 1304 112 960 ) ( 1304 280 960 ) ( 1328 280 960 ) 27 0 0 0 1 1 +( 1328 640 1084 ) ( 1304 640 1084 ) ( 1304 640 664 ) 27 0 0 0 1 1 +( 1920 112 1084 ) ( 1920 280 1084 ) ( 1920 280 664 ) 27 0 0 0 1 1 +} +// brush 5 +{ +( 1312 280 664 ) ( 1312 152 664 ) ( 1312 152 640 ) 28 0 0 0 1 1 +( 1336 96 664 ) ( 1648 96 664 ) ( 1648 96 640 ) 28 0 0 0 1 1 +( 1640 280 608 ) ( 1328 280 608 ) ( 1328 152 608 ) 28 0 0 0 1 1 +( 1328 152 672 ) ( 1328 280 672 ) ( 1640 280 672 ) 28 0 0 0 1 1 +( 1640 640 664 ) ( 1328 640 664 ) ( 1328 640 640 ) 28 0 0 0 1 1 +( 1728 144 664 ) ( 1728 272 664 ) ( 1728 272 640 ) 28 0 0 0 1 1 +} +// brush 6 +{ +( 832 488 1016 ) ( 832 224 1016 ) ( 832 224 912 ) 11 0 0 0 1 1 +( 872 32 1016 ) ( 1064 32 1016 ) ( 1064 32 912 ) 11 0 0 0 1 1 +( 1056 496 864 ) ( 864 496 864 ) ( 864 232 864 ) 11 0 0 0 1 1 +( 864 232 960 ) ( 864 496 960 ) ( 1056 496 960 ) 11 0 0 0 1 1 +( 1056 512 1016 ) ( 864 512 1016 ) ( 864 512 912 ) 11 0 0 0 1 1 +( 1056 232 1016 ) ( 1056 496 1016 ) ( 1056 496 912 ) 11 0 0 0 1 1 +} +// brush 7 +{ +( 1312 336 896 ) ( 1312 320 896 ) ( 1312 320 656 ) 26 0 0 0 1 1 +( 1312 320 896 ) ( 1520 320 896 ) ( 1520 320 656 ) 26 0 0 0 1 1 +( 1520 336 656 ) ( 1312 336 656 ) ( 1312 320 656 ) 26 0 0 0 1 1 +( 1312 320 896 ) ( 1312 336 896 ) ( 1520 336 896 ) 26 0 0 0 1 1 +( 1520 576 896 ) ( 1312 576 896 ) ( 1312 576 656 ) 26 0 0 0 1 1 +( 1536 320 576 ) ( 1536 320 832 ) ( 1536 328 832 ) 26 0 0 0 1 1 +} +// brush 8 +{ +( 1696 600 896 ) ( 1696 392 896 ) ( 1696 392 656 ) 26 0 0 0 1 1 +( 1776 96 896 ) ( 1792 96 896 ) ( 1792 96 656 ) 26 0 0 0 1 1 +( 1760 408 608 ) ( 1760 616 608 ) ( 1744 616 608 ) 26 0 0 0 1 1 +( 1744 616 896 ) ( 1760 616 896 ) ( 1760 408 896 ) 26 0 0 0 1 1 +( 1760 608 896 ) ( 1744 608 896 ) ( 1744 608 656 ) 26 0 0 0 1 1 +( 1824 408 896 ) ( 1824 616 896 ) ( 1824 616 656 ) 26 0 0 0 1 1 +} +// brush 9 +{ +( 1920 888 1080 ) ( 1920 808 1080 ) ( 1920 808 704 ) 26 0 0 0 1 1 +( 1952 480 1080 ) ( 1968 480 1080 ) ( 1968 480 704 ) 26 0 0 0 1 1 +( 1952 656 480 ) ( 1952 576 480 ) ( 1968 576 480 ) 26 0 0 0 1 1 +( 1968 576 896 ) ( 1952 576 896 ) ( 1952 656 896 ) 26 0 0 0 1 1 +( 1960 800 1080 ) ( 1944 800 1080 ) ( 1944 800 704 ) 26 0 0 0 1 1 +( 1984 576 1080 ) ( 1984 656 1080 ) ( 1984 656 704 ) 26 0 0 0 1 1 +} +// brush 10 +{ +( 1280 888 1080 ) ( 1280 808 1080 ) ( 1280 808 704 ) 26 0 0 0 1 1 +( 1360 864 1080 ) ( 1376 864 1080 ) ( 1376 864 704 ) 26 0 0 0 1 1 +( 1360 656 624 ) ( 1360 576 624 ) ( 1376 576 624 ) 26 0 0 0 1 1 +( 1376 576 1168 ) ( 1360 576 1168 ) ( 1360 656 1168 ) 26 0 0 0 1 1 +( 1368 928 1080 ) ( 1352 928 1080 ) ( 1352 928 704 ) 26 0 0 0 1 1 +( 1408 576 1080 ) ( 1408 656 1080 ) ( 1408 656 704 ) 26 0 0 0 1 1 +} +// brush 11 +{ +( 1472 944 1080 ) ( 1472 928 1080 ) ( 1472 928 704 ) 26 0 0 0 1 1 +( 1352 928 1080 ) ( 1432 928 1080 ) ( 1432 928 704 ) 26 0 0 0 1 1 +( 1432 944 432 ) ( 1352 944 432 ) ( 1352 928 432 ) 26 0 0 0 1 1 +( 1352 928 640 ) ( 1352 944 640 ) ( 1432 944 640 ) 26 0 0 0 1 1 +( 1664 992 1080 ) ( 1584 992 1080 ) ( 1584 992 704 ) 26 0 0 0 1 1 +( 1952 928 1080 ) ( 1952 944 1080 ) ( 1952 944 704 ) 26 0 0 0 1 1 +} +// brush 12 +{ +( 1312 864 836 ) ( 1312 672 836 ) ( 1312 672 624 ) 26 0 0 0 1 1 +( 1344 640 836 ) ( 1392 640 836 ) ( 1392 640 624 ) 26 0 0 0 1 1 +( 1392 672 832 ) ( 1392 864 832 ) ( 1344 864 832 ) 26 0 0 0 1 1 +( 1344 864 1184 ) ( 1392 864 1184 ) ( 1392 672 1184 ) 26 0 0 0 1 1 +( 1392 928 836 ) ( 1344 928 836 ) ( 1344 928 624 ) 26 0 0 0 1 1 +( 1376 672 836 ) ( 1376 864 836 ) ( 1376 864 624 ) 26 0 0 0 1 1 +} +// brush 13 +{ +( 1216 856 624 ) ( 1216 680 624 ) ( 1216 680 608 ) 28 0 0 0 1 1 +( 1344 480 624 ) ( 1392 480 624 ) ( 1392 480 608 ) 28 0 0 0 1 1 +( 1392 680 384 ) ( 1392 856 384 ) ( 1344 856 384 ) 28 0 0 0 1 1 +( 1344 856 624 ) ( 1392 856 624 ) ( 1392 680 624 ) 28 0 0 0 1 1 +( 1400 800 624 ) ( 1352 800 624 ) ( 1352 800 608 ) 28 0 0 0 1 1 +( 1920 600 624 ) ( 1920 776 624 ) ( 1920 776 608 ) 28 0 0 0 1 1 +} +// brush 14 +{ +( 1280 632 1080 ) ( 1280 552 1080 ) ( 1280 552 704 ) 26 0 0 0 1 1 +( 1328 576 1080 ) ( 1344 576 1080 ) ( 1344 576 704 ) 26 0 0 0 1 1 +( 1328 400 624 ) ( 1328 320 624 ) ( 1344 320 624 ) 26 0 0 0 1 1 +( 1344 320 1168 ) ( 1328 320 1168 ) ( 1328 400 1168 ) 26 0 0 0 1 1 +( 1336 704 1080 ) ( 1320 704 1080 ) ( 1320 704 704 ) 26 0 0 0 1 1 +( 1408 320 1080 ) ( 1408 400 1080 ) ( 1408 400 704 ) 26 0 0 0 1 1 +} +// brush 15 +{ +( 1696 928 592 ) ( 1696 816 592 ) ( 1696 816 576 ) 27 0 0 0 1 1 +( 1680 800 592 ) ( 1704 800 592 ) ( 1704 800 576 ) 27 0 0 0 1 1 +( 1704 928 576 ) ( 1680 928 576 ) ( 1680 816 576 ) 27 0 0 0 1 1 +( 1680 816 592 ) ( 1680 928 592 ) ( 1704 928 592 ) 27 0 0 0 1 1 +( 1704 928 592 ) ( 1680 928 592 ) ( 1680 928 576 ) 27 0 0 0 1 1 +( 1728 816 592 ) ( 1728 928 592 ) ( 1728 928 576 ) 27 0 0 0 1 1 +} +// brush 16 +{ +( 1728 928 576 ) ( 1728 816 576 ) ( 1728 816 560 ) 27 0 0 0 1 1 +( 1720 800 576 ) ( 1744 800 576 ) ( 1744 800 560 ) 27 0 0 0 1 1 +( 1744 928 560 ) ( 1720 928 560 ) ( 1720 816 560 ) 27 0 0 0 1 1 +( 1720 816 576 ) ( 1720 928 576 ) ( 1744 928 576 ) 27 0 0 0 1 1 +( 1744 928 576 ) ( 1720 928 576 ) ( 1720 928 560 ) 27 0 0 0 1 1 +( 1760 816 576 ) ( 1760 928 576 ) ( 1760 928 560 ) 27 0 0 0 1 1 +} +// brush 17 +{ +( 1760 928 560 ) ( 1760 816 560 ) ( 1760 816 544 ) 27 0 0 0 1 1 +( 1760 800 560 ) ( 1784 800 560 ) ( 1784 800 544 ) 27 0 0 0 1 1 +( 1784 928 544 ) ( 1760 928 544 ) ( 1760 816 544 ) 27 0 0 0 1 1 +( 1760 816 560 ) ( 1760 928 560 ) ( 1784 928 560 ) 27 0 0 0 1 1 +( 1784 928 560 ) ( 1760 928 560 ) ( 1760 928 544 ) 27 0 0 0 1 1 +( 1792 816 560 ) ( 1792 928 560 ) ( 1792 928 544 ) 27 0 0 0 1 1 +} +// brush 18 +{ +( 1792 928 544 ) ( 1792 816 544 ) ( 1792 816 528 ) 27 0 0 0 1 1 +( 1800 800 544 ) ( 1824 800 544 ) ( 1824 800 528 ) 27 0 0 0 1 1 +( 1824 928 528 ) ( 1800 928 528 ) ( 1800 816 528 ) 27 0 0 0 1 1 +( 1800 816 544 ) ( 1800 928 544 ) ( 1824 928 544 ) 27 0 0 0 1 1 +( 1824 928 544 ) ( 1800 928 544 ) ( 1800 928 528 ) 27 0 0 0 1 1 +( 1824 816 544 ) ( 1824 928 544 ) ( 1824 928 528 ) 27 0 0 0 1 1 +} +// brush 19 +{ +( 1824 928 528 ) ( 1824 816 528 ) ( 1824 816 512 ) 27 0 0 0 1 1 +( 1872 800 528 ) ( 1896 800 528 ) ( 1896 800 512 ) 27 0 0 0 1 1 +( 1896 928 512 ) ( 1872 928 512 ) ( 1872 816 512 ) 27 0 0 0 1 1 +( 1872 816 528 ) ( 1872 928 528 ) ( 1896 928 528 ) 27 0 0 0 1 1 +( 1896 928 528 ) ( 1872 928 528 ) ( 1872 928 512 ) 27 0 0 0 1 1 +( 1856 816 528 ) ( 1856 928 528 ) ( 1856 928 512 ) 27 0 0 0 1 1 +} +// brush 20 +{ +( 1664 928 608 ) ( 1664 816 608 ) ( 1664 816 592 ) 27 0 0 0 1 1 +( 1672 800 608 ) ( 1696 800 608 ) ( 1696 800 592 ) 27 0 0 0 1 1 +( 1696 928 592 ) ( 1672 928 592 ) ( 1672 816 592 ) 27 0 0 0 1 1 +( 1672 816 608 ) ( 1672 928 608 ) ( 1696 928 608 ) 27 0 0 0 1 1 +( 1696 928 608 ) ( 1672 928 608 ) ( 1672 928 592 ) 27 0 0 0 1 1 +( 1696 816 608 ) ( 1696 928 608 ) ( 1696 928 592 ) 27 0 0 0 1 1 +} +// brush 21 +{ +( 1216 928 624 ) ( 1216 816 624 ) ( 1216 816 608 ) 28 0 0 0 1 1 +( 1376 800 624 ) ( 1672 800 624 ) ( 1672 800 608 ) 28 0 0 0 1 1 +( 1672 928 544 ) ( 1376 928 544 ) ( 1376 816 544 ) 28 0 0 0 1 1 +( 1376 816 624 ) ( 1376 928 624 ) ( 1672 928 624 ) 28 0 0 0 1 1 +( 1696 960 624 ) ( 1400 960 624 ) ( 1400 960 608 ) 28 0 0 0 1 1 +( 1664 816 624 ) ( 1664 928 624 ) ( 1664 928 608 ) 28 0 0 0 1 1 +} +// brush 22 +{ +( 1472 960 1008 ) ( 1472 928 1008 ) ( 1472 928 800 ) 26 0 0 0 1 1 +( 1360 928 1008 ) ( 1968 928 1008 ) ( 1968 928 800 ) 26 0 0 0 1 1 +( 1968 960 800 ) ( 1360 960 800 ) ( 1360 928 800 ) 26 0 0 0 1 1 +( 1360 928 896 ) ( 1360 960 896 ) ( 1968 960 896 ) 26 0 0 0 1 1 +( 1968 992 1008 ) ( 1360 992 1008 ) ( 1360 992 800 ) 26 0 0 0 1 1 +( 1824 928 1008 ) ( 1824 960 1008 ) ( 1824 960 800 ) 26 0 0 0 1 1 +} +// brush 23 +{ +( 1440 1152 904 ) ( 1440 960 904 ) ( 1440 960 800 ) 27 0 0 0 1 1 +( 1880 992 904 ) ( 1888 992 904 ) ( 1888 992 800 ) 27 0 0 0 1 1 +( 1888 1152 832 ) ( 1880 1152 832 ) ( 1880 960 832 ) 27 0 0 0 1 1 +( 1880 960 896 ) ( 1880 1152 896 ) ( 1888 1152 896 ) 27 0 0 0 1 1 +( 1896 1088 904 ) ( 1888 1088 904 ) ( 1888 1088 800 ) 27 0 0 0 1 1 +( 1952 944 904 ) ( 1952 1136 904 ) ( 1952 1136 800 ) 27 0 0 0 1 1 +} +// brush 24 +{ +( 1472 1080 904 ) ( 1472 1064 904 ) ( 1472 1064 608 ) 29 0 0 0 1 1 +( 1440 1088 904 ) ( 1888 1088 904 ) ( 1888 1088 608 ) 29 0 0 0 1 1 +( 1888 1088 512 ) ( 1440 1088 512 ) ( 1440 1072 512 ) 29 0 0 0 1 1 +( 1440 1072 896 ) ( 1440 1088 896 ) ( 1888 1088 896 ) 29 0 0 0 1 1 +( 1976 1120 904 ) ( 1528 1120 904 ) ( 1528 1120 608 ) 29 0 0 0 1 1 +( 1952 1072 904 ) ( 1952 1088 904 ) ( 1952 1088 608 ) 29 0 0 0 1 1 +} +// brush 25 +{ +( 1472 1136 624 ) ( 1472 960 624 ) ( 1472 960 608 ) 28 0 0 0 1 1 +( 1440 992 624 ) ( 1872 992 624 ) ( 1872 992 608 ) 28 0 0 0 1 1 +( 1872 1136 576 ) ( 1440 1136 576 ) ( 1440 960 576 ) 28 0 0 0 1 1 +( 1440 960 624 ) ( 1440 1136 624 ) ( 1872 1136 624 ) 28 0 0 0 1 1 +( 1872 1088 624 ) ( 1440 1088 624 ) ( 1440 1088 608 ) 28 0 0 0 1 1 +( 1952 960 624 ) ( 1952 1136 624 ) ( 1952 1136 608 ) 28 0 0 0 1 1 +} +// brush 26 +{ +( 1632 984 656 ) ( 1632 968 656 ) ( 1632 968 640 ) 7 0 0 0 1 1 +( 1632 960 656 ) ( 1648 960 656 ) ( 1648 960 640 ) 7 0 0 0 1 1 +( 1648 984 640 ) ( 1632 984 640 ) ( 1632 968 640 ) 7 0 0 0 1 1 +( 1632 968 800 ) ( 1632 984 800 ) ( 1648 984 800 ) 7 0 0 0 1 1 +( 1648 992 656 ) ( 1632 992 656 ) ( 1632 992 640 ) 7 0 0 0 1 1 +( 1664 968 656 ) ( 1664 984 656 ) ( 1664 984 640 ) 7 0 0 0 1 1 +} +// brush 27 +{ +( 1824 936 904 ) ( 1824 920 904 ) ( 1824 920 608 ) 26 0 0 0 1 1 +( 1888 928 904 ) ( 1952 928 904 ) ( 1952 928 608 ) 26 0 0 0 1 1 +( 1952 944 640 ) ( 1888 944 640 ) ( 1888 928 640 ) 26 0 0 0 1 1 +( 1888 928 896 ) ( 1888 944 896 ) ( 1952 944 896 ) 26 0 0 0 1 1 +( 1960 992 904 ) ( 1896 992 904 ) ( 1896 992 608 ) 26 0 0 0 1 1 +( 1952 928 904 ) ( 1952 944 904 ) ( 1952 944 608 ) 26 0 0 0 1 1 +} +// brush 28 +{ +( 1376 944 784 ) ( 1376 928 784 ) ( 1376 928 768 ) 26 0 0 0 1 1 +( 1360 928 784 ) ( 1488 928 784 ) ( 1488 928 768 ) 26 0 0 0 1 1 +( 1488 944 624 ) ( 1360 944 624 ) ( 1360 928 624 ) 26 0 0 0 1 1 +( 1360 928 896 ) ( 1360 944 896 ) ( 1488 944 896 ) 26 0 0 0 1 1 +( 1488 1088 784 ) ( 1360 1088 784 ) ( 1360 1088 768 ) 26 0 0 0 1 1 +( 1472 928 784 ) ( 1472 944 784 ) ( 1472 944 768 ) 26 0 0 0 1 1 +} +// brush 29 +{ +( 1056 632 836 ) ( 1056 616 836 ) ( 1056 616 624 ) 26 0 0 0 1 1 +( 1064 608 836 ) ( 1264 608 836 ) ( 1264 608 624 ) 26 0 0 0 1 1 +( 1264 632 624 ) ( 1064 632 624 ) ( 1064 616 624 ) 26 0 0 0 1 1 +( 1064 616 1088 ) ( 1064 632 1088 ) ( 1264 632 1088 ) 26 0 0 0 1 1 +( 1264 640 836 ) ( 1064 640 836 ) ( 1064 640 624 ) 26 0 0 0 1 1 +( 1312 616 836 ) ( 1312 632 836 ) ( 1312 632 624 ) 26 0 0 0 1 1 +} +// brush 30 +{ +( 1056 952 836 ) ( 1056 936 836 ) ( 1056 936 624 ) 26 0 0 0 1 1 +( 1064 928 836 ) ( 1264 928 836 ) ( 1264 928 624 ) 26 0 0 0 1 1 +( 1264 952 624 ) ( 1064 952 624 ) ( 1064 936 624 ) 26 0 0 0 1 1 +( 1064 936 1088 ) ( 1064 952 1088 ) ( 1264 952 1088 ) 26 0 0 0 1 1 +( 1264 960 836 ) ( 1064 960 836 ) ( 1064 960 624 ) 26 0 0 0 1 1 +( 1312 936 836 ) ( 1312 952 836 ) ( 1312 952 624 ) 26 0 0 0 1 1 +} +// brush 31 +{ +( 544 856 544 ) ( 544 680 544 ) ( 544 680 528 ) 26 0 0 0 1 1 +( 976 672 544 ) ( 1008 672 544 ) ( 1008 672 528 ) 26 0 0 0 1 1 +( 1008 856 512 ) ( 976 856 512 ) ( 976 680 512 ) 26 0 0 0 1 1 +( 976 680 544 ) ( 976 856 544 ) ( 1008 856 544 ) 26 0 0 0 1 1 +( 1008 1120 544 ) ( 976 1120 544 ) ( 976 1120 528 ) 26 0 0 0 1 1 +( 1216 680 544 ) ( 1216 856 544 ) ( 1216 856 528 ) 26 0 0 0 1 1 +} +// brush 32 +{ +( 544 1008 640 ) ( 544 992 640 ) ( 544 992 528 ) 29 0 0 0 1 1 +( 544 672 640 ) ( 800 672 640 ) ( 800 672 528 ) 29 0 0 0 1 1 +( 800 1008 544 ) ( 544 1008 544 ) ( 544 992 544 ) 29 0 0 0 1 1 +( 544 992 624 ) ( 544 1008 624 ) ( 800 1008 624 ) 29 0 0 0 1 1 +( 800 992 640 ) ( 544 992 640 ) ( 544 992 528 ) 29 0 0 0 1 1 +( 800 992 640 ) ( 800 1008 640 ) ( 800 1008 528 ) 29 0 0 0 1 1 +} +// brush 33 +{ +( 672 1096 640 ) ( 672 1080 640 ) ( 672 1080 528 ) 29 0 0 0 1 1 +( 688 1120 640 ) ( 944 1120 640 ) ( 944 1120 528 ) 29 0 0 0 1 1 +( 688 1120 192 ) ( 944 1120 192 ) ( 944 1136 192 ) 29 0 0 0 1 1 +( 944 1136 768 ) ( 944 1120 768 ) ( 688 1120 768 ) 29 0 0 0 1 1 +( 944 1152 640 ) ( 688 1152 640 ) ( 688 1152 528 ) 29 0 0 0 1 1 +( 1072 1120 640 ) ( 1072 1136 640 ) ( 1072 1136 528 ) 29 0 0 0 1 1 +} +// brush 34 +{ +( 512 1152 512 ) ( 512 1136 512 ) ( 512 1136 496 ) 26 0 0 0 1 1 +( 536 1120 512 ) ( 648 1120 512 ) ( 648 1120 496 ) 26 0 0 0 1 1 +( 656 1152 496 ) ( 544 1152 496 ) ( 544 1136 496 ) 26 0 0 0 1 1 +( 544 1136 528 ) ( 544 1152 528 ) ( 656 1152 528 ) 26 0 0 0 1 1 +( 656 1184 512 ) ( 544 1184 512 ) ( 544 1184 496 ) 26 0 0 0 1 1 +( 704 1136 512 ) ( 704 1152 512 ) ( 704 1152 496 ) 26 0 0 0 1 1 +} +// brush 35 +{ +( 512 1576 472 ) ( 512 1440 472 ) ( 512 1440 456 ) 27 0 0 0 1 1 +( 544 1408 472 ) ( 672 1408 472 ) ( 672 1408 456 ) 27 0 0 0 1 1 +( 632 1576 448 ) ( 504 1576 448 ) ( 504 1440 448 ) 27 0 0 0 1 1 +( 504 1440 464 ) ( 504 1576 464 ) ( 632 1576 464 ) 27 0 0 0 1 1 +( 632 1568 472 ) ( 504 1568 472 ) ( 504 1568 456 ) 27 0 0 0 1 1 +( 672 1408 472 ) ( 672 1544 472 ) ( 672 1544 456 ) 27 0 0 0 1 1 +} +// brush 36 +{ +( 440 1568 424 ) ( 296 1712 424 ) ( 440 1568 440 ) 26 0 0 0 1 1 +( 736 2152 424 ) ( 440 2152 424 ) ( 440 1568 424 ) 26 0 0 0 1 1 +( 440 1568 480 ) ( 440 2152 480 ) ( 736 2152 480 ) 26 0 0 0 1 1 +( 320 1712 64 ) ( 320 1712 1032 ) ( 296 1712 1032 ) 26 0 0 0 1 1 +( 320 1712 1032 ) ( 320 1736 1032 ) ( 320 1736 64 ) 26 0 0 0 1 1 +} +// brush 37 +{ +( 864 1944 472 ) ( 864 1808 472 ) ( 864 1808 456 ) 27 0 0 0 1 1 +( 920 1792 472 ) ( 1048 1792 472 ) ( 1048 1792 456 ) 27 0 0 0 1 1 +( 1008 1944 448 ) ( 880 1944 448 ) ( 880 1808 448 ) 27 0 0 0 1 1 +( 880 1808 464 ) ( 880 1944 464 ) ( 1008 1944 464 ) 27 0 0 0 1 1 +( 1008 1952 472 ) ( 880 1952 472 ) ( 880 1952 456 ) 27 0 0 0 1 1 +( 1152 1776 472 ) ( 1152 1912 472 ) ( 1152 1912 456 ) 27 0 0 0 1 1 +} +// brush 38 +{ +( 1248 1948 480 ) ( 1248 1948 692 ) ( 1248 1924 692 ) 7 0 0 0 1 1 +( 1320 1920 692 ) ( 1320 1920 480 ) ( 1256 1920 480 ) 7 0 0 0 1 1 +( 1320 1920 480 ) ( 1320 1948 480 ) ( 1256 1948 480 ) 7 0 0 0 1 1 +( 1320 1948 608 ) ( 1320 1920 608 ) ( 1256 1920 608 ) 7 0 0 0 1 1 +( 1320 1952 480 ) ( 1320 1952 692 ) ( 1256 1952 692 ) 7 0 0 0 1 1 +( 1312 1920 480 ) ( 1312 1920 692 ) ( 1312 1948 692 ) 7 0 0 0 1 1 +} +// brush 39 +{ +( 1248 1792 480 ) ( 1248 1792 692 ) ( 1248 1768 692 ) 7 0 0 0 1 1 +( 1320 1760 692 ) ( 1320 1760 480 ) ( 1256 1760 480 ) 7 0 0 0 1 1 +( 1320 1764 480 ) ( 1320 1792 480 ) ( 1256 1792 480 ) 7 0 0 0 1 1 +( 1320 1792 608 ) ( 1320 1764 608 ) ( 1256 1764 608 ) 7 0 0 0 1 1 +( 1320 1792 480 ) ( 1320 1792 692 ) ( 1256 1792 692 ) 7 0 0 0 1 1 +( 1312 1764 480 ) ( 1312 1764 692 ) ( 1312 1792 692 ) 7 0 0 0 1 1 +} +// brush 40 +{ +( 1184 1664 692 ) ( 1184 1472 692 ) ( 1184 1472 480 ) 11 0 0 0 1 1 +( 1224 1216 692 ) ( 1272 1216 692 ) ( 1272 1216 480 ) 11 0 0 0 1 1 +( 1272 1472 384 ) ( 1272 1664 384 ) ( 1224 1664 384 ) 11 0 0 0 1 1 +( 1224 1664 768 ) ( 1272 1664 768 ) ( 1272 1472 768 ) 11 0 0 0 1 1 +( 1272 1568 692 ) ( 1224 1568 692 ) ( 1224 1568 480 ) 11 0 0 0 1 1 +( 1600 1472 692 ) ( 1600 1664 692 ) ( 1600 1664 480 ) 11 0 0 0 1 1 +} +// brush 41 +{ +( 1280 2040 672 ) ( 1280 1928 672 ) ( 1280 1928 480 ) 11 0 0 0 1 1 +( 1336 1952 672 ) ( 1352 1952 672 ) ( 1352 1952 480 ) 11 0 0 0 1 1 +( 1352 2056 192 ) ( 1336 2056 192 ) ( 1336 1944 192 ) 11 0 0 0 1 1 +( 1336 1944 784 ) ( 1336 2056 784 ) ( 1352 2056 784 ) 11 0 0 0 1 1 +( 1352 2144 672 ) ( 1336 2144 672 ) ( 1336 2144 480 ) 11 0 0 0 1 1 +( 1312 1944 672 ) ( 1312 2056 672 ) ( 1312 2056 480 ) 11 0 0 0 1 1 +} +// brush 42 +{ +( 320 1136 832 ) ( 320 1112 832 ) ( 320 1112 64 ) 29 0 0 0 1 1 +( 208 992 832 ) ( 528 992 832 ) ( 528 992 64 ) 29 0 0 0 1 1 +( 528 1136 192 ) ( 208 1136 192 ) ( 208 1112 192 ) 29 0 0 0 1 1 +( 208 1112 832 ) ( 208 1136 832 ) ( 528 1136 832 ) 29 0 0 0 1 1 +( 528 1152 832 ) ( 208 1152 832 ) ( 208 1152 64 ) 29 0 0 0 1 1 +( 544 1112 832 ) ( 544 1136 832 ) ( 544 1136 64 ) 29 0 0 0 1 1 +} +// brush 43 +{ +( 672 1656 616 ) ( 672 1592 616 ) ( 672 1592 480 ) 26 0 0 0 1 1 +( 672 1600 616 ) ( 736 1600 616 ) ( 736 1600 480 ) 26 0 0 0 1 1 +( 736 1656 480 ) ( 672 1656 480 ) ( 672 1592 480 ) 26 0 0 0 1 1 +( 672 1592 832 ) ( 672 1656 832 ) ( 736 1656 832 ) 26 0 0 0 1 1 +( 744 1664 616 ) ( 680 1664 616 ) ( 680 1664 480 ) 26 0 0 0 1 1 +( 736 1592 616 ) ( 736 1656 616 ) ( 736 1656 480 ) 26 0 0 0 1 1 +} +// brush 44 +{ +( 448 1656 616 ) ( 448 1592 616 ) ( 448 1592 480 ) 26 0 0 0 1 1 +( 440 1600 616 ) ( 504 1600 616 ) ( 504 1600 480 ) 26 0 0 0 1 1 +( 504 1656 480 ) ( 440 1656 480 ) ( 440 1592 480 ) 26 0 0 0 1 1 +( 440 1592 832 ) ( 440 1656 832 ) ( 504 1656 832 ) 26 0 0 0 1 1 +( 512 1664 616 ) ( 448 1664 616 ) ( 448 1664 480 ) 26 0 0 0 1 1 +( 512 1592 616 ) ( 512 1656 616 ) ( 512 1656 480 ) 26 0 0 0 1 1 +} +// brush 45 +{ +( 768 1776 616 ) ( 768 1712 616 ) ( 768 1712 480 ) 26 0 0 0 1 1 +( 792 1728 616 ) ( 856 1728 616 ) ( 856 1728 480 ) 26 0 0 0 1 1 +( 856 1776 480 ) ( 792 1776 480 ) ( 792 1712 480 ) 26 0 0 0 1 1 +( 792 1712 832 ) ( 792 1776 832 ) ( 856 1776 832 ) 26 0 0 0 1 1 +( 864 1792 616 ) ( 800 1792 616 ) ( 800 1792 480 ) 26 0 0 0 1 1 +( 832 1712 616 ) ( 832 1776 616 ) ( 832 1776 480 ) 26 0 0 0 1 1 +} +// brush 46 +{ +( 768 2040 616 ) ( 768 1976 616 ) ( 768 1976 480 ) 26 0 0 0 1 1 +( 792 1952 616 ) ( 856 1952 616 ) ( 856 1952 480 ) 26 0 0 0 1 1 +( 856 2040 480 ) ( 792 2040 480 ) ( 792 1976 480 ) 26 0 0 0 1 1 +( 792 1976 832 ) ( 792 2040 832 ) ( 856 2040 832 ) 26 0 0 0 1 1 +( 864 2016 616 ) ( 800 2016 616 ) ( 800 2016 480 ) 26 0 0 0 1 1 +( 832 1976 616 ) ( 832 2040 616 ) ( 832 2040 480 ) 26 0 0 0 1 1 +} +// brush 47 +{ +( 768 1880 708 ) ( 768 1848 708 ) ( 768 1848 672 ) 26 0 0 0 1 1 +( 856 1824 712 ) ( 856 1824 676 ) ( 808 1824 676 ) 26 0 0 0 1 1 +( 856 1848 672 ) ( 856 1880 672 ) ( 808 1880 672 ) 26 0 0 0 1 1 +( 856 1880 704 ) ( 856 1848 704 ) ( 808 1848 704 ) 26 0 0 0 1 1 +( 856 1920 672 ) ( 856 1920 708 ) ( 808 1920 708 ) 26 0 0 0 1 1 +( 832 1848 672 ) ( 832 1848 708 ) ( 832 1880 708 ) 26 0 0 0 1 1 +} +// brush 48 +{ +( 544 1624 712 ) ( 544 1624 676 ) ( 544 1672 676 ) 26 0 0 0 1 1 +( 576 1600 672 ) ( 576 1600 708 ) ( 608 1600 708 ) 26 0 0 0 1 1 +( 576 1624 672 ) ( 608 1624 672 ) ( 608 1672 672 ) 26 0 0 0 1 1 +( 608 1624 704 ) ( 576 1624 704 ) ( 576 1672 704 ) 26 0 0 0 1 1 +( 608 1664 708 ) ( 576 1664 708 ) ( 576 1664 672 ) 26 0 0 0 1 1 +( 640 1624 672 ) ( 640 1624 708 ) ( 640 1672 708 ) 26 0 0 0 1 1 +} +// brush 49 +{ +( 496 2200 1040 ) ( 496 2176 1040 ) ( 496 2176 72 ) 11 0 0 0 1 1 +( 512 2144 1032 ) ( 1240 2144 1032 ) ( 1240 2144 64 ) 11 0 0 0 1 1 +( 1456 2200 64 ) ( 728 2200 64 ) ( 728 2176 64 ) 11 0 0 0 1 1 +( 728 2176 1032 ) ( 728 2200 1032 ) ( 1456 2200 1032 ) 11 0 0 0 1 1 +( 1352 2208 1032 ) ( 624 2208 1032 ) ( 624 2208 64 ) 11 0 0 0 1 1 +( 1360 2176 1032 ) ( 1360 2200 1032 ) ( 1360 2200 64 ) 11 0 0 0 1 1 +} +// brush 50 +{ +( 896 1736 64 ) ( 896 1736 1032 ) ( 896 1712 1032 ) 11 0 0 0 1 1 +( 1016 1120 784 ) ( 1496 1120 784 ) ( 1496 1120 768 ) 11 0 0 0 1 1 +( 1216 2200 768 ) ( 736 2200 768 ) ( 736 1920 768 ) 11 0 0 0 1 1 +( 736 1920 832 ) ( 736 2200 832 ) ( 1216 2200 832 ) 11 0 0 0 1 1 +( 320 2144 1032 ) ( 296 2144 1032 ) ( 296 2144 64 ) 11 0 0 0 1 1 +( 1440 1768 784 ) ( 1440 2048 784 ) ( 1440 2048 768 ) 11 0 0 0 1 1 +} +// brush 51 +{ +( 320 1800 616 ) ( 320 1736 616 ) ( 320 1736 480 ) 26 0 0 0 1 1 +( 320 1728 616 ) ( 384 1728 616 ) ( 384 1728 480 ) 26 0 0 0 1 1 +( 384 1800 480 ) ( 320 1800 480 ) ( 320 1736 480 ) 26 0 0 0 1 1 +( 320 1736 832 ) ( 320 1800 832 ) ( 384 1800 832 ) 26 0 0 0 1 1 +( 392 1792 616 ) ( 328 1792 616 ) ( 328 1792 480 ) 26 0 0 0 1 1 +( 384 1736 616 ) ( 384 1800 616 ) ( 384 1800 480 ) 26 0 0 0 1 1 +} +// brush 52 +{ +( 640 2136 616 ) ( 640 2072 616 ) ( 640 2072 480 ) 26 0 0 0 1 1 +( 648 2080 616 ) ( 712 2080 616 ) ( 712 2080 480 ) 26 0 0 0 1 1 +( 712 2136 480 ) ( 648 2136 480 ) ( 648 2072 480 ) 26 0 0 0 1 1 +( 648 2072 832 ) ( 648 2136 832 ) ( 712 2136 832 ) 26 0 0 0 1 1 +( 720 2144 616 ) ( 656 2144 616 ) ( 656 2144 480 ) 26 0 0 0 1 1 +( 704 2072 616 ) ( 704 2136 616 ) ( 704 2136 480 ) 26 0 0 0 1 1 +} +// brush 53 +{ +( 1280 2080 432 ) ( 1280 1656 432 ) ( 1280 1656 16 ) 11 0 0 0 1 1 +( 1336 1568 432 ) ( 1352 1568 432 ) ( 1352 1568 16 ) 11 0 0 0 1 1 +( 1352 2080 192 ) ( 1336 2080 192 ) ( 1336 1656 192 ) 11 0 0 0 1 1 +( 1336 1656 768 ) ( 1336 2080 768 ) ( 1352 2080 768 ) 11 0 0 0 1 1 +( 1352 1760 432 ) ( 1336 1760 432 ) ( 1336 1760 16 ) 11 0 0 0 1 1 +( 1376 1656 432 ) ( 1376 2080 432 ) ( 1376 2080 16 ) 11 0 0 0 1 1 +} +// brush 54 +{ +( 776 1736 600 ) ( 776 1736 576 ) ( 776 1752 576 ) 26 0 0 0 1 1 +( 792 1752 580 ) ( 776 1752 596 ) ( 792 1736 580 ) 26 0 0 0 1 1 +( 768 1736 580 ) ( 768 1736 604 ) ( 800 1736 604 ) 26 0 0 0 1 1 +( 800 1736 604 ) ( 768 1736 604 ) ( 768 1752 604 ) 26 0 0 0 1 1 +( 800 1752 604 ) ( 768 1752 604 ) ( 768 1752 580 ) 26 0 0 0 1 1 +( 792 1736 580 ) ( 792 1736 604 ) ( 792 1752 604 ) 26 0 0 0 1 1 +} +// brush 55 +{ +( 1216 1424 208 ) ( 1216 1368 208 ) ( 1216 1368 168 ) 11 0 0 0 1 1 +( 1336 1088 208 ) ( 1456 1088 208 ) ( 1456 1088 168 ) 11 0 0 0 1 1 +( 1376 1424 160 ) ( 1256 1424 160 ) ( 1256 1368 160 ) 11 0 0 0 1 1 +( 1256 1368 208 ) ( 1256 1424 208 ) ( 1376 1424 208 ) 11 0 0 0 1 1 +( 1376 1408 208 ) ( 1256 1408 208 ) ( 1256 1408 168 ) 11 0 0 0 1 1 +( 1888 1280 208 ) ( 1888 1336 208 ) ( 1888 1336 168 ) 11 0 0 0 1 1 +} +// brush 56 +{ +( 1376 1424 296 ) ( 1376 1416 296 ) ( 1376 1416 280 ) 29 0 0 0 1 1 +( 1384 1408 296 ) ( 1456 1408 296 ) ( 1456 1408 280 ) 29 0 0 0 1 1 +( 1456 1424 192 ) ( 1384 1424 192 ) ( 1384 1416 192 ) 29 0 0 0 1 1 +( 1384 1416 480 ) ( 1384 1424 480 ) ( 1456 1424 480 ) 29 0 0 0 1 1 +( 1456 1760 296 ) ( 1384 1760 296 ) ( 1384 1760 280 ) 29 0 0 0 1 1 +( 1856 1408 296 ) ( 1856 1416 296 ) ( 1856 1416 280 ) 29 0 0 0 1 1 +} +// brush 57 +{ +( 1888 936 904 ) ( 1888 808 904 ) ( 1888 808 512 ) 26 0 0 0 1 1 +( 1952 768 904 ) ( 1968 768 904 ) ( 1968 768 512 ) 26 0 0 0 1 1 +( 1968 944 672 ) ( 1952 944 672 ) ( 1952 816 672 ) 26 0 0 0 1 1 +( 1952 816 896 ) ( 1952 944 896 ) ( 1968 944 896 ) 26 0 0 0 1 1 +( 1968 928 904 ) ( 1952 928 904 ) ( 1952 928 512 ) 26 0 0 0 1 1 +( 1952 816 904 ) ( 1952 944 904 ) ( 1952 944 512 ) 26 0 0 0 1 1 +} +// brush 58 +{ +( 832 1688 216 ) ( 832 1624 216 ) ( 832 1624 184 ) 28 0 0 0 1 1 +( 856 1632 216 ) ( 912 1632 216 ) ( 912 1632 184 ) 28 0 0 0 1 1 +( 912 1688 192 ) ( 856 1688 192 ) ( 856 1624 192 ) 28 0 0 0 1 1 +( 856 1624 208 ) ( 856 1688 208 ) ( 912 1688 208 ) 28 0 0 0 1 1 +( 912 1696 216 ) ( 856 1696 216 ) ( 856 1696 184 ) 28 0 0 0 1 1 +( 896 1624 216 ) ( 896 1688 216 ) ( 896 1688 184 ) 28 0 0 0 1 1 +} +// brush 59 +{ +( 1824 464 904 ) ( 1824 448 904 ) ( 1824 448 608 ) 26 0 0 0 1 1 +( 1800 448 904 ) ( 1952 448 904 ) ( 1952 448 608 ) 26 0 0 0 1 1 +( 1952 464 608 ) ( 1800 464 608 ) ( 1800 448 608 ) 26 0 0 0 1 1 +( 1800 448 896 ) ( 1800 464 896 ) ( 1952 464 896 ) 26 0 0 0 1 1 +( 1952 480 904 ) ( 1800 480 904 ) ( 1800 480 608 ) 26 0 0 0 1 1 +( 1952 448 904 ) ( 1952 464 904 ) ( 1952 464 608 ) 26 0 0 0 1 1 +} +// brush 60 +{ +( 544 1120 640 ) ( 544 992 640 ) ( 544 992 624 ) 26 0 0 0 1 1 +( 928 608 640 ) ( 1056 608 640 ) ( 1056 608 624 ) 26 0 0 0 1 1 +( 1056 1120 624 ) ( 928 1120 624 ) ( 928 992 624 ) 26 0 0 0 1 1 +( 928 992 1088 ) ( 928 1120 1088 ) ( 1056 1120 1088 ) 26 0 0 0 1 1 +( 1056 1120 640 ) ( 928 1120 640 ) ( 928 1120 624 ) 26 0 0 0 1 1 +( 1056 992 640 ) ( 1056 1120 640 ) ( 1056 1120 624 ) 26 0 0 0 1 1 +} +// brush 61 +{ +( 928 992 624 ) ( 928 984 624 ) ( 928 984 528 ) 29 0 0 0 1 1 +( 952 832 624 ) ( 1064 832 624 ) ( 1064 832 528 ) 29 0 0 0 1 1 +( 1056 992 544 ) ( 944 992 544 ) ( 944 984 544 ) 29 0 0 0 1 1 +( 944 984 624 ) ( 944 992 624 ) ( 1056 992 624 ) 29 0 0 0 1 1 +( 1056 992 624 ) ( 944 992 624 ) ( 944 992 528 ) 29 0 0 0 1 1 +( 1056 984 624 ) ( 1056 992 624 ) ( 1056 992 528 ) 29 0 0 0 1 1 +} +// brush 62 +{ +( 256 1240 1032 ) ( 256 904 1032 ) ( 256 904 64 ) 11 0 0 0 1 1 +( 320 1088 1032 ) ( 336 1088 1032 ) ( 336 1088 64 ) 11 0 0 0 1 1 +( 320 1240 184 ) ( 304 1240 184 ) ( 304 904 184 ) 11 0 0 0 1 1 +( 304 904 832 ) ( 304 1240 832 ) ( 320 1240 832 ) 11 0 0 0 1 1 +( 320 1888 1032 ) ( 304 1888 1032 ) ( 304 1888 64 ) 11 0 0 0 1 1 +( 320 904 1032 ) ( 320 1240 1032 ) ( 320 1240 64 ) 11 0 0 0 1 1 +} +// brush 63 +{ +( 1216 336 656 ) ( 1216 256 784 ) ( 1216 256 656 ) 28 0 0 0 1 1 +( 1192 256 656 ) ( 1312 256 656 ) ( 1312 256 624 ) 28 0 0 0 1 1 +( 1312 248 640 ) ( 1312 344 640 ) ( 1200 344 640 ) 28 0 0 0 1 1 +( 1200 344 656 ) ( 1312 344 656 ) ( 1312 248 656 ) 28 0 0 0 1 1 +( 1312 352 624 ) ( 1312 352 656 ) ( 1200 352 656 ) 28 0 0 0 1 1 +( 1312 248 656 ) ( 1312 344 656 ) ( 1312 344 624 ) 28 0 0 0 1 1 +} +// brush 64 +{ +( 976 248 656 ) ( 976 128 784 ) ( 976 128 656 ) 28 0 0 0 1 1 +( 1000 32 656 ) ( 1088 32 656 ) ( 1088 32 640 ) 28 0 0 0 1 1 +( 1112 248 640 ) ( 1024 248 640 ) ( 1024 168 640 ) 28 0 0 0 1 1 +( 1024 168 656 ) ( 1024 248 656 ) ( 1112 248 656 ) 28 0 0 0 1 1 +( 1112 256 656 ) ( 1024 256 656 ) ( 1024 256 640 ) 28 0 0 0 1 1 +( 1312 160 656 ) ( 1312 240 656 ) ( 1312 240 640 ) 28 0 0 0 1 1 +} +// brush 65 +{ +( 1056 488 1112 ) ( 1056 224 1112 ) ( 1056 224 1008 ) 11 0 0 0 1 1 +( 1096 32 1112 ) ( 1288 32 1112 ) ( 1288 32 1008 ) 11 0 0 0 1 1 +( 1280 496 960 ) ( 1088 496 960 ) ( 1088 232 960 ) 11 0 0 0 1 1 +( 1088 232 1024 ) ( 1088 496 1024 ) ( 1280 496 1024 ) 11 0 0 0 1 1 +( 1280 512 1112 ) ( 1088 512 1112 ) ( 1088 512 1008 ) 11 0 0 0 1 1 +( 1344 232 1112 ) ( 1344 496 1112 ) ( 1344 496 1008 ) 11 0 0 0 1 1 +} +// brush 66 +{ +( 1280 352 640 ) ( 1280 353 640 ) ( 1280 352 641 ) 29 0 0 0 1 1 +( 1280 320 640 ) ( 1280 320 641 ) ( 1281 320 640 ) 29 0 0 0 1 1 +( 1280 352 640 ) ( 1281 352 640 ) ( 1280 353 640 ) 29 0 0 0 1 1 +( 1312 512 960 ) ( 1312 513 960 ) ( 1313 512 960 ) 29 0 0 0 1 1 +( 1312 512 672 ) ( 1313 512 672 ) ( 1312 512 673 ) 29 0 0 0 1 1 +( 1312 512 672 ) ( 1312 512 673 ) ( 1312 513 672 ) 29 0 0 0 1 1 +} +// brush 67 +{ +( 1248 288 640 ) ( 1248 289 640 ) ( 1248 288 641 ) 16 0 0 0 1 1 +( 1280 288 640 ) ( 1280 288 641 ) ( 1281 288 640 ) 16 0 0 0 1 1 +( 1280 288 640 ) ( 1281 288 640 ) ( 1280 289 640 ) 16 0 0 0 1 1 +( 1344 320 960 ) ( 1344 321 960 ) ( 1345 320 960 ) 16 0 0 0 1 1 +( 1344 320 672 ) ( 1345 320 672 ) ( 1344 320 673 ) 16 0 0 0 1 1 +( 1344 320 672 ) ( 1344 320 673 ) ( 1344 321 672 ) 16 0 0 0 1 1 +} +// brush 68 +{ +( 1248 96 640 ) ( 1248 97 640 ) ( 1248 96 641 ) 16 0 0 0 1 1 +( 1280 96 640 ) ( 1280 96 641 ) ( 1281 96 640 ) 16 0 0 0 1 1 +( 1280 96 640 ) ( 1281 96 640 ) ( 1280 97 640 ) 16 0 0 0 1 1 +( 1344 128 960 ) ( 1344 129 960 ) ( 1345 128 960 ) 16 0 0 0 1 1 +( 1344 128 672 ) ( 1345 128 672 ) ( 1344 128 673 ) 16 0 0 0 1 1 +( 1344 128 672 ) ( 1344 128 673 ) ( 1344 129 672 ) 16 0 0 0 1 1 +} +// brush 69 +{ +( 1280 64 640 ) ( 1280 65 640 ) ( 1280 64 641 ) 26 0 0 0 1 1 +( 1344 0 640 ) ( 1344 0 641 ) ( 1345 0 640 ) 26 0 0 0 1 1 +( 1344 64 640 ) ( 1345 64 640 ) ( 1344 65 640 ) 26 0 0 0 1 1 +( 1408 96 960 ) ( 1408 97 960 ) ( 1409 96 960 ) 26 0 0 0 1 1 +( 1408 96 672 ) ( 1409 96 672 ) ( 1408 96 673 ) 26 0 0 0 1 1 +( 1760 96 672 ) ( 1760 96 673 ) ( 1760 97 672 ) 26 0 0 0 1 1 +} +// brush 70 +{ +( 1504 656 640 ) ( 1504 608 768 ) ( 1504 608 640 ) 28 0 0 0 1 1 +( 1376 600 648 ) ( 1952 600 648 ) ( 1952 600 624 ) 28 0 0 0 1 1 +( 1952 928 640 ) ( 1376 928 640 ) ( 1376 600 640 ) 28 0 0 0 1 1 +( 1376 600 656 ) ( 1376 928 656 ) ( 1952 928 656 ) 28 0 0 0 1 1 +( 1536 672 640 ) ( 1536 672 624 ) ( 1752 672 624 ) 28 0 0 0 1 1 +( 1760 608 640 ) ( 1760 656 768 ) ( 1760 656 640 ) 28 0 0 0 1 1 +} +// brush 71 +{ +( 1472 712 640 ) ( 1472 640 768 ) ( 1472 640 640 ) 28 0 0 0 1 1 +( 1376 608 640 ) ( 1952 608 640 ) ( 1952 608 616 ) 28 0 0 0 1 1 +( 1952 960 624 ) ( 1376 960 624 ) ( 1376 632 624 ) 28 0 0 0 1 1 +( 1376 632 640 ) ( 1376 960 640 ) ( 1952 960 640 ) 28 0 0 0 1 1 +( 1536 704 632 ) ( 1536 704 616 ) ( 1752 704 616 ) 28 0 0 0 1 1 +( 1792 712 640 ) ( 1792 640 640 ) ( 1792 640 768 ) 28 0 0 0 1 1 +} +// brush 72 +{ +( 1728 984 656 ) ( 1728 968 656 ) ( 1728 968 640 ) 7 0 0 0 1 1 +( 1728 960 656 ) ( 1744 960 656 ) ( 1744 960 640 ) 7 0 0 0 1 1 +( 1744 984 640 ) ( 1728 984 640 ) ( 1728 968 640 ) 7 0 0 0 1 1 +( 1728 968 800 ) ( 1728 984 800 ) ( 1744 984 800 ) 7 0 0 0 1 1 +( 1744 992 656 ) ( 1728 992 656 ) ( 1728 992 640 ) 7 0 0 0 1 1 +( 1760 968 656 ) ( 1760 984 656 ) ( 1760 984 640 ) 7 0 0 0 1 1 +} +// brush 73 +{ +( 1056 896 624 ) ( 1056 856 736 ) ( 1056 856 608 ) 29 0 0 0 1 1 +( 1016 896 624 ) ( 1312 896 624 ) ( 1312 896 528 ) 29 0 0 0 1 1 +( 1312 904 528 ) ( 1016 904 528 ) ( 1016 856 528 ) 29 0 0 0 1 1 +( 1016 856 640 ) ( 1016 904 640 ) ( 1312 904 640 ) 29 0 0 0 1 1 +( 1312 1120 624 ) ( 1016 1120 624 ) ( 1016 1120 528 ) 29 0 0 0 1 1 +( 1312 896 624 ) ( 1312 856 608 ) ( 1312 856 736 ) 29 0 0 0 1 1 +} +// brush 74 +{ +( 1184 704 544 ) ( 1184 705 544 ) ( 1184 704 545 ) 14 0 0 0 1 1 +( 1168 768 544 ) ( 1168 768 545 ) ( 1169 768 544 ) 14 0 0 0 1 1 +( 1168 704 544 ) ( 1169 704 544 ) ( 1168 705 544 ) 14 0 0 0 1 1 +( 1216 816 576 ) ( 1216 817 576 ) ( 1217 816 576 ) 14 0 0 0 1 1 +( 1216 832 560 ) ( 1217 832 560 ) ( 1216 832 561 ) 14 0 0 0 1 1 +( 1216 816 560 ) ( 1216 816 561 ) ( 1216 817 560 ) 14 0 0 0 1 1 +} +// brush 75 +{ +( 1184 704 576 ) ( 1184 705 576 ) ( 1184 704 577 ) 14 0 0 0 1 1 +( 1168 800 576 ) ( 1168 800 577 ) ( 1169 800 576 ) 14 0 0 0 1 1 +( 1168 704 576 ) ( 1169 704 576 ) ( 1168 705 576 ) 14 0 0 0 1 1 +( 1216 816 608 ) ( 1216 817 608 ) ( 1217 816 608 ) 14 0 0 0 1 1 +( 1216 832 592 ) ( 1217 832 592 ) ( 1216 832 593 ) 14 0 0 0 1 1 +( 1216 816 592 ) ( 1216 816 593 ) ( 1216 817 592 ) 14 0 0 0 1 1 +} +// brush 76 +{ +( 1440 160 672 ) ( 1440 161 672 ) ( 1440 160 673 ) 9 0 0 0 1 1 +( 1440 160 672 ) ( 1440 160 673 ) ( 1441 160 672 ) 9 0 0 0 1 1 +( 1440 160 672 ) ( 1441 160 672 ) ( 1440 161 672 ) 9 0 0 0 1 1 +( 1504 224 688 ) ( 1504 225 688 ) ( 1505 224 688 ) 9 0 0 0 1 1 +( 1504 224 704 ) ( 1505 224 704 ) ( 1504 224 705 ) 9 0 0 0 1 1 +( 1504 224 704 ) ( 1504 224 705 ) ( 1504 225 704 ) 9 0 0 0 1 1 +} +// brush 77 +{ +( 480 1216 496 ) ( 480 1200 496 ) ( 480 1200 480 ) 26 0 0 0 1 1 +( 536 1152 496 ) ( 648 1152 496 ) ( 648 1152 480 ) 26 0 0 0 1 1 +( 656 1216 480 ) ( 544 1216 480 ) ( 544 1200 480 ) 26 0 0 0 1 1 +( 544 1200 512 ) ( 544 1216 512 ) ( 656 1216 512 ) 26 0 0 0 1 1 +( 656 1216 496 ) ( 544 1216 496 ) ( 544 1216 480 ) 26 0 0 0 1 1 +( 736 1200 496 ) ( 736 1216 496 ) ( 736 1216 480 ) 26 0 0 0 1 1 +} +// brush 78 +{ +( 296 2152 480 ) ( 296 1568 480 ) ( 296 1568 424 ) 26 0 0 0 1 1 +( 296 1568 64 ) ( 296 1568 1032 ) ( 320 1568 1032 ) 26 0 0 0 1 1 +( 736 2152 384 ) ( 440 2152 384 ) ( 440 1568 384 ) 26 0 0 0 1 1 +( 440 1568 480 ) ( 440 2152 480 ) ( 736 2152 480 ) 26 0 0 0 1 1 +( 736 2144 480 ) ( 440 2144 480 ) ( 440 2144 424 ) 26 0 0 0 1 1 +( 864 2144 480 ) ( 864 2048 480 ) ( 864 2048 608 ) 26 0 0 0 1 1 +} +// brush 79 +{ +( 448 1248 496 ) ( 448 1232 496 ) ( 448 1232 480 ) 26 0 0 0 1 1 +( 536 1152 496 ) ( 648 1152 496 ) ( 648 1152 480 ) 26 0 0 0 1 1 +( 656 1248 480 ) ( 544 1248 480 ) ( 544 1232 480 ) 26 0 0 0 1 1 +( 544 1232 496 ) ( 544 1248 496 ) ( 656 1248 496 ) 26 0 0 0 1 1 +( 656 1248 496 ) ( 544 1248 496 ) ( 544 1248 480 ) 26 0 0 0 1 1 +( 832 1232 496 ) ( 832 1248 496 ) ( 832 1248 480 ) 26 0 0 0 1 1 +} +// brush 80 +{ +( 384 1120 480 ) ( 384 1120 424 ) ( 384 1336 424 ) 26 0 0 0 1 1 +( 376 1152 424 ) ( 376 1152 480 ) ( 816 1152 480 ) 26 0 0 0 1 1 +( 320 1376 384 ) ( 352 1120 384 ) ( 816 1120 384 ) 26 0 0 0 1 1 +( 352 1120 480 ) ( 320 1376 480 ) ( 416 1440 480 ) 26 0 0 0 1 1 +( 384 1408 480 ) ( 512 1408 480 ) ( 512 1408 608 ) 26 0 0 0 1 1 +( 928 1096 480 ) ( 928 1360 480 ) ( 928 1360 368 ) 26 0 0 0 1 1 +} +// brush 81 +{ +( 480 1288 312 ) ( 480 1136 312 ) ( 480 1136 64 ) 26 0 0 0 1 1 +( 536 1152 312 ) ( 696 1152 312 ) ( 696 1152 64 ) 26 0 0 0 1 1 +( 696 1288 192 ) ( 536 1288 192 ) ( 536 1136 192 ) 26 0 0 0 1 1 +( 536 1136 384 ) ( 536 1288 384 ) ( 696 1288 384 ) 26 0 0 0 1 1 +( 704 1344 312 ) ( 576 1344 440 ) ( 576 1344 312 ) 26 0 0 0 1 1 +( 704 1136 312 ) ( 704 1288 312 ) ( 704 1288 64 ) 26 0 0 0 1 1 +} +// brush 82 +{ +( 320 2024 312 ) ( 320 1872 312 ) ( 320 1872 64 ) 11 0 0 0 1 1 +( 376 1888 312 ) ( 536 1888 312 ) ( 536 1888 64 ) 11 0 0 0 1 1 +( 536 2024 192 ) ( 376 2024 192 ) ( 376 1872 192 ) 11 0 0 0 1 1 +( 376 1872 832 ) ( 376 2024 832 ) ( 536 2024 832 ) 11 0 0 0 1 1 +( 544 2144 312 ) ( 416 2144 440 ) ( 416 2144 312 ) 11 0 0 0 1 1 +( 544 1872 312 ) ( 544 2024 312 ) ( 544 2024 64 ) 11 0 0 0 1 1 +} +// brush 83 +{ +( 928 1152 192 ) ( 928 1153 192 ) ( 928 1152 193 ) 11 0 0 0 1 1 +( 1024 1152 192 ) ( 1024 1152 193 ) ( 1025 1152 192 ) 11 0 0 0 1 1 +( 1024 1152 192 ) ( 1025 1152 192 ) ( 1024 1153 192 ) 11 0 0 0 1 1 +( 1056 1536 768 ) ( 1056 1537 768 ) ( 1057 1536 768 ) 11 0 0 0 1 1 +( 1056 1440 224 ) ( 1057 1440 224 ) ( 1056 1440 225 ) 11 0 0 0 1 1 +( 1216 1536 224 ) ( 1216 1536 225 ) ( 1216 1537 224 ) 11 0 0 0 1 1 +} +// brush 84 +{ +( 928 2016 800 ) ( 928 2017 800 ) ( 928 2016 801 ) 11 0 0 0 1 1 +( 928 2080 800 ) ( 928 2080 801 ) ( 929 2080 800 ) 11 0 0 0 1 1 +( 928 2016 192 ) ( 929 2016 192 ) ( 928 2017 192 ) 11 0 0 0 1 1 +( 1184 2208 768 ) ( 1184 2209 768 ) ( 1185 2208 768 ) 11 0 0 0 1 1 +( 1184 2144 832 ) ( 1185 2144 832 ) ( 1184 2144 833 ) 11 0 0 0 1 1 +( 1120 2208 832 ) ( 1120 2208 833 ) ( 1120 2209 832 ) 11 0 0 0 1 1 +} +// brush 85 +{ +( 480 1864 312 ) ( 480 1712 312 ) ( 480 1712 64 ) 26 0 0 0 1 1 +( 536 1728 312 ) ( 696 1728 312 ) ( 696 1728 64 ) 26 0 0 0 1 1 +( 696 1864 192 ) ( 536 1864 192 ) ( 536 1712 192 ) 26 0 0 0 1 1 +( 536 1712 384 ) ( 536 1864 384 ) ( 696 1864 384 ) 26 0 0 0 1 1 +( 704 1984 312 ) ( 576 1984 440 ) ( 576 1984 312 ) 26 0 0 0 1 1 +( 704 1712 312 ) ( 704 1864 312 ) ( 704 1864 64 ) 26 0 0 0 1 1 +} +// brush 86 +{ +( 1216 1960 312 ) ( 1216 1800 312 ) ( 1216 1800 64 ) 11 0 0 0 1 1 +( 1216 1760 312 ) ( 1120 1760 416 ) ( 1120 1760 544 ) 11 0 0 0 1 1 +( 1240 1960 192 ) ( 1240 1800 192 ) ( 1392 1800 192 ) 11 0 0 0 1 1 +( 1392 1800 352 ) ( 1240 1800 352 ) ( 1240 1960 352 ) 11 0 0 0 1 1 +( 1216 1952 312 ) ( 1280 1952 312 ) ( 1280 1952 440 ) 11 0 0 0 1 1 +( 1344 1800 312 ) ( 1344 1960 312 ) ( 1344 1960 64 ) 11 0 0 0 1 1 +} +// brush 87 +{ +( 1152 1696 480 ) ( 1152 1792 480 ) ( 1152 1792 608 ) 26 0 0 0 1 1 +( 1152 1664 480 ) ( 1216 1664 608 ) ( 1216 1664 480 ) 26 0 0 0 1 1 +( 1152 1584 352 ) ( 1408 1616 352 ) ( 1408 2080 352 ) 26 0 0 0 1 1 +( 1408 1616 480 ) ( 1152 1584 480 ) ( 1088 1680 480 ) 26 0 0 0 1 1 +( 1152 2016 480 ) ( 1216 2016 480 ) ( 1216 2016 608 ) 26 0 0 0 1 1 +( 1376 1624 424 ) ( 1376 1624 480 ) ( 1376 2064 480 ) 26 0 0 0 1 1 +} +// brush 88 +{ +( 1952 984 904 ) ( 1952 968 904 ) ( 1952 968 608 ) 26 0 0 0 1 1 +( 1920 928 904 ) ( 2368 928 904 ) ( 2368 928 608 ) 26 0 0 0 1 1 +( 2368 992 448 ) ( 1920 992 448 ) ( 1920 976 448 ) 26 0 0 0 1 1 +( 1920 976 832 ) ( 1920 992 832 ) ( 2368 992 832 ) 26 0 0 0 1 1 +( 2456 1376 904 ) ( 2008 1376 904 ) ( 2008 1376 608 ) 26 0 0 0 1 1 +( 2080 976 904 ) ( 2080 992 904 ) ( 2080 992 608 ) 26 0 0 0 1 1 +} +// brush 89 +{ +( 320 2136 576 ) ( 320 1464 576 ) ( 320 1464 168 ) 13 0 0 0 1 1 +( 392 1152 672 ) ( 1400 1152 672 ) ( 1400 1152 264 ) 13 0 0 0 1 1 +( 1440 2136 48 ) ( 432 2136 48 ) ( 432 1464 48 ) 13 0 0 0 1 1 +( 432 1464 192 ) ( 432 2136 192 ) ( 1440 2136 192 ) 13 0 0 0 1 1 +( 1440 2144 576 ) ( 432 2144 576 ) ( 432 2144 168 ) 13 0 0 0 1 1 +( 1440 1192 576 ) ( 1440 1864 576 ) ( 1440 1864 168 ) 13 0 0 0 1 1 +} +// brush 90 +{ +( 1216 1248 192 ) ( 1216 1249 192 ) ( 1216 1248 193 ) 11 0 0 0 1 1 +( 1216 1120 192 ) ( 1216 1120 193 ) ( 1217 1120 192 ) 11 0 0 0 1 1 +( 1216 1248 192 ) ( 1217 1248 192 ) ( 1216 1249 192 ) 11 0 0 0 1 1 +( 1344 1280 480 ) ( 1344 1281 480 ) ( 1345 1280 480 ) 11 0 0 0 1 1 +( 1344 1280 224 ) ( 1345 1280 224 ) ( 1344 1280 225 ) 11 0 0 0 1 1 +( 1472 1280 224 ) ( 1472 1280 225 ) ( 1472 1281 224 ) 11 0 0 0 1 1 +} +// brush 91 +{ +( 1216 1888 672 ) ( 1216 1889 672 ) ( 1216 1888 673 ) 26 0 0 0 1 1 +( 1248 1728 672 ) ( 1248 1728 673 ) ( 1249 1728 672 ) 26 0 0 0 1 1 +( 1248 1888 608 ) ( 1249 1888 608 ) ( 1248 1889 608 ) 26 0 0 0 1 1 +( 1312 1952 768 ) ( 1312 1953 768 ) ( 1313 1952 768 ) 26 0 0 0 1 1 +( 1312 1984 704 ) ( 1313 1984 704 ) ( 1312 1984 705 ) 26 0 0 0 1 1 +( 1472 1952 704 ) ( 1472 1952 705 ) ( 1472 1953 704 ) 26 0 0 0 1 1 +} +// brush 92 +{ +( 1664 1424 240 ) ( 1664 1368 240 ) ( 1664 1368 200 ) 28 0 0 0 1 1 +( 1784 1248 240 ) ( 1904 1248 240 ) ( 1904 1248 200 ) 28 0 0 0 1 1 +( 1824 1424 208 ) ( 1704 1424 208 ) ( 1704 1368 208 ) 28 0 0 0 1 1 +( 1704 1368 224 ) ( 1704 1424 224 ) ( 1824 1424 224 ) 28 0 0 0 1 1 +( 1824 1760 240 ) ( 1704 1760 240 ) ( 1704 1760 200 ) 28 0 0 0 1 1 +( 2112 1280 240 ) ( 2112 1336 240 ) ( 2112 1336 200 ) 28 0 0 0 1 1 +} +// brush 93 +{ +( 1472 1120 192 ) ( 1472 1121 192 ) ( 1472 1120 193 ) 11 0 0 0 1 1 +( 1472 1024 192 ) ( 1472 1024 193 ) ( 1473 1024 192 ) 11 0 0 0 1 1 +( 1472 1120 192 ) ( 1473 1120 192 ) ( 1472 1121 192 ) 11 0 0 0 1 1 +( 1600 1152 480 ) ( 1600 1153 480 ) ( 1601 1152 480 ) 11 0 0 0 1 1 +( 1600 1120 224 ) ( 1601 1120 224 ) ( 1600 1120 225 ) 11 0 0 0 1 1 +( 1888 1152 224 ) ( 1888 1152 225 ) ( 1888 1153 224 ) 11 0 0 0 1 1 +} +// brush 94 +{ +( 1344 1568 692 ) ( 1344 1376 692 ) ( 1344 1376 480 ) 26 0 0 0 1 1 +( 1416 1088 692 ) ( 1464 1088 692 ) ( 1464 1088 480 ) 26 0 0 0 1 1 +( 1464 1376 480 ) ( 1464 1568 480 ) ( 1416 1568 480 ) 26 0 0 0 1 1 +( 1416 1568 608 ) ( 1464 1568 608 ) ( 1464 1376 608 ) 26 0 0 0 1 1 +( 1464 1792 692 ) ( 1416 1792 692 ) ( 1416 1792 480 ) 26 0 0 0 1 1 +( 2048 1376 692 ) ( 2048 1568 692 ) ( 2048 1568 480 ) 26 0 0 0 1 1 +} +// brush 95 +{ +( 1888 1120 192 ) ( 1888 1121 192 ) ( 1888 1120 193 ) 11 0 0 0 1 1 +( 1856 1024 192 ) ( 1856 1024 193 ) ( 1857 1024 192 ) 11 0 0 0 1 1 +( 1856 1120 192 ) ( 1857 1120 192 ) ( 1856 1121 192 ) 11 0 0 0 1 1 +( 1984 1152 480 ) ( 1984 1153 480 ) ( 1985 1152 480 ) 11 0 0 0 1 1 +( 1984 1248 224 ) ( 1985 1248 224 ) ( 1984 1248 225 ) 11 0 0 0 1 1 +( 2048 1152 224 ) ( 2048 1152 225 ) ( 2048 1153 224 ) 11 0 0 0 1 1 +} +// brush 96 +{ +( 2048 1120 192 ) ( 2048 1121 192 ) ( 2048 1120 193 ) 26 0 0 0 1 1 +( 2016 928 192 ) ( 2016 928 193 ) ( 2017 928 192 ) 26 0 0 0 1 1 +( 2016 1120 192 ) ( 2017 1120 192 ) ( 2016 1121 192 ) 26 0 0 0 1 1 +( 2144 1152 480 ) ( 2144 1153 480 ) ( 2145 1152 480 ) 26 0 0 0 1 1 +( 2144 1504 224 ) ( 2145 1504 224 ) ( 2144 1504 225 ) 26 0 0 0 1 1 +( 2144 1152 224 ) ( 2144 1152 225 ) ( 2144 1153 224 ) 26 0 0 0 1 1 +} +// brush 97 +{ +( 1472 1776 296 ) ( 1472 1768 296 ) ( 1472 1768 280 ) 26 0 0 0 1 1 +( 1512 1760 296 ) ( 1584 1760 296 ) ( 1584 1760 280 ) 26 0 0 0 1 1 +( 1584 1776 224 ) ( 1512 1776 224 ) ( 1512 1768 224 ) 26 0 0 0 1 1 +( 1512 1768 704 ) ( 1512 1776 704 ) ( 1584 1776 704 ) 26 0 0 0 1 1 +( 1584 1824 296 ) ( 1512 1824 296 ) ( 1512 1824 280 ) 26 0 0 0 1 1 +( 2688 1760 296 ) ( 2688 1768 296 ) ( 2688 1768 280 ) 26 0 0 0 1 1 +} +// brush 98 +{ +( 2112 1424 240 ) ( 2112 1368 240 ) ( 2112 1368 200 ) 28 0 0 0 1 1 +( 2232 1120 240 ) ( 2352 1120 240 ) ( 2352 1120 200 ) 28 0 0 0 1 1 +( 2272 1424 192 ) ( 2152 1424 192 ) ( 2152 1368 192 ) 28 0 0 0 1 1 +( 2152 1368 240 ) ( 2152 1424 240 ) ( 2272 1424 240 ) 28 0 0 0 1 1 +( 2272 1760 240 ) ( 2152 1760 240 ) ( 2152 1760 200 ) 28 0 0 0 1 1 +( 2688 1280 240 ) ( 2688 1336 240 ) ( 2688 1336 200 ) 28 0 0 0 1 1 +} +// brush 99 +{ +( 2144 1216 352 ) ( 2144 1192 352 ) ( 2144 1192 336 ) 27 0 0 0 1 1 +( 2336 1184 352 ) ( 2448 1184 352 ) ( 2448 1184 336 ) 27 0 0 0 1 1 +( 2336 1216 256 ) ( 2336 1192 256 ) ( 2448 1192 256 ) 27 0 0 0 1 1 +( 2448 1192 352 ) ( 2336 1192 352 ) ( 2336 1216 352 ) 27 0 0 0 1 1 +( 2448 1216 352 ) ( 2336 1216 352 ) ( 2336 1216 336 ) 27 0 0 0 1 1 +( 2336 1192 352 ) ( 2336 1216 352 ) ( 2336 1216 336 ) 27 0 0 0 1 1 +} +// brush 100 +{ +( 2144 1224 336 ) ( 2144 1200 336 ) ( 2144 1200 320 ) 27 0 0 0 1 1 +( 2336 1216 336 ) ( 2448 1216 336 ) ( 2448 1216 320 ) 27 0 0 0 1 1 +( 2336 1224 256 ) ( 2336 1200 256 ) ( 2448 1200 256 ) 27 0 0 0 1 1 +( 2448 1200 336 ) ( 2336 1200 336 ) ( 2336 1224 336 ) 27 0 0 0 1 1 +( 2448 1248 336 ) ( 2336 1248 336 ) ( 2336 1248 320 ) 27 0 0 0 1 1 +( 2336 1200 336 ) ( 2336 1224 336 ) ( 2336 1224 320 ) 27 0 0 0 1 1 +} +// brush 101 +{ +( 2144 1264 320 ) ( 2144 1240 320 ) ( 2144 1240 304 ) 27 0 0 0 1 1 +( 2336 1248 320 ) ( 2448 1248 320 ) ( 2448 1248 304 ) 27 0 0 0 1 1 +( 2336 1264 256 ) ( 2336 1240 256 ) ( 2448 1240 256 ) 27 0 0 0 1 1 +( 2448 1240 320 ) ( 2336 1240 320 ) ( 2336 1264 320 ) 27 0 0 0 1 1 +( 2448 1280 320 ) ( 2336 1280 320 ) ( 2336 1280 304 ) 27 0 0 0 1 1 +( 2336 1240 320 ) ( 2336 1264 320 ) ( 2336 1264 304 ) 27 0 0 0 1 1 +} +// brush 102 +{ +( 2144 1304 304 ) ( 2144 1280 304 ) ( 2144 1280 288 ) 27 0 0 0 1 1 +( 2336 1280 304 ) ( 2448 1280 304 ) ( 2448 1280 288 ) 27 0 0 0 1 1 +( 2336 1304 256 ) ( 2336 1280 256 ) ( 2448 1280 256 ) 27 0 0 0 1 1 +( 2448 1280 304 ) ( 2336 1280 304 ) ( 2336 1304 304 ) 27 0 0 0 1 1 +( 2448 1312 304 ) ( 2336 1312 304 ) ( 2336 1312 288 ) 27 0 0 0 1 1 +( 2336 1280 304 ) ( 2336 1304 304 ) ( 2336 1304 288 ) 27 0 0 0 1 1 +} +// brush 103 +{ +( 2144 1344 288 ) ( 2144 1320 288 ) ( 2144 1320 272 ) 27 0 0 0 1 1 +( 2336 1312 288 ) ( 2448 1312 288 ) ( 2448 1312 272 ) 27 0 0 0 1 1 +( 2336 1344 256 ) ( 2336 1320 256 ) ( 2448 1320 256 ) 27 0 0 0 1 1 +( 2448 1320 288 ) ( 2336 1320 288 ) ( 2336 1344 288 ) 27 0 0 0 1 1 +( 2448 1344 288 ) ( 2336 1344 288 ) ( 2336 1344 272 ) 27 0 0 0 1 1 +( 2336 1320 288 ) ( 2336 1344 288 ) ( 2336 1344 272 ) 27 0 0 0 1 1 +} +// brush 104 +{ +( 2144 1416 272 ) ( 2144 1392 272 ) ( 2144 1392 256 ) 27 0 0 0 1 1 +( 2336 1344 272 ) ( 2448 1344 272 ) ( 2448 1344 256 ) 27 0 0 0 1 1 +( 2336 1416 256 ) ( 2336 1392 256 ) ( 2448 1392 256 ) 27 0 0 0 1 1 +( 2448 1392 272 ) ( 2336 1392 272 ) ( 2336 1416 272 ) 27 0 0 0 1 1 +( 2448 1376 272 ) ( 2336 1376 272 ) ( 2336 1376 256 ) 27 0 0 0 1 1 +( 2368 1392 272 ) ( 2368 1416 272 ) ( 2368 1416 256 ) 27 0 0 0 1 1 +} +// brush 105 +{ +( 2144 1224 368 ) ( 2144 1200 368 ) ( 2144 1200 352 ) 27 0 0 0 1 1 +( 2336 1152 368 ) ( 2448 1152 368 ) ( 2448 1152 352 ) 27 0 0 0 1 1 +( 2336 1224 256 ) ( 2336 1200 256 ) ( 2448 1200 256 ) 27 0 0 0 1 1 +( 2448 1200 368 ) ( 2336 1200 368 ) ( 2336 1224 368 ) 27 0 0 0 1 1 +( 2448 1184 368 ) ( 2336 1184 368 ) ( 2336 1184 352 ) 27 0 0 0 1 1 +( 2336 1200 368 ) ( 2336 1224 368 ) ( 2336 1224 352 ) 27 0 0 0 1 1 +} +// brush 106 +{ +( 2144 1152 384 ) ( 2144 1128 384 ) ( 2144 1128 368 ) 27 0 0 0 1 1 +( 2336 1120 384 ) ( 2448 1120 384 ) ( 2448 1120 368 ) 27 0 0 0 1 1 +( 2336 1152 256 ) ( 2336 1128 256 ) ( 2448 1128 256 ) 27 0 0 0 1 1 +( 2448 1128 384 ) ( 2336 1128 384 ) ( 2336 1152 384 ) 27 0 0 0 1 1 +( 2448 1152 384 ) ( 2336 1152 384 ) ( 2336 1152 368 ) 27 0 0 0 1 1 +( 2336 1128 384 ) ( 2336 1152 384 ) ( 2336 1152 368 ) 27 0 0 0 1 1 +} +// brush 107 +{ +( 2144 1112 400 ) ( 2144 1088 400 ) ( 2144 1088 384 ) 27 0 0 0 1 1 +( 2336 1088 400 ) ( 2448 1088 400 ) ( 2448 1088 384 ) 27 0 0 0 1 1 +( 2336 1112 384 ) ( 2336 1088 384 ) ( 2448 1088 384 ) 27 0 0 0 1 1 +( 2448 1088 400 ) ( 2336 1088 400 ) ( 2336 1112 400 ) 27 0 0 0 1 1 +( 2448 1120 400 ) ( 2336 1120 400 ) ( 2336 1120 384 ) 27 0 0 0 1 1 +( 2336 1088 400 ) ( 2336 1112 400 ) ( 2336 1112 384 ) 27 0 0 0 1 1 +} +// brush 108 +{ +( 2144 1072 416 ) ( 2144 1048 416 ) ( 2144 1048 400 ) 27 0 0 0 1 1 +( 2336 1056 416 ) ( 2448 1056 416 ) ( 2448 1056 400 ) 27 0 0 0 1 1 +( 2336 1072 400 ) ( 2336 1048 400 ) ( 2448 1048 400 ) 27 0 0 0 1 1 +( 2448 1048 416 ) ( 2336 1048 416 ) ( 2336 1072 416 ) 27 0 0 0 1 1 +( 2448 1088 416 ) ( 2336 1088 416 ) ( 2336 1088 400 ) 27 0 0 0 1 1 +( 2336 1048 416 ) ( 2336 1072 416 ) ( 2336 1072 400 ) 27 0 0 0 1 1 +} +// brush 109 +{ +( 2144 1032 432 ) ( 2144 1008 432 ) ( 2144 1008 416 ) 27 0 0 0 1 1 +( 2336 1024 432 ) ( 2448 1024 432 ) ( 2448 1024 416 ) 27 0 0 0 1 1 +( 2336 1032 416 ) ( 2336 1008 416 ) ( 2448 1008 416 ) 27 0 0 0 1 1 +( 2448 1008 432 ) ( 2336 1008 432 ) ( 2336 1032 432 ) 27 0 0 0 1 1 +( 2448 1056 432 ) ( 2336 1056 432 ) ( 2336 1056 416 ) 27 0 0 0 1 1 +( 2336 1008 432 ) ( 2336 1032 432 ) ( 2336 1032 416 ) 27 0 0 0 1 1 +} +// brush 110 +{ +( 2144 1024 448 ) ( 2144 1000 448 ) ( 2144 1000 432 ) 27 0 0 0 1 1 +( 2336 992 448 ) ( 2448 992 448 ) ( 2448 992 432 ) 27 0 0 0 1 1 +( 2336 1024 432 ) ( 2336 1000 432 ) ( 2448 1000 432 ) 27 0 0 0 1 1 +( 2448 1000 448 ) ( 2336 1000 448 ) ( 2336 1024 448 ) 27 0 0 0 1 1 +( 2448 1024 448 ) ( 2336 1024 448 ) ( 2336 1024 432 ) 27 0 0 0 1 1 +( 2336 1000 448 ) ( 2336 1024 448 ) ( 2336 1024 432 ) 27 0 0 0 1 1 +} +// brush 111 +{ +( 1888 800 384 ) ( 1888 801 384 ) ( 1888 800 385 ) 28 0 0 0 1 1 +( 2080 704 384 ) ( 2080 704 385 ) ( 2081 704 384 ) 28 0 0 0 1 1 +( 2080 800 384 ) ( 2081 800 384 ) ( 2080 801 384 ) 28 0 0 0 1 1 +( 2336 1024 496 ) ( 2336 1025 496 ) ( 2337 1024 496 ) 28 0 0 0 1 1 +( 2336 928 416 ) ( 2337 928 416 ) ( 2336 928 417 ) 28 0 0 0 1 1 +( 2688 1024 416 ) ( 2688 1024 417 ) ( 2688 1025 416 ) 28 0 0 0 1 1 +} +// brush 112 +{ +( 2144 992 464 ) ( 2144 968 464 ) ( 2144 968 448 ) 27 0 0 0 1 1 +( 2336 960 464 ) ( 2448 960 464 ) ( 2448 960 448 ) 27 0 0 0 1 1 +( 2336 992 448 ) ( 2336 968 448 ) ( 2448 968 448 ) 27 0 0 0 1 1 +( 2448 968 464 ) ( 2336 968 464 ) ( 2336 992 464 ) 27 0 0 0 1 1 +( 2448 992 464 ) ( 2336 992 464 ) ( 2336 992 448 ) 27 0 0 0 1 1 +( 2336 968 464 ) ( 2336 992 464 ) ( 2336 992 448 ) 27 0 0 0 1 1 +} +// brush 113 +{ +( 2144 960 480 ) ( 2144 936 480 ) ( 2144 936 464 ) 27 0 0 0 1 1 +( 2336 928 480 ) ( 2448 928 480 ) ( 2448 928 464 ) 27 0 0 0 1 1 +( 2336 960 464 ) ( 2336 936 464 ) ( 2448 936 464 ) 27 0 0 0 1 1 +( 2448 936 480 ) ( 2336 936 480 ) ( 2336 960 480 ) 27 0 0 0 1 1 +( 2448 960 480 ) ( 2336 960 480 ) ( 2336 960 464 ) 27 0 0 0 1 1 +( 2336 936 480 ) ( 2336 960 480 ) ( 2336 960 464 ) 27 0 0 0 1 1 +} +// brush 114 +{ +( 1856 928 512 ) ( 1856 816 512 ) ( 1856 816 496 ) 27 0 0 0 1 1 +( 1904 800 512 ) ( 1928 800 512 ) ( 1928 800 496 ) 27 0 0 0 1 1 +( 1928 928 496 ) ( 1904 928 496 ) ( 1904 816 496 ) 27 0 0 0 1 1 +( 1904 816 512 ) ( 1904 928 512 ) ( 1928 928 512 ) 27 0 0 0 1 1 +( 1928 928 512 ) ( 1904 928 512 ) ( 1904 928 496 ) 27 0 0 0 1 1 +( 1888 816 512 ) ( 1888 928 512 ) ( 1888 928 496 ) 27 0 0 0 1 1 +} +// brush 115 +{ +( 2336 1072 272 ) ( 2336 1073 272 ) ( 2336 1072 273 ) 26 0 0 0 1 1 +( 2336 896 272 ) ( 2336 896 273 ) ( 2337 896 272 ) 26 0 0 0 1 1 +( 2336 1072 224 ) ( 2337 1072 224 ) ( 2336 1073 224 ) 26 0 0 0 1 1 +( 2416 1136 800 ) ( 2416 1137 800 ) ( 2417 1136 800 ) 26 0 0 0 1 1 +( 2416 1120 288 ) ( 2417 1120 288 ) ( 2416 1120 289 ) 26 0 0 0 1 1 +( 2560 1136 288 ) ( 2560 1136 289 ) ( 2560 1137 288 ) 26 0 0 0 1 1 +} +// brush 116 +{ +( 2144 1168 240 ) ( 2144 1169 240 ) ( 2144 1168 241 ) 28 0 0 0 1 1 +( 2144 1120 240 ) ( 2144 1120 241 ) ( 2145 1120 240 ) 28 0 0 0 1 1 +( 2144 1168 240 ) ( 2145 1168 240 ) ( 2144 1169 240 ) 28 0 0 0 1 1 +( 2384 1440 256 ) ( 2384 1441 256 ) ( 2385 1440 256 ) 28 0 0 0 1 1 +( 2384 1472 256 ) ( 2385 1472 256 ) ( 2384 1472 257 ) 28 0 0 0 1 1 +( 2496 1440 256 ) ( 2496 1440 257 ) ( 2496 1441 256 ) 28 0 0 0 1 1 +} +// brush 117 +{ +( 1984 784 272 ) ( 1984 785 272 ) ( 1984 784 273 ) 26 0 0 0 1 1 +( 2304 640 272 ) ( 2304 640 273 ) ( 2305 640 272 ) 26 0 0 0 1 1 +( 2304 784 496 ) ( 2305 784 496 ) ( 2304 785 496 ) 26 0 0 0 1 1 +( 2384 848 768 ) ( 2384 849 768 ) ( 2385 848 768 ) 26 0 0 0 1 1 +( 2384 736 288 ) ( 2385 736 288 ) ( 2384 736 289 ) 26 0 0 0 1 1 +( 2336 848 288 ) ( 2336 848 289 ) ( 2336 849 288 ) 26 0 0 0 1 1 +} +// brush 118 +{ +( 1984 1408 544 ) ( 1984 1409 544 ) ( 1984 1408 545 ) 26 0 0 0 1 1 +( 1984 1376 544 ) ( 1984 1376 545 ) ( 1985 1376 544 ) 26 0 0 0 1 1 +( 1984 1408 608 ) ( 1985 1408 608 ) ( 1984 1409 608 ) 26 0 0 0 1 1 +( 2080 1760 800 ) ( 2080 1761 800 ) ( 2081 1760 800 ) 26 0 0 0 1 1 +( 2080 1760 576 ) ( 2081 1760 576 ) ( 2080 1760 577 ) 26 0 0 0 1 1 +( 2112 1760 576 ) ( 2112 1760 577 ) ( 2112 1761 576 ) 26 0 0 0 1 1 +} +// brush 119 +{ +( 2624 1280 224 ) ( 2624 1281 224 ) ( 2624 1280 225 ) 27 0 0 0 1 1 +( 2624 1280 224 ) ( 2624 1280 225 ) ( 2625 1280 224 ) 27 0 0 0 1 1 +( 2624 1280 240 ) ( 2625 1280 240 ) ( 2624 1281 240 ) 27 0 0 0 1 1 +( 2688 1344 736 ) ( 2688 1345 736 ) ( 2689 1344 736 ) 27 0 0 0 1 1 +( 2688 1344 256 ) ( 2689 1344 256 ) ( 2688 1344 257 ) 27 0 0 0 1 1 +( 2752 1344 256 ) ( 2752 1344 257 ) ( 2752 1345 256 ) 27 0 0 0 1 1 +} +// brush 120 +{ +( 2624 1536 224 ) ( 2624 1537 224 ) ( 2624 1536 225 ) 27 0 0 0 1 1 +( 2624 1536 224 ) ( 2624 1536 225 ) ( 2625 1536 224 ) 27 0 0 0 1 1 +( 2624 1536 240 ) ( 2625 1536 240 ) ( 2624 1537 240 ) 27 0 0 0 1 1 +( 2688 1600 736 ) ( 2688 1601 736 ) ( 2689 1600 736 ) 27 0 0 0 1 1 +( 2688 1600 256 ) ( 2689 1600 256 ) ( 2688 1600 257 ) 27 0 0 0 1 1 +( 2752 1600 256 ) ( 2752 1600 257 ) ( 2752 1601 256 ) 27 0 0 0 1 1 +} +// brush 121 +{ +( 2688 1264 296 ) ( 2688 1256 296 ) ( 2688 1256 280 ) 26 0 0 0 1 1 +( 1800 672 296 ) ( 1872 672 296 ) ( 1872 672 280 ) 26 0 0 0 1 1 +( 1872 1264 224 ) ( 1800 1264 224 ) ( 1800 1256 224 ) 26 0 0 0 1 1 +( 1800 1256 704 ) ( 1800 1264 704 ) ( 1872 1264 704 ) 26 0 0 0 1 1 +( 1872 1760 296 ) ( 1800 1760 296 ) ( 1800 1760 280 ) 26 0 0 0 1 1 +( 2752 1248 296 ) ( 2752 1256 296 ) ( 2752 1256 280 ) 26 0 0 0 1 1 +} +// brush 122 +{ +( 2048 1504 448 ) ( 2048 1505 448 ) ( 2048 1504 449 ) 26 0 0 0 1 1 +( 2048 1664 448 ) ( 2048 1664 449 ) ( 2049 1664 448 ) 26 0 0 0 1 1 +( 2048 1504 224 ) ( 2049 1504 224 ) ( 2048 1505 224 ) 26 0 0 0 1 1 +( 2144 1760 512 ) ( 2144 1761 512 ) ( 2145 1760 512 ) 26 0 0 0 1 1 +( 2144 1760 480 ) ( 2145 1760 480 ) ( 2144 1760 481 ) 26 0 0 0 1 1 +( 2176 1760 480 ) ( 2176 1760 481 ) ( 2176 1761 480 ) 26 0 0 0 1 1 +} +// brush 123 +{ +( 2496 1696 224 ) ( 2496 1697 224 ) ( 2496 1696 225 ) 27 0 0 0 1 1 +( 2496 1696 224 ) ( 2496 1696 225 ) ( 2497 1696 224 ) 27 0 0 0 1 1 +( 2496 1696 240 ) ( 2497 1696 240 ) ( 2496 1697 240 ) 27 0 0 0 1 1 +( 2560 1760 736 ) ( 2560 1761 736 ) ( 2561 1760 736 ) 27 0 0 0 1 1 +( 2560 1824 256 ) ( 2561 1824 256 ) ( 2560 1824 257 ) 27 0 0 0 1 1 +( 2560 1760 256 ) ( 2560 1760 257 ) ( 2560 1761 256 ) 27 0 0 0 1 1 +} +// brush 124 +{ +( 2336 1120 256 ) ( 2336 1121 256 ) ( 2336 1120 257 ) 7 0 0 0 1 1 +( 2336 1120 256 ) ( 2336 1120 257 ) ( 2337 1120 256 ) 7 0 0 0 1 1 +( 2336 1120 256 ) ( 2337 1120 256 ) ( 2336 1121 256 ) 7 0 0 0 1 1 +( 2368 1344 384 ) ( 2368 1345 384 ) ( 2369 1344 384 ) 7 0 0 0 1 1 +( 2368 1344 288 ) ( 2369 1344 288 ) ( 2368 1344 289 ) 7 0 0 0 1 1 +( 2368 1344 288 ) ( 2368 1344 289 ) ( 2368 1345 288 ) 7 0 0 0 1 1 +} +// brush 125 +{ +( 2080 1024 704 ) ( 2080 1025 704 ) ( 2080 1024 705 ) 27 0 0 0 1 1 +( 2048 1024 704 ) ( 2048 1024 705 ) ( 2049 1024 704 ) 27 0 0 0 1 1 +( 2048 1024 704 ) ( 2049 1024 704 ) ( 2048 1025 704 ) 27 0 0 0 1 1 +( 2336 1056 736 ) ( 2336 1057 736 ) ( 2337 1056 736 ) 27 0 0 0 1 1 +( 2336 1056 736 ) ( 2337 1056 736 ) ( 2336 1056 737 ) 27 0 0 0 1 1 +( 2336 1056 736 ) ( 2336 1056 737 ) ( 2336 1057 736 ) 27 0 0 0 1 1 +} +// brush 126 +{ +( 1952 832 704 ) ( 1952 833 704 ) ( 1952 832 705 ) 27 0 0 0 1 1 +( 2048 832 704 ) ( 2048 832 705 ) ( 2049 832 704 ) 27 0 0 0 1 1 +( 2048 832 704 ) ( 2049 832 704 ) ( 2048 833 704 ) 27 0 0 0 1 1 +( 2336 864 736 ) ( 2336 865 736 ) ( 2337 864 736 ) 27 0 0 0 1 1 +( 2336 864 736 ) ( 2337 864 736 ) ( 2336 864 737 ) 27 0 0 0 1 1 +( 2752 864 736 ) ( 2752 864 737 ) ( 2752 865 736 ) 27 0 0 0 1 1 +} +// brush 127 +{ +( 2176 736 736 ) ( 2176 737 736 ) ( 2176 736 737 ) 27 0 0 0 1 1 +( 2208 736 736 ) ( 2208 736 737 ) ( 2209 736 736 ) 27 0 0 0 1 1 +( 2208 736 736 ) ( 2209 736 736 ) ( 2208 737 736 ) 27 0 0 0 1 1 +( 2240 832 768 ) ( 2240 833 768 ) ( 2241 832 768 ) 27 0 0 0 1 1 +( 2240 1088 768 ) ( 2241 1088 768 ) ( 2240 1088 769 ) 27 0 0 0 1 1 +( 2240 832 768 ) ( 2240 832 769 ) ( 2240 833 768 ) 27 0 0 0 1 1 +} +// brush 128 +{ +( 2432 1344 640 ) ( 2432 1345 640 ) ( 2432 1344 641 ) 27 0 0 0 1 1 +( 2432 1344 640 ) ( 2432 1344 641 ) ( 2433 1344 640 ) 27 0 0 0 1 1 +( 2432 1344 608 ) ( 2433 1344 608 ) ( 2432 1345 608 ) 27 0 0 0 1 1 +( 2464 1568 704 ) ( 2464 1569 704 ) ( 2465 1568 704 ) 27 0 0 0 1 1 +( 2464 1536 672 ) ( 2465 1536 672 ) ( 2464 1536 673 ) 27 0 0 0 1 1 +( 2464 1568 672 ) ( 2464 1568 673 ) ( 2464 1569 672 ) 27 0 0 0 1 1 +} +// brush 129 +{ +( 2272 1344 640 ) ( 2272 1345 640 ) ( 2272 1344 641 ) 27 0 0 0 1 1 +( 2272 1344 640 ) ( 2272 1344 641 ) ( 2273 1344 640 ) 27 0 0 0 1 1 +( 2272 1344 608 ) ( 2273 1344 608 ) ( 2272 1345 608 ) 27 0 0 0 1 1 +( 2304 1568 704 ) ( 2304 1569 704 ) ( 2305 1568 704 ) 27 0 0 0 1 1 +( 2304 1536 672 ) ( 2305 1536 672 ) ( 2304 1536 673 ) 27 0 0 0 1 1 +( 2304 1568 672 ) ( 2304 1568 673 ) ( 2304 1569 672 ) 27 0 0 0 1 1 +} +// brush 130 +{ +( 2272 1376 640 ) ( 2272 1377 640 ) ( 2272 1376 641 ) 27 0 0 0 1 1 +( 2304 1536 640 ) ( 2304 1536 641 ) ( 2305 1536 640 ) 27 0 0 0 1 1 +( 2304 1376 608 ) ( 2305 1376 608 ) ( 2304 1377 608 ) 27 0 0 0 1 1 +( 2336 1600 704 ) ( 2336 1601 704 ) ( 2337 1600 704 ) 27 0 0 0 1 1 +( 2336 1568 672 ) ( 2337 1568 672 ) ( 2336 1568 673 ) 27 0 0 0 1 1 +( 2464 1600 672 ) ( 2464 1600 673 ) ( 2464 1601 672 ) 27 0 0 0 1 1 +} +// brush 131 +{ +( 2272 1152 640 ) ( 2272 1153 640 ) ( 2272 1152 641 ) 27 0 0 0 1 1 +( 2304 1312 640 ) ( 2304 1312 641 ) ( 2305 1312 640 ) 27 0 0 0 1 1 +( 2304 1152 608 ) ( 2305 1152 608 ) ( 2304 1153 608 ) 27 0 0 0 1 1 +( 2336 1376 704 ) ( 2336 1377 704 ) ( 2337 1376 704 ) 27 0 0 0 1 1 +( 2336 1344 672 ) ( 2337 1344 672 ) ( 2336 1344 673 ) 27 0 0 0 1 1 +( 2464 1376 672 ) ( 2464 1376 673 ) ( 2464 1377 672 ) 27 0 0 0 1 1 +} +// brush 132 +{ +( 2464 1376 640 ) ( 2464 1377 640 ) ( 2464 1376 641 ) 27 0 0 0 1 1 +( 2464 1376 640 ) ( 2464 1376 641 ) ( 2465 1376 640 ) 27 0 0 0 1 1 +( 2464 1376 640 ) ( 2465 1376 640 ) ( 2464 1377 640 ) 27 0 0 0 1 1 +( 2688 1408 672 ) ( 2688 1409 672 ) ( 2689 1408 672 ) 27 0 0 0 1 1 +( 2688 1408 672 ) ( 2689 1408 672 ) ( 2688 1408 673 ) 27 0 0 0 1 1 +( 2688 1408 672 ) ( 2688 1408 673 ) ( 2688 1409 672 ) 27 0 0 0 1 1 +} +// brush 133 +{ +( 2464 1472 640 ) ( 2464 1473 640 ) ( 2464 1472 641 ) 27 0 0 0 1 1 +( 2464 1472 640 ) ( 2464 1472 641 ) ( 2465 1472 640 ) 27 0 0 0 1 1 +( 2464 1472 640 ) ( 2465 1472 640 ) ( 2464 1473 640 ) 27 0 0 0 1 1 +( 2688 1504 672 ) ( 2688 1505 672 ) ( 2689 1504 672 ) 27 0 0 0 1 1 +( 2688 1504 672 ) ( 2689 1504 672 ) ( 2688 1504 673 ) 27 0 0 0 1 1 +( 2688 1504 672 ) ( 2688 1504 673 ) ( 2688 1505 672 ) 27 0 0 0 1 1 +} +// brush 134 +{ +( 2304 1568 640 ) ( 2304 1569 640 ) ( 2304 1568 641 ) 27 0 0 0 1 1 +( 2304 1568 640 ) ( 2304 1568 641 ) ( 2305 1568 640 ) 27 0 0 0 1 1 +( 2304 1568 640 ) ( 2305 1568 640 ) ( 2304 1569 640 ) 27 0 0 0 1 1 +( 2432 1760 672 ) ( 2432 1761 672 ) ( 2433 1760 672 ) 27 0 0 0 1 1 +( 2432 1760 672 ) ( 2433 1760 672 ) ( 2432 1760 673 ) 27 0 0 0 1 1 +( 2336 1760 672 ) ( 2336 1760 673 ) ( 2336 1761 672 ) 27 0 0 0 1 1 +} +// brush 135 +{ +( 2400 1568 640 ) ( 2400 1569 640 ) ( 2400 1568 641 ) 27 0 0 0 1 1 +( 2400 1568 640 ) ( 2400 1568 641 ) ( 2401 1568 640 ) 27 0 0 0 1 1 +( 2400 1568 640 ) ( 2401 1568 640 ) ( 2400 1569 640 ) 27 0 0 0 1 1 +( 2528 1760 672 ) ( 2528 1761 672 ) ( 2529 1760 672 ) 27 0 0 0 1 1 +( 2528 1760 672 ) ( 2529 1760 672 ) ( 2528 1760 673 ) 27 0 0 0 1 1 +( 2432 1760 672 ) ( 2432 1760 673 ) ( 2432 1761 672 ) 27 0 0 0 1 1 +} +// brush 136 +{ +( 320 1736 128 ) ( 320 1736 1096 ) ( 320 1712 1096 ) 11 0 0 0 1 1 +( 408 1120 848 ) ( 888 1120 848 ) ( 888 1120 832 ) 11 0 0 0 1 1 +( 608 2200 832 ) ( 128 2200 832 ) ( 128 1920 832 ) 11 0 0 0 1 1 +( 128 1920 864 ) ( 128 2200 864 ) ( 608 2200 864 ) 11 0 0 0 1 1 +( -288 2144 1096 ) ( -312 2144 1096 ) ( -312 2144 128 ) 11 0 0 0 1 1 +( 896 1768 848 ) ( 896 2048 848 ) ( 896 2048 832 ) 11 0 0 0 1 1 +} +// brush 137 +{ +( 1248 512 896 ) ( 1248 513 896 ) ( 1248 512 897 ) 27 0 0 0 1 1 +( 1312 640 896 ) ( 1312 640 897 ) ( 1313 640 896 ) 27 0 0 0 1 1 +( 1312 512 896 ) ( 1313 512 896 ) ( 1312 513 896 ) 27 0 0 0 1 1 +( 1952 960 928 ) ( 1952 961 928 ) ( 1953 960 928 ) 27 0 0 0 1 1 +( 1952 960 928 ) ( 1953 960 928 ) ( 1952 960 929 ) 27 0 0 0 1 1 +( 1952 960 928 ) ( 1952 960 929 ) ( 1952 961 928 ) 27 0 0 0 1 1 +} +// brush 138 +{ +( 1056 720 544 ) ( 1056 721 544 ) ( 1056 720 545 ) 28 0 0 0 1 1 +( 1040 736 544 ) ( 1040 736 545 ) ( 1041 736 544 ) 28 0 0 0 1 1 +( 1040 720 544 ) ( 1041 720 544 ) ( 1040 721 544 ) 28 0 0 0 1 1 +( 1104 784 560 ) ( 1104 785 560 ) ( 1105 784 560 ) 28 0 0 0 1 1 +( 1104 800 560 ) ( 1105 800 560 ) ( 1104 800 561 ) 28 0 0 0 1 1 +( 1120 784 560 ) ( 1120 784 561 ) ( 1120 785 560 ) 28 0 0 0 1 1 +} +// brush 139 +{ +( 1408 2120 504 ) ( 1408 1800 504 ) ( 1408 1800 32 ) 28 0 0 0 1 1 +( 1616 1792 504 ) ( 2032 1792 504 ) ( 2032 1792 32 ) 28 0 0 0 1 1 +( 1616 1744 416 ) ( 2032 1744 416 ) ( 2032 2064 416 ) 28 0 0 0 1 1 +( 2032 2064 512 ) ( 2032 1744 512 ) ( 1616 1744 512 ) 28 0 0 0 1 1 +( 2040 2144 504 ) ( 1624 2144 504 ) ( 1624 2144 32 ) 28 0 0 0 1 1 +( 2176 1760 504 ) ( 2176 2080 504 ) ( 2176 2080 32 ) 28 0 0 0 1 1 +} +// brush 140 +{ +( 1760 2160 488 ) ( 1760 2128 488 ) ( 1760 2128 472 ) 27 0 0 0 1 1 +( 1776 2144 488 ) ( 1904 2144 488 ) ( 1904 2144 472 ) 27 0 0 0 1 1 +( 1776 2128 480 ) ( 1904 2128 480 ) ( 1904 2160 480 ) 27 0 0 0 1 1 +( 1904 2160 496 ) ( 1904 2128 496 ) ( 1776 2128 496 ) 27 0 0 0 1 1 +( 1904 2176 488 ) ( 1776 2176 488 ) ( 1776 2176 472 ) 27 0 0 0 1 1 +( 1920 2128 488 ) ( 1920 2160 488 ) ( 1920 2160 472 ) 27 0 0 0 1 1 +} +// brush 141 +{ +( 1760 2224 472 ) ( 1760 2192 472 ) ( 1760 2192 456 ) 27 0 0 0 1 1 +( 1776 2176 472 ) ( 1904 2176 472 ) ( 1904 2176 456 ) 27 0 0 0 1 1 +( 1776 2192 464 ) ( 1904 2192 464 ) ( 1904 2224 464 ) 27 0 0 0 1 1 +( 1904 2224 480 ) ( 1904 2192 480 ) ( 1776 2192 480 ) 27 0 0 0 1 1 +( 1904 2208 472 ) ( 1776 2208 472 ) ( 1776 2208 456 ) 27 0 0 0 1 1 +( 1920 2192 472 ) ( 1920 2224 472 ) ( 1920 2224 456 ) 27 0 0 0 1 1 +} +// brush 142 +{ +( 1760 2256 456 ) ( 1760 2224 456 ) ( 1760 2224 440 ) 27 0 0 0 1 1 +( 1776 2208 456 ) ( 1904 2208 456 ) ( 1904 2208 440 ) 27 0 0 0 1 1 +( 1776 2208 448 ) ( 1904 2208 448 ) ( 1904 2240 448 ) 27 0 0 0 1 1 +( 1904 2240 464 ) ( 1904 2208 464 ) ( 1776 2208 464 ) 27 0 0 0 1 1 +( 1904 2240 456 ) ( 1776 2240 456 ) ( 1776 2240 440 ) 27 0 0 0 1 1 +( 1920 2200 456 ) ( 1920 2232 456 ) ( 1920 2232 440 ) 27 0 0 0 1 1 +} +// brush 143 +{ +( 1536 2232 880 ) ( 1536 2168 880 ) ( 1536 2168 240 ) 14 8 -16 0 1 1 +( 1544 2168 880 ) ( 1608 2168 880 ) ( 1608 2168 240 ) 14 8 -16 0 1 1 +( 1544 2168 440 ) ( 1608 2168 440 ) ( 1608 2232 440 ) 14 8 -16 0 1 1 +( 1608 2232 568 ) ( 1608 2168 568 ) ( 1544 2168 568 ) 14 48 -8 0 1 1 +( 1608 2232 880 ) ( 1544 2232 880 ) ( 1544 2232 240 ) 14 8 -16 0 1 1 +( 1600 2168 880 ) ( 1600 2232 880 ) ( 1600 2232 240 ) 14 8 -16 0 1 1 +} +// brush 144 +{ +( 1632 2032 632 ) ( 1632 1968 632 ) ( 1632 1968 504 ) 14 0 -16 0 1 1 +( 1608 1984 632 ) ( 1672 1984 632 ) ( 1672 1984 504 ) 14 0 -16 0 1 1 +( 1608 1968 512 ) ( 1672 1968 512 ) ( 1672 2032 512 ) 14 0 -16 0 1 1 +( 1672 2032 576 ) ( 1672 1968 576 ) ( 1608 1968 576 ) 14 0 0 0 1 1 +( 1672 2048 632 ) ( 1608 2048 632 ) ( 1608 2048 504 ) 14 0 -16 0 1 1 +( 1696 1968 632 ) ( 1696 2032 632 ) ( 1696 2032 504 ) 14 0 -16 0 1 1 +} +// brush 145 +{ +( 2016 2000 632 ) ( 2016 1936 632 ) ( 2016 1936 568 ) 14 32 48 0 1 1 +( 2008 1920 632 ) ( 2072 1920 632 ) ( 2072 1920 568 ) 14 48 48 0 1 1 +( 2008 1936 512 ) ( 2072 1936 512 ) ( 2072 2000 512 ) 14 32 48 0 1 1 +( 2072 2000 608 ) ( 2072 1936 608 ) ( 2008 1936 608 ) 14 48 32 0 1 1 +( 2072 1984 632 ) ( 2008 1984 632 ) ( 2008 1984 568 ) 14 48 48 0 1 1 +( 2080 1936 632 ) ( 2080 2000 632 ) ( 2080 2000 568 ) 14 32 48 0 1 1 +} +// brush 146 +{ +( 2048 2032 632 ) ( 2048 1968 632 ) ( 2048 1968 504 ) 14 32 -16 0 1 1 +( 2040 1984 632 ) ( 2104 1984 632 ) ( 2104 1984 504 ) 14 16 -16 0 1 1 +( 2040 1968 512 ) ( 2104 1968 512 ) ( 2104 2032 512 ) 14 32 -16 0 1 1 +( 2104 2032 576 ) ( 2104 1968 576 ) ( 2040 1968 576 ) 14 16 32 0 1 1 +( 2104 2048 632 ) ( 2040 2048 632 ) ( 2040 2048 504 ) 14 16 -16 0 1 1 +( 2112 1968 632 ) ( 2112 2032 632 ) ( 2112 2032 504 ) 14 32 -16 0 1 1 +} +// brush 147 +{ +( 2024 2288 568 ) ( 2024 2224 568 ) ( 2024 2224 440 ) 14 0 -16 0 1 1 +( 2024 2224 568 ) ( 2088 2224 568 ) ( 2088 2224 440 ) 14 32 -16 0 1 1 +( 2024 2224 440 ) ( 2088 2224 440 ) ( 2088 2288 440 ) 14 0 -16 0 1 1 +( 2088 2288 504 ) ( 2088 2224 504 ) ( 2024 2224 504 ) 14 32 0 0 1 1 +( 2088 2288 568 ) ( 2024 2288 568 ) ( 2024 2288 440 ) 14 32 -16 0 1 1 +( 2088 2224 568 ) ( 2088 2288 568 ) ( 2088 2288 440 ) 14 0 -16 0 1 1 +} +// brush 148 +{ +( 1312 2688 960 ) ( 1312 1616 960 ) ( 1312 1616 320 ) 26 0 0 0 1 1 +( 1520 1952 960 ) ( 1536 1952 960 ) ( 1536 1952 320 ) 26 0 0 0 1 1 +( 1504 1616 320 ) ( 1520 1616 320 ) ( 1520 2688 320 ) 26 0 0 0 1 1 +( 1520 2688 752 ) ( 1520 1616 752 ) ( 1504 1616 752 ) 26 0 0 0 1 1 +( 1520 2656 584 ) ( 1520 2656 600 ) ( 1480 2656 600 ) 26 0 0 0 1 1 +( 1536 1616 960 ) ( 1536 2688 960 ) ( 1536 2688 320 ) 26 0 0 0 1 1 +} +// brush 149 +{ +( 1536 2112 703 ) ( 1536 2080 703 ) ( 1536 2080 656 ) 27 0 0 0 1 1 +( 1536 2080 703 ) ( 1552 2080 703 ) ( 1552 2080 656 ) 27 0 0 0 1 1 +( 1536 2080 528 ) ( 1552 2080 528 ) ( 1552 2112 528 ) 27 0 0 0 1 1 +( 1552 2112 736 ) ( 1552 2080 736 ) ( 1536 2080 736 ) 27 0 0 0 1 1 +( 1552 2112 703 ) ( 1536 2112 703 ) ( 1536 2112 656 ) 27 0 0 0 1 1 +( 1568 2080 703 ) ( 1568 2112 703 ) ( 1568 2112 656 ) 27 0 0 0 1 1 +} +// brush 150 +{ +( 2144 2112 656 ) ( 2144 2112 703 ) ( 2144 2080 703 ) 27 0 0 0 1 1 +( 2160 2080 656 ) ( 2160 2080 703 ) ( 2176 2080 703 ) 27 0 0 0 1 1 +( 2160 2112 528 ) ( 2160 2080 528 ) ( 2176 2080 528 ) 27 0 0 0 1 1 +( 2176 2080 736 ) ( 2160 2080 736 ) ( 2160 2112 736 ) 27 0 0 0 1 1 +( 2176 2112 656 ) ( 2176 2112 703 ) ( 2160 2112 703 ) 27 0 0 0 1 1 +( 2176 2080 656 ) ( 2176 2080 703 ) ( 2176 2112 703 ) 27 0 0 0 1 1 +} +// brush 151 +{ +( 1472 2704 864 ) ( 1472 1616 864 ) ( 1472 1616 760 ) 26 0 0 0 1 1 +( 1928 1744 792 ) ( 1968 1744 792 ) ( 1968 1744 744 ) 26 0 0 0 1 1 +( 1520 1616 752 ) ( 2176 1616 752 ) ( 2176 2704 752 ) 26 0 0 0 1 1 +( 2176 2704 784 ) ( 2176 1616 784 ) ( 1520 1616 784 ) 26 0 0 0 1 1 +( 2224 2720 864 ) ( 1568 2720 864 ) ( 1568 2720 760 ) 26 0 0 0 1 1 +( 1696 1696 744 ) ( 1696 1696 792 ) ( 1696 2640 792 ) 26 0 0 0 1 1 +} +// brush 152 +{ +( 1984 2720 864 ) ( 1984 1632 864 ) ( 1984 1632 760 ) 26 0 0 0 1 1 +( 2376 1824 792 ) ( 2416 1824 792 ) ( 2416 1824 744 ) 26 0 0 0 1 1 +( 1968 1632 752 ) ( 2624 1632 752 ) ( 2624 2720 752 ) 26 0 0 0 1 1 +( 2624 2720 784 ) ( 2624 1632 784 ) ( 1968 1632 784 ) 26 0 0 0 1 1 +( 2672 2720 864 ) ( 2016 2720 864 ) ( 2016 2720 760 ) 26 0 0 0 1 1 +( 2176 1720 744 ) ( 2176 1720 792 ) ( 2176 2664 792 ) 26 0 0 0 1 1 +} +// brush 153 +{ +( 1696 1544 792 ) ( 1696 1504 792 ) ( 1696 1504 744 ) 26 0 0 0 1 1 +( 1648 1824 744 ) ( 1648 1824 792 ) ( 2592 1824 792 ) 26 0 0 0 1 1 +( 1568 1952 752 ) ( 1568 1296 752 ) ( 2656 1296 752 ) 26 0 0 0 1 1 +( 2656 1296 784 ) ( 1568 1296 784 ) ( 1568 1952 784 ) 26 0 0 0 1 1 +( 2656 2048 864 ) ( 1568 2048 864 ) ( 1568 2048 760 ) 26 0 0 0 1 1 +( 1984 1216 864 ) ( 1984 1872 864 ) ( 1984 1872 760 ) 26 0 0 0 1 1 +} +// brush 154 +{ +( 1696 2200 792 ) ( 1696 2160 792 ) ( 1696 2160 744 ) 26 0 0 0 1 1 +( 1624 2624 744 ) ( 1624 2624 792 ) ( 2568 2624 792 ) 26 0 0 0 1 1 +( 1568 2608 752 ) ( 1568 1952 752 ) ( 2656 1952 752 ) 26 0 0 0 1 1 +( 2656 1952 784 ) ( 1568 1952 784 ) ( 1568 2608 784 ) 26 0 0 0 1 1 +( 2656 2816 864 ) ( 1568 2816 864 ) ( 1568 2816 760 ) 26 0 0 0 1 1 +( 1984 1872 864 ) ( 1984 2528 864 ) ( 1984 2528 760 ) 26 0 0 0 1 1 +} +// brush 155 +{ +( 1728 2640 784 ) ( 1728 2600 784 ) ( 1728 2600 736 ) 27 0 0 0 1 1 +( 1280 2592 784 ) ( 2224 2592 784 ) ( 2224 2592 736 ) 27 0 0 0 1 1 +( 1280 2624 736 ) ( 1280 2584 736 ) ( 2224 2584 736 ) 27 0 0 0 1 1 +( 2224 2584 816 ) ( 1280 2584 816 ) ( 1280 2624 816 ) 27 0 0 0 1 1 +( 2224 2624 784 ) ( 1280 2624 784 ) ( 1280 2624 736 ) 27 0 0 0 1 1 +( 1952 2576 784 ) ( 1952 2616 784 ) ( 1952 2616 736 ) 27 0 0 0 1 1 +} +// brush 156 +{ +( 1696 2744 784 ) ( 1696 1800 784 ) ( 1696 1800 736 ) 27 0 0 0 1 1 +( 1720 2080 784 ) ( 1760 2080 784 ) ( 1760 2080 736 ) 27 0 0 0 1 1 +( 1704 1800 736 ) ( 1744 1800 736 ) ( 1744 2744 736 ) 27 0 0 0 1 1 +( 1744 2744 816 ) ( 1744 1800 816 ) ( 1704 1800 816 ) 27 0 0 0 1 1 +( 1744 2624 784 ) ( 1704 2624 784 ) ( 1704 2624 736 ) 27 0 0 0 1 1 +( 1728 1800 784 ) ( 1728 2744 784 ) ( 1728 2744 736 ) 27 0 0 0 1 1 +} +// brush 157 +{ +( 1952 2744 784 ) ( 1952 1800 784 ) ( 1952 1800 736 ) 27 0 0 0 1 1 +( 1952 2080 784 ) ( 1992 2080 784 ) ( 1992 2080 736 ) 27 0 0 0 1 1 +( 1928 1800 736 ) ( 1968 1800 736 ) ( 1968 2744 736 ) 27 0 0 0 1 1 +( 1968 2744 816 ) ( 1968 1800 816 ) ( 1928 1800 816 ) 27 0 0 0 1 1 +( 1976 2624 784 ) ( 1936 2624 784 ) ( 1936 2624 736 ) 27 0 0 0 1 1 +( 1984 1800 784 ) ( 1984 2744 784 ) ( 1984 2744 736 ) 27 0 0 0 1 1 +} +// brush 158 +{ +( 1920 2280 832 ) ( 1920 2248 832 ) ( 1920 2248 816 ) 7 0 0 0 1 1 +( 1920 2216 832 ) ( 1968 2216 832 ) ( 1968 2216 816 ) 7 0 0 0 1 1 +( 1928 2248 720 ) ( 1976 2248 720 ) ( 1976 2280 720 ) 7 0 0 0 1 1 +( 1976 2280 832 ) ( 1976 2248 832 ) ( 1928 2248 832 ) 7 0 0 0 1 1 +( 1976 2280 832 ) ( 1928 2280 832 ) ( 1928 2280 816 ) 7 0 0 0 1 1 +( 2016 2248 832 ) ( 2016 2280 832 ) ( 2016 2280 816 ) 7 0 0 0 1 1 +} +// brush 159 +{ +( 1808 2096 832 ) ( 1808 2048 832 ) ( 1808 2048 816 ) 7 0 0 0 1 1 +( 1840 2016 832 ) ( 1872 2016 832 ) ( 1872 2016 816 ) 7 0 0 0 1 1 +( 1840 2088 720 ) ( 1840 2040 720 ) ( 1872 2040 720 ) 7 0 0 0 1 1 +( 1872 2040 832 ) ( 1840 2040 832 ) ( 1840 2088 832 ) 7 0 0 0 1 1 +( 1872 2112 832 ) ( 1840 2112 832 ) ( 1840 2112 816 ) 7 0 0 0 1 1 +( 1872 2040 832 ) ( 1872 2088 832 ) ( 1872 2088 816 ) 7 0 0 0 1 1 +} +// brush 160 +{ +( 1696 2104 784 ) ( 1696 2064 784 ) ( 1696 2064 736 ) 27 0 0 0 1 1 +( 1280 2048 784 ) ( 2224 2048 784 ) ( 2224 2048 736 ) 27 0 0 0 1 1 +( 1280 2088 736 ) ( 1280 2048 736 ) ( 2224 2048 736 ) 27 0 0 0 1 1 +( 2224 2048 816 ) ( 1280 2048 816 ) ( 1280 2088 816 ) 27 0 0 0 1 1 +( 2224 2080 784 ) ( 1280 2080 784 ) ( 1280 2080 736 ) 27 0 0 0 1 1 +( 1984 2040 784 ) ( 1984 2080 784 ) ( 1984 2080 736 ) 27 0 0 0 1 1 +} +// brush 161 +{ +( 1664 2280 832 ) ( 1664 2248 832 ) ( 1664 2248 816 ) 7 0 0 0 1 1 +( 1696 2216 832 ) ( 1744 2216 832 ) ( 1744 2216 816 ) 7 0 0 0 1 1 +( 1704 2248 720 ) ( 1752 2248 720 ) ( 1752 2280 720 ) 7 0 0 0 1 1 +( 1752 2280 832 ) ( 1752 2248 832 ) ( 1704 2248 832 ) 7 0 0 0 1 1 +( 1752 2280 832 ) ( 1704 2280 832 ) ( 1704 2280 816 ) 7 0 0 0 1 1 +( 1760 2248 832 ) ( 1760 2280 832 ) ( 1760 2280 816 ) 7 0 0 0 1 1 +} +// brush 162 +{ +( 1920 2520 832 ) ( 1920 2488 832 ) ( 1920 2488 816 ) 7 0 0 0 1 1 +( 1920 2456 832 ) ( 1968 2456 832 ) ( 1968 2456 816 ) 7 0 0 0 1 1 +( 1928 2488 720 ) ( 1976 2488 720 ) ( 1976 2520 720 ) 7 0 0 0 1 1 +( 1976 2520 832 ) ( 1976 2488 832 ) ( 1928 2488 832 ) 7 0 0 0 1 1 +( 1976 2520 832 ) ( 1928 2520 832 ) ( 1928 2520 816 ) 7 0 0 0 1 1 +( 2016 2488 832 ) ( 2016 2520 832 ) ( 2016 2520 816 ) 7 0 0 0 1 1 +} +// brush 163 +{ +( 1808 2664 832 ) ( 1808 2616 832 ) ( 1808 2616 816 ) 7 0 0 0 1 1 +( 1840 2560 832 ) ( 1872 2560 832 ) ( 1872 2560 816 ) 7 0 0 0 1 1 +( 1840 2656 720 ) ( 1840 2608 720 ) ( 1872 2608 720 ) 7 0 0 0 1 1 +( 1872 2608 832 ) ( 1840 2608 832 ) ( 1840 2656 832 ) 7 0 0 0 1 1 +( 1872 2664 832 ) ( 1840 2664 832 ) ( 1840 2664 816 ) 7 0 0 0 1 1 +( 1872 2608 832 ) ( 1872 2656 832 ) ( 1872 2656 816 ) 7 0 0 0 1 1 +} +// brush 164 +{ +( 1664 2512 832 ) ( 1664 2480 832 ) ( 1664 2480 816 ) 7 0 0 0 1 1 +( 1696 2456 832 ) ( 1744 2456 832 ) ( 1744 2456 816 ) 7 0 0 0 1 1 +( 1704 2488 720 ) ( 1752 2488 720 ) ( 1752 2520 720 ) 7 0 0 0 1 1 +( 1752 2520 832 ) ( 1752 2488 832 ) ( 1704 2488 832 ) 7 0 0 0 1 1 +( 1752 2520 832 ) ( 1704 2520 832 ) ( 1704 2520 816 ) 7 0 0 0 1 1 +( 1760 2488 832 ) ( 1760 2520 832 ) ( 1760 2520 816 ) 7 0 0 0 1 1 +} +// brush 165 +{ +( 1520 2408 440 ) ( 1520 2312 440 ) ( 1520 2312 424 ) 26 0 0 0 1 1 +( 1512 2144 440 ) ( 1896 2144 440 ) ( 1896 2144 424 ) 26 0 0 0 1 1 +( 1520 2312 320 ) ( 1904 2312 320 ) ( 1904 2408 320 ) 26 0 0 0 1 1 +( 1904 2408 448 ) ( 1904 2312 448 ) ( 1520 2312 448 ) 26 0 0 0 1 1 +( 1904 2400 440 ) ( 1520 2400 440 ) ( 1520 2400 424 ) 26 0 0 0 1 1 +( 2144 2328 440 ) ( 2144 2424 440 ) ( 2144 2424 424 ) 26 0 0 0 1 1 +} +// brush 166 +{ +( 1792 2584 444 ) ( 1792 2328 444 ) ( 1792 2328 428 ) 27 0 0 0 1 1 +( 1784 2400 444 ) ( 1912 2400 444 ) ( 1912 2400 428 ) 27 0 0 0 1 1 +( 1776 2328 416 ) ( 1904 2328 416 ) ( 1904 2584 416 ) 27 0 0 0 1 1 +( 1904 2584 432 ) ( 1904 2328 432 ) ( 1776 2328 432 ) 27 0 0 0 1 1 +( 1912 2624 444 ) ( 1784 2624 444 ) ( 1784 2624 428 ) 27 0 0 0 1 1 +( 1888 2328 444 ) ( 1888 2584 444 ) ( 1888 2584 428 ) 27 0 0 0 1 1 +} +// brush 167 +{ +( 1536 2600 767 ) ( 1536 2568 767 ) ( 1536 2568 720 ) 27 0 0 0 1 1 +( 1520 2528 767 ) ( 1536 2528 767 ) ( 1536 2528 720 ) 27 0 0 0 1 1 +( 1520 2568 352 ) ( 1536 2568 352 ) ( 1536 2600 352 ) 27 0 0 0 1 1 +( 1536 2600 752 ) ( 1536 2568 752 ) ( 1520 2568 752 ) 27 0 0 0 1 1 +( 1536 2560 767 ) ( 1520 2560 767 ) ( 1520 2560 720 ) 27 0 0 0 1 1 +( 1568 2568 767 ) ( 1568 2600 767 ) ( 1568 2600 720 ) 27 0 0 0 1 1 +} +// brush 168 +{ +( 2080 2600 720 ) ( 2080 2600 767 ) ( 2080 2568 767 ) 26 0 0 0 1 1 +( 2144 2560 720 ) ( 2144 2560 767 ) ( 2160 2560 767 ) 26 0 0 0 1 1 +( 2144 2600 304 ) ( 2144 2568 304 ) ( 2160 2568 304 ) 26 0 0 0 1 1 +( 2160 2568 816 ) ( 2144 2568 816 ) ( 2144 2600 816 ) 26 0 0 0 1 1 +( 2160 2688 720 ) ( 2160 2688 767 ) ( 2144 2688 767 ) 26 0 0 0 1 1 +( 2176 2568 720 ) ( 2176 2568 767 ) ( 2176 2600 767 ) 26 0 0 0 1 1 +} +// brush 169 +{ +( 1536 2080 512 ) ( 1536 2081 512 ) ( 1536 2080 513 ) 7 0 0 0 1 1 +( 1568 2048 512 ) ( 1568 2048 513 ) ( 1569 2048 512 ) 7 0 0 0 1 1 +( 1568 2080 512 ) ( 1569 2080 512 ) ( 1568 2081 512 ) 7 0 0 0 1 1 +( 1600 2112 528 ) ( 1600 2113 528 ) ( 1601 2112 528 ) 7 0 0 0 1 1 +( 1600 2144 528 ) ( 1601 2144 528 ) ( 1600 2144 529 ) 7 0 0 0 1 1 +( 1600 2112 528 ) ( 1600 2112 529 ) ( 1600 2113 528 ) 7 0 0 0 1 1 +} +// brush 170 +{ +( 1536 2080 736 ) ( 1536 2081 736 ) ( 1536 2080 737 ) 7 0 0 0 1 1 +( 1568 2048 736 ) ( 1568 2048 737 ) ( 1569 2048 736 ) 7 0 0 0 1 1 +( 1568 2080 736 ) ( 1569 2080 736 ) ( 1568 2081 736 ) 7 0 0 0 1 1 +( 1600 2112 752 ) ( 1600 2113 752 ) ( 1601 2112 752 ) 7 0 0 0 1 1 +( 1600 2144 752 ) ( 1601 2144 752 ) ( 1600 2144 753 ) 7 0 0 0 1 1 +( 1600 2112 752 ) ( 1600 2112 753 ) ( 1600 2113 752 ) 7 0 0 0 1 1 +} +// brush 171 +{ +( 2112 2080 512 ) ( 2112 2081 512 ) ( 2112 2080 513 ) 7 0 0 0 1 1 +( 2112 2048 512 ) ( 2112 2048 513 ) ( 2113 2048 512 ) 7 0 0 0 1 1 +( 2112 2080 512 ) ( 2113 2080 512 ) ( 2112 2081 512 ) 7 0 0 0 1 1 +( 2144 2112 528 ) ( 2144 2113 528 ) ( 2145 2112 528 ) 7 0 0 0 1 1 +( 2144 2144 528 ) ( 2145 2144 528 ) ( 2144 2144 529 ) 7 0 0 0 1 1 +( 2176 2112 528 ) ( 2176 2112 529 ) ( 2176 2113 528 ) 7 0 0 0 1 1 +} +// brush 172 +{ +( 2112 2080 736 ) ( 2112 2081 736 ) ( 2112 2080 737 ) 7 0 0 0 1 1 +( 2112 2048 736 ) ( 2112 2048 737 ) ( 2113 2048 736 ) 7 0 0 0 1 1 +( 2112 2080 736 ) ( 2113 2080 736 ) ( 2112 2081 736 ) 7 0 0 0 1 1 +( 2144 2112 752 ) ( 2144 2113 752 ) ( 2145 2112 752 ) 7 0 0 0 1 1 +( 2144 2144 752 ) ( 2145 2144 752 ) ( 2144 2144 753 ) 7 0 0 0 1 1 +( 2176 2112 752 ) ( 2176 2112 753 ) ( 2176 2113 752 ) 7 0 0 0 1 1 +} +// brush 173 +{ +( 1984 1824 624 ) ( 1984 1825 624 ) ( 1984 1824 625 ) 7 0 0 0 1 1 +( 1984 1824 624 ) ( 1984 1824 625 ) ( 1985 1824 624 ) 7 0 0 0 1 1 +( 1984 1824 512 ) ( 1985 1824 512 ) ( 1984 1825 512 ) 7 0 0 0 1 1 +( 2048 1888 752 ) ( 2048 1889 752 ) ( 2049 1888 752 ) 7 0 0 0 1 1 +( 2048 1856 640 ) ( 2049 1856 640 ) ( 2048 1856 641 ) 7 0 0 0 1 1 +( 2048 1888 640 ) ( 2048 1888 641 ) ( 2048 1889 640 ) 7 0 0 0 1 1 +} +// brush 174 +{ +( 1600 1824 624 ) ( 1600 1825 624 ) ( 1600 1824 625 ) 7 0 0 0 1 1 +( 1600 1824 624 ) ( 1600 1824 625 ) ( 1601 1824 624 ) 7 0 0 0 1 1 +( 1600 1824 512 ) ( 1601 1824 512 ) ( 1600 1825 512 ) 7 0 0 0 1 1 +( 1664 1888 752 ) ( 1664 1889 752 ) ( 1665 1888 752 ) 7 0 0 0 1 1 +( 1664 1856 640 ) ( 1665 1856 640 ) ( 1664 1856 641 ) 7 0 0 0 1 1 +( 1664 1888 640 ) ( 1664 1888 641 ) ( 1664 1889 640 ) 7 0 0 0 1 1 +} +// brush 175 +{ +( 2016 2048 512 ) ( 2016 2049 512 ) ( 2016 2048 513 ) 14 0 0 0 1 1 +( 2016 2048 512 ) ( 2016 2048 513 ) ( 2017 2048 512 ) 14 0 0 0 1 1 +( 2016 2048 512 ) ( 2017 2048 512 ) ( 2016 2049 512 ) 14 0 0 0 1 1 +( 2080 2080 544 ) ( 2080 2081 544 ) ( 2081 2080 544 ) 14 0 0 0 1 1 +( 2080 2080 544 ) ( 2081 2080 544 ) ( 2080 2080 545 ) 14 0 0 0 1 1 +( 2048 2080 544 ) ( 2048 2080 545 ) ( 2048 2081 544 ) 14 0 0 0 1 1 +} +// brush 176 +{ +( 1728 2112 464 ) ( 1728 2113 464 ) ( 1728 2112 465 ) 9 0 0 0 1 1 +( 1728 2144 464 ) ( 1728 2144 465 ) ( 1729 2144 464 ) 9 0 0 0 1 1 +( 1728 2112 448 ) ( 1729 2112 448 ) ( 1728 2113 448 ) 9 0 0 0 1 1 +( 1760 2240 512 ) ( 1760 2241 512 ) ( 1761 2240 512 ) 9 0 0 0 1 1 +( 1760 2176 496 ) ( 1761 2176 496 ) ( 1760 2176 497 ) 9 0 0 0 1 1 +( 1760 2240 496 ) ( 1760 2240 497 ) ( 1760 2241 496 ) 9 0 0 0 1 1 +} +// brush 177 +{ +( 1728 2176 464 ) ( 1728 2177 464 ) ( 1728 2176 465 ) 9 0 0 0 1 1 +( 1728 2176 464 ) ( 1728 2176 465 ) ( 1729 2176 464 ) 9 0 0 0 1 1 +( 1728 2176 448 ) ( 1729 2176 448 ) ( 1728 2177 448 ) 9 0 0 0 1 1 +( 1760 2304 496 ) ( 1760 2305 496 ) ( 1761 2304 496 ) 9 0 0 0 1 1 +( 1760 2208 496 ) ( 1761 2208 496 ) ( 1760 2208 497 ) 9 0 0 0 1 1 +( 1760 2304 496 ) ( 1760 2304 497 ) ( 1760 2305 496 ) 9 0 0 0 1 1 +} +// brush 178 +{ +( 1728 2208 464 ) ( 1728 2209 464 ) ( 1728 2208 465 ) 9 0 0 0 1 1 +( 1728 2208 464 ) ( 1728 2208 465 ) ( 1729 2208 464 ) 9 0 0 0 1 1 +( 1728 2208 448 ) ( 1729 2208 448 ) ( 1728 2209 448 ) 9 0 0 0 1 1 +( 1760 2336 480 ) ( 1760 2337 480 ) ( 1761 2336 480 ) 9 0 0 0 1 1 +( 1760 2240 496 ) ( 1761 2240 496 ) ( 1760 2240 497 ) 9 0 0 0 1 1 +( 1760 2336 496 ) ( 1760 2336 497 ) ( 1760 2337 496 ) 9 0 0 0 1 1 +} +// brush 179 +{ +( 1728 2240 464 ) ( 1728 2241 464 ) ( 1728 2240 465 ) 9 0 0 0 1 1 +( 1728 2240 464 ) ( 1728 2240 465 ) ( 1729 2240 464 ) 9 0 0 0 1 1 +( 1728 2240 448 ) ( 1729 2240 448 ) ( 1728 2241 448 ) 9 0 0 0 1 1 +( 1760 2368 464 ) ( 1760 2369 464 ) ( 1761 2368 464 ) 9 0 0 0 1 1 +( 1760 2272 496 ) ( 1761 2272 496 ) ( 1760 2272 497 ) 9 0 0 0 1 1 +( 1760 2368 496 ) ( 1760 2368 497 ) ( 1760 2369 496 ) 9 0 0 0 1 1 +} +// brush 180 +{ +( 1920 2128 464 ) ( 1920 2129 464 ) ( 1920 2128 465 ) 9 0 0 0 1 1 +( 1920 2144 464 ) ( 1920 2144 465 ) ( 1921 2144 464 ) 9 0 0 0 1 1 +( 1920 2128 448 ) ( 1921 2128 448 ) ( 1920 2129 448 ) 9 0 0 0 1 1 +( 1952 2256 512 ) ( 1952 2257 512 ) ( 1953 2256 512 ) 9 0 0 0 1 1 +( 1952 2176 496 ) ( 1953 2176 496 ) ( 1952 2176 497 ) 9 0 0 0 1 1 +( 1952 2256 496 ) ( 1952 2256 497 ) ( 1952 2257 496 ) 9 0 0 0 1 1 +} +// brush 181 +{ +( 1920 2240 464 ) ( 1920 2241 464 ) ( 1920 2240 465 ) 9 0 0 0 1 1 +( 1920 2240 464 ) ( 1920 2240 465 ) ( 1921 2240 464 ) 9 0 0 0 1 1 +( 1920 2240 448 ) ( 1921 2240 448 ) ( 1920 2241 448 ) 9 0 0 0 1 1 +( 1952 2368 464 ) ( 1952 2369 464 ) ( 1953 2368 464 ) 9 0 0 0 1 1 +( 1952 2272 496 ) ( 1953 2272 496 ) ( 1952 2272 497 ) 9 0 0 0 1 1 +( 1952 2368 496 ) ( 1952 2368 497 ) ( 1952 2369 496 ) 9 0 0 0 1 1 +} +// brush 182 +{ +( 1920 2208 464 ) ( 1920 2209 464 ) ( 1920 2208 465 ) 9 0 0 0 1 1 +( 1920 2208 464 ) ( 1920 2208 465 ) ( 1921 2208 464 ) 9 0 0 0 1 1 +( 1920 2208 448 ) ( 1921 2208 448 ) ( 1920 2209 448 ) 9 0 0 0 1 1 +( 1952 2336 480 ) ( 1952 2337 480 ) ( 1953 2336 480 ) 9 0 0 0 1 1 +( 1952 2240 496 ) ( 1953 2240 496 ) ( 1952 2240 497 ) 9 0 0 0 1 1 +( 1952 2336 496 ) ( 1952 2336 497 ) ( 1952 2337 496 ) 9 0 0 0 1 1 +} +// brush 183 +{ +( 1920 2176 464 ) ( 1920 2177 464 ) ( 1920 2176 465 ) 9 0 0 0 1 1 +( 1920 2176 464 ) ( 1920 2176 465 ) ( 1921 2176 464 ) 9 0 0 0 1 1 +( 1920 2176 448 ) ( 1921 2176 448 ) ( 1920 2177 448 ) 9 0 0 0 1 1 +( 1952 2304 496 ) ( 1952 2305 496 ) ( 1953 2304 496 ) 9 0 0 0 1 1 +( 1952 2208 496 ) ( 1953 2208 496 ) ( 1952 2208 497 ) 9 0 0 0 1 1 +( 1952 2304 496 ) ( 1952 2304 497 ) ( 1952 2305 496 ) 9 0 0 0 1 1 +} +// brush 184 +{ +( 2176 1824 480 ) ( 2176 1825 480 ) ( 2176 1824 481 ) 26 0 0 0 1 1 +( 2176 1824 480 ) ( 2176 1824 481 ) ( 2177 1824 480 ) 26 0 0 0 1 1 +( 2176 1824 512 ) ( 2177 1824 512 ) ( 2176 1825 512 ) 26 0 0 0 1 1 +( 2208 2144 752 ) ( 2208 2145 752 ) ( 2209 2144 752 ) 26 0 0 0 1 1 +( 2208 2528 512 ) ( 2209 2528 512 ) ( 2208 2528 513 ) 26 0 0 0 1 1 +( 2208 2144 512 ) ( 2208 2144 513 ) ( 2208 2145 512 ) 26 0 0 0 1 1 +} +// brush 185 +{ +( 1920 2112 512 ) ( 1920 2113 512 ) ( 1920 2112 513 ) 9 0 0 0 1 1 +( 1904 2112 512 ) ( 1904 2112 513 ) ( 1905 2112 512 ) 9 0 0 0 1 1 +( 1904 2112 512 ) ( 1905 2112 512 ) ( 1904 2113 512 ) 9 0 0 0 1 1 +( 1952 2144 528 ) ( 1952 2145 528 ) ( 1953 2144 528 ) 9 0 0 0 1 1 +( 1952 2144 528 ) ( 1953 2144 528 ) ( 1952 2144 529 ) 9 0 0 0 1 1 +( 1952 2144 528 ) ( 1952 2144 529 ) ( 1952 2145 528 ) 9 0 0 0 1 1 +} +// brush 186 +{ +( 1728 2112 512 ) ( 1728 2113 512 ) ( 1728 2112 513 ) 9 0 0 0 1 1 +( 1712 2112 512 ) ( 1712 2112 513 ) ( 1713 2112 512 ) 9 0 0 0 1 1 +( 1712 2112 512 ) ( 1713 2112 512 ) ( 1712 2113 512 ) 9 0 0 0 1 1 +( 1760 2144 528 ) ( 1760 2145 528 ) ( 1761 2144 528 ) 9 0 0 0 1 1 +( 1760 2144 528 ) ( 1761 2144 528 ) ( 1760 2144 529 ) 9 0 0 0 1 1 +( 1760 2144 528 ) ( 1760 2144 529 ) ( 1760 2145 528 ) 9 0 0 0 1 1 +} +// brush 187 +{ +( 1888 2400 464 ) ( 1888 2401 464 ) ( 1888 2400 465 ) 9 0 0 0 1 1 +( 1888 2400 464 ) ( 1888 2400 465 ) ( 1889 2400 464 ) 9 0 0 0 1 1 +( 1888 2400 352 ) ( 1889 2400 352 ) ( 1888 2401 352 ) 9 0 0 0 1 1 +( 1920 2528 464 ) ( 1920 2529 464 ) ( 1921 2528 464 ) 9 0 0 0 1 1 +( 1920 2432 496 ) ( 1921 2432 496 ) ( 1920 2432 497 ) 9 0 0 0 1 1 +( 1920 2528 496 ) ( 1920 2528 497 ) ( 1920 2529 496 ) 9 0 0 0 1 1 +} +// brush 188 +{ +( 1760 2400 464 ) ( 1760 2401 464 ) ( 1760 2400 465 ) 9 0 0 0 1 1 +( 1760 2400 464 ) ( 1760 2400 465 ) ( 1761 2400 464 ) 9 0 0 0 1 1 +( 1760 2400 352 ) ( 1761 2400 352 ) ( 1760 2401 352 ) 9 0 0 0 1 1 +( 1792 2528 464 ) ( 1792 2529 464 ) ( 1793 2528 464 ) 9 0 0 0 1 1 +( 1792 2432 496 ) ( 1793 2432 496 ) ( 1792 2432 497 ) 9 0 0 0 1 1 +( 1792 2528 496 ) ( 1792 2528 497 ) ( 1792 2529 496 ) 9 0 0 0 1 1 +} +// brush 189 +{ +( 1760 2592 464 ) ( 1760 2593 464 ) ( 1760 2592 465 ) 9 0 0 0 1 1 +( 1760 2592 464 ) ( 1760 2592 465 ) ( 1761 2592 464 ) 9 0 0 0 1 1 +( 1760 2592 352 ) ( 1761 2592 352 ) ( 1760 2593 352 ) 9 0 0 0 1 1 +( 1792 2720 464 ) ( 1792 2721 464 ) ( 1793 2720 464 ) 9 0 0 0 1 1 +( 1792 2624 496 ) ( 1793 2624 496 ) ( 1792 2624 497 ) 9 0 0 0 1 1 +( 1792 2720 496 ) ( 1792 2720 497 ) ( 1792 2721 496 ) 9 0 0 0 1 1 +} +// brush 190 +{ +( 1888 2592 464 ) ( 1888 2593 464 ) ( 1888 2592 465 ) 9 0 0 0 1 1 +( 1888 2592 464 ) ( 1888 2592 465 ) ( 1889 2592 464 ) 9 0 0 0 1 1 +( 1888 2592 352 ) ( 1889 2592 352 ) ( 1888 2593 352 ) 9 0 0 0 1 1 +( 1920 2720 464 ) ( 1920 2721 464 ) ( 1921 2720 464 ) 9 0 0 0 1 1 +( 1920 2624 496 ) ( 1921 2624 496 ) ( 1920 2624 497 ) 9 0 0 0 1 1 +( 1920 2720 496 ) ( 1920 2720 497 ) ( 1920 2721 496 ) 9 0 0 0 1 1 +} +// brush 191 +{ +( 1600 2776 440 ) ( 1600 2648 440 ) ( 1600 2648 424 ) 28 0 0 0 1 1 +( 2080 2624 448 ) ( 2016 2624 448 ) ( 2016 2624 576 ) 28 0 0 0 1 1 +( 1744 2648 384 ) ( 1944 2648 384 ) ( 1944 2776 384 ) 28 0 0 0 1 1 +( 1944 2776 448 ) ( 1944 2648 448 ) ( 1744 2648 448 ) 28 0 0 0 1 1 +( 1944 2976 440 ) ( 1744 2976 440 ) ( 1744 2976 424 ) 28 0 0 0 1 1 +( 2176 2648 440 ) ( 2176 2776 440 ) ( 2176 2776 424 ) 28 0 0 0 1 1 +} +// brush 192 +{ +( 1536 2400 368 ) ( 1536 2401 368 ) ( 1536 2400 369 ) 13 0 0 0 1 1 +( 1632 2400 368 ) ( 1632 2400 369 ) ( 1633 2400 368 ) 13 0 0 0 1 1 +( 1632 2400 320 ) ( 1633 2400 320 ) ( 1632 2401 320 ) 13 0 0 0 1 1 +( 2064 2608 400 ) ( 2064 2609 400 ) ( 2065 2608 400 ) 13 0 0 0 1 1 +( 2064 2656 384 ) ( 2065 2656 384 ) ( 2064 2656 385 ) 13 0 0 0 1 1 +( 2144 2608 384 ) ( 2144 2608 385 ) ( 2144 2609 384 ) 13 0 0 0 1 1 +} +// brush 193 +{ +( 2336 1136 296 ) ( 2336 1128 296 ) ( 2336 1128 280 ) 26 0 0 0 1 1 +( 1736 672 296 ) ( 1808 672 296 ) ( 1808 672 280 ) 26 0 0 0 1 1 +( 1808 1136 224 ) ( 1736 1136 224 ) ( 1736 1128 224 ) 26 0 0 0 1 1 +( 1736 1128 704 ) ( 1736 1136 704 ) ( 1808 1136 704 ) 26 0 0 0 1 1 +( 1808 704 296 ) ( 1736 704 296 ) ( 1736 704 280 ) 26 0 0 0 1 1 +( 2688 1120 296 ) ( 2688 1128 296 ) ( 2688 1128 280 ) 26 0 0 0 1 1 +} +// brush 194 +{ +( 2464 1136 272 ) ( 2464 1137 272 ) ( 2464 1136 273 ) 26 0 0 0 1 1 +( 2464 928 272 ) ( 2464 928 273 ) ( 2465 928 272 ) 26 0 0 0 1 1 +( 2464 1136 224 ) ( 2465 1136 224 ) ( 2464 1137 224 ) 26 0 0 0 1 1 +( 2544 1200 496 ) ( 2544 1201 496 ) ( 2545 1200 496 ) 26 0 0 0 1 1 +( 2544 1168 288 ) ( 2545 1168 288 ) ( 2544 1168 289 ) 26 0 0 0 1 1 +( 2688 1200 288 ) ( 2688 1200 289 ) ( 2688 1201 288 ) 26 0 0 0 1 1 +} +// brush 195 +{ +( 2400 1088 480 ) ( 2400 1089 480 ) ( 2400 1088 481 ) 27 0 0 0 1 1 +( 2400 928 480 ) ( 2400 928 481 ) ( 2401 928 480 ) 27 0 0 0 1 1 +( 2400 1088 496 ) ( 2401 1088 496 ) ( 2400 1089 496 ) 27 0 0 0 1 1 +( 2688 1280 512 ) ( 2688 1281 512 ) ( 2689 1280 512 ) 27 0 0 0 1 1 +( 2688 1216 512 ) ( 2689 1216 512 ) ( 2688 1216 513 ) 27 0 0 0 1 1 +( 2688 1280 512 ) ( 2688 1280 513 ) ( 2688 1281 512 ) 27 0 0 0 1 1 +} +// brush 196 +{ +( 2560 1280 480 ) ( 2560 1281 480 ) ( 2560 1280 481 ) 27 0 0 0 1 1 +( 2400 1216 480 ) ( 2400 1216 481 ) ( 2401 1216 480 ) 27 0 0 0 1 1 +( 2400 1280 496 ) ( 2401 1280 496 ) ( 2400 1281 496 ) 27 0 0 0 1 1 +( 2688 1472 512 ) ( 2688 1473 512 ) ( 2689 1472 512 ) 27 0 0 0 1 1 +( 2688 1760 512 ) ( 2689 1760 512 ) ( 2688 1760 513 ) 27 0 0 0 1 1 +( 2688 1472 512 ) ( 2688 1472 513 ) ( 2688 1473 512 ) 27 0 0 0 1 1 +} +// brush 197 +{ +( 2176 1280 480 ) ( 2176 1281 480 ) ( 2176 1280 481 ) 27 0 0 0 1 1 +( 2272 1632 480 ) ( 2272 1632 481 ) ( 2273 1632 480 ) 27 0 0 0 1 1 +( 2272 1280 496 ) ( 2273 1280 496 ) ( 2272 1281 496 ) 27 0 0 0 1 1 +( 2560 1472 512 ) ( 2560 1473 512 ) ( 2561 1472 512 ) 27 0 0 0 1 1 +( 2560 1760 512 ) ( 2561 1760 512 ) ( 2560 1760 513 ) 27 0 0 0 1 1 +( 2560 1472 512 ) ( 2560 1472 513 ) ( 2560 1473 512 ) 27 0 0 0 1 1 +} +// brush 198 +{ +( 2432 864 704 ) ( 2432 865 704 ) ( 2432 864 705 ) 27 0 0 0 1 1 +( 2528 640 704 ) ( 2528 640 705 ) ( 2529 640 704 ) 27 0 0 0 1 1 +( 2528 864 704 ) ( 2529 864 704 ) ( 2528 865 704 ) 27 0 0 0 1 1 +( 2816 896 736 ) ( 2816 897 736 ) ( 2817 896 736 ) 27 0 0 0 1 1 +( 2816 896 736 ) ( 2817 896 736 ) ( 2816 896 737 ) 27 0 0 0 1 1 +( 2464 896 736 ) ( 2464 896 737 ) ( 2464 897 736 ) 27 0 0 0 1 1 +} +// brush 199 +{ +( 1472 1792 704 ) ( 1472 1793 704 ) ( 1472 1792 705 ) 27 0 0 0 1 1 +( 2080 1664 704 ) ( 2080 1664 705 ) ( 2081 1664 704 ) 27 0 0 0 1 1 +( 2080 1792 704 ) ( 2081 1792 704 ) ( 2080 1793 704 ) 27 0 0 0 1 1 +( 2144 1824 752 ) ( 2144 1825 752 ) ( 2145 1824 752 ) 27 0 0 0 1 1 +( 2144 1888 720 ) ( 2145 1888 720 ) ( 2144 1888 721 ) 27 0 0 0 1 1 +( 2272 1824 720 ) ( 2272 1824 721 ) ( 2272 1825 720 ) 27 0 0 0 1 1 +} +// brush 200 +{ +( 2112 2144 416 ) ( 2112 2145 416 ) ( 2112 2144 417 ) 28 0 0 0 1 1 +( 2144 2144 416 ) ( 2144 2144 417 ) ( 2145 2144 416 ) 28 0 0 0 1 1 +( 2144 2144 352 ) ( 2145 2144 352 ) ( 2144 2145 352 ) 28 0 0 0 1 1 +( 2176 2368 512 ) ( 2176 2369 512 ) ( 2177 2368 512 ) 28 0 0 0 1 1 +( 2176 2560 448 ) ( 2177 2560 448 ) ( 2176 2560 449 ) 28 0 0 0 1 1 +( 2176 2368 448 ) ( 2176 2368 449 ) ( 2176 2369 448 ) 28 0 0 0 1 1 +} +// brush 201 +{ +( 2144 2600 767 ) ( 2144 2568 767 ) ( 2144 2568 720 ) 27 0 0 0 1 1 +( 2128 2528 767 ) ( 2144 2528 767 ) ( 2144 2528 720 ) 27 0 0 0 1 1 +( 2128 2568 384 ) ( 2144 2568 384 ) ( 2144 2600 384 ) 27 0 0 0 1 1 +( 2144 2600 752 ) ( 2144 2568 752 ) ( 2128 2568 752 ) 27 0 0 0 1 1 +( 2144 2560 767 ) ( 2128 2560 767 ) ( 2128 2560 720 ) 27 0 0 0 1 1 +( 2176 2568 767 ) ( 2176 2600 767 ) ( 2176 2600 720 ) 27 0 0 0 1 1 +} +// brush 202 +{ +( 1376 1856 480 ) ( 1376 1857 480 ) ( 1376 1856 481 ) 27 0 0 0 1 1 +( 1376 1792 480 ) ( 1376 1792 481 ) ( 1377 1792 480 ) 27 0 0 0 1 1 +( 1376 1856 480 ) ( 1377 1856 480 ) ( 1376 1857 480 ) 27 0 0 0 1 1 +( 1408 1952 496 ) ( 1408 1953 496 ) ( 1409 1952 496 ) 27 0 0 0 1 1 +( 1408 1952 512 ) ( 1409 1952 512 ) ( 1408 1952 513 ) 27 0 0 0 1 1 +( 1408 1952 512 ) ( 1408 1952 513 ) ( 1408 1953 512 ) 27 0 0 0 1 1 +} +// brush 203 +{ +( 1440 2784 960 ) ( 1440 1712 960 ) ( 1440 1712 320 ) 26 0 0 0 1 1 +( 1648 2656 960 ) ( 1664 2656 960 ) ( 1664 2656 320 ) 26 0 0 0 1 1 +( 1632 1712 320 ) ( 1648 1712 320 ) ( 1648 2784 320 ) 26 0 0 0 1 1 +( 1648 2784 800 ) ( 1648 1712 800 ) ( 1632 1712 800 ) 26 0 0 0 1 1 +( 1648 2976 584 ) ( 1648 2976 600 ) ( 1608 2976 600 ) 26 0 0 0 1 1 +( 1632 1712 960 ) ( 1632 2784 960 ) ( 1632 2784 320 ) 26 0 0 0 1 1 +} +// brush 204 +{ +( 1760 2816 448 ) ( 1760 2817 448 ) ( 1760 2816 449 ) 16 0 0 0 1 1 +( 1760 2752 448 ) ( 1760 2752 449 ) ( 1761 2752 448 ) 16 0 0 0 1 1 +( 1760 2816 448 ) ( 1761 2816 448 ) ( 1760 2817 448 ) 16 0 0 0 1 1 +( 1952 2944 464 ) ( 1952 2945 464 ) ( 1953 2944 464 ) 16 0 0 0 1 1 +( 1952 2976 480 ) ( 1953 2976 480 ) ( 1952 2976 481 ) 16 0 0 0 1 1 +( 1952 2944 480 ) ( 1952 2944 481 ) ( 1952 2945 480 ) 16 0 0 0 1 1 +} +// brush 205 +{ +( 1632 2720 784 ) ( 1632 2721 784 ) ( 1632 2720 785 ) 16 0 0 0 1 1 +( 1984 2720 784 ) ( 1984 2720 785 ) ( 1985 2720 784 ) 16 0 0 0 1 1 +( 1984 2720 784 ) ( 1985 2720 784 ) ( 1984 2721 784 ) 16 0 0 0 1 1 +( 2064 2944 800 ) ( 2064 2945 800 ) ( 2065 2944 800 ) 16 0 0 0 1 1 +( 2064 2976 800 ) ( 2065 2976 800 ) ( 2064 2976 801 ) 16 0 0 0 1 1 +( 2176 2944 800 ) ( 2176 2944 801 ) ( 2176 2945 800 ) 16 0 0 0 1 1 +} +// brush 206 +{ +( 1664 2880 448 ) ( 1664 2881 448 ) ( 1664 2880 449 ) 15 0 0 0 1 1 +( 1696 2880 448 ) ( 1696 2880 449 ) ( 1697 2880 448 ) 15 0 0 0 1 1 +( 1696 2880 448 ) ( 1697 2880 448 ) ( 1696 2881 448 ) 15 0 0 0 1 1 +( 1728 2912 512 ) ( 1728 2913 512 ) ( 1729 2912 512 ) 15 0 0 0 1 1 +( 1728 2944 480 ) ( 1729 2944 480 ) ( 1728 2944 481 ) 15 0 0 0 1 1 +( 1728 2912 480 ) ( 1728 2912 481 ) ( 1728 2913 480 ) 15 0 0 0 1 1 +} +// brush 207 +{ +( 2016 2752 448 ) ( 2016 2753 448 ) ( 2016 2752 449 ) 14 0 0 0 1 1 +( 2016 2720 448 ) ( 2016 2720 449 ) ( 2017 2720 448 ) 14 0 0 0 1 1 +( 2016 2752 448 ) ( 2017 2752 448 ) ( 2016 2753 448 ) 14 0 0 0 1 1 +( 2048 2784 480 ) ( 2048 2785 480 ) ( 2049 2784 480 ) 14 0 0 0 1 1 +( 2048 2784 480 ) ( 2049 2784 480 ) ( 2048 2784 481 ) 14 0 0 0 1 1 +( 2048 2784 480 ) ( 2048 2784 481 ) ( 2048 2785 480 ) 14 0 0 0 1 1 +} +// brush 208 +{ +( 1664 2784 448 ) ( 1664 2785 448 ) ( 1664 2784 449 ) 14 0 0 0 1 1 +( 1664 2752 448 ) ( 1664 2752 449 ) ( 1665 2752 448 ) 14 0 0 0 1 1 +( 1664 2784 448 ) ( 1665 2784 448 ) ( 1664 2785 448 ) 14 0 0 0 1 1 +( 1696 2816 480 ) ( 1696 2817 480 ) ( 1697 2816 480 ) 14 0 0 0 1 1 +( 1696 2784 480 ) ( 1697 2784 480 ) ( 1696 2784 481 ) 14 0 0 0 1 1 +( 1696 2816 480 ) ( 1696 2816 481 ) ( 1696 2817 480 ) 14 0 0 0 1 1 +} +// brush 209 +{ +( 1984 2912 448 ) ( 1984 2913 448 ) ( 1984 2912 449 ) 15 0 0 0 1 1 +( 1984 2880 448 ) ( 1984 2880 449 ) ( 1985 2880 448 ) 15 0 0 0 1 1 +( 1984 2912 448 ) ( 1985 2912 448 ) ( 1984 2913 448 ) 15 0 0 0 1 1 +( 2016 2944 512 ) ( 2016 2945 512 ) ( 2017 2944 512 ) 15 0 0 0 1 1 +( 2016 2912 480 ) ( 2017 2912 480 ) ( 2016 2912 481 ) 15 0 0 0 1 1 +( 2016 2944 480 ) ( 2016 2944 481 ) ( 2016 2945 480 ) 15 0 0 0 1 1 +} +// brush 210 +{ +( 2016 2880 448 ) ( 2016 2881 448 ) ( 2016 2880 449 ) 15 0 0 0 1 1 +( 2016 2848 448 ) ( 2016 2848 449 ) ( 2017 2848 448 ) 15 0 0 0 1 1 +( 2016 2880 448 ) ( 2017 2880 448 ) ( 2016 2881 448 ) 15 0 0 0 1 1 +( 2048 2912 544 ) ( 2048 2913 544 ) ( 2049 2912 544 ) 15 0 0 0 1 1 +( 2048 2912 480 ) ( 2049 2912 480 ) ( 2048 2912 481 ) 15 0 0 0 1 1 +( 2048 2912 480 ) ( 2048 2912 481 ) ( 2048 2913 480 ) 15 0 0 0 1 1 +} +// brush 211 +{ +( 1664 2848 448 ) ( 1664 2849 448 ) ( 1664 2848 449 ) 15 0 0 0 1 1 +( 1696 2848 448 ) ( 1696 2848 449 ) ( 1697 2848 448 ) 15 0 0 0 1 1 +( 1696 2848 448 ) ( 1697 2848 448 ) ( 1696 2849 448 ) 15 0 0 0 1 1 +( 1728 2880 480 ) ( 1728 2881 480 ) ( 1729 2880 480 ) 15 0 0 0 1 1 +( 1728 2880 480 ) ( 1729 2880 480 ) ( 1728 2880 481 ) 15 0 0 0 1 1 +( 1696 2880 480 ) ( 1696 2880 481 ) ( 1696 2881 480 ) 15 0 0 0 1 1 +} +// brush 212 +{ +( 1792 2912 448 ) ( 1792 2913 448 ) ( 1792 2912 449 ) 7 0 0 0 1 1 +( 1824 2880 448 ) ( 1824 2880 449 ) ( 1825 2880 448 ) 7 0 0 0 1 1 +( 1824 2912 464 ) ( 1825 2912 464 ) ( 1824 2913 464 ) 7 0 0 0 1 1 +( 1920 2944 672 ) ( 1920 2945 672 ) ( 1921 2944 672 ) 7 0 0 0 1 1 +( 1920 2976 480 ) ( 1921 2976 480 ) ( 1920 2976 481 ) 7 0 0 0 1 1 +( 1920 2944 480 ) ( 1920 2944 481 ) ( 1920 2945 480 ) 7 0 0 0 1 1 +} +// brush 213 +{ +( 1824 2816 464 ) ( 1824 2817 464 ) ( 1824 2816 465 ) 8 0 0 0 1 1 +( 1824 2816 464 ) ( 1824 2816 465 ) ( 1825 2816 464 ) 8 0 0 0 1 1 +( 1824 2816 464 ) ( 1825 2816 464 ) ( 1824 2817 464 ) 8 0 0 0 1 1 +( 1888 2880 480 ) ( 1888 2881 480 ) ( 1889 2880 480 ) 8 0 0 0 1 1 +( 1888 2880 480 ) ( 1889 2880 480 ) ( 1888 2880 481 ) 8 0 0 0 1 1 +( 1888 2880 480 ) ( 1888 2880 481 ) ( 1888 2881 480 ) 8 0 0 0 1 1 +} +// brush 214 +{ +( 1824 2832 624 ) ( 1824 2833 624 ) ( 1824 2832 625 ) 8 0 0 0 1 1 +( 1792 2784 624 ) ( 1792 2784 625 ) ( 1793 2784 624 ) 8 0 0 0 1 1 +( 1792 2832 624 ) ( 1793 2832 624 ) ( 1792 2833 624 ) 8 0 0 0 1 1 +( 1936 2944 640 ) ( 1936 2945 640 ) ( 1937 2944 640 ) 8 0 0 0 1 1 +( 1936 2944 640 ) ( 1937 2944 640 ) ( 1936 2944 641 ) 8 0 0 0 1 1 +( 1888 2944 640 ) ( 1888 2944 641 ) ( 1888 2945 640 ) 8 0 0 0 1 1 +} +// brush 215 +{ +( 1920 2880 560 ) ( 1920 2881 560 ) ( 1920 2880 561 ) 9 0 0 0 1 1 +( 1920 2912 560 ) ( 1920 2912 561 ) ( 1921 2912 560 ) 9 0 0 0 1 1 +( 1920 2880 560 ) ( 1921 2880 560 ) ( 1920 2881 560 ) 9 0 0 0 1 1 +( 1952 2944 576 ) ( 1952 2945 576 ) ( 1953 2944 576 ) 9 0 0 0 1 1 +( 1952 2944 576 ) ( 1953 2944 576 ) ( 1952 2944 577 ) 9 0 0 0 1 1 +( 2144 2944 576 ) ( 2144 2944 577 ) ( 2144 2945 576 ) 9 0 0 0 1 1 +} +// brush 216 +{ +( 1632 2880 560 ) ( 1632 2881 560 ) ( 1632 2880 561 ) 9 0 0 0 1 1 +( 1632 2912 560 ) ( 1632 2912 561 ) ( 1633 2912 560 ) 9 0 0 0 1 1 +( 1632 2880 560 ) ( 1633 2880 560 ) ( 1632 2881 560 ) 9 0 0 0 1 1 +( 1664 2944 576 ) ( 1664 2945 576 ) ( 1665 2944 576 ) 9 0 0 0 1 1 +( 1664 2944 576 ) ( 1665 2944 576 ) ( 1664 2944 577 ) 9 0 0 0 1 1 +( 1792 2944 576 ) ( 1792 2944 577 ) ( 1792 2945 576 ) 9 0 0 0 1 1 +} +// brush 217 +{ +( 2112 2688 448 ) ( 2112 2689 448 ) ( 2112 2688 449 ) 1 0 0 0 1 1 +( 2144 2784 448 ) ( 2144 2784 449 ) ( 2145 2784 448 ) 1 0 0 0 1 1 +( 2144 2688 448 ) ( 2145 2688 448 ) ( 2144 2689 448 ) 1 0 0 0 1 1 +( 2176 2880 784 ) ( 2176 2881 784 ) ( 2177 2880 784 ) 1 0 0 0 1 1 +( 2176 2848 464 ) ( 2177 2848 464 ) ( 2176 2848 465 ) 1 0 0 0 1 1 +( 2176 2880 464 ) ( 2176 2880 465 ) ( 2176 2881 464 ) 1 0 0 0 1 1 +} +// brush 218 +{ +( 2144 2688 448 ) ( 2144 2689 448 ) ( 2144 2688 449 ) 2 0 0 0 1 1 +( 2144 2688 448 ) ( 2144 2688 449 ) ( 2145 2688 448 ) 2 0 0 0 1 1 +( 2144 2688 448 ) ( 2145 2688 448 ) ( 2144 2689 448 ) 2 0 0 0 1 1 +( 2176 2784 784 ) ( 2176 2785 784 ) ( 2177 2784 784 ) 2 0 0 0 1 1 +( 2176 2784 464 ) ( 2177 2784 464 ) ( 2176 2784 465 ) 2 0 0 0 1 1 +( 2176 2784 464 ) ( 2176 2784 465 ) ( 2176 2785 464 ) 2 0 0 0 1 1 +} +// brush 219 +{ +( 2144 2848 448 ) ( 2144 2849 448 ) ( 2144 2848 449 ) 2 0 0 0 1 1 +( 2144 2848 448 ) ( 2144 2848 449 ) ( 2145 2848 448 ) 2 0 0 0 1 1 +( 2144 2848 448 ) ( 2145 2848 448 ) ( 2144 2849 448 ) 2 0 0 0 1 1 +( 2176 2944 784 ) ( 2176 2945 784 ) ( 2177 2944 784 ) 2 0 0 0 1 1 +( 2176 2976 464 ) ( 2177 2976 464 ) ( 2176 2976 465 ) 2 0 0 0 1 1 +( 2176 2944 464 ) ( 2176 2944 465 ) ( 2176 2945 464 ) 2 0 0 0 1 1 +} +// brush 220 +{ +( 1968 2896 448 ) ( 1968 2897 448 ) ( 1968 2896 449 ) 2 0 0 0 1 1 +( 2144 2944 448 ) ( 2144 2944 449 ) ( 2145 2944 448 ) 2 0 0 0 1 1 +( 2144 2896 448 ) ( 2145 2896 448 ) ( 2144 2897 448 ) 2 0 0 0 1 1 +( 2176 2992 656 ) ( 2176 2993 656 ) ( 2177 2992 656 ) 2 0 0 0 1 1 +( 2176 2976 464 ) ( 2177 2976 464 ) ( 2176 2976 465 ) 2 0 0 0 1 1 +( 2176 2992 464 ) ( 2176 2992 465 ) ( 2176 2993 464 ) 2 0 0 0 1 1 +} +// brush 221 +{ +( 1440 3104 960 ) ( 1440 2032 960 ) ( 1440 2032 320 ) 26 0 0 0 1 1 +( 1648 2976 960 ) ( 1664 2976 960 ) ( 1664 2976 320 ) 26 0 0 0 1 1 +( 1632 2032 320 ) ( 1648 2032 320 ) ( 1648 3104 320 ) 26 0 0 0 1 1 +( 1648 3104 800 ) ( 1648 2032 800 ) ( 1632 2032 800 ) 26 0 0 0 1 1 +( 1648 3008 584 ) ( 1648 3008 600 ) ( 1608 3008 600 ) 26 0 0 0 1 1 +( 1728 2032 960 ) ( 1728 3104 960 ) ( 1728 3104 320 ) 26 0 0 0 1 1 +} +// brush 222 +{ +( 1728 3104 960 ) ( 1728 2032 960 ) ( 1728 2032 320 ) 2 0 0 0 1 1 +( 1936 2976 960 ) ( 1952 2976 960 ) ( 1952 2976 320 ) 2 0 0 0 1 1 +( 1920 2032 320 ) ( 1936 2032 320 ) ( 1936 3104 320 ) 2 0 0 0 1 1 +( 1936 3104 800 ) ( 1936 2032 800 ) ( 1920 2032 800 ) 2 0 0 0 1 1 +( 1936 3008 584 ) ( 1936 3008 600 ) ( 1896 3008 600 ) 2 0 0 0 1 1 +( 2144 2032 960 ) ( 2144 3104 960 ) ( 2144 3104 320 ) 2 0 0 0 1 1 +} +// brush 223 +{ +( 2048 2784 448 ) ( 2048 2785 448 ) ( 2048 2784 449 ) 14 0 0 0 1 1 +( 2048 2752 448 ) ( 2048 2752 449 ) ( 2049 2752 448 ) 14 0 0 0 1 1 +( 2048 2784 448 ) ( 2049 2784 448 ) ( 2048 2785 448 ) 14 0 0 0 1 1 +( 2080 2816 512 ) ( 2080 2817 512 ) ( 2081 2816 512 ) 14 0 0 0 1 1 +( 2080 2784 480 ) ( 2081 2784 480 ) ( 2080 2784 481 ) 14 0 0 0 1 1 +( 2080 2816 480 ) ( 2080 2816 481 ) ( 2080 2817 480 ) 14 0 0 0 1 1 +} +// brush 224 +{ +( 1856 2000 632 ) ( 1856 1936 632 ) ( 1856 1936 504 ) 14 32 -16 0 1 1 +( 1848 1952 632 ) ( 1912 1952 632 ) ( 1912 1952 504 ) 14 16 -16 0 1 1 +( 1848 1936 512 ) ( 1912 1936 512 ) ( 1912 2000 512 ) 14 32 -16 0 1 1 +( 1912 2000 576 ) ( 1912 1936 576 ) ( 1848 1936 576 ) 14 16 32 0 1 1 +( 1912 2016 632 ) ( 1848 2016 632 ) ( 1848 2016 504 ) 14 16 -16 0 1 1 +( 1920 1936 632 ) ( 1920 2000 632 ) ( 1920 2000 504 ) 14 32 -16 0 1 1 +} +// brush 225 +{ +( 1136 920 844 ) ( 1136 616 844 ) ( 1136 616 324 ) 27 0 0 0 1 1 +( 928 640 844 ) ( 1248 640 844 ) ( 1248 640 324 ) 27 0 0 0 1 1 +( 1248 920 832 ) ( 928 920 832 ) ( 928 616 832 ) 27 0 0 0 1 1 +( 928 616 848 ) ( 928 920 848 ) ( 1248 920 848 ) 27 0 0 0 1 1 +( 1248 928 844 ) ( 928 928 844 ) ( 928 928 324 ) 27 0 0 0 1 1 +( 1168 616 844 ) ( 1168 920 844 ) ( 1168 920 324 ) 27 0 0 0 1 1 +} +// brush 226 +{ +( 512 1624 696 ) ( 512 1624 660 ) ( 512 1672 660 ) 26 0 0 0 1 1 +( 544 1600 656 ) ( 544 1600 692 ) ( 576 1600 692 ) 26 0 0 0 1 1 +( 544 1624 656 ) ( 576 1624 656 ) ( 576 1672 656 ) 26 0 0 0 1 1 +( 576 1624 688 ) ( 544 1624 688 ) ( 544 1672 688 ) 26 0 0 0 1 1 +( 576 1664 692 ) ( 544 1664 692 ) ( 544 1664 656 ) 26 0 0 0 1 1 +( 544 1624 656 ) ( 544 1624 692 ) ( 544 1672 692 ) 26 0 0 0 1 1 +} +// brush 227 +{ +( 640 1624 696 ) ( 640 1624 660 ) ( 640 1672 660 ) 26 0 0 0 1 1 +( 672 1600 656 ) ( 672 1600 692 ) ( 704 1600 692 ) 26 0 0 0 1 1 +( 672 1624 656 ) ( 704 1624 656 ) ( 704 1672 656 ) 26 0 0 0 1 1 +( 704 1624 688 ) ( 672 1624 688 ) ( 672 1672 688 ) 26 0 0 0 1 1 +( 704 1664 692 ) ( 672 1664 692 ) ( 672 1664 656 ) 26 0 0 0 1 1 +( 672 1624 656 ) ( 672 1624 692 ) ( 672 1672 692 ) 26 0 0 0 1 1 +} +// brush 228 +{ +( 768 1848 692 ) ( 768 1816 692 ) ( 768 1816 656 ) 26 0 0 0 1 1 +( 856 1792 696 ) ( 856 1792 660 ) ( 808 1792 660 ) 26 0 0 0 1 1 +( 856 1816 656 ) ( 856 1848 656 ) ( 808 1848 656 ) 26 0 0 0 1 1 +( 856 1848 688 ) ( 856 1816 688 ) ( 808 1816 688 ) 26 0 0 0 1 1 +( 856 1824 656 ) ( 856 1824 692 ) ( 808 1824 692 ) 26 0 0 0 1 1 +( 832 1816 656 ) ( 832 1816 692 ) ( 832 1848 692 ) 26 0 0 0 1 1 +} +// brush 229 +{ +( 768 1976 692 ) ( 768 1944 692 ) ( 768 1944 656 ) 26 0 0 0 1 1 +( 856 1920 696 ) ( 856 1920 660 ) ( 808 1920 660 ) 26 0 0 0 1 1 +( 856 1944 656 ) ( 856 1976 656 ) ( 808 1976 656 ) 26 0 0 0 1 1 +( 856 1976 688 ) ( 856 1944 688 ) ( 808 1944 688 ) 26 0 0 0 1 1 +( 856 1952 656 ) ( 856 1952 692 ) ( 808 1952 692 ) 26 0 0 0 1 1 +( 832 1944 656 ) ( 832 1944 692 ) ( 832 1976 692 ) 26 0 0 0 1 1 +} +// brush 230 +{ +( 1184 1824 752 ) ( 1184 1825 752 ) ( 1184 1824 753 ) 26 0 0 0 1 1 +( 1216 1824 752 ) ( 1216 1824 753 ) ( 1217 1824 752 ) 26 0 0 0 1 1 +( 1216 1824 672 ) ( 1217 1824 672 ) ( 1216 1825 672 ) 26 0 0 0 1 1 +( 1248 1888 768 ) ( 1248 1889 768 ) ( 1249 1888 768 ) 26 0 0 0 1 1 +( 1248 1888 768 ) ( 1249 1888 768 ) ( 1248 1888 769 ) 26 0 0 0 1 1 +( 1216 1888 768 ) ( 1216 1888 769 ) ( 1216 1889 768 ) 26 0 0 0 1 1 +} +// brush 231 +{ +( 896 384 640 ) ( 896 385 640 ) ( 896 384 641 ) 8 0 0 0 1 1 +( 896 384 640 ) ( 896 384 641 ) ( 897 384 640 ) 8 0 0 0 1 1 +( 896 384 640 ) ( 897 384 640 ) ( 896 385 640 ) 8 0 0 0 1 1 +( 960 480 656 ) ( 960 481 656 ) ( 961 480 656 ) 8 0 0 0 1 1 +( 960 448 672 ) ( 961 448 672 ) ( 960 448 673 ) 8 0 0 0 1 1 +( 960 480 672 ) ( 960 480 673 ) ( 960 481 672 ) 8 0 0 0 1 1 +} +} +// entity 1 +{ +"classname" "info_player_start" +"origin" "928 416 664" +} +// entity 2 +{ +"classname" "pickup_grenadelauncher" +"origin" "1472 192 700" +} +// entity 3 +{ +"classname" "pickup_key" +"origin" "868 1660 220" +} +// entity 4 +{ +"classname" "door" +"origin" "1308 1852 544" +"dir" "1" +"texture" "3" +} +// entity 5 +{ +"classname" "torch" +"origin" "1244 112 716" +} +// entity 6 +{ +"classname" "torch" +"origin" "1244 304 716" +} +// entity 7 +{ +"classname" "torch" +"origin" "1692 304 716" +} +// entity 8 +{ +"classname" "torch" +"origin" "1884 848 780" +} +// entity 9 +{ +"classname" "torch" +"origin" "1148 928 780" +} +// entity 10 +{ +"classname" "torch" +"origin" "1148 656 780" +} +// entity 11 +{ +"classname" "torch" +"origin" "1488 1008 732" +} +// entity 12 +{ +"classname" "torch" +"origin" "688 1592 668" +} +// entity 13 +{ +"classname" "torch" +"origin" "496 1592 668" +} +// entity 14 +{ +"classname" "torch" +"origin" "848 1776 668" +} +// entity 15 +{ +"classname" "torch" +"origin" "848 1968 668" +} +// entity 16 +{ +"classname" "torch" +"origin" "1248 1936 572" +} +// entity 17 +{ +"classname" "torch" +"origin" "1248 1776 572" +} +// entity 18 +{ +"classname" "light" +"origin" "936 1048 584" +"light" "3" +"color" "32 32 255" +} +// entity 19 +{ +"classname" "light" +"origin" "616 1048 584" +"light" "3" +"color" "32 32 255" +} +// entity 20 +{ +"classname" "light" +"origin" "792 1464 584" +"light" "3" +"color" "32 32 255" +} +// entity 21 +{ +"classname" "light" +"origin" "888 1640 312" +"light" "10" +"color" "32 32 255" +} +// entity 22 +{ +"classname" "light" +"origin" "1288 1384 312" +"light" "15" +"color" "32 32 255" +} +// entity 23 +{ +"classname" "light" +"origin" "1608 1208 312" +"light" "15" +"color" "32 32 255" +} +// entity 24 +{ +"classname" "torch" +"origin" "1792 1392 336" +} +// entity 25 +{ +"classname" "light" +"origin" "2488 1592 824" +"light" "40" +"color" "192 192 255" +} +// entity 26 +{ +"classname" "light" +"origin" "2360 1464 488" +"light" "20" +"color" "192 192 255" +} +// entity 27 +{ +"classname" "torch" +"origin" "2192 752 624" +} +// entity 28 +{ +"classname" "torch" +"origin" "2144 1744 576" +} +// entity 29 +{ +"classname" "pickup_nailgun" +"origin" "1076 756 572" +} +// entity 30 +{ +"classname" "pickup_health" +"origin" "1900 1012 636" +} +// entity 31 +{ +"classname" "enemy_zombie" +"origin" "1104 1936 216" +} +// entity 32 +{ +"classname" "enemy_zombie" +"origin" "1056 1968 216" +} +// entity 33 +{ +"classname" "enemy_zombie" +"origin" "656 1456 216" +} +// entity 34 +{ +"classname" "enemy_zombie" +"origin" "1104 1584 216" +} +// entity 35 +{ +"classname" "enemy_zombie" +"origin" "1648 432 696" +} +// entity 36 +{ +"classname" "enemy_zombie" +"origin" "1616 496 696" +} +// entity 37 +{ +"classname" "enemy_zombie" +"origin" "1552 496 696" +} +// entity 38 +{ +"classname" "enemy_ogre" +"origin" "1552 1040 648" +} +// entity 39 +{ +"classname" "enemy_ogre" +"origin" "1872 592 648" +} +// entity 40 +{ +"classname" "enemy_ogre" +"origin" "688 1968 504" +} +// entity 41 +{ +"classname" "enemy_grunt" +"origin" "464 1744 504" +} +// entity 42 +{ +"classname" "enemy_zombie" +"origin" "1648 1168 232" +} +// entity 43 +{ +"classname" "enemy_zombie" +"origin" "1584 1296 232" +} +// entity 44 +{ +"classname" "enemy_ogre" +"origin" "2576 1456 264" +} +// entity 45 +{ +"classname" "enemy_grunt" +"origin" "2384 1616 264" +} +// entity 46 +{ +"classname" "light" +"origin" "1464 184 776" +"light" "3" +"color" "255 32 0" +"delay" "" +} +// entity 47 +{ +"classname" "enemy_zombie" +"origin" "1136 1632 216" +} +// entity 48 +{ +"classname" "torch" +"origin" "2640 720 624" +} +// entity 49 +{ +"classname" "torch" +"origin" "2672 1712 624" +} +// entity 50 +{ +"classname" "pickup_health" +"origin" "1900 500 636" +} +// entity 51 +{ +"classname" "pickup_grenades" +"origin" "1868 500 636" +} +// entity 52 +{ +"classname" "pickup_grenades" +"origin" "1900 1068 636" +} +// entity 53 +{ +"classname" "pickup_nails" +"origin" "1004 1036 556" +} +// entity 54 +{ +"classname" "pickup_nails" +"origin" "1004 1068 556" +} +// entity 55 +{ +"classname" "pickup_health" +"origin" "876 1204 492" +} +// entity 56 +{ +"classname" "pickup_health" +"origin" "364 1844 492" +} +// entity 57 +{ +"classname" "pickup_grenades" +"origin" "372 1836 204" +} +// entity 58 +{ +"classname" "pickup_grenades" +"origin" "436 1836 204" +} +// entity 59 +{ +"classname" "pickup_health" +"origin" "628 2060 204" +} +// entity 60 +{ +"classname" "pickup_nails" +"origin" "2660 1188 252" +} +// entity 61 +{ +"classname" "pickup_health" +"origin" "2004 1708 236" +} +// entity 62 +{ +"classname" "pickup_health" +"origin" "1940 1708 236" +} +// entity 63 +{ +"classname" "pickup_health" +"origin" "2100 1708 524" +} +// entity 64 +{ +"classname" "pickup_grenades" +"origin" "2164 1708 524" +} +// entity 65 +{ +"classname" "pickup_nails" +"origin" "2668 1420 524" +} +// entity 66 +{ +"classname" "pickup_nails" +"origin" "2004 756 508" +} +// entity 67 +{ +"classname" "enemy_grunt" +"origin" "2512 1616 264" +} +// entity 68 +{ +"classname" "enemy_grunt" +"origin" "2384 1680 552" +} +// entity 69 +{ +"classname" "torch" +"origin" "1808 1840 624" +} +// entity 70 +{ +"classname" "light" +"origin" "1976 2120 936" +"light" "50" +"color" "192 192 255" +} +// entity 71 +{ +"classname" "light" +"origin" "1864 2760 584" +"light" "20" +"color" "255 0 0" +"delay" "" +} +// entity 72 +{ +"classname" "light" +"origin" "1992 2792 584" +"light" "5" +"color" "0 128 255" +"delay" "" +} +// entity 73 +{ +"classname" "light" +"origin" "1704 2824 552" +"light" "5" +"color" "0 128 255" +"delay" "" +} +// entity 74 +{ +"classname" "pickup_nails" +"origin" "2124 1876 524" +} +// entity 75 +{ +"classname" "pickup_nails" +"origin" "2060 1876 524" +} +// entity 76 +{ +"classname" "pickup_health" +"origin" "2060 1940 620" +} +// entity 77 +{ +"classname" "pickup_health" +"origin" "1588 2292 460" +} +// entity 78 +{ +"classname" "pickup_grenades" +"origin" "1588 2356 460" +} +// entity 79 +{ +"classname" "pickup_nails" +"origin" "1652 2100 524" +} +// entity 80 +{ +"classname" "trigger_levelchange" +"origin" "1856 2880 544" +} +// entity 81 +{ +"classname" "enemy_grunt" +"origin" "496 1840 504" +} +// entity 82 +{ +"classname" "enemy_grunt" +"origin" "1200 1840 504" +} +// entity 83 +{ +"classname" "enemy_ogre" +"origin" "1680 2320 472" +} +// entity 84 +{ +"classname" "enemy_grunt" +"origin" "1968 2032 536" +} +// entity 85 +{ +"classname" "enemy_ogre" +"origin" "2000 2320 472" +} +// entity 86 +{ +"classname" "enemy_grunt" +"origin" "1648 2256 488" +} +// entity 87 +{ +"classname" "enemy_grunt" +"origin" "1824 2528 488" +} +// entity 88 +{ +"classname" "enemy_grunt" +"origin" "1984 2704 488" +} +// entity 89 +{ +"classname" "enemy_enforcer" +"origin" "2032 2672 472" +} +// entity 90 +{ +"classname" "enemy_enforcer" +"origin" "1776 2672 472" +} +// entity 91 +{ +"classname" "pickup_health" +"origin" "2156 2476 524" +} +// entity 92 +{ +"classname" "light" +"origin" "1928 2408 568" +"light" "20" +"color" "192 192 255" +} +// entity 93 +{ +"classname" "light" +"origin" "984 360 728" +"color" "255 0 0" +"delay" "" +"light" "10" +} +// entity 94 +{ +"classname" "light" +"origin" "1080 760 616" +"light" "3" +"color" "255 192 32" +"delay" "" +} +// entity 95 +{ +"classname" "pickup_grenades" +"origin" "1508 1156 220" +} diff --git a/assets/models/boulder.obj b/assets/models/boulder.obj new file mode 100755 index 0000000..819aac8 --- /dev/null +++ b/assets/models/boulder.obj @@ -0,0 +1,22 @@ +# Exported from Wings 3D 2.1.5 +mtllib boulder.mtl +o Cube2 +#7 vertices, 8 faces +v -1.76671199 -1.11166500 -1.27988643 +v -0.66717809 -1.13106144 0.80598548 +v -0.75547184 0.39059562 -1.03424222 +v 1.71502654 -1.25440865 -1.89713495 +v 1.00000000 -1.00000000 1.00000000 +v 0.43931125 8.8170497e-2 -1.22055291 +v 0.42936450 0.36758775 0.33316664 +g Cube2_default +usemtl default +s 1 +f 1// 6// 4// +f 2// 3// 1// +f 2// 7// 3// +f 3// 6// 1// +f 3// 7// 6// +f 4// 6// 5// +f 5// 6// 7// +f 5// 7// 2// diff --git a/assets/models/box.obj b/assets/models/box.obj new file mode 100644 index 0000000..4e9194f --- /dev/null +++ b/assets/models/box.obj @@ -0,0 +1,25 @@ +# Exported from Wings 3D 2.1.7 +mtllib box.mtl +o Cube1 +#8 vertices, 10 faces +v -1.00000000 -1.00000000 -1.00000000 +v -1.00000000 -1.00000000 1.00000000 +v -1.00000000 1.00000000 -1.00000000 +v -1.00000000 1.00000000 1.00000000 +v 1.00000000 -1.00000000 -1.00000000 +v 1.00000000 -1.00000000 1.00000000 +v 1.00000000 1.00000000 -1.00000000 +v 1.00000000 1.00000000 1.00000000 +g Cube1_default +usemtl default +s 1 +f 2// 3// 1// +f 2// 4// 3// +f 2// 8// 4// +f 3// 5// 1// +f 3// 7// 5// +f 3// 8// 7// +f 4// 8// 3// +f 5// 8// 6// +f 6// 8// 2// +f 7// 8// 5// diff --git a/assets/models/grenade.obj b/assets/models/grenade.obj new file mode 100644 index 0000000..3014d4a --- /dev/null +++ b/assets/models/grenade.obj @@ -0,0 +1,33 @@ +# Exported from Wings 3D 2.1.7 +mtllib grenade.mtl +o Cylinder1 +#10 vertices, 16 faces +v -1.50000000 1.00000000 0.0000000e+0 +v -1.50000000 0.30901699 0.95105652 +v -1.50000000 -0.80901699 0.58778525 +v -1.50000000 -0.80901699 -0.58778525 +v -1.50000000 0.30901699 -0.95105652 +v 1.50000000 1.00000000 0.0000000e+0 +v 1.50000000 0.30901699 0.95105652 +v 1.50000000 -0.80901699 0.58778525 +v 1.50000000 -0.80901699 -0.58778525 +v 1.50000000 0.30901699 -0.95105652 +g Cylinder1_default +usemtl default +s 1 +f 1// 4// 2// +f 1// 6// 5// +f 2// 4// 3// +f 2// 6// 1// +f 2// 8// 7// +f 3// 8// 2// +f 4// 8// 3// +f 4// 10// 9// +f 5// 4// 1// +f 5// 6// 10// +f 5// 10// 4// +f 6// 9// 10// +f 7// 6// 2// +f 7// 8// 6// +f 9// 6// 8// +f 9// 8// 4// diff --git a/assets/models/hound.obj b/assets/models/hound.obj new file mode 100644 index 0000000..eba2e48 --- /dev/null +++ b/assets/models/hound.obj @@ -0,0 +1,54 @@ +# Exported from Wings 3D 2.1.7 +mtllib hound.mtl +o Cube1 +#17 vertices, 30 faces +v -0.27414249 0.20231664 1.59224039 +v 0.24584539 0.20231664 1.59224039 +v -0.34489706 0.68997600 -5.9876242e-2 +v 0.31659996 0.68997600 -5.9876242e-2 +v -0.44658541 0.30520433 -1.66534505 +v 0.41828831 0.30520433 -1.66534505 +v -1.4148550e-2 -0.39042135 0.70643627 +v -1.4148550e-2 -6.9785484e-2 -2.34491358 +v -1.4148550e-2 -0.23375148 -0.42106184 +v -0.43375565 -1.00192308 -1.66343399 +v 0.40545855 -1.00192308 -1.66343399 +v -0.60915295 -0.99285579 0.59310583 +v 0.58085585 -0.99285579 0.59310583 +v -1.4148550e-2 -9.7830546e-3 -1.28127565 +v -1.4148550e-2 -5.9388855e-2 0.21094748 +v -0.45093850 0.58881440 1.65639487 +v 0.42264140 0.58881440 1.65639487 +g Cube1_default +usemtl default +s 1 +f 1// 7// 2// +f 1// 17// 16// +f 2// 7// 17// +f 2// 17// 1// +f 3// 5// 9// +f 3// 12// 7// +f 3// 17// 4// +f 4// 6// 3// +f 4// 13// 9// +f 4// 17// 7// +f 5// 3// 6// +f 5// 6// 8// +f 6// 11// 8// +f 7// 13// 4// +f 7// 15// 13// +f 7// 16// 3// +f 8// 10// 5// +f 8// 14// 10// +f 9// 5// 10// +f 9// 6// 4// +f 9// 12// 3// +f 9// 14// 11// +f 9// 15// 12// +f 10// 14// 9// +f 11// 6// 9// +f 11// 14// 8// +f 12// 15// 7// +f 13// 15// 9// +f 16// 7// 1// +f 16// 17// 3// diff --git a/assets/models/hound_run_1.obj b/assets/models/hound_run_1.obj new file mode 100644 index 0000000..0dc317c --- /dev/null +++ b/assets/models/hound_run_1.obj @@ -0,0 +1,54 @@ +# Exported from Wings 3D 2.1.7 +mtllib hound_run_1.mtl +o Cube1 +#17 vertices, 30 faces +v -0.27414249 0.20231664 1.59224039 +v 0.24584539 0.20231664 1.59224039 +v -0.34489706 0.68997600 -5.9876242e-2 +v 0.31659996 0.68997600 -5.9876242e-2 +v -0.44658541 0.30520433 -1.66534505 +v 0.41828831 0.30520433 -1.66534505 +v -1.4148550e-2 -0.39042135 0.70643627 +v -1.4148550e-2 -6.9785484e-2 -2.34491358 +v -1.4148550e-2 -0.23375148 -0.42106184 +v -0.43375565 -0.93382778 -0.95044611 +v 0.40545855 -0.83101396 -0.66615665 +v -0.60915295 -0.95696320 0.16541373 +v 0.58085585 -0.81540550 -7.0403956e-2 +v -1.4148550e-2 -9.7830546e-3 -1.28127565 +v -1.4148550e-2 -5.9388855e-2 0.21094748 +v -0.45093850 0.58881440 1.65639487 +v 0.42264140 0.58881440 1.65639487 +g Cube1_default +usemtl default +s 1 +f 1// 7// 2// +f 1// 17// 16// +f 2// 7// 17// +f 2// 17// 1// +f 3// 5// 9// +f 3// 12// 7// +f 3// 17// 4// +f 4// 6// 3// +f 4// 13// 9// +f 4// 17// 7// +f 5// 3// 6// +f 5// 6// 8// +f 6// 11// 8// +f 7// 13// 4// +f 7// 15// 13// +f 7// 16// 3// +f 8// 10// 5// +f 8// 14// 10// +f 9// 5// 10// +f 9// 6// 4// +f 9// 12// 3// +f 9// 14// 11// +f 9// 15// 12// +f 10// 14// 9// +f 11// 6// 9// +f 11// 14// 8// +f 12// 15// 7// +f 13// 15// 9// +f 16// 7// 1// +f 16// 17// 3// diff --git a/assets/models/hound_run_2.obj b/assets/models/hound_run_2.obj new file mode 100644 index 0000000..5b5623a --- /dev/null +++ b/assets/models/hound_run_2.obj @@ -0,0 +1,54 @@ +# Exported from Wings 3D 2.1.7 +mtllib hound_run_2.mtl +o Cube1 +#17 vertices, 30 faces +v -0.27414249 0.32374765 1.53588567 +v 0.24584539 0.32374765 1.53588567 +v -0.34489706 0.87178707 -2.8008988e-2 +v 0.31659996 0.87178707 -2.8008988e-2 +v -0.44658541 0.48701540 -1.63347780 +v 0.41828831 0.48701540 -1.63347780 +v -1.4148550e-2 -0.20861028 0.73830352 +v -1.4148550e-2 0.11202559 -2.31304633 +v -1.4148550e-2 -5.1940403e-2 -0.38919459 +v -0.43375565 -0.70455128 -2.48896361 +v 0.40545855 -0.68576637 -2.05640756 +v -0.60915295 -0.59619234 1.41092021 +v 0.58085585 -0.54855918 1.19422288 +v -1.4148550e-2 0.17202802 -1.24940840 +v -1.4148550e-2 0.12242222 0.24281474 +v -0.45093850 0.71024542 1.60004015 +v 0.42264140 0.71024542 1.60004015 +g Cube1_default +usemtl default +s 1 +f 1// 7// 2// +f 1// 17// 16// +f 2// 7// 17// +f 2// 17// 1// +f 3// 5// 9// +f 3// 12// 7// +f 3// 17// 4// +f 4// 6// 3// +f 4// 13// 9// +f 4// 17// 7// +f 5// 3// 6// +f 5// 6// 8// +f 6// 11// 8// +f 7// 13// 4// +f 7// 15// 13// +f 7// 16// 3// +f 8// 10// 5// +f 8// 14// 10// +f 9// 5// 10// +f 9// 6// 4// +f 9// 12// 3// +f 9// 14// 11// +f 9// 15// 12// +f 10// 14// 9// +f 11// 6// 9// +f 11// 14// 8// +f 12// 15// 7// +f 13// 15// 9// +f 16// 7// 1// +f 16// 17// 3// diff --git a/assets/models/nailgun.obj b/assets/models/nailgun.obj new file mode 100644 index 0000000..dbecbb9 --- /dev/null +++ b/assets/models/nailgun.obj @@ -0,0 +1,46 @@ +# Exported from Wings 3D 2.1.7 +mtllib nailgun.mtl +o Cube1 +#17 vertices, 22 faces +v -0.49808545 7.0738526e-4 -0.35027558 +v 0.73207036 7.0738526e-4 -0.35027558 +v -0.49808545 7.0738526e-4 0.23452442 +v 0.73207036 7.0738526e-4 0.23452442 +v 0.73207036 -0.70631483 -5.7875579e-2 +v 0.93949391 -0.16061271 0.49790863 +v -1.14322716 -0.16061271 0.49790863 +v 0.93949391 0.26298729 0.49790863 +v -1.14322716 0.26298729 0.49790863 +v 0.93949391 3.7539161e-2 9.6285961e-2 +v -1.14322716 3.7539161e-2 9.6285961e-2 +v 0.93949391 -0.16061271 -0.61738635 +v -1.14322716 -0.16061271 -0.61738635 +v 0.93949391 0.26298729 -0.61738635 +v -1.14322716 0.26298729 -0.61738635 +v 0.93949391 3.7539161e-2 -0.21576367 +v -1.14322716 3.7539161e-2 -0.21576367 +g Cube1_default +usemtl default +s 1 +f 1// 3// 2// +f 1// 5// 3// +f 2// 5// 1// +f 3// 4// 2// +f 3// 5// 4// +f 4// 5// 2// +f 6// 8// 7// +f 6// 10// 8// +f 7// 10// 6// +f 7// 11// 10// +f 8// 9// 7// +f 8// 10// 9// +f 9// 11// 7// +f 10// 11// 9// +f 12// 15// 14// +f 12// 17// 13// +f 13// 15// 12// +f 13// 17// 15// +f 14// 16// 12// +f 14// 17// 16// +f 15// 17// 14// +f 16// 17// 12// diff --git a/assets/models/q.obj b/assets/models/q.obj new file mode 100644 index 0000000..f1f73ef --- /dev/null +++ b/assets/models/q.obj @@ -0,0 +1,55 @@ +# Exported from Wings 3D 2.1.7 +mtllib q.mtl +o entity0_brush3 +#25 vertices, 23 faces +v -1.47660400 0.89508300 -2.93151200 +v -4.41993200 2.36674700 -2.93151100 +v 1.46672400 0.89508300 -2.93151200 +v 4.41005200 2.36674700 -2.93151100 +v 1.46672400 -2.78407800 -2.93151200 +v 1.46672400 -7.19907000 -2.93151200 +v 7.35338000 -0.57658200 -2.93151200 +v 10.29670800 -2.78407800 -2.93151200 +v 7.35338000 -0.57658200 2.95514500 +v 5.88171600 15.61172400 -2.93151100 +v 11.03254000 6.78173800 -2.93151100 +v 11.03254000 6.78173800 2.95514500 +v 13.24003700 7.51757000 -2.93151100 +v -7.36326000 -0.57658200 -2.93151200 +v -10.30658800 -2.78407800 -2.93151200 +v -7.36326000 -0.57658200 2.95514500 +v -1.47660400 -7.19907000 -2.93151200 +v -1.47660400 -2.78407800 -2.93151200 +v -13.24991700 7.51757000 -2.93151100 +v -11.04242000 6.78173800 2.95514500 +v -11.04242000 6.78173800 -2.93151100 +v -5.89159600 15.61172400 -2.93151100 +v -1.47660400 -9.40656600 -2.93151200 +v -4.9400000e-3 -18.23655100 -2.93151200 +v 1.46672400 -9.40656600 -2.93151200 +g entity0_brush3_default +usemtl default +s 1 +f 1// 4// 3// +f 1// 25// 23// +f 2// 4// 1// +f 3// 25// 1// +f 5// 7// 6// +f 5// 9// 7// +f 7// 8// 6// +f 7// 11// 8// +f 9// 11// 7// +f 9// 12// 11// +f 10// 13// 11// +f 11// 12// 10// +f 11// 13// 8// +f 14// 17// 15// +f 14// 18// 17// +f 14// 20// 16// +f 14// 21// 20// +f 15// 21// 14// +f 16// 18// 14// +f 19// 21// 15// +f 19// 22// 21// +f 21// 22// 20// +f 23// 25// 24// diff --git a/assets/models/torch_1.obj b/assets/models/torch_1.obj new file mode 100644 index 0000000..4afe3d3 --- /dev/null +++ b/assets/models/torch_1.obj @@ -0,0 +1,27 @@ +# Exported from Wings 3D 2.1.7 +mtllib torch.mtl +o cone2 +#4 vertices, 3 faces +v 0.56160000 0.93902222 4.8672177e-17 +v -0.28080000 0.93902222 0.48635987 +v -0.28080000 0.93902222 -0.48635987 +v 0.0000000e+0 2.15875556 0.0000000e+0 +g cone2_default +usemtl default +s 1 +f 1// 4// 2// +f 2// 4// 3// +f 3// 4// 1// +o cone1 +#4 vertices, 4 faces +v 1.00000000 1.00000000 0.0000000e+0 +v -0.50000000 1.00000000 0.86602540 +v -0.50000000 1.00000000 -0.86602540 +v 0.0000000e+0 -1.00000000 0.0000000e+0 +g cone1_default +usemtl default +s 1 +f 5// 7// 6// +f 5// 8// 7// +f 6// 8// 5// +f 7// 8// 6// diff --git a/assets/models/torch_2.obj b/assets/models/torch_2.obj new file mode 100644 index 0000000..05837dd --- /dev/null +++ b/assets/models/torch_2.obj @@ -0,0 +1,27 @@ +# Exported from Wings 3D 2.1.7 +mtllib torch2.mtl +o cone2 +#4 vertices, 3 faces +v 0.56160000 0.93902222 4.8672177e-17 +v -0.28080000 0.93902222 0.48635987 +v -0.28080000 0.93902222 -0.48635987 +v 0.37141710 2.34754042 -0.37242647 +g cone2_default +usemtl default +s 1 +f 1// 4// 2// +f 2// 4// 3// +f 3// 4// 1// +o cone1 +#4 vertices, 4 faces +v 1.00000000 1.00000000 0.0000000e+0 +v -0.50000000 1.00000000 0.86602540 +v -0.50000000 1.00000000 -0.86602540 +v 0.0000000e+0 -1.00000000 0.0000000e+0 +g cone1_default +usemtl default +s 1 +f 5// 7// 6// +f 5// 8// 7// +f 6// 8// 5// +f 7// 8// 6// diff --git a/assets/models/torch_3.obj b/assets/models/torch_3.obj new file mode 100644 index 0000000..443d8be --- /dev/null +++ b/assets/models/torch_3.obj @@ -0,0 +1,27 @@ +# Exported from Wings 3D 2.1.7 +mtllib torch_3.mtl +o cone2 +#4 vertices, 3 faces +v 0.56160000 0.93902222 4.8672177e-17 +v -0.28080000 0.93902222 0.48635987 +v -0.28080000 0.93902222 -0.48635987 +v 0.10185419 1.89578758 0.31045814 +g cone2_default +usemtl default +s 1 +f 1// 4// 2// +f 2// 4// 3// +f 3// 4// 1// +o cone1 +#4 vertices, 4 faces +v 1.00000000 1.00000000 0.0000000e+0 +v -0.50000000 1.00000000 0.86602540 +v -0.50000000 1.00000000 -0.86602540 +v 0.0000000e+0 -1.00000000 0.0000000e+0 +g cone1_default +usemtl default +s 1 +f 5// 7// 6// +f 5// 8// 7// +f 6// 8// 5// +f 7// 8// 6// diff --git a/assets/models/unit_fire.obj b/assets/models/unit_fire.obj new file mode 100755 index 0000000..a00c63f --- /dev/null +++ b/assets/models/unit_fire.obj @@ -0,0 +1,111 @@ +# Exported from Wings 3D 2.1.5 +mtllib unit_fire.mtl +o idle +#36 vertices, 68 faces +v -9.7072365e-2 0.56526052 0.14813200 +v -5.1174828e-3 0.58241863 3.6241454e-2 +v -7.3432045e-2 0.41571136 8.8730558e-2 +v -2.7773366e-3 0.38195589 0.18768463 +v -0.16457846 0.28956454 0.14866615 +v -0.22256966 0.36820969 6.5821860e-2 +v -2.2042426e-3 0.20761891 0.17635056 +v -0.16376325 0.24789118 2.7255653e-2 +v -3.2828151e-3 -5.9558653e-2 -3.2466908e-2 +v -0.11705512 -1.8998070e-2 0.10033982 +v -5.2468113e-2 -0.37762396 0.11261478 +v -0.12733850 -0.38368582 0.11398771 +v -0.11232770 -0.31817914 4.0267488e-2 +v -0.18392516 0.29905284 0.36931274 +v -0.21375240 0.22504257 0.28526370 +v -0.16363894 0.20062898 0.33478576 +v -3.1666221e-3 0.58110829 0.22659559 +v -4.3491030e-3 0.40731243 4.3715603e-2 +v -1.6209207e-3 -0.12923391 0.10318519 +v -0.13664447 0.22269181 0.71114277 +v -6.2110567e-2 -0.72441694 1.6821488e-2 +v -4.2262828e-3 0.60741476 0.13309524 +v 8.9237988e-2 0.56599678 0.14622765 +v 6.5570994e-2 0.41626067 8.7309755e-2 +v 7.8519940e-2 0.28988820 0.20138750 +v 0.14416942 0.38159031 0.14693994 +v 0.17385655 0.30958720 9.0735796e-2 +v 8.1999016e-2 -1.8089508e-2 9.1851922e-2 +v 5.1369741e-2 -0.37721362 0.11155341 +v 0.12629811 -0.38268350 0.11139519 +v 0.10926638 -0.31730344 3.8002490e-2 +v 4.7935402e-2 0.20296119 0.35368779 +v 9.7607717e-2 0.13718946 0.30493926 +v 2.5761572e-2 0.15405508 0.25758703 +v -0.28779708 0.20832952 0.44720995 +v 6.1792415e-2 -0.72392731 1.5555028e-2 +g idle_default +usemtl default +s 1 +f 1// 22// 2// +f 2// 3// 1// +f 2// 24// 18// +f 3// 4// 1// +f 3// 8// 6// +f 4// 23// 17// +f 5// 3// 6// +f 5// 4// 3// +f 5// 10// 7// +f 6// 8// 15// +f 6// 14// 5// +f 7// 4// 5// +f 7// 25// 4// +f 7// 28// 25// +f 8// 9// 10// +f 8// 14// 16// +f 8// 18// 9// +f 9// 13// 10// +f 9// 29// 19// +f 10// 5// 8// +f 10// 19// 7// +f 11// 10// 12// +f 11// 12// 21// +f 11// 19// 10// +f 11// 21// 13// +f 12// 10// 13// +f 13// 9// 11// +f 13// 21// 12// +f 14// 6// 15// +f 14// 8// 5// +f 15// 20// 14// +f 16// 15// 8// +f 16// 20// 15// +f 17// 1// 4// +f 17// 22// 1// +f 17// 23// 22// +f 18// 3// 2// +f 18// 8// 3// +f 18// 26// 27// +f 18// 27// 9// +f 19// 11// 9// +f 19// 28// 7// +f 20// 16// 14// +f 22// 23// 2// +f 23// 4// 24// +f 23// 24// 2// +f 24// 4// 25// +f 25// 27// 32// +f 25// 32// 26// +f 26// 18// 24// +f 26// 24// 25// +f 27// 25// 28// +f 27// 26// 34// +f 28// 9// 27// +f 28// 19// 29// +f 28// 31// 9// +f 29// 9// 31// +f 30// 28// 29// +f 30// 36// 31// +f 31// 28// 30// +f 31// 36// 29// +f 32// 34// 35// +f 32// 35// 33// +f 33// 26// 32// +f 33// 34// 26// +f 33// 35// 34// +f 34// 32// 27// +f 36// 30// 29// diff --git a/assets/models/unit_idle.obj b/assets/models/unit_idle.obj new file mode 100755 index 0000000..c21ab82 --- /dev/null +++ b/assets/models/unit_idle.obj @@ -0,0 +1,111 @@ +# Exported from Wings 3D 2.1.5 +mtllib u42-idle.mtl +o idle +#36 vertices, 68 faces +v -9.7072365e-2 0.56526052 0.14813200 +v -5.1174828e-3 0.58241863 3.6241454e-2 +v -7.3432045e-2 0.41571136 8.8730558e-2 +v -2.7773366e-3 0.38195589 0.18768463 +v -0.16457846 0.28956454 0.14866615 +v -0.22256966 0.36820969 6.5821860e-2 +v -2.2042426e-3 0.20761891 0.17635056 +v -0.12240829 0.27200369 1.9776168e-2 +v -3.2828151e-3 -5.9558653e-2 -3.2466908e-2 +v -0.11705512 -1.8998070e-2 0.10033982 +v -5.2468113e-2 -0.37762396 0.11261478 +v -0.12733850 -0.38368582 0.11398771 +v -0.11232770 -0.31817914 4.0267488e-2 +v -0.26195311 6.1200154e-2 8.9171027e-2 +v -0.27269328 7.0984903e-2 2.8453086e-2 +v -0.19946210 8.9864434e-2 3.4271377e-3 +v -3.1666221e-3 0.58110829 0.22659559 +v -4.3491030e-3 0.40731243 4.3715603e-2 +v -1.6209207e-3 -0.12923391 0.10318519 +v -0.26237064 -0.27025472 0.23936610 +v -6.2110567e-2 -0.72441694 1.6821488e-2 +v -4.2262828e-3 0.60741476 0.13309524 +v 8.9237988e-2 0.56599678 0.14622765 +v 6.5570994e-2 0.41626067 8.7309755e-2 +v 0.15891751 0.29084293 0.14535957 +v 0.21457992 0.36993722 6.1353587e-2 +v 0.11426169 0.27293896 1.7357074e-2 +v 0.11285624 -1.8089508e-2 9.7989805e-2 +v 5.1369741e-2 -0.37721362 0.11155341 +v 0.12629811 -0.38268350 0.11139519 +v 0.10926638 -0.31730344 3.8002490e-2 +v 0.25685736 6.3250386e-2 8.3868066e-2 +v 0.26627654 7.3114801e-2 2.2944069e-2 +v 0.19240220 9.1413002e-2 -5.7825739e-4 +v 0.26296420 -0.26817871 0.23399645 +v 6.1792415e-2 -0.72392731 1.5555028e-2 +g idle_default +usemtl default +s 1 +f 1// 22// 2// +f 2// 3// 1// +f 2// 24// 18// +f 3// 4// 1// +f 3// 8// 6// +f 4// 23// 17// +f 5// 3// 6// +f 5// 4// 3// +f 5// 10// 7// +f 6// 8// 15// +f 6// 14// 5// +f 7// 4// 5// +f 7// 25// 4// +f 7// 28// 25// +f 8// 9// 10// +f 8// 14// 16// +f 8// 18// 9// +f 9// 13// 10// +f 9// 29// 19// +f 10// 5// 8// +f 10// 19// 7// +f 11// 10// 12// +f 11// 12// 21// +f 11// 19// 10// +f 11// 21// 13// +f 12// 10// 13// +f 13// 9// 11// +f 13// 21// 12// +f 14// 6// 15// +f 14// 8// 5// +f 15// 20// 14// +f 16// 15// 8// +f 16// 20// 15// +f 17// 1// 4// +f 17// 22// 1// +f 17// 23// 22// +f 18// 3// 2// +f 18// 8// 3// +f 18// 26// 27// +f 18// 27// 9// +f 19// 11// 9// +f 19// 28// 7// +f 20// 16// 14// +f 22// 23// 2// +f 23// 4// 24// +f 23// 24// 2// +f 24// 4// 25// +f 25// 27// 32// +f 25// 32// 26// +f 26// 18// 24// +f 26// 24// 25// +f 27// 25// 28// +f 27// 26// 34// +f 28// 9// 27// +f 28// 19// 29// +f 28// 31// 9// +f 29// 9// 31// +f 30// 28// 29// +f 30// 36// 31// +f 31// 28// 30// +f 31// 36// 29// +f 32// 34// 35// +f 32// 35// 33// +f 33// 26// 32// +f 33// 34// 26// +f 33// 35// 34// +f 34// 32// 27// +f 36// 30// 29// diff --git a/assets/models/unit_run_1.obj b/assets/models/unit_run_1.obj new file mode 100755 index 0000000..62cc958 --- /dev/null +++ b/assets/models/unit_run_1.obj @@ -0,0 +1,111 @@ +# Exported from Wings 3D 2.1.5 +mtllib u42-run-1.mtl +o run_1 +#36 vertices, 68 faces +v -9.5272919e-2 0.58320065 0.23895644 +v -3.3180374e-3 0.62435371 0.13350350 +v -7.1632599e-2 0.45021114 0.14836243 +v -9.7789112e-4 0.39568245 0.23756984 +v -0.17307984 0.32466544 0.13174644 +v -0.20495298 0.42235179 5.5243521e-2 +v -2.6982217e-2 0.25733845 0.18552924 +v -9.5805943e-2 0.33183820 1.9155900e-2 +v -3.2828150e-3 1.1936972e-2 -2.9445966e-2 +v -0.11705512 5.2497554e-2 0.10336076 +v -5.5121527e-2 -0.21726415 0.30762026 +v -0.12999191 -0.21814619 0.31377274 +v -0.11393341 -0.25917247 0.23816510 +v -0.23980691 0.24937442 -6.0965392e-2 +v -0.23273167 0.23590209 -0.12151453 +v -0.15540189 0.25233529 -0.13129183 +v -1.3671766e-3 0.58155046 0.31898745 +v -2.5496575e-3 0.45183419 0.10259941 +v -1.6209207e-3 -5.7738288e-2 0.10620614 +v -0.22503228 -2.6466381e-2 0.19543165 +v -6.2140773e-2 -0.49248177 0.54917297 +v -2.4268373e-3 0.62761985 0.23347747 +v 9.1037433e-2 0.58433460 0.23725856 +v 6.7370439e-2 0.45105716 0.14709568 +v 0.13784712 0.30642002 0.21923207 +v 0.21521175 0.39769622 0.17346542 +v 0.13166854 0.31848984 8.3160476e-2 +v 0.11285624 5.3406116e-2 0.10101075 +v 5.6280724e-2 -0.26007502 -2.0635962e-2 +v 0.13120909 -0.26515311 -2.2674963e-2 +v 0.11417736 -0.17843586 -6.8947620e-2 +v 0.21505817 0.24739267 0.31347123 +v 0.24150950 0.20354683 0.27775525 +v 0.18039399 0.17439735 0.24201011 +v 8.5574373e-2 0.14637362 0.54237953 +v 8.9212783e-2 -0.30204016 -0.43882211 +g run_1_default +usemtl default +s 1 +f 1// 22// 2// +f 2// 3// 1// +f 2// 24// 18// +f 3// 4// 1// +f 3// 8// 6// +f 4// 23// 17// +f 5// 3// 6// +f 5// 4// 3// +f 5// 10// 7// +f 6// 8// 15// +f 6// 14// 5// +f 7// 4// 5// +f 7// 25// 4// +f 7// 28// 25// +f 8// 9// 10// +f 8// 14// 16// +f 8// 18// 9// +f 9// 13// 10// +f 9// 29// 19// +f 10// 5// 8// +f 10// 19// 7// +f 11// 10// 12// +f 11// 12// 21// +f 11// 19// 10// +f 11// 21// 13// +f 12// 10// 13// +f 13// 9// 11// +f 13// 21// 12// +f 14// 6// 15// +f 14// 8// 5// +f 15// 20// 14// +f 16// 15// 8// +f 16// 20// 15// +f 17// 1// 4// +f 17// 22// 1// +f 17// 23// 22// +f 18// 3// 2// +f 18// 8// 3// +f 18// 26// 27// +f 18// 27// 9// +f 19// 11// 9// +f 19// 28// 7// +f 20// 16// 14// +f 22// 23// 2// +f 23// 4// 24// +f 23// 24// 2// +f 24// 4// 25// +f 25// 27// 32// +f 25// 32// 26// +f 26// 18// 24// +f 26// 24// 25// +f 27// 25// 28// +f 27// 26// 34// +f 28// 9// 27// +f 28// 19// 29// +f 29// 9// 31// +f 30// 9// 28// +f 30// 28// 29// +f 30// 36// 31// +f 31// 9// 30// +f 31// 36// 29// +f 32// 34// 35// +f 32// 35// 33// +f 33// 26// 32// +f 33// 34// 26// +f 33// 35// 34// +f 34// 32// 27// +f 36// 30// 29// diff --git a/assets/models/unit_run_2.obj b/assets/models/unit_run_2.obj new file mode 100755 index 0000000..673e560 --- /dev/null +++ b/assets/models/unit_run_2.obj @@ -0,0 +1,111 @@ +# Exported from Wings 3D 2.1.5 +mtllib u42-run-2.mtl +o run_2 +#36 vertices, 68 faces +v -9.4991472e-2 0.52373540 0.23964533 +v -3.0365897e-3 0.56488846 0.13419239 +v -7.1351151e-2 0.39074589 0.14905133 +v -6.9644348e-4 0.33621720 0.23825873 +v -0.17267823 0.26520019 0.15406434 +v -0.21436437 0.36288654 8.2434335e-2 +v -2.0762743e-2 0.19787320 0.18810538 +v -0.11093143 0.27237295 3.2264433e-2 +v -3.0013674e-3 -4.7528279e-2 -2.8757072e-2 +v -0.11677367 -6.9676967e-3 0.10404965 +v -6.1941435e-2 -0.36213984 0.21486963 +v -0.13681182 -0.36634357 0.21944779 +v -0.12075331 -0.35747908 0.13388442 +v -0.27214113 0.16564009 1.8179960e-2 +v -0.27311477 0.14229232 -3.9713862e-2 +v -0.19775045 0.15521696 -6.2045768e-2 +v -1.0857290e-3 0.52208521 0.31967635 +v -2.2682098e-3 0.39236894 0.10328831 +v -1.3394730e-3 -0.11720354 0.10689503 +v -0.21276320 -3.2220363e-2 0.25209224 +v -9.3144493e-2 -0.70483668 0.17970538 +v -2.1453897e-3 0.56815460 0.23416636 +v 9.1318881e-2 0.52486934 0.23794745 +v 6.7651887e-2 0.39159191 0.14778457 +v 0.14707201 0.24695477 0.19977100 +v 0.21772350 0.33823097 0.14419908 +v 0.12299816 0.25902459 6.5703468e-2 +v 0.11313769 -6.0591343e-3 0.10169964 +v 5.6562172e-2 -0.34172597 8.3847930e-2 +v 0.13149054 -0.34717436 8.4357499e-2 +v 0.11445881 -0.29122596 3.5440300e-3 +v 0.25704387 0.13904658 0.16957344 +v 0.27855275 8.9755721e-2 0.13786319 +v 0.21325613 5.6754116e-2 0.11528535 +v 0.15532922 -3.1631277e-2 0.40939898 +v 8.9494231e-2 -0.52086355 -0.28286119 +g run_2_default +usemtl default +s 1 +f 1// 22// 2// +f 2// 3// 1// +f 2// 24// 18// +f 3// 4// 1// +f 3// 8// 6// +f 4// 23// 17// +f 5// 3// 6// +f 5// 4// 3// +f 5// 10// 7// +f 6// 8// 15// +f 6// 14// 5// +f 7// 4// 5// +f 7// 25// 4// +f 7// 28// 25// +f 8// 9// 10// +f 8// 14// 16// +f 8// 18// 9// +f 9// 13// 10// +f 9// 29// 19// +f 10// 5// 8// +f 10// 19// 7// +f 11// 10// 12// +f 11// 12// 21// +f 11// 19// 10// +f 11// 21// 13// +f 12// 10// 13// +f 13// 9// 11// +f 13// 21// 12// +f 14// 6// 15// +f 14// 8// 5// +f 15// 20// 14// +f 16// 15// 8// +f 16// 20// 15// +f 17// 1// 4// +f 17// 22// 1// +f 17// 23// 22// +f 18// 3// 2// +f 18// 8// 3// +f 18// 26// 27// +f 18// 27// 9// +f 19// 11// 9// +f 19// 28// 7// +f 20// 16// 14// +f 22// 23// 2// +f 23// 4// 24// +f 23// 24// 2// +f 24// 4// 25// +f 25// 27// 32// +f 25// 32// 26// +f 26// 18// 24// +f 26// 24// 25// +f 27// 25// 28// +f 27// 26// 34// +f 28// 9// 27// +f 28// 19// 29// +f 29// 9// 31// +f 30// 9// 28// +f 30// 28// 29// +f 30// 36// 31// +f 31// 9// 30// +f 31// 36// 29// +f 32// 34// 35// +f 32// 35// 33// +f 33// 26// 32// +f 33// 34// 26// +f 33// 35// 34// +f 34// 32// 27// +f 36// 30// 29// diff --git a/assets/models/unit_run_3.obj b/assets/models/unit_run_3.obj new file mode 100755 index 0000000..e70a356 --- /dev/null +++ b/assets/models/unit_run_3.obj @@ -0,0 +1,111 @@ +# Exported from Wings 3D 2.1.5 +mtllib u42-run-3.mtl +o run_3 +#36 vertices, 68 faces +v -9.7534954e-2 0.58537971 0.23727152 +v -5.5800717e-3 0.62207596 0.13434820 +v -7.3894633e-2 0.44530355 0.15807461 +v -3.2399255e-3 0.39839816 0.25151563 +v -0.14811650 0.30785729 0.23172695 +v -0.22184769 0.39518773 0.17386227 +v 2.9874070e-2 0.25219372 0.18896602 +v -0.13324204 0.30880016 9.5796106e-2 +v -3.0261434e-3 1.2834357e-2 -2.8933793e-2 +v -0.10962990 5.0988036e-2 0.10517160 +v -4.1698825e-2 -0.26559037 -1.8795665e-2 +v -0.11656921 -0.27177960 -1.9365307e-2 +v -0.10155841 -0.18668084 -6.9205025e-2 +v -0.24752637 0.24555925 0.31401265 +v -0.27201893 0.22587890 0.26943932 +v -0.20708582 0.17323236 0.24465303 +v -3.6292110e-3 0.58033840 0.31604327 +v -4.8116918e-3 0.45317336 0.10171045 +v 4.8726959e-5 -5.7632780e-2 0.10082565 +v -0.15387665 0.14921342 0.53804817 +v -8.6656471e-2 -0.30440046 -0.43683459 +v -4.6888717e-3 0.62918786 0.22811015 +v 8.8775399e-2 0.58636824 0.23548505 +v 6.5108405e-2 0.45331084 0.14611670 +v 0.17212974 0.33058228 0.13766338 +v 0.20940429 0.42167997 5.5669264e-2 +v 0.10220107 0.32864714 2.0166273e-2 +v 0.11389002 5.2669771e-2 9.9938702e-2 +v 5.2010784e-2 -0.22039388 0.29971756 +v 0.12924803 -0.21231946 0.30276019 +v 0.11527123 -0.26319363 0.23743150 +v 0.22868222 0.25165315 -6.1196965e-2 +v 0.22720815 0.23037277 -0.11930067 +v 0.15008199 0.25256058 -0.13060470 +v 0.21252622 -3.0157464e-2 0.20240516 +v 6.2049086e-2 -0.49335414 0.55060042 +g run_3_default +usemtl default +s 1 +f 1// 22// 2// +f 2// 3// 1// +f 2// 24// 18// +f 3// 4// 1// +f 3// 8// 6// +f 4// 23// 17// +f 5// 3// 6// +f 5// 4// 3// +f 5// 10// 7// +f 6// 8// 15// +f 6// 14// 5// +f 7// 4// 5// +f 7// 25// 4// +f 7// 28// 25// +f 8// 9// 10// +f 8// 14// 16// +f 8// 18// 9// +f 9// 13// 10// +f 9// 29// 19// +f 10// 5// 8// +f 10// 19// 7// +f 11// 10// 12// +f 11// 12// 21// +f 11// 19// 10// +f 11// 21// 13// +f 12// 10// 13// +f 13// 9// 11// +f 13// 21// 12// +f 14// 6// 15// +f 14// 8// 5// +f 15// 20// 14// +f 16// 15// 8// +f 16// 20// 15// +f 17// 1// 4// +f 17// 22// 1// +f 17// 23// 22// +f 18// 3// 2// +f 18// 8// 3// +f 18// 27// 9// +f 19// 11// 9// +f 19// 28// 7// +f 20// 16// 14// +f 22// 23// 2// +f 23// 4// 24// +f 23// 24// 2// +f 24// 4// 25// +f 24// 27// 18// +f 25// 27// 32// +f 25// 32// 26// +f 26// 24// 25// +f 26// 27// 24// +f 27// 25// 28// +f 27// 33// 34// +f 28// 9// 27// +f 28// 19// 29// +f 28// 31// 9// +f 29// 9// 31// +f 30// 28// 29// +f 30// 36// 31// +f 31// 28// 30// +f 31// 36// 29// +f 32// 34// 35// +f 32// 35// 33// +f 33// 26// 32// +f 33// 27// 26// +f 33// 35// 34// +f 34// 32// 27// +f 36// 30// 29// diff --git a/assets/models/unit_run_4.obj b/assets/models/unit_run_4.obj new file mode 100755 index 0000000..6fdc3a1 --- /dev/null +++ b/assets/models/unit_run_4.obj @@ -0,0 +1,111 @@ +# Exported from Wings 3D 2.1.5 +mtllib u42-run-4.mtl +o run_4 +#36 vertices, 68 faces +v -8.7448640e-2 0.52260968 0.23811789 +v 1.1106415e-2 0.56619990 0.13601636 +v -5.6652628e-2 0.39253244 0.14723325 +v 4.7983532e-3 0.33685461 0.23791788 +v -0.14201056 0.24676130 0.19890273 +v -0.21395473 0.33766742 0.14321628 +v 1.5828108e-2 0.25132493 0.18909199 +v -0.11559322 0.25643607 6.3974881e-2 +v 5.8659423e-3 -4.6614671e-2 -2.8852696e-2 +v -0.12367586 5.0119248e-2 0.10529757 +v -5.9869043e-2 -0.34160511 8.3280232e-2 +v -0.13473943 -0.34779433 8.2710589e-2 +v -0.11085266 -0.29407513 4.8260947e-3 +v -0.25132952 0.13731816 0.17143274 +v -0.27232641 8.9198561e-2 0.13324630 +v -0.20953794 5.7890222e-2 0.11187209 +v 5.7439754e-3 0.52158520 0.32087826 +v 1.4994713e-2 0.38418936 0.11355618 +v 9.5050338e-3 -0.11737256 9.6571469e-2 +v -0.15147117 -2.8967763e-2 0.40656236 +v -8.6836875e-2 -0.51910125 -0.27711023 +v 8.1007774e-3 0.56742535 0.23507916 +v 0.10858180 0.52745008 0.23670572 +v 7.4975063e-2 0.38772831 0.14527201 +v 0.17898781 0.26745693 0.15584951 +v 0.22056911 0.36000702 8.3859511e-2 +v 0.11885495 0.26917230 2.9631907e-2 +v 9.9844063e-2 4.2294354e-2 9.3354108e-2 +v 6.9120406e-2 -0.36382724 0.20320527 +v 0.14171710 -0.36592997 0.21060239 +v 0.12317708 -0.35863673 0.13900796 +v 0.27620662 0.16435731 1.6758612e-2 +v 0.28008560 0.14336818 -3.9632239e-2 +v 0.20394231 0.15390316 -6.2704812e-2 +v 0.21981481 -3.0190650e-2 0.24883182 +v 9.2836181e-2 -0.69912263 0.18131087 +g run_4_default +usemtl default +s 1 +f 1// 22// 2// +f 2// 3// 1// +f 2// 24// 18// +f 3// 4// 1// +f 3// 8// 6// +f 4// 23// 17// +f 5// 3// 6// +f 5// 4// 3// +f 5// 10// 7// +f 6// 8// 15// +f 6// 14// 5// +f 7// 4// 5// +f 7// 25// 4// +f 7// 28// 25// +f 8// 9// 10// +f 8// 14// 16// +f 8// 18// 9// +f 9// 13// 10// +f 9// 29// 19// +f 10// 5// 8// +f 10// 19// 7// +f 11// 10// 12// +f 11// 12// 21// +f 11// 19// 10// +f 11// 21// 13// +f 12// 10// 13// +f 13// 9// 11// +f 13// 21// 12// +f 14// 6// 15// +f 14// 8// 5// +f 15// 20// 14// +f 16// 15// 8// +f 16// 20// 15// +f 17// 1// 4// +f 17// 22// 1// +f 17// 23// 22// +f 18// 3// 2// +f 18// 8// 3// +f 18// 26// 27// +f 18// 27// 9// +f 19// 11// 9// +f 19// 28// 7// +f 20// 16// 14// +f 22// 23// 2// +f 23// 4// 24// +f 23// 24// 2// +f 24// 4// 25// +f 25// 27// 32// +f 25// 32// 26// +f 26// 18// 24// +f 26// 24// 25// +f 27// 25// 28// +f 27// 26// 34// +f 28// 9// 27// +f 28// 19// 29// +f 29// 9// 31// +f 30// 9// 28// +f 30// 28// 29// +f 30// 36// 31// +f 31// 9// 30// +f 31// 36// 29// +f 32// 34// 35// +f 32// 35// 33// +f 33// 26// 32// +f 33// 34// 26// +f 33// 35// 34// +f 34// 32// 27// +f 36// 30// 29// diff --git a/assets/textures/0.png b/assets/textures/0.png new file mode 100644 index 0000000000000000000000000000000000000000..0a4d05624f35882058ae0d25cd5146afa918dc02 GIT binary patch literal 13141 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 UvovPM0Du8$s_CiLDZ^s_19|LeU;qFB literal 0 HcmV?d00001 diff --git a/assets/textures/1.png b/assets/textures/1.png new file mode 100644 index 0000000000000000000000000000000000000000..7d0873739fd5c285c9d94ca7d148dda036f6f546 GIT binary patch literal 11744 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 literal 0 HcmV?d00001 diff --git a/assets/textures/11.png b/assets/textures/11.png new file mode 100644 index 0000000000000000000000000000000000000000..7e8f360e7374f6a5c25e0614f1066806d464cedd GIT binary patch literal 1644 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 literal 0 HcmV?d00001 diff --git a/assets/textures/16.png b/assets/textures/16.png new file mode 100644 index 0000000000000000000000000000000000000000..738aea77debfc04ed5c4c73f869dd288cb8bad69 GIT binary patch literal 3145 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 literal 0 HcmV?d00001 diff --git a/assets/textures/2.png b/assets/textures/2.png new file mode 100644 index 0000000000000000000000000000000000000000..ff34bfefa469417678fd783495181e6a897dd238 GIT binary patch literal 11639 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 literal 0 HcmV?d00001 diff --git a/assets/textures/20.png b/assets/textures/20.png new file mode 100644 index 0000000000000000000000000000000000000000..e10882d0534feb3af893c3acf9801e4eefb3bfac GIT binary patch literal 3326 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 IM6N<$f~CV`YXATM literal 0 HcmV?d00001 diff --git a/assets/textures/21.png b/assets/textures/21.png new file mode 100644 index 0000000000000000000000000000000000000000..f53b849991cd40a647b646398f03e6b3fbfbefcb GIT binary patch literal 7093 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 JS*~Fh`9FG!TnGRF literal 0 HcmV?d00001 diff --git a/assets/textures/22.png b/assets/textures/22.png new file mode 100644 index 0000000000000000000000000000000000000000..f87026f74c7e008d5da5ee2621e29ade145e1a99 GIT binary patch literal 10609 zcmWlfXCRyH+s2>2wq{FF)UMf9tVV6E)~Y>PM6B3qMI-h|ACID`RWyhZw3OPLqSO|< zXaunmd)D6i-tPzDi`>aI&ht2a$B8yJd~u7Oi~gT~{<)>2t??50{p|mLXsLnMA~(eB zKmXkOM@QqiX<(*VlN)kss%~csqfo~ha1gipo8dOCMuMf1z)%0ATEgrGX@C6kYL0x| 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 literal 0 HcmV?d00001 diff --git a/assets/textures/25.png b/assets/textures/25.png new file mode 100644 index 0000000000000000000000000000000000000000..b017c13111b9ccb280206490d9a313a8007dcf4d GIT binary patch literal 2620 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 literal 0 HcmV?d00001 diff --git a/assets/textures/28.png b/assets/textures/28.png new file mode 100644 index 0000000000000000000000000000000000000000..ee060ad51d4469abbb4fbb42dde9d648a68498bd GIT binary patch literal 2387 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 FV1g>RRvG{R literal 0 HcmV?d00001 diff --git a/assets/textures/6.png b/assets/textures/6.png new file mode 100644 index 0000000000000000000000000000000000000000..389099eb460d0c6b2e3c737fb7a98d21ca76ad22 GIT binary patch literal 2857 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 N002ovPDHLkV1md{g#Z8m literal 0 HcmV?d00001 diff --git a/assets/textures/9.png b/assets/textures/9.png new file mode 100644 index 0000000000000000000000000000000000000000..56238277c9a6de7ced812efb76c87a515779ebf7 GIT binary patch literal 2916 zcmV-q3!C(bP)@%)1|`h{7EkwSz0Qv1a$YI;*l(`}oTij?|=aQ6*4%IP)gnqRq`!jX>$K z(?=}&A9#CJC0dENl0YDLxp;MgCyO|90e{itwq7Gt1l)yyJr}sXtl=$1Vspg2_mN5( zsvL?4+gNgSUd3KZl&Ozn%Dlfm#aT}{6cLX8$h+%PTvKJAdia*aO}&O~$ds{#V=QT0 z*02nfLz&>|Gd{jM!?QIGMTBe0oYhWnER7=Z*#-u$PEV-hu}iFvNX-!&rN^O6$n8fW zt&6{GQ)VGMeZ~9m?PYUz((of*=rJGh_^i6x7KrVdrBw^xQjNPr4p~Ze2FxAcehkT zp~*(=V$a+7%NC7`8j;$;TXqQK9{B;#eUvemSnA#&ZS2bKy;!teKb{=o9YS`wAG7WL`IoFppY;DR@zQHyW>K9d9 z>xeN^o71?c;Tm&_G$Px%)Xz_-?2DMx9Fv+8yroE<_+;jg)EE)S9g1v6Vmy%OBSN{u zp-f240pAmcvG9&8I?}FiBtoS_5eFpZfJhq=X%7^MPonpaR9uQ2|C{lTy-)Y^dn#q> zlUg&}g@7a7W9llgF~nIk@fP9#)-Dgw^@9#`sc+c;&T3Ixjz z-lD_#>ng!gAdova(h(yYMc`X((7SujY3+nq9}y@IxQjNo^(vdy5d;3R!_|3}&1!(R zIL^F$QzekQe2q1R_cv71$fQWNm}`Z`c@=v-r$~HUeZtLE71v%<>;q3GTWA#WLJGkbO>x(M3p>il=UcP2rzBxHc zalG!5ntcLUV4qmT#+cL^5h!i4NN2n15bJ%mT919PBQ_rR`{3}#?(#1BNOc;xc3$8G(TKoQv}B7q|E;r5K(dPu1D z@fLU7Hfls_m&_S6YTfY5b&ZYMBb2-N%NFk%H8v{|chMwR+;e$;^a^j$#+3x+e4H z?1ZlHnRK(JCw%7e^$G3!J7(h^1Mws0uPStfJLZ!fg3#u)dYmUs+F0t4t2Y%Y`^-CP z`A_|Re#%IVF|l!^&Y?_6jRA={VypFd-lvq#l>hz~F%sTUCO$j;sP&=R<*C?Ex)O;w zWTS{2@_@pgkXSRKRgZlZkXn!YC@qGq_f)=rJCIpNFL0$J&!d%yFAF$x0mszH>WB|ly5pvPN~nl@Pu6_?rB0*W|MrF4nvz*F0=dIJ z->_Zx$jlMGEKnvM+w}u~<|gCLJNEgO%$kx~6GBCx%r=zHBZ)COX2K$(utsF&m_Qae zlsk6%n7;~>QTv9hY493|qG}E~@ObK8_?1DqYTBRoSe1gtCYu zwP{=&bs$u_gmR1eMU80H=SS%ye!itr#wO{`$1!ByygI>LjmeTNjy~t|O%>Nv$m0OZ zTyuR{!_t>LKjpl9d!lhs#W2>Cd5pc5Xk6BC44E>qa7>kp*Hz5bj64Z&trd-*`5;ds z{(AXF^`t`OkO$=Ugxs1Cs(rpb=VbPb%p4LZeV&Sx!kYc;4LzQU4Lg0rzrOg0pBiLa zi_99c_a(O4kS~XV+!_-b19n=Ebfb|PLvs6(oz`ccN95L&zn@%$57$)6A|ddVsX4}7wg_Yq$6B*nAB`%I``G$|*ql*%5}$u<;Fv2CV~8WQ@D^QMTPHU9cv2fj zYGP?qc6yIM=@QCaob{B{81s@^-2Hk*rQQ6b#0;YkYZ1F|?nUu#UYT309odPB2ze$~45*CcM8s!!;Gk z#Km4q+}2OAv>E#>#IaP~H%@U(l{8vY#1^m5PN?j&4Y~FBlcxfC?2(#dw(B0D+~KK+ zNzEzS^^i#I@x0H-?HT`h$>}%WlWuL|_25|FRDmK1h}V5GYs^ONAM?U`z)tVsFPfBD zM63_^_t%KQ{d+3^c-ix#uy{#z4w1^C-13sG`JSvfY-INNj(_dfbJDoD$@mFE< zKY!&kf3H)>@MVtCXl~C>AEn1k50 build/l + +# Pack models +php pack_model.php assets/models/boulder.obj build/boulder.rmf +php pack_model.php assets/models/q.obj build/q.rmf +php pack_model.php assets/models/grenade.obj build/grenade.rmf +php pack_model.php \ + assets/models/hound_run_1.obj \ + assets/models/hound_run_2.obj \ + build/hound.rmf +php pack_model.php \ + assets/models/unit_idle.obj \ + assets/models/unit_run_1.obj \ + assets/models/unit_run_2.obj \ + assets/models/unit_run_3.obj \ + assets/models/unit_run_4.obj \ + assets/models/unit_fire.obj \ + build/unit.rmf + +php pack_model.php assets/models/box.obj build/box.rmf +php pack_model.php assets/models/nailgun.obj build/nailgun.rmf +php pack_model.php \ + assets/models/torch_1.obj \ + assets/models/torch_2.obj \ + assets/models/torch_3.obj \ + build/torch.rmf + +# Concat all models into one file +cat \ + build/boulder.rmf \ + build/unit.rmf \ + build/grenade.rmf \ + build/q.rmf \ + build/hound.rmf \ + build/box.rmf \ + build/nailgun.rmf \ + build/torch.rmf \ + > build/m + + +# Concat js Source +cat \ + source/wrap_pre.js \ + source/document.js \ + source/textures.js \ + source/music.js \ + source/audio.js \ + source/input.js \ + source/ttt.js \ + source/math_utils.js \ + source/renderer.js \ + source/model.js \ + source/map.js \ + source/entity.js \ + source/entity_player.js \ + source/entity_door.js \ + source/entity_light.js \ + source/entity_torch.js \ + source/entity_barrel.js \ + source/entity_particle.js \ + source/entity_projectile_grenade.js \ + source/entity_projectile_nail.js \ + source/entity_projectile_plasma.js \ + source/entity_projectile_gib.js \ + source/entity_projectile_shell.js \ + source/entity_enemy.js \ + source/entity_enemy_grunt.js \ + source/entity_enemy_enforcer.js \ + source/entity_enemy_ogre.js \ + source/entity_enemy_zombie.js \ + source/entity_enemy_hound.js \ + source/entity_pickup.js \ + source/entity_pickup_key.js \ + source/entity_pickup_nailgun.js \ + source/entity_pickup_grenadelauncher.js \ + source/entity_pickup_health.js \ + source/entity_pickup_nails.js \ + source/entity_pickup_grenades.js \ + source/entity_trigger_level.js \ + source/weapons.js \ + source/game.js \ + source/main.js \ + source/wrap_post.js \ + > build/game.js + + +# Compress WebGL calls, remove DEBUG[...] +php pack_js.php build/game.js > build/game.packed.js + +# Uglify JS +npx uglify-js build/game.packed.js \ + --compress --mangle toplevel -c --beautify --mangle-props regex=/^_/ \ + -o build/game.min.beauty.js + +npx uglify-js build/game.packed.js \ + --compress --mangle toplevel --mangle-props regex=/^_/ \ + -o build/game.min.js + +npx roadroller -Zab14 -Zlr1113 -Zmd16 -Zpr14 -S0,1,2,3,6,7,13,21,25,50,235,333 build/game.min.js -o build/game.roadrolled.js + +# Embed source into HTML +sed -e '/GAME_SOURCE/{r build/game.roadrolled.js' -e 'd}' source/html_template.html > build/index.html + +# Build ZIP +rm -f -- build/game.zip +cd build +zip game.zip index.html l m +cd .. + +advzip -z -4 build/game.zip +ls -la build/ diff --git a/build/dummy.txt b/build/dummy.txt new file mode 100644 index 0000000..2995a4d --- /dev/null +++ b/build/dummy.txt @@ -0,0 +1 @@ +dummy \ No newline at end of file diff --git a/index.html b/index.html new file mode 100755 index 0000000..ab7bfa2 --- /dev/null +++ b/index.html @@ -0,0 +1,55 @@ + + + + Q1K3 + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/pack_js.php b/pack_js.php new file mode 100644 index 0000000..0e86c4e --- /dev/null +++ b/pack_js.php @@ -0,0 +1,449 @@ + 35721, + 'ACTIVE_ATTRIBUTE_MAX_LENGTH' => 35722, + 'ACTIVE_TEXTURE' => 34016, + 'ACTIVE_UNIFORMS' => 35718, + 'ACTIVE_UNIFORM_MAX_LENGTH' => 35719, + 'ALIASED_LINE_WIDTH_RANGE' => 33902, + 'ALIASED_POINT_SIZE_RANGE' => 33901, + 'ALPHA' => 6406, + 'ALPHA_BITS' => 3413, + 'ALWAYS' => 519, + 'ARRAY_BUFFER' => 34962, + 'ARRAY_BUFFER_BINDING' => 34964, + 'ATTACHED_SHADERS' => 35717, + 'BACK' => 1029, + 'BLEND' => 3042, + 'BLEND_COLOR' => 32773, + 'BLEND_DST_ALPHA' => 32970, + 'BLEND_DST_RGB' => 32968, + 'BLEND_EQUATION' => 32777, + 'BLEND_EQUATION_ALPHA' => 34877, + 'BLEND_EQUATION_RGB' => 32777, + 'BLEND_SRC_ALPHA' => 32971, + 'BLEND_SRC_RGB' => 32969, + 'BLUE_BITS' => 3412, + 'BOOL' => 35670, + 'BOOL_VEC2' => 35671, + 'BOOL_VEC3' => 35672, + 'BOOL_VEC4' => 35673, + 'BROWSER_DEFAULT_WEBGL' => 37444, + 'BUFFER_SIZE' => 34660, + 'BUFFER_USAGE' => 34661, + 'BYTE' => 5120, + 'CCW' => 2305, + 'CLAMP_TO_EDGE' => 33071, + 'COLOR_ATTACHMENT0' => 36064, + 'COLOR_BUFFER_BIT' => 16384, + 'COLOR_CLEAR_VALUE' => 3106, + 'COLOR_WRITEMASK' => 3107, + 'COMPILE_STATUS' => 35713, + 'COMPRESSED_TEXTURE_FORMATS' => 34467, + 'CONSTANT_ALPHA' => 32771, + 'CONSTANT_COLOR' => 32769, + 'CONTEXT_LOST_WEBGL' => 37442, + 'CULL_FACE' => 2884, + 'CULL_FACE_MODE' => 2885, + 'CURRENT_PROGRAM' => 35725, + 'CURRENT_VERTEX_ATTRIB' => 34342, + 'CW' => 2304, + 'DECR' => 7683, + 'DECR_WRAP' => 34056, + 'DELETE_STATUS' => 35712, + 'DEPTH_ATTACHMENT' => 36096, + 'DEPTH_BITS' => 3414, + 'DEPTH_BUFFER_BIT' => 256, + 'DEPTH_CLEAR_VALUE' => 2931, + 'DEPTH_COMPONENT' => 6402, + 'DEPTH_COMPONENT16' => 33189, + 'DEPTH_FUNC' => 2932, + 'DEPTH_RANGE' => 2928, + 'DEPTH_STENCIL' => 34041, + 'DEPTH_STENCIL_ATTACHMENT' => 33306, + 'DEPTH_TEST' => 2929, + 'DEPTH_WRITEMASK' => 2930, + 'DITHER' => 3024, + 'DONT_CARE' => 4352, + 'DST_ALPHA' => 772, + 'DST_COLOR' => 774, + 'DYNAMIC_DRAW' => 35048, + 'ELEMENT_ARRAY_BUFFER' => 34963, + 'ELEMENT_ARRAY_BUFFER_BINDING' => 34965, + 'EQUAL' => 514, + 'FASTEST' => 4353, + 'FLOAT' => 5126, + 'FLOAT_MAT2' => 35674, + 'FLOAT_MAT3' => 35675, + 'FLOAT_MAT4' => 35676, + 'FLOAT_VEC2' => 35664, + 'FLOAT_VEC3' => 35665, + 'FLOAT_VEC4' => 35666, + 'FRAGMENT_SHADER' => 35632, + 'FRAMEBUFFER' => 36160, + 'FRAMEBUFFER_ATTACHMENT_OBJECT_NAME' => 36049, + 'FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE' => 36048, + 'FRAMEBUFFER_ATTACHMENT_TEXTURE_CUBE_MAP_FACE' => 36051, + 'FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL' => 36050, + 'FRAMEBUFFER_BINDING' => 36006, + 'FRAMEBUFFER_COMPLETE' => 36053, + 'FRAMEBUFFER_INCOMPLETE_ATTACHMENT' => 36054, + 'FRAMEBUFFER_INCOMPLETE_DIMENSIONS' => 36057, + 'FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT' => 36055, + 'FRAMEBUFFER_UNSUPPORTED' => 36061, + 'FRONT' => 1028, + 'FRONT_AND_BACK' => 1032, + 'FRONT_FACE' => 2886, + 'FUNC_ADD' => 32774, + 'FUNC_REVERSE_SUBTRACT' => 32779, + 'FUNC_SUBTRACT' => 32778, + 'GENERATE_MIPMAP_HINT' => 33170, + 'GEQUAL' => 518, + 'GREATER' => 516, + 'GREEN_BITS' => 3411, + 'HIGH_FLOAT' => 36338, + 'HIGH_INT' => 36341, + 'INCR' => 7682, + 'INCR_WRAP' => 34055, + 'INFO_LOG_LENGTH' => 35716, + 'INT' => 5124, + 'INT_VEC2' => 35667, + 'INT_VEC3' => 35668, + 'INT_VEC4' => 35669, + 'INVALID_ENUM' => 1280, + 'INVALID_FRAMEBUFFER_OPERATION' => 1286, + 'INVALID_OPERATION' => 1282, + 'INVALID_VALUE' => 1281, + 'INVERT' => 5386, + 'KEEP' => 7680, + 'LEQUAL' => 515, + 'LESS' => 513, + 'LINEAR' => 9729, + 'LINEAR_MIPMAP_LINEAR' => 9987, + 'LINEAR_MIPMAP_NEAREST' => 9985, + 'LINES' => 1, + 'LINE_LOOP' => 2, + 'LINE_STRIP' => 3, + 'LINE_WIDTH' => 2849, + 'LINK_STATUS' => 35714, + 'LOW_FLOAT' => 36336, + 'LOW_INT' => 36339, + 'LUMINANCE' => 6409, + 'LUMINANCE_ALPHA' => 6410, + 'MAX_COMBINED_TEXTURE_IMAGE_UNITS' => 35661, + 'MAX_CUBE_MAP_TEXTURE_SIZE' => 34076, + 'MAX_FRAGMENT_UNIFORM_VECTORS' => 36349, + 'MAX_RENDERBUFFER_SIZE' => 34024, + 'MAX_TEXTURE_IMAGE_UNITS' => 34930, + 'MAX_TEXTURE_SIZE' => 3379, + 'MAX_VARYING_VECTORS' => 36348, + 'MAX_VERTEX_ATTRIBS' => 34921, + 'MAX_VERTEX_TEXTURE_IMAGE_UNITS' => 35660, + 'MAX_VERTEX_UNIFORM_VECTORS' => 36347, + 'MAX_VIEWPORT_DIMS' => 3386, + 'MEDIUM_FLOAT' => 36337, + 'MEDIUM_INT' => 36340, + 'MIRRORED_REPEAT' => 33648, + 'NEAREST' => 9728, + 'NEAREST_MIPMAP_LINEAR' => 9986, + 'NEAREST_MIPMAP_NEAREST' => 9984, + 'NEVER' => 512, + 'NICEST' => 4354, + 'NONE' => 0, + 'NOTEQUAL' => 517, + 'NO_ERROR' => 0, + 'NUM_COMPRESSED_TEXTURE_FORMATS' => 34466, + 'ONE' => 1, + 'ONE_MINUS_CONSTANT_ALPHA' => 32772, + 'ONE_MINUS_CONSTANT_COLOR' => 32770, + 'ONE_MINUS_DST_ALPHA' => 773, + 'ONE_MINUS_DST_COLOR' => 775, + 'ONE_MINUS_SRC_ALPHA' => 771, + 'ONE_MINUS_SRC_COLOR' => 769, + 'OUT_OF_MEMORY' => 1285, + 'PACK_ALIGNMENT' => 3333, + 'POINTS' => 0, + 'POLYGON_OFFSET_FACTOR' => 32824, + 'POLYGON_OFFSET_FILL' => 32823, + 'POLYGON_OFFSET_UNITS' => 10752, + 'RED_BITS' => 3410, + 'RENDERBUFFER' => 36161, + 'RENDERBUFFER_ALPHA_SIZE' => 36179, + 'RENDERBUFFER_BINDING' => 36007, + 'RENDERBUFFER_BLUE_SIZE' => 36178, + 'RENDERBUFFER_DEPTH_SIZE' => 36180, + 'RENDERBUFFER_GREEN_SIZE' => 36177, + 'RENDERBUFFER_HEIGHT' => 36163, + 'RENDERBUFFER_INTERNAL_FORMAT' => 36164, + 'RENDERBUFFER_RED_SIZE' => 36176, + 'RENDERBUFFER_STENCIL_SIZE' => 36181, + 'RENDERBUFFER_WIDTH' => 36162, + 'RENDERER' => 7937, + 'REPEAT' => 10497, + 'REPLACE' => 7681, + 'RGB' => 6407, + 'RGB5_A1' => 32855, + 'RGB565' => 36194, + 'RGBA' => 6408, + 'RGBA4' => 32854, + 'SAMPLER_2D' => 35678, + 'SAMPLER_CUBE' => 35680, + 'SAMPLES' => 32937, + 'SAMPLE_ALPHA_TO_COVERAGE' => 32926, + 'SAMPLE_BUFFERS' => 32936, + 'SAMPLE_COVERAGE' => 32928, + 'SAMPLE_COVERAGE_INVERT' => 32939, + 'SAMPLE_COVERAGE_VALUE' => 32938, + 'SCISSOR_BOX' => 3088, + 'SCISSOR_TEST' => 3089, + 'SHADER_COMPILER' => 36346, + 'SHADER_SOURCE_LENGTH' => 35720, + 'SHADER_TYPE' => 35663, + 'SHADING_LANGUAGE_VERSION' => 35724, + 'SHORT' => 5122, + 'SRC_ALPHA' => 770, + 'SRC_ALPHA_SATURATE' => 776, + 'SRC_COLOR' => 768, + 'STATIC_DRAW' => 35044, + 'STENCIL_ATTACHMENT' => 36128, + 'STENCIL_BACK_FAIL' => 34817, + 'STENCIL_BACK_FUNC' => 34816, + 'STENCIL_BACK_PASS_DEPTH_FAIL' => 34818, + 'STENCIL_BACK_PASS_DEPTH_PASS' => 34819, + 'STENCIL_BACK_REF' => 36003, + 'STENCIL_BACK_VALUE_MASK' => 36004, + 'STENCIL_BACK_WRITEMASK' => 36005, + 'STENCIL_BITS' => 3415, + 'STENCIL_BUFFER_BIT' => 1024, + 'STENCIL_CLEAR_VALUE' => 2961, + 'STENCIL_FAIL' => 2964, + 'STENCIL_FUNC' => 2962, + 'STENCIL_INDEX' => 6401, + 'STENCIL_INDEX8' => 36168, + 'STENCIL_PASS_DEPTH_FAIL' => 2965, + 'STENCIL_PASS_DEPTH_PASS' => 2966, + 'STENCIL_REF' => 2967, + 'STENCIL_TEST' => 2960, + 'STENCIL_VALUE_MASK' => 2963, + 'STENCIL_WRITEMASK' => 2968, + 'STREAM_DRAW' => 35040, + 'SUBPIXEL_BITS' => 3408, + 'TEXTURE' => 5890, + 'TEXTURE0' => 33984, + 'TEXTURE1' => 33985, + 'TEXTURE2' => 33986, + 'TEXTURE3' => 33987, + 'TEXTURE4' => 33988, + 'TEXTURE5' => 33989, + 'TEXTURE6' => 33990, + 'TEXTURE7' => 33991, + 'TEXTURE8' => 33992, + 'TEXTURE9' => 33993, + 'TEXTURE10' => 33994, + 'TEXTURE11' => 33995, + 'TEXTURE12' => 33996, + 'TEXTURE13' => 33997, + 'TEXTURE14' => 33998, + 'TEXTURE15' => 33999, + 'TEXTURE16' => 34000, + 'TEXTURE17' => 34001, + 'TEXTURE18' => 34002, + 'TEXTURE19' => 34003, + 'TEXTURE20' => 34004, + 'TEXTURE21' => 34005, + 'TEXTURE22' => 34006, + 'TEXTURE23' => 34007, + 'TEXTURE24' => 34008, + 'TEXTURE25' => 34009, + 'TEXTURE26' => 34010, + 'TEXTURE27' => 34011, + 'TEXTURE28' => 34012, + 'TEXTURE29' => 34013, + 'TEXTURE30' => 34014, + 'TEXTURE31' => 34015, + 'TEXTURE_2D' => 3553, + 'TEXTURE_BINDING_2D' => 32873, + 'TEXTURE_BINDING_CUBE_MAP' => 34068, + 'TEXTURE_CUBE_MAP' => 34067, + 'TEXTURE_CUBE_MAP_NEGATIVE_X' => 34070, + 'TEXTURE_CUBE_MAP_NEGATIVE_Y' => 34072, + 'TEXTURE_CUBE_MAP_NEGATIVE_Z' => 34074, + 'TEXTURE_CUBE_MAP_POSITIVE_X' => 34069, + 'TEXTURE_CUBE_MAP_POSITIVE_Y' => 34071, + 'TEXTURE_CUBE_MAP_POSITIVE_Z' => 34073, + 'TEXTURE_MAG_FILTER' => 10240, + 'TEXTURE_MIN_FILTER' => 10241, + 'TEXTURE_WRAP_S' => 10242, + 'TEXTURE_WRAP_T' => 10243, + 'TRIANGLES' => 4, + 'TRIANGLE_FAN' => 6, + 'TRIANGLE_STRIP' => 5, + 'UNPACK_ALIGNMENT' => 3317, + 'UNPACK_COLORSPACE_CONVERSION_WEBGL' => 37443, + 'UNPACK_FLIP_Y_WEBGL' => 37440, + 'UNPACK_PREMULTIPLY_ALPHA_WEBGL' => 37441, + 'UNSIGNED_BYTE' => 5121, + 'UNSIGNED_INT' => 5125, + 'UNSIGNED_SHORT' => 5123, + 'UNSIGNED_SHORT_4_4_4_4' => 32819, + 'UNSIGNED_SHORT_5_5_5_1' => 32820, + 'UNSIGNED_SHORT_5_6_5' => 33635, + 'VALIDATE_STATUS' => 35715, + 'VENDOR' => 7936, + 'VERSION' => 7938, + 'VERTEX_ATTRIB_ARRAY_BUFFER_BINDING' => 34975, + 'VERTEX_ATTRIB_ARRAY_ENABLED' => 34338, + 'VERTEX_ATTRIB_ARRAY_NORMALIZED' => 34922, + 'VERTEX_ATTRIB_ARRAY_POINTER' => 34373, + 'VERTEX_ATTRIB_ARRAY_SIZE' => 34339, + 'VERTEX_ATTRIB_ARRAY_STRIDE' => 34340, + 'VERTEX_ATTRIB_ARRAY_TYPE' => 34341, + 'VERTEX_SHADER' => 35633, + 'VIEWPORT' => 2978, + 'ZERO' => 0, + + 'activeTexture' => "gl.acT", + 'attachShader' => "gl.atS", + 'bindAttribLocation' => "gl.biAL", + 'bindBuffer' => "gl.biB", + 'bindFramebuffer' => "gl.biF", + 'bindRenderbuffer' => "gl.biR", + 'bindTexture' => "gl.biT", + 'blendColor' => "gl.blC", + 'blendEquation' => "gl.blE", + 'blendEquationSeparate' => "gl.blES", + 'blendFunc' => "gl.blF", + 'blendFuncSeparate' => "gl.blFS", + 'bufferData' => "gl.buD", + 'bufferSubData' => "gl.buSD", + 'checkFramebufferStatus' => "gl.chFS", + 'clear' => "gl.cl", + 'clearColor' => "gl.clC", + 'clearDepth' => "gl.clD", + 'clearStencil' => "gl.clS", + 'colorMask' => "gl.coM", + 'compileShader' => "gl.coS", + 'compressedTexImage2D' => "gl.coTI2D", + 'compressedTexSubImage2D' => "gl.coTSI2D", + 'copyTexImage2D' => "gl.coTI2D", + 'copyTexSubImage2D' => "gl.coTSI2D", + 'createBuffer' => "gl.crB", + 'createFramebuffer' => "gl.crF", + 'createProgram' => "gl.crP", + 'createRenderbuffer' => "gl.crR", + 'createShader' => "gl.crS", + 'createTexture' => "gl.crT", + 'cullFace' => "gl.cuF", + 'deleteBuffer' => "gl.deB", + 'deleteFramebuffer' => "gl.deF", + 'deleteProgram' => "gl.deP", + 'deleteRenderbuffer' => "gl.deR", + 'deleteShader' => "gl.deS", + 'deleteTexture' => "gl.deT", + 'depthFunc' => "gl.deF", + 'depthMask' => "gl.deM", + 'depthRange' => "gl.deR", + 'detachShader' => "gl.deS", + 'disable' => "gl.di", + 'disableVertexAttribArray' => "gl.diVAA", + 'drawArrays' => "gl.drA", + 'drawElements' => "gl.drE", + 'enable' => "gl.en", + 'enableVertexAttribArray' => "gl.enVAA", + 'finish' => "gl.fi", + 'flush' => "gl.fl", + 'framebufferRenderbuffer' => "gl.frR", + 'framebufferTexture2D' => "gl.frT2D", + 'frontFace' => "gl.frF", + 'generateMipmap' => "gl.geM", + 'getActiveAttrib' => "gl.geAA", + 'getActiveUniform' => "gl.geAU", + 'getAttachedShaders' => "gl.geAS", + 'getAttribLocation' => "gl.geAL", + 'getBufferParameter' => "gl.geBP", + 'getContextAttributes' => "gl.geCA", + 'getError' => "gl.geE", + 'getExtension' => "gl.geE", + 'getFramebufferAttachmentParameter' => "gl.geFAP", + 'getParameter' => "gl.geP", + 'getProgramParameter' => "gl.gePP", + 'getProgramInfoLog' => "gl.gePIL", + 'getRenderbufferParameter' => "gl.geRP", + 'getShaderParameter' => "gl.geSP", + 'getShaderInfoLog' => "gl.geSIL", + 'getShaderPrecisionFormat' => "gl.geSPF", + 'getShaderSource' => "gl.geSS", + 'getSupportedExtensions' => "gl.geSE", + 'getTexParameter' => "gl.geTP", + 'getUniform' => "gl.geU", + 'getUniformLocation' => "gl.geUL", + 'getVertexAttrib' => "gl.geVA", + 'getVertexAttribOffset' => "gl.geVAO", + 'hint' => "gl.hi", + 'isBuffer' => "gl.isB", + 'isContextLost' => "gl.isCL", + 'isEnabled' => "gl.isE", + 'isFramebuffer' => "gl.isF", + 'isProgram' => "gl.isP", + 'isRenderbuffer' => "gl.isR", + 'isShader' => "gl.isS", + 'isTexture' => "gl.isT", + 'lineWidth' => "gl.liW", + 'linkProgram' => "gl.liP", + 'pixelStorei' => "gl.piS", + 'polygonOffset' => "gl.poO", + 'readPixels' => "gl.reP", + 'renderbufferStorage' => "gl.reS", + 'sampleCoverage' => "gl.saC", + 'scissor' => "gl.sc", + 'shaderSource' => "gl.shS", + 'stencilFunc' => "gl.stF", + 'stencilFuncSeparate' => "gl.stFS", + 'stencilMask' => "gl.stM", + 'stencilMaskSeparate' => "gl.stMS", + 'stencilOp' => "gl.stO", + 'stencilOpSeparate' => "gl.stOS", + 'texParameterf' => "gl.teP", + 'texParameteri' => "gl.teP", + 'texImage2D' => "gl.teI2D", + 'texSubImage2D' => "gl.teSI2D", + 'uniform1f' => "gl.un1f", + 'uniform1fv' => "gl.un1fv", + 'uniform1i' => "gl.un1i", + 'uniform1iv' => "gl.un1iv", + 'uniform2f' => "gl.un2f", + 'uniform2fv' => "gl.un2fv", + 'uniform2i' => "gl.un2i", + 'uniform2iv' => "gl.un2iv", + 'uniform3f' => "gl.un3f", + 'uniform3fv' => "gl.un3fv", + 'uniform3i' => "gl.un3i", + 'uniform3iv' => "gl.un3iv", + 'uniform4f' => "gl.un4f", + 'uniform4fv' => "gl.un4fv", + 'uniform4i' => "gl.un4i", + 'uniform4iv' => "gl.un4iv", + 'uniformMatrix2fv' => "gl.unM2fv", + 'uniformMatrix3fv' => "gl.unM3fv", + 'uniformMatrix4fv' => "gl.unM4fv", + 'useProgram' => "gl.usP", + 'validateProgram' => "gl.vaP", + 'vertexAttrib1f' => "gl.veA1f", + 'vertexAttrib1fv' => "gl.veA1fv", + 'vertexAttrib2f' => "gl.veA2f", + 'vertexAttrib2fv' => "gl.veA2fv", + 'vertexAttrib3f' => "gl.veA3f", + 'vertexAttrib3fv' => "gl.veA3fv", + 'vertexAttrib4f' => "gl.veA4f", + 'vertexAttrib4fv' => "gl.veA4fv", + 'vertexAttribPointer' => "gl.veAP", + 'viewport' => "gl.vi" +]; + +$js = file_get_contents($argv[1]); +foreach ($WEBGL_REPLACE as $search => $replace) { + $js = preg_replace('/\bgl\.'.$search.'\b/', $replace, $js); +} +$js = preg_replace('/\/\*DEBUG\[.*?\/\*\]\*\//sm', '', $js); +echo $js; + diff --git a/pack_map.c b/pack_map.c new file mode 100644 index 0000000..101b75c --- /dev/null +++ b/pack_map.c @@ -0,0 +1,1077 @@ +// Compile with +// gcc -std=c99 map_packer.c -lm -o map_packer + +#include +#include +#include +#include +#include +#include +#include +#include + +// ----------------------------------------------------------------------------- +// Utils, Vec2/3 + +typedef uint8_t u8; +typedef int8_t i8; +typedef uint16_t u16; +typedef int16_t i16; +typedef uint32_t u32; +typedef int32_t i32; +typedef uint64_t u64; +typedef int64_t i64; + +typedef float f32; +typedef double f64; + +#define F32_COMPARE_EPSILON 0.001 + +bool equals(f32 a, f32 b) { + return fabs(a - b) < F32_COMPARE_EPSILON; +} + +#define M_PI 3.14159265358 + +f32 deg_to_rad(f32 deg) { + return (deg/180.0) * M_PI; +} + +#define max(a,b) \ + ({ __typeof__ (a) _a = (a); \ + __typeof__ (b) _b = (b); \ + _a > _b ? _a : _b; }) +#define min(a,b) \ + ({ __typeof__ (a) _a = (a); \ + __typeof__ (b) _b = (b); \ + _a < _b ? _a : _b; }) + + +typedef struct { + char *ptr; + i32 length; +} string_t; + +#define string(PTR, LENGTH) ((string_t){.ptr = PTR, .length = LENGTH}) +#define s(STR) ((string_t){.ptr = STR, .length = sizeof(STR)-1}) + +bool string_equals(string_t a, string_t b) { + if (a.length != b.length) { + return false; + } + return memcmp(a.ptr, b.ptr, a.length) == 0; +} + +char string_temp[1024]; +char *string_cstring(string_t s) { + i32 length = min(sizeof(string_temp)-1, s.length); + memcpy(string_temp, s.ptr, length); + string_temp[length] = '\0'; + return string_temp; +} + + + +typedef struct { + f32 x, y, z; +} vec3_t; + +#define vec3(X, Y, Z) ((vec3_t){.x = X, .y = Y, .z = Z}) + +vec3_t vec3_add(vec3_t a, vec3_t b) { + return vec3(a.x + b.x, a.y + b.y, a.z + b.z); +} + +vec3_t vec3_sub(vec3_t a, vec3_t b) { + return vec3(a.x - b.x, a.y - b.y, a.z - b.z); +} + +vec3_t vec3_mul(vec3_t a, vec3_t b) { + return vec3(a.x * b.x, a.y * b.y, a.z * b.z); +} + +vec3_t vec3_mulf(vec3_t a, f32 f) { + return vec3(a.x * f, a.y * f, a.z * f); +} + +vec3_t vec3_divf(vec3_t a, f32 f) { + return vec3(a.x / f, a.y / f, a.z / f); +} + +bool vec3_equals(vec3_t a, vec3_t b) { + return (equals(a.x, b.x) && equals(a.y, b.y) && equals(a.z, b.z)); +} + +f32 vec3_length(vec3_t a) { + return sqrt(a.x * a.x + a.y * a.y + a.z * a.z); +} + +vec3_t vec3_cross(vec3_t a, vec3_t b) { + return vec3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x); +} + +f32 vec3_dot(vec3_t a, vec3_t b) { + return a.x * b.x + a.y * b.y + a.z * b.z; +} + +vec3_t vec3_normalize(vec3_t a) { + f32 length = vec3_length(a); + return vec3(a.x / length, a.y / length, a.z / length); +} + +vec3_t vec3_face_normal(vec3_t v0, vec3_t v1, vec3_t v2) { + vec3_t a = vec3_sub(v0, v1); + vec3_t b = vec3_sub(v2, v1); + + vec3_t pn = vec3_cross(a, b); + return vec3_normalize(pn); +} + + +typedef struct { + f32 x, y; +} vec2_t; + +#define vec2(X, Y) ((vec2_t){.x = X, .y = Y}) + +vec2_t vec2_add(vec2_t a, vec2_t b) { + return vec2(a.x + b.x, a.y + b.y); +} + +vec2_t vec2_rotate(vec2_t a, f32 rad) { + return vec2(a.x * cos(rad) - a.y * sin(rad), a.x * sin(rad) + a.y * cos(rad)); +} + +vec2_t vec2_sub(vec2_t a, vec2_t b) { + return vec2(a.x - b.x, a.y - b.y); +} + +vec2_t vec2_mul(vec2_t a, vec2_t b) { + return vec2(a.x * b.x, a.y * b.y); +} + +vec2_t vec2_mulf(vec2_t a, float f) { + return vec2(a.x * f, a.y * f); +} + +vec2_t vec2_div(vec2_t a, vec2_t b) { + return vec2(a.x / b.x, a.y / b.y); +} + +vec2_t vec2_divf(vec2_t a, float f) { + return vec2(a.x / f, a.y / f); +} + + +// ----------------------------------------------------------------------------- +// Memvec + +#define memvec_declare(TYPE) struct { u32 length; u32 capacity; TYPE *data; } +#define memvec_alloc(MV, c) \ + MV.capacity = max(1, c); \ + MV.length = 0; \ + MV.data = calloc(MV.capacity, sizeof(MV.data[0])); + +#define memvec_ensure_capacity(MV, CAPACITY) ( \ + (CAPACITY > MV.capacity) \ + ? \ + MV.data = realloc(MV.data, sizeof(MV.data[0]) * max(CAPACITY, MV.capacity * 2)), \ + memset(MV.data + MV.capacity, 0, MV.capacity * sizeof(MV.data[0])), \ + MV.capacity *= 2, 0 \ + : 0) + +#define memvec_get(MV, i) &MV.data[i] +#define memvec_clear(MV) MV.length = 0 +#define memvec_free(MV) (MV.data ? free(MV.data), 0 : 0); +#define memvec_push(MV, ...) ( \ + memvec_ensure_capacity(MV, MV.length + 1), \ + MV.data[MV.length] = (__typeof__(*MV.data)) __VA_ARGS__, \ + MV.length++ \ +) +#define memvec_add_n(MV, n) (memvec_ensure_capacity(MV, MV.length + n), MV.length += n, &MV.data[MV.length-n]) +#define memvec_add(MV) memvec_add_n(MV, 1) + + +// ----------------------------------------------------------------------------- +// Winding + +#define WINDING_MAX_VERTS 32 + +typedef struct { + vec3_t pos; + vec2_t uv; +} winding_vertex_t; + +typedef struct { + vec3_t normal; + u32 num_vertices; + winding_vertex_t vertices[WINDING_MAX_VERTS]; +} winding_t; + +void winding_copy(winding_t *dst, winding_t *src) { + u32 base_size = sizeof(winding_t) - sizeof(winding_vertex_t) * WINDING_MAX_VERTS; + memcpy(dst, src, base_size + src->num_vertices * sizeof(winding_vertex_t)); +} + +void winding_add(winding_t *self, vec3_t pos, vec3_t normal, vec2_t uv) { + // Find duplicate + for (u32 i = 0; i < self->num_vertices; i++) { + if (vec3_equals(self->vertices[i].pos, pos)) { + return; + } + } + + // We may need one extra vertex when splitting! + assert(self->num_vertices < WINDING_MAX_VERTS-1); + + self->normal = normal; + self->vertices[self->num_vertices++] = (winding_vertex_t){ + .pos = pos, + .uv = uv + }; +} + +vec3_t winding_sort_center; +vec3_t winding_sort_basis; +vec3_t winding_sort_normal; + +i32 winding_compare(const void *vlp, const void *vrp) { + winding_vertex_t *vl = (winding_vertex_t *)vlp; + winding_vertex_t *vr = (winding_vertex_t *)vrp; + + vec3_t u = vec3_normalize(winding_sort_basis); + vec3_t v = vec3_normalize(vec3_cross(u, winding_sort_normal)); + + vec3_t local_lhs = vec3_sub(vl->pos, winding_sort_center); + f32 lhs_pu = vec3_dot(local_lhs, u); + f32 lhs_pv = vec3_dot(local_lhs, v); + + vec3_t local_rhs = vec3_sub(vr->pos, winding_sort_center); + f32 rhs_pu = vec3_dot(local_rhs, u); + f32 rhs_pv = vec3_dot(local_rhs, v); + + f32 lhs_angle = atan2(lhs_pv, lhs_pu); + f32 rhs_angle = atan2(rhs_pv, rhs_pu); + + if (lhs_angle < rhs_angle) { + return 1; + } + else if (lhs_angle > rhs_angle) { + return -1; + } + return 0; +} + +void winding_sort_ccw(winding_t *self) { + winding_sort_normal = self->normal; + winding_sort_basis = vec3_sub(self->vertices[1].pos, self->vertices[0].pos); + winding_sort_center = vec3(0, 0, 0); + for (u32 i = 0; i < self->num_vertices; i++) { + winding_sort_center = vec3_add(winding_sort_center, self->vertices[i].pos); + } + winding_sort_center = vec3_divf(winding_sort_center, self->num_vertices); + + qsort(self->vertices, self->num_vertices, sizeof(winding_vertex_t), winding_compare); +} + + +// ----------------------------------------------------------------------------- +// Interface + +typedef struct { + vec3_t pos; + vec3_t normal; + vec2_t uv; +} vertex_t; + +typedef struct { + vertex_t vertices[3]; +} face_t; + +typedef struct { + vec3_t vertices[3]; + vec3_t normal; + vec2_t uv_offset; + vec2_t uv_scale; + f32 uv_rotation; + f32 dist; + string_t texture_name; +} map_plane_t; + +typedef struct { + u32 planes_index; + u32 planes_length; + map_plane_t *planes; + + u32 faces_index; + u32 faces_length; + face_t *faces; +} map_brush_t; + +typedef struct { + u32 kvs_index; + u32 kvs_length; + + u32 brushes_index; + u32 brushes_length; + + u32 faces_index; + u32 faces_length; +} map_entity_t; + +typedef struct { + string_t key; + string_t value; +} entity_kv_t; + +typedef struct { + entity_kv_t *kvs; + u32 kvs_length; + + map_brush_t *brushes; + u32 brushes_length; + + face_t *faces; + u32 faces_length; +} entity_t; + +string_t entity_get(entity_t *entity, string_t key) { + for (u32 i = 0; i < entity->kvs_length; i++) { + if (string_equals(key, entity->kvs[i].key)) { + return entity->kvs[i].value; + } + } + return s(""); +} + +typedef struct { + string_t file; + char *char_ptr; + + char *error; + char *error_at; + + memvec_declare(map_entity_t) map_entities; + memvec_declare(map_brush_t) brushes; + memvec_declare(map_plane_t) planes; + memvec_declare(face_t) faces; + memvec_declare(entity_kv_t) entity_kvs; + + entity_t *entities; + u32 entities_length; +} map_t; + +void map_delete(map_t *self); +void map_parse(map_t *self); +void map_build(map_t *self); + + +map_t *map_new(char *file_name, char **error, u32 *error_at) { + FILE *fh = fopen(file_name, "rb"); + if (!fh) { + *error = "Couldn't open file"; + *error_at = 0; + return NULL; + } + + map_t *self = calloc(1, sizeof(map_t)); + + fseek(fh, 0, SEEK_END); + i32 size = ftell(fh); + fseek(fh, 0, SEEK_SET); + + self->file = string(calloc(size+1, sizeof(char)), size); + fread(self->file.ptr, 1, size, fh); + fclose(fh); + self->file.ptr[size] = '\0'; + + self->char_ptr = self->file.ptr; + + // Make some educated guesses of the buffer sizes we might need + memvec_alloc(self->map_entities, self->file.length / 1000); + memvec_alloc(self->brushes, self->file.length / 300); + memvec_alloc(self->planes, self->file.length / 50); + memvec_alloc(self->entity_kvs, self->map_entities.capacity * 3); + + map_parse(self); + + if (self->error) { + *error = self->error; + *error_at = self->error_at - self->file.ptr; + free(self); + return NULL; + } + + memvec_alloc(self->faces, self->planes.length * 3); + map_build(self); + + // Fill the entity_desc array for clients, now that we are sure we + // don't need to realloc any data and pointers stay fixed + self->entities_length = self->map_entities.length; + self->entities = calloc(self->entities_length, sizeof(entity_t)); + for (u32 i = 0; i < self->map_entities.length; i++) { + map_entity_t *entity = memvec_get(self->map_entities, i); + + self->entities[i] = (entity_t){ + .kvs = (entity->kvs_length > 0) + ? &self->entity_kvs.data[entity->kvs_index] + : NULL, + .kvs_length = entity->kvs_length, + .brushes = (entity->brushes_length > 0) + ? &self->brushes.data[entity->brushes_index] + : NULL, + .brushes_length = entity->brushes_length, + .faces = (entity->faces_length > 0) + ? &self->faces.data[entity->faces_index] + : NULL, + .faces_length = entity->faces_length, + }; + + for (u32 b = 0; b < entity->brushes_length; b++) { + map_brush_t *brush = &self->brushes.data[entity->brushes_index + b]; + brush->faces = (brush->faces_length > 0) + ? &self->faces.data[brush->faces_index] + : NULL; + brush->planes = (brush->planes_length > 0) + ? &self->planes.data[brush->planes_index] + : NULL; + } + } + + return self; +} + +void map_delete(map_t *self) { + memvec_free(self->brushes); + memvec_free(self->planes); + memvec_free(self->map_entities); + memvec_free(self->entity_kvs); + memvec_free(self->faces); + free(self->entities); + free(self->file.ptr); +} + + +// ----------------------------------------------------------------------------- +// Vertex Builder + +void map_build_entity(map_t *self, map_entity_t *entity); +void map_build_brush(map_t *self, map_brush_t *brush); +void map_build_planes(map_t *self, map_brush_t *brush, u32 i0, u32 i1, u32 i2, winding_t *winding); +void map_build_faces(map_t *self, map_plane_t *plane, winding_t *winding); +void map_insert_winding(map_t *self, winding_t *winding); + +void map_build(map_t *self) { + + // Load textures + for (int i = 0; i < self->planes.length; i++) { + // Unused + // self->planes.data[i].texture_name + } + + // Build all map_entities + for (int i = 0; i < self->map_entities.length; i++) { + map_entity_t *entity = memvec_get(self->map_entities, i); + map_build_entity(self, entity); + } +} + +void map_build_entity(map_t *self, map_entity_t *entity) { + entity->faces_index = self->faces.length; + + for (int i = 0; i < entity->brushes_length; i++) { + map_brush_t *brush = &self->brushes.data[entity->brushes_index + i]; + map_build_brush(self, brush); + } + + entity->faces_length = self->faces.length - entity->faces_index; +} + +void map_build_brush(map_t *self, map_brush_t *brush) { + winding_t windings[brush->planes_length]; + memset(windings, 0, sizeof(windings)); + + // Test all plane combinations to find intersection points + for (u32 i0 = 0; i0 < brush->planes_length; i0++) { + for (u32 i1 = i0 + 1; i1 < brush->planes_length; i1++) { + for (u32 i2 = i1 + 1; i2 < brush->planes_length; i2++) { + map_build_planes(self, brush, i0, i1, i2, windings); + } + } + } + + // Sort the raw vertices and fill the self->faces buffer + brush->faces_index = self->faces.length; + brush->faces_length = brush->planes_length; + for (u32 i = 0; i < brush->planes_length; i++) { + map_plane_t *plane = &self->planes.data[brush->planes_index + i]; + map_build_faces(self, plane, &windings[i]); + } +} + +void map_build_planes(map_t *self, map_brush_t *brush, u32 i0, u32 i1, u32 i2, winding_t *winding) { + map_plane_t *p0 = &self->planes.data[brush->planes_index + i0]; + map_plane_t *p1 = &self->planes.data[brush->planes_index + i1]; + map_plane_t *p2 = &self->planes.data[brush->planes_index + i2]; + + // Plane intersection + f32 denom = vec3_dot(vec3_cross(p0->normal, p1->normal), p2->normal); + if (equals(denom, 0)) { + return; + } + + vec3_t p0d = vec3_mulf(vec3_cross(p1->normal, p2->normal), p0->dist); + vec3_t p1d = vec3_mulf(vec3_cross(p2->normal, p0->normal), p1->dist); + vec3_t p2d = vec3_mulf(vec3_cross(p0->normal, p1->normal), p2->dist); + vec3_t intersection = vec3_divf(vec3_add(vec3_add(p0d, p1d), p2d), denom); + + // Make sure the produced intersection point is within the hull + for (u32 i = 0; i < brush->planes_length; i++) { + map_plane_t *plane = &self->planes.data[brush->planes_index + i]; + f32 proj = vec3_dot(plane->normal, intersection); + if (proj - plane->dist > F32_COMPARE_EPSILON) { + return; + } + } + + // Add the intersection point to all 3 planes + winding_add(&winding[i0], intersection, p0->normal, vec2(0, 0)); + winding_add(&winding[i1], intersection, p1->normal, vec2(0, 0)); + winding_add(&winding[i2], intersection, p2->normal, vec2(0, 0)); +} + +void map_build_faces(map_t *self, map_plane_t *plane, winding_t *winding) { + // Sort vertices by winding + winding_sort_ccw(winding); + + // Compute UV coords + f32 du = fabs(vec3_dot(plane->normal, vec3(0, 0, 1))); + f32 dr = fabs(vec3_dot(plane->normal, vec3(0, 1, 0))); + f32 df = fabs(vec3_dot(plane->normal, vec3(1, 0, 0))); + + vec3_t axis_u, axis_v; + if (du >= dr && du >= df) { // project z axis + axis_u = vec3(1, 0, 0); + axis_v = vec3(0, 1, 0); + } + else if (dr > du && dr > df) { // project y axis + axis_u = vec3(1, 0, 0); + axis_v = vec3(0, 0, 1); + } + else { // (df >= du && df >= dr) project x axis + axis_u = vec3(0, -1, 0); + axis_v = vec3(0, 0, 1); + } + + vec2_t tsize = vec2(64, 64); + for (u32 i = 0; i < winding->num_vertices; i++) { + vec3_t p = winding->vertices[i].pos; + vec2_t uv = vec2(vec3_dot(p, axis_u), vec3_dot(p, axis_v)); + + uv = vec2_rotate(uv, deg_to_rad(plane->uv_rotation)); + uv = vec2_div(uv, plane->uv_scale); + uv = vec2_add(uv, plane->uv_offset); + uv = vec2_div(uv, tsize); + + winding->vertices[i].uv = uv; + } + + map_insert_winding(self, winding); +} + +void map_insert_winding(map_t *self, winding_t *winding) { + for (u32 vi = 2; vi < winding->num_vertices; vi++) { + face_t *face = memvec_add(self->faces); + + face->vertices[0] = (vertex_t){ + .pos = winding->vertices[0].pos, + .normal = winding->normal, + .uv = winding->vertices[0].uv + }; + + face->vertices[1] = (vertex_t){ + .pos = winding->vertices[vi-1].pos, + .normal = winding->normal, + .uv = winding->vertices[vi-1].uv + }; + face->vertices[2] = (vertex_t){ + .pos = winding->vertices[vi].pos, + .normal = winding->normal, + .uv = winding->vertices[vi].uv + }; + } +} + +// ----------------------------------------------------------------------------- +// Parser + +#define peek() (*self->char_ptr) +#define next() (self->char_ptr++) +#define invalid(msg) self->error = msg; self->error_at = self->char_ptr; +#define expect(c) if (peek() != c) { invalid("Unexpected char"); } else { next(); } +#define skip_whitespace()\ + while (\ + peek() == ' ' || peek() == '\n' || peek() == '\r' || peek() == '\t' \ + ) { next(); } +#define skip_until(c) while (peek() && peek() != c) { next(); } + +void map_parse_entity(map_t *self); +void map_parse_brush(map_t *self, map_entity_t *entity); +void map_parse_key_value(map_t *self, map_entity_t *entity); +string_t map_parse_quoted_string(map_t *self); +void map_parse_plane(map_t *self, map_brush_t *brush); +vec3_t map_parse_vec3(map_t *self); +f32 map_parse_f32(map_t *self); +string_t map_parse_texture(map_t *self); + +void map_parse(map_t *self) { + while (!self->error && peek()) { + skip_whitespace(); + + switch (peek()) { + case '/': skip_until('\n'); break; + case '{': map_parse_entity(self); break; + case '\0': break; + default: invalid("Unexpected char in global scope"); break; + } + } +} + +void map_parse_entity(map_t *self) { + expect('{'); + + map_entity_t *entity = memvec_add(self->map_entities); + entity->kvs_index = self->entity_kvs.length; + entity->brushes_index = self->brushes.length; + + while (!self->error && peek()) { + skip_whitespace(); + + switch (peek()) { + case '/': skip_until('\n'); break; + case '"': map_parse_key_value(self, entity); break; + case '{': map_parse_brush(self, entity); break; + case '}': next(); return; + default: invalid("Unexpected char in entity scope") break; + } + } +} + +void map_parse_brush(map_t *self, map_entity_t *entity) { + expect('{'); + entity->brushes_length++; + + map_brush_t *brush = memvec_add(self->brushes); + brush->planes_index = self->planes.length; + + while (!self->error && peek()) { + skip_whitespace(); + + switch (peek()) { + case '(': map_parse_plane(self, brush); break; + case '}': next(); return; + default: invalid("Unexpected char in brush scope"); break; + } + } +} + +void map_parse_key_value(map_t *self, map_entity_t *entity) { + entity->kvs_length++; + + entity_kv_t *kv = memvec_add(self->entity_kvs); + kv->key = map_parse_quoted_string(self); + kv->value = map_parse_quoted_string(self); +} + +string_t map_parse_quoted_string(map_t *self) { + skip_whitespace(); + expect('"'); + + char *start = self->char_ptr; + skip_until('"'); + u32 length = self->char_ptr - start; + expect('"'); + return string(start, length); +} + +void map_parse_plane(map_t *self, map_brush_t *brush) { + brush->planes_length++; + + map_plane_t *plane = memvec_add(self->planes); + + plane->vertices[0] = map_parse_vec3(self); + plane->vertices[1] = map_parse_vec3(self); + plane->vertices[2] = map_parse_vec3(self); + plane->normal = vec3_face_normal(plane->vertices[0], plane->vertices[1], plane->vertices[2]); + + plane->texture_name = map_parse_texture(self); + + plane->uv_offset.x = map_parse_f32(self); + plane->uv_offset.y = map_parse_f32(self); + plane->uv_rotation = map_parse_f32(self); + plane->uv_scale.x = map_parse_f32(self); + plane->uv_scale.y = map_parse_f32(self); + plane->dist = vec3_dot(plane->normal, plane->vertices[1]); +} + +vec3_t map_parse_vec3(map_t *self) { + skip_whitespace(); + expect('('); + + vec3_t v = vec3( + map_parse_f32(self), + map_parse_f32(self), + map_parse_f32(self) + ); + + skip_whitespace(); + expect(')'); + return v; +} + +f32 map_parse_f32(map_t *self) { + skip_whitespace(); + + char *start = self->char_ptr; + while ((peek() >= '0' && peek() <= '9') || peek() == '.' || peek() == '-') { + next(); + } + u32 length = self->char_ptr - start; + + if (length == 0 || length > 16) { + invalid("Expected float") + return 0; + } + + char buf[length+1]; + memcpy((void *)buf, start, length); + buf[length] = '\0'; + return atof(buf); +} + +string_t map_parse_texture(map_t *self) { + skip_whitespace(); + + char *start = self->char_ptr; + skip_until(' '); + u32 length = self->char_ptr - start; + + return string(start, length); +} + +#undef peek +#undef next +#undef invalid +#undef expect +#undef skip_whitespace +#undef skip_until + + + + +// ----------------------------------------------------------------------------- + +#define BLOCK_RES_XZ 32 +#define BLOCK_RES_Y 16 + +#define BLOCK_POS_MAX_XZ ((1<<8) * BLOCK_RES_XZ) +#define BLOCK_POS_MAX_Y ((1<<8) * BLOCK_RES_Y) + +#define BLOCK_SIZE_MAX_XZ ((1<<8) * BLOCK_RES_XZ) +#define BLOCK_SIZE_MAX_Y ((1<<8) * BLOCK_RES_Y) + +typedef struct { + u8 x, y, z; + u8 sx, sy, sz; + u8 tex; +} block_t; + +typedef struct { + u8 x, y, z; + u8 sx, sy, sz; +} block_out_t; + +typedef struct { + u8 sentinel; + u8 tex; +} block_texture_t; + +typedef struct { + char type; + u8 x, y, z; + u8 data1, data2; +} block_entity_t; + +u32 brushes_to_blocks(block_t *blocks, map_brush_t *brushes, u32 brushes_length) { + u32 blocks_length = 0; + for (u32 b = 0; b < brushes_length; b++) { + map_brush_t *brush = &brushes[b]; + + // Find min, max vert of this brush + vec3_t vmin = vec3(INFINITY, INFINITY, INFINITY); + vec3_t vmax = vec3(-INFINITY, -INFINITY, -INFINITY); + for (u32 f = 0; f < brush->faces_length; f++) { + face_t *face = &brush->faces[f]; + + for (u32 v = 0; v < 3; v++) { + vmin.x = min(vmin.x, round(face->vertices[v].pos.x)); + vmin.y = min(vmin.y, round(face->vertices[v].pos.y)); + vmin.z = min(vmin.z, round(face->vertices[v].pos.z)); + + vmax.x = max(vmax.x, round(face->vertices[v].pos.x)); + vmax.y = max(vmax.y, round(face->vertices[v].pos.y)); + vmax.z = max(vmax.z, round(face->vertices[v].pos.z)); + } + } + + vec3_t vsize = vec3_sub(vmax, vmin); + if ( + (vmin.x < 0 || vmin.y < 0 || vmin.z < 0) || + (vmin.x >= BLOCK_POS_MAX_XZ || vmin.y >= BLOCK_POS_MAX_XZ || vmin.z >= BLOCK_POS_MAX_Y) || + (vsize.x >= BLOCK_SIZE_MAX_XZ || vsize.y >= BLOCK_SIZE_MAX_XZ || vsize.z >= BLOCK_SIZE_MAX_Y) || + (vsize.x < BLOCK_RES_XZ || vsize.y < BLOCK_RES_XZ || vsize.z < BLOCK_RES_Y) + ) { + printf( + "Brush %d has unsupported dimensions: pos(%g %g %g) size(%g %g %g)\n", + b, vmin.x, vmin.y, vmin.z, vsize.x, vsize.y, vsize.z + ); + continue; + } + + // This assumes all textures are name XX.png + u8 tex = atoi(string_cstring(brush->planes[0].texture_name)); + + // Build block, swap y<>z + block_t block = (block_t){ + .x = (u8)(round(vmin.x / BLOCK_RES_XZ)), + .y = (u8)(round(vmin.z / BLOCK_RES_Y)), + .z = (u8)(round(vmin.y / BLOCK_RES_XZ)), + + .sx = (u8)(round(vsize.x / BLOCK_RES_XZ)), + .sy = (u8)(round(vsize.z / BLOCK_RES_Y)), + .sz = (u8)(round(vsize.y / BLOCK_RES_XZ)), + + .tex = tex + }; + blocks[blocks_length++] = block; + } + return blocks_length; +} + +i32 block_compare(const void *vlp, const void *vrp) { + block_t *bl = (block_t *)vlp; + block_t *br = (block_t *)vrp; + + i32 lt = bl->tex; + i32 rt = br->tex; + + return lt == rt ? bl->sx - br->sx : lt - rt; +} + +i32 block_entity_compare(const void *vlp, const void *vrp) { + block_entity_t *bl = (block_entity_t *)vlp; + block_entity_t *br = (block_entity_t *)vrp; + + return bl->type - br->type; +} + +i32 main(i32 argc, char **argv) { + if (argc < 3) { + printf("Usage: ./map_packer infile.map outfile.plblocks\n"); + exit(1); + } + + printf("sizeof(block_out_t) = %d\n", sizeof(block_out_t)); + + char *error; + u32 error_at; + map_t *map = map_new(argv[1], &error, &error_at); + if (!map) { + printf("Error loading %s: %s at %d\n", argv[1], error, error_at); + exit(1); + } + + printf( + "Loaded %s: %d entities, %d brushes, %d planes, %d faces\n", + argv[1], + map->entities_length, map->brushes.length, + map->planes.length, map->faces.length + ); + + FILE *fh = fopen(argv[2], "wb"); + if (!fh) { + printf("Failed to open %s for writing\n", argv[2]); + exit(1); + } + + // Find worldspawn, build brushes + for (u32 i = 0; i < map->entities_length; i++) { + entity_t *entity = &map->entities[i]; + string_t classname = entity_get(entity, s("classname")); + + if (!string_equals(classname, s("worldspawn"))) { + continue; + } + + block_t *blocks = calloc(entity->brushes_length, sizeof(block_t)); + u16 blocks_length = brushes_to_blocks(blocks, entity->brushes, entity->brushes_length); + + + // Sort blocks by texture index + qsort(blocks, blocks_length, sizeof(block_t), block_compare); + + // Write blocks length + u16 num_textures = 0; + u8 last_texture_index = 255; + for (u32 j = 0; j < blocks_length; j++) { + if (blocks[j].tex != last_texture_index) { + last_texture_index = blocks[j].tex; + num_textures++; + } + } + + u32 blocks_size = blocks_length * sizeof(block_out_t) + num_textures * sizeof(block_texture_t); + printf("%d blocks, size: %d\n", blocks_length, blocks_size); + fwrite(&blocks_size, sizeof(u16), 1, fh); + + // Go through all blocks, write the block and the texture_t whenever + // the texture changes. + last_texture_index = 255; + for (u32 j = 0; j < blocks_length; j++) { + if (blocks[j].tex != last_texture_index) { + last_texture_index = blocks[j].tex; + block_texture_t bt = {255, last_texture_index}; + fwrite(&bt, sizeof(block_texture_t), 1, fh); + } + block_out_t bo = { + .x = blocks[j].x, + .y = blocks[j].y, + .z = blocks[j].z, + .sx = blocks[j].sx, + .sy = blocks[j].sy, + .sz = blocks[j].sz + }; + fwrite(&bo, sizeof(block_out_t), 1, fh); + } + + free(blocks); + break; + } + + // Gather all entities + block_entity_t *block_entities = calloc(map->entities_length, sizeof(block_entity_t)); + u16 block_entities_length = 0; + for (u32 i = 0; i < map->entities_length; i++) { + entity_t *entity = &map->entities[i]; + string_t classname = entity_get(entity, s("classname")); + + char type; + u8 extra_data1 = 0; + u8 extra_data2 = 0; + if (string_equals(classname, s("worldspawn"))) { + continue; + } + if (string_equals(classname, s("info_player_start"))) { + type = 0; + } + else if (string_equals(classname, s("enemy_grunt"))) { + type = 1; + extra_data1 = atoi(string_cstring(entity_get(entity, s("patrol")))); + } + else if (string_equals(classname, s("enemy_enforcer"))) { + type = 2; + extra_data1 = atoi(string_cstring(entity_get(entity, s("patrol")))); + } + else if (string_equals(classname, s("enemy_ogre"))) { + type = 3; + extra_data1 = atoi(string_cstring(entity_get(entity, s("patrol")))); + } + else if (string_equals(classname, s("enemy_zombie"))) { + type = 4; + extra_data1 = atoi(string_cstring(entity_get(entity, s("patrol")))); + } + else if (string_equals(classname, s("enemy_hound"))) { + type = 5; + extra_data1 = atoi(string_cstring(entity_get(entity, s("patrol")))); + } + else if (string_equals(classname, s("pickup_nailgun"))) { + type = 6; + } + else if (string_equals(classname, s("pickup_grenadelauncher"))) { + type = 7; + } + else if (string_equals(classname, s("pickup_health"))) { + type = 8; + } + else if (string_equals(classname, s("pickup_nails"))) { + type = 9; + } + else if (string_equals(classname, s("pickup_grenades"))) { + type = 10; + } + else if (string_equals(classname, s("barrel"))) { + type = 11; + } + else if (string_equals(classname, s("light"))) { + type = 12; + extra_data1 = atoi(string_cstring(entity_get(entity, s("light")))); + + // Convert 24 bit r g b string into 8 bit color value + char *color = string_cstring(entity_get(entity, s("color"))); + i32 r, g, b; + sscanf(color, "%d %d %d", &r, &g, &b); + + union { + struct { + u8 r: 3; + u8 g: 3; + u8 b: 2; + } rgb; + u8 v; + } rgb8 = {.rgb = {r >> 5, g >> 5, b >> 6}}; + extra_data2 = rgb8.v; + } + else if (string_equals(classname, s("trigger_levelchange"))) { + type = 13; + } + else if (string_equals(classname, s("door"))) { + type = 14; + extra_data1 = atoi(string_cstring(entity_get(entity, s("texture")))); + extra_data2 = atoi(string_cstring(entity_get(entity, s("dir")))); + } + else if (string_equals(classname, s("pickup_key"))) { + type = 15; + } + else if (string_equals(classname, s("torch"))) { + type = 16; + } + else { + printf("Unknown entity %s\n", string_cstring(classname)); + continue; + } + + f32 x, y, z; + char *origin = string_cstring(entity_get(entity, s("origin"))); + sscanf(origin, "%f %f %f", &x, &y, &z); + + // Build entity, swap y<>z + block_entity_t be = { + .type = type, + .x = (u8)(round(x / BLOCK_RES_XZ)), + .y = (u8)(round(z / BLOCK_RES_Y)), + .z = (u8)(round(y / BLOCK_RES_XZ)), + .data1 = extra_data1, + .data2 = extra_data2, + }; + block_entities[block_entities_length++] = be; + } + + qsort(block_entities, block_entities_length, sizeof(block_entity_t), block_entity_compare); + + printf("%d entities, size: %d\n", block_entities_length, block_entities_length * sizeof(block_entity_t)); + fwrite(&block_entities_length, sizeof(u16), 1, fh); + fwrite(block_entities, sizeof(block_entity_t), block_entities_length, fh); + + fclose(fh); + map_delete(map); +} diff --git a/pack_model.php b/pack_model.php new file mode 100755 index 0000000..6e2ac7a --- /dev/null +++ b/pack_model.php @@ -0,0 +1,103 @@ + $v) { + $x = round(($v[0]/$max)*15)+15; + $y = round(($v[1]/$max)*15)+15; + $z = round(($v[2]/$max)*15)+15; + + // echo "Vertex $i => ($x, $y, $z)\n"; + $packed .= + pack('C', $x). + pack('C', $y). + pack('C', $z); + +} + +// Pack indices w. vertex index +$a_last_index = 0; +foreach ($indices as $i => $f) { + $a_address_inc = $f[0] - $a_last_index; + if ($a_address_inc > 3) { + die("Face $i index a increment exceeds 2 bits ($a_address_inc)\n"); + } + $a_last_index = $f[0]; + + if ($f[1] > 127 || $f[2] > 127) { + die("Face $i index exceeds 7 bits ({$f[1]}, {$f[1]}, {$f[2]})\n"); + } + + // echo "Face $i => ({$f[1]}, {$f[1]}, {$f[2]})\n"; + // $packed .= pack('v', ($a_address_inc << 14) | ($f[1] << 7) | $f[2]); + $packed .= + pack('C', $a_address_inc). + pack('C', $f[1]). + pack('C', $f[2]); +} + +// Write +$packedfile = $argv[count($argv)-1]; +file_put_contents($packedfile, $packed); + +echo "Wrote $packedfile: ". + count($infiles)." frame(s), ". + count($verts)." verts, ". + count($indices)." indices, ". + strlen($packed)." bytes\n"; diff --git a/source/audio.js b/source/audio.js new file mode 100644 index 0000000..af22ae1 --- /dev/null +++ b/source/audio.js @@ -0,0 +1,240 @@ + +// Gutted for js13k and modified to use Float32 buffers directly +// ~ Dominic Szablewski, phoboslab.org, Sep 2018 + +// Almost re-written for for jsk13 2019. Oscilators now use a lookup table +// instead of calling functions. This and various other changes result in a +// ~10x performance increase and smaller file size. +// ~ Dominic Szablewski, phoboslab.org, Sep 2019 + +// Again updated for js13k 2021. Song and sound definitions are now just arrays +// instead of objects. + + +// +// Sonant-X +// +// Copyr (c) 2014 Nicolas Vanhoren +// +// Sonant-X is a fork of js-sonant by Marcus Geelnard and Jake Taylor. It is +// still published using the same license (zlib license, see below). +// +// Copyr (c) 2011 Marcus Geelnard +// Copyr (c) 2008-2009 Jake Taylor +// +// This software is provided 'as-is', without any express or implied +// warranty. In no event will the authors be held liable for any damages +// arising from the use of this software. +// +// Permission is granted to anyone to use this software for any purpose, +// including commercial applications, and to alter it and redistribute it +// freely, subject to the following restrictions: +// +// 1. The origin of this software must not be misrepresented; you must not +// claim that you wrote the original software. If you use this software +// in a product, an acknowledgment in the product documentation would be +// appreciated but is not required. +// +// 2. Altered source versions must be plainly marked as such, and must not be +// misrepresented as being the original software. +// +// 3. This notice may not be removed or altered from any source +// distribution. + +let +audio_ctx, +AUDIO_SAMPLERATE = 44100, // Samples per second +AUDIO_TAB_SIZE = 4096, +AUDIO_TAB_MASK = AUDIO_TAB_SIZE-1, +AUDIO_TAB = new Float32Array(AUDIO_TAB_SIZE*4), // 4 oscilators + +audio_init = () => { + // This function needs to be called in response to a user action, as it + // tries to activate the audio context. + audio_ctx = new AudioContext(); + audio_ctx.resume(); + + // Generate the lookup tables + for (let i = 0; i < AUDIO_TAB_SIZE; i++) { + AUDIO_TAB[i ] = Math.sin(i*6.283184/AUDIO_TAB_SIZE); // sin + AUDIO_TAB[i + AUDIO_TAB_SIZE ] = AUDIO_TAB[i] < 0 ? -1 : 1; // square + AUDIO_TAB[i + AUDIO_TAB_SIZE * 2] = i / AUDIO_TAB_SIZE - 0.5; // saw + AUDIO_TAB[i + AUDIO_TAB_SIZE * 3] = i < AUDIO_TAB_SIZE/2 ? (i/(AUDIO_TAB_SIZE/4)) - 1 : 3 - (i/(AUDIO_TAB_SIZE/4)); // tri + } +}, + +audio_play = (buffer, volume = 1, loop = 0, pan = 0) => { + let gain = audio_ctx.createGain(), + source = audio_ctx.createBufferSource(), + panner = audio_ctx.createStereoPanner(); + gain.gain.value = volume; + gain.connect(audio_ctx.destination); + panner.connect(gain); + panner.pan.value = pan; + source.buffer = buffer; + source.loop = loop; + source.connect(panner); + source.start(); +}, + +audio_get_ctx_buffer = (buf_l, buf_r) => { + let buffer = audio_ctx.createBuffer(2, buf_l.length, AUDIO_SAMPLERATE); + buffer.getChannelData(0).set(buf_l); + buffer.getChannelData(1).set(buf_r); + return buffer; +}, + +audio_generate_sound = ( + row_len, note, buf_l, buf_r, write_pos, + + // Instrument properties + osc1_oct, osc1_det, osc1_detune, osc1_xenv, osc1_vol, osc1_waveform, + osc2_oct, osc2_det, osc2_detune, osc2_xenv, osc2_vol, osc2_waveform, + noise_fader, attack, sustain, release, master, + fx_filter, fx_freq, fx_resonance, fx_delay_time, fx_delay_amt, fx_pan_freq_p, fx_pan_amt, + lfo_osc1_freq, lfo_fx_freq, lfo_freq_p, lfo_amt, lfo_waveform +) => { + let osc_lfo_offset = lfo_waveform * AUDIO_TAB_SIZE, + osc1_offset = osc1_waveform * AUDIO_TAB_SIZE, + osc2_offset = osc2_waveform * AUDIO_TAB_SIZE, + fx_pan_freq = Math.pow(2, fx_pan_freq_p - 8) / row_len, + lfo_freq = Math.pow(2, lfo_freq_p - 8) / row_len, + + c1 = 0, + c2 = 0, + + q = fx_resonance / 255, + low = 0, + band = 0, + high = 0, + + buf_length = buf_l.length, + num_samples = attack + sustain + release - 1, + + osc1_freq = + Math.pow(1.059463094, (note + (osc1_oct - 8) * 12 + osc1_det) - 128) + * 0.00390625 * (1 + 0.0008 * osc1_detune), + osc2_freq = + Math.pow(1.059463094, (note + (osc2_oct - 8) * 12 + osc2_det) - 128) + * 0.00390625 * (1 + 0.0008 * osc2_detune); + + for (let j = num_samples; j >= 0; --j) { + let + // Buffer positions + k = j + write_pos, + + // LFO + lfor = AUDIO_TAB[osc_lfo_offset + ((k * lfo_freq * AUDIO_TAB_SIZE) & AUDIO_TAB_MASK)] * lfo_amt / 512 + 0.5, + + sample = 0, + filter_f = fx_freq, + temp_f, + envelope = 1; + + // Envelope + if (j < attack) { + envelope = j / attack; + } + else if (j >= attack + sustain) { + envelope -= (j - attack - sustain) / release; + } + + // Oscillator 1 + temp_f = osc1_freq; + if (lfo_osc1_freq) { + temp_f *= lfor; + } + if (osc1_xenv) { + temp_f *= envelope * envelope; + } + c1 += temp_f; + sample += AUDIO_TAB[osc1_offset + ((c1 * AUDIO_TAB_SIZE) & AUDIO_TAB_MASK)] * osc1_vol; + + // Oscillator 2 + temp_f = osc2_freq; + if (osc2_xenv) { + temp_f *= envelope * envelope; + } + c2 += temp_f; + sample += AUDIO_TAB[osc2_offset + ((c2 * AUDIO_TAB_SIZE) & AUDIO_TAB_MASK)] * osc2_vol; + + // Noise oscillator + if (noise_fader) { + sample += (2*Math.random()-1) * noise_fader * envelope; + } + + sample *= envelope / 255; + + // State variable filter + if (lfo_fx_freq) { + filter_f *= lfor; + } + + filter_f = 1.5 * AUDIO_TAB[(filter_f * 0.5 / AUDIO_SAMPLERATE * AUDIO_TAB_SIZE) & AUDIO_TAB_MASK]; + low += filter_f * band; + high = q * (sample - band) - low; + band += filter_f * high; + sample = [sample, high, low, band, low + high][fx_filter]; + + // Panning & master volume + temp_f = AUDIO_TAB[(k * fx_pan_freq * AUDIO_TAB_SIZE) & AUDIO_TAB_MASK] * fx_pan_amt / 512 + 0.5; + sample *= 0.00476 * master; // 39 / 8192 = 0.00476 + + buf_l[k] += sample * (1-temp_f); + buf_r[k] += sample * temp_f; + } +}, + +audio_create_song = (row_len, pattern_len, song_len, tracks) => { + let num_samples = AUDIO_SAMPLERATE * song_len, + mix_buf_l = new Float32Array(num_samples), + mix_buf_r = new Float32Array(num_samples); + + for (let track of tracks) { + let buf_l = new Float32Array(num_samples), + buf_r = new Float32Array(num_samples), + write_pos = 0, + delay_shift = (track[0/*instrument*/][20/*fx_delay_time*/] * row_len) >> 1, + delay_amount = track[0/*instrument*/][21/*fx_delay_amt*/] / 255; + + for (let p = 0; p < pattern_len; p++) { + for (let row = 0; row < 32; row++) { + let note = track[2/*notes*/][track[1/*pattern*/][p] - 1]?.[row]; + if (note) { + audio_generate_sound(row_len, note, buf_l, buf_r, write_pos, ...track[0/*instrument*/]); + } + write_pos += row_len; + } + } + + audio_apply_delay(delay_shift, delay_amount, buf_l, buf_r); + for (let b = 0; b < num_samples; b++) { + mix_buf_l[b] += buf_l[b]; + mix_buf_r[b] += buf_r[b]; + } + } + return audio_get_ctx_buffer(mix_buf_l, mix_buf_r); +}, + +audio_create_sound = (note, instrument, row_len = 5605) => { + let delay_shift = (instrument[20/*fx_delay_time*/] * row_len) >> 1, + delay_amount = instrument[21/*fx_delay_amt*/] / 255, + num_samples = + instrument[13/*env_attack*/] + + instrument[14/*env_sustain*/] + + instrument[15/*env_release*/] + + delay_shift * 32 * delay_amount, + buf_l = new Float32Array(num_samples), + buf_r = new Float32Array(num_samples); + audio_generate_sound(row_len, note, buf_l, buf_r, 0, ...instrument); + audio_apply_delay(delay_shift, delay_amount, buf_l, buf_r); + return audio_get_ctx_buffer(buf_l, buf_r); +}, + +audio_apply_delay = (shift, amount, buf_l, buf_r) => { + for (let i = 0; i < buf_l.length - shift; i++) { + buf_l[i + shift] += buf_r[i] * amount; + buf_r[i + shift] += buf_l[i] * amount; + } +}; + diff --git a/source/document.js b/source/document.js new file mode 100644 index 0000000..22c1c30 --- /dev/null +++ b/source/document.js @@ -0,0 +1,24 @@ + +document.body.innerHTML += + ''+ + '
'+ + ''+ + '

Q1K3

CLICK TO START
'+ + '
'+ + '
'+ + '
'+ + '

MOUSE SPEED:

'+ + '

'+ + '

'+ + 'code: phoboslab.org / music: no-fate.net'+ + '

'; \ No newline at end of file diff --git a/source/entity.js b/source/entity.js new file mode 100755 index 0000000..99b2264 --- /dev/null +++ b/source/entity.js @@ -0,0 +1,226 @@ + +let ENTITY_GROUP_NONE = 0, + ENTITY_GROUP_PLAYER = 1, + ENTITY_GROUP_ENEMY = 2; + +class entity_t { + constructor(pos, p1, p2) { + this.a = vec3(); + this.v = vec3(); + this.p = pos; + this.s = vec3(2,2,2); + this.f = 0; + + this._health = 50; + this._dead = 0; + this._die_at = 0; + this._step_height = 0; + this._bounciness = 0; + this._gravity = 1; + this._yaw = 0; + this._pitch = 0; + this._anim = [1, [0]]; + this._anim_time = Math.random(); + this._on_ground = 0; + this._keep_off_ledges = 0; + + this._check_against = ENTITY_GROUP_NONE; + this._stepped_up_at = 0; + + this._init(p1, p2); + } + + _init(p1, p2) {} + + _update() { + if (this._model) { + this._draw_model(); + } + } + + _update_physics() { + if (this._die_at && this._die_at < game_time) { + this._kill(); + return; + } + + // Apply Gravity + this.a.y = -1200 * this._gravity; + + // Integrate acceleration & friction into velocity + let ff = Math.min(this.f * game_tick, 1); + this.v = vec3_add( + this.v, vec3_sub( + vec3_mulf(this.a, game_tick), + vec3_mul(this.v, vec3(ff, 0, ff)) + ) + ); + + + // Set up the _check_entities array for entity collisions + this._check_entities = [ + [], + game_entities_friendly, + game_entities_enemies + ][this._check_against]; + + // Divide the physics integration into 16 unit steps; otherwise fast + // projectiles may just move through walls. + let + original_step_height = this._step_height, + move_dist = vec3_mulf(this.v, game_tick), + steps = Math.ceil(vec3_length(move_dist) / 16), + move_step_height = vec3_mulf(move_dist, 1/steps); + + for (let s = 0; s < steps; s++) { + // Remember last position so we can roll back + let lp = vec3_clone(this.p); + + // Integrate velocity into position + this.p = vec3_add(this.p, move_step_height); + + // Collision with walls, horizonal + if (this._collides(vec3(this.p.x, lp.y, lp.z))) { + + // Can we step up? + if ( + !this._step_height || !this._on_ground || this.v.y > 0 || + this._collides(vec3(this.p.x, lp.y+this._step_height, lp.z)) + ) { + this._did_collide(0); + this.p.x = lp.x; + this.v.x = -this.v.x * this._bounciness; + } + else { + lp.y += this._step_height; + this._stepped_up_at = game_time; + } + + s = steps; // stop after this iteration + } + + // Collision with walls, vertical + if (this._collides(vec3(this.p.x, lp.y, this.p.z))) { + + // Can we step up? + if ( + !this._step_height || !this._on_ground || this.v.y > 0 || + this._collides(vec3(this.p.x, lp.y+this._step_height, this.p.z)) + ) { + this._did_collide(2); + this.p.z = lp.z; + this.v.z = -this.v.z * this._bounciness; + } + else { + lp.y += this._step_height; + this._stepped_up_at = game_time; + } + + s = steps; // stop after this iteration + } + + // Collision with ground/Ceiling + if (this._collides(this.p)) { + this._did_collide(1); + this.p.y = lp.y; + + // Only bounce from ground/ceiling if we have enough velocity + let bounce = Math.abs(this.v.y) > 200 ? this._bounciness : 0; + this._on_ground = this.v.y < 0 && !bounce; + this.v.y = -this.v.y * bounce; + + s = steps; // stop after this iteration + } + + this._step_height = original_step_height; + } + + } + + _collides(p) { + if (this._dead) { + return; + } + for (let entity of this._check_entities) { + if (vec3_dist(p, entity.p) < this.s.y + entity.s.y) { + // If we collide with an entity set the step height to 0, + // so we don't climb up on its shoulders :/ + this._step_height = 0; + this._did_collide_with_entity(entity); + return true; + } + } + + // Check if there's no block beneath this point. We want the AI to keep + // off of ledges. + if ( + this._on_ground && this._keep_off_ledges && + !map_block_at(p.x >> 5, (p.y-this.s.y-8) >> 4, p.z >>5) && + !map_block_at(p.x >> 5, (p.y-this.s.y-24) >> 4, p.z >>5) + ) { + return true; + } + + // Do the normal collision check with the whole box + return map_block_at_box(vec3_sub(p, this.s), vec3_add(p, this.s)); + } + + _did_collide(axis) {} + + _did_collide_with_entity(other) {} + + _draw_model() { + this._anim_time += game_tick; + + // Calculate which frames to use and how to mix them + let f = (this._anim_time / this._anim[0]), + mix = f - (f|0), + frame_cur = this._anim[1][(f|0) % this._anim[1].length], + frame_next = this._anim[1][((f+1)|0) % this._anim[1].length]; + + // Swap frames if we're looping to the first frame again + if (frame_next < frame_cur) { + [frame_next, frame_cur] = [frame_cur, frame_next]; + mix = 1-mix; + } + r_draw( + this.p, this._yaw, this._pitch, this._texture, + this._model.f[frame_cur], this._model.f[frame_next], mix, + this._model.nv + ); + } + + _spawn_particles(amount, speed = 1, model, texture, lifetime) { + for (let i = 0; i < amount; i++) { + let particle = game_spawn(entity_particle_t, this.p); + particle._model = model; + particle._texture = texture; + particle._die_at = game_time + lifetime + Math.random() * lifetime * 0.2; + particle.v = vec3( + (Math.random() - 0.5) * speed, + Math.random() * speed, + (Math.random() - 0.5) * speed + ); + } + } + + _receive_damage(from, amount) { + if (this._dead) { + return; + } + this._health -= amount; + if (this._health <= 0) { + this._kill(); + } + } + + _play_sound(sound) { + let volume = clamp(scale(vec3_dist(this.p, r_camera), 64, 1200, 1, 0),0,1), + pan = Math.sin(vec3_2d_angle(this.p, r_camera)-r_camera_yaw)*-1; + audio_play(sound, volume, 0, pan); + } + + _kill() { + this._dead = 1; + } +} diff --git a/source/entity_barrel.js b/source/entity_barrel.js new file mode 100644 index 0000000..987519f --- /dev/null +++ b/source/entity_barrel.js @@ -0,0 +1,30 @@ + +class entity_barrel_t extends entity_t { + _init() { + this._model = model_barrel; + this._texture = 21; + this._pitch = Math.PI/2; + this._health = 10; + this.s = vec3(8, 32, 8); + + game_entities_enemies.push(this); + } + + _kill() { + // Deal some damage to nearby entities + for (let entity of game_entities_enemies) { + let dist = vec3_dist(this.p, entity.p); + if (entity !== this && dist < 256) { + entity._receive_damage(this, scale(dist, 0, 256, 60, 0)); + } + } + + super._kill(); + this._play_sound(sfx_grenade_explode); + for (let m of model_gib_pieces) { + this._spawn_particles(2, 600, m, 21, 1); + } + game_spawn(entity_light_t, vec3_add(this.p, vec3(0,16,0)), 250, 0x08f)._die_at = game_time + 0.2; + game_entities_enemies = game_entities_enemies.filter(e => e != this); + } +} diff --git a/source/entity_door.js b/source/entity_door.js new file mode 100644 index 0000000..6b23f38 --- /dev/null +++ b/source/entity_door.js @@ -0,0 +1,44 @@ + +class entity_door_t extends entity_t { + _init(texture, dir) { + this._model = model_door; + this._texture = texture; + this._health = 10; + this.s = vec3(64, 64, 64); + this._start_pos = vec3_clone(this.p); + + this._reset_state_at = 0; + this._yaw = dir * Math.PI/2; + this._open = 0; + + // Map 1 only has one door and it needs a key. Should be a flag + // in the entity data instead :/ + this._needs_key = game_map_index == 1; + + // Doors block enemies and players + game_entities_enemies.push(this); + game_entities_friendly.push(this); + } + + _update() { + this._draw_model(); + if (vec3_dist(this.p, game_entity_player.p) < 128) { + if (this._needs_key) { + game_show_message('YOU NEED THE KEY...'); + return; + } + this._reset_state_at = game_time + 3; + } + + if (this._reset_state_at < game_time) { + this._open = Math.max(0, this._open-game_tick); + } + else { + this._open = Math.min(1, this._open+game_tick); + } + + this.p = vec3_add(this._start_pos, vec3_rotate_y(vec3(96 * this._open,0,0), this._yaw)); + } + + _receive_damage() {} +} diff --git a/source/entity_enemy.js b/source/entity_enemy.js new file mode 100644 index 0000000..615db48 --- /dev/null +++ b/source/entity_enemy.js @@ -0,0 +1,199 @@ + +class entity_enemy_t extends entity_t { + _init(patrol_dir) { + + // Animations + this._ANIMS =[ + [1, [0]], // 0: Idle + [0.40, [1,2,3,4]], // 1: Walk + [0.20, [1,2,3,4]], // 2: Run + [0.25, [0,5,5,5]], // 3: Attack prepare + [0.25, [5,0,0,0]], // 4: Attack + ]; + + // State definitions + // [0: anim_index, 1: speed, 2: next_state_update, 3: next_state] + this._STATE_IDLE = [0, 0, 0.1]; + this._STATE_PATROL = [1, 0.5, 0.5]; + this._STATE_FOLLOW = [2, 1, 0.3]; + this._STATE_ATTACK_RECOVER = [0, 0, 0.1, this._STATE_FOLLOW]; + this._STATE_ATTACK_EXEC = [4, 0, 0.4, this._STATE_ATTACK_RECOVER]; + this._STATE_ATTACK_PREPARE = [3, 0, 0.4, this._STATE_ATTACK_EXEC]; + this._STATE_ATTACK_AIM = [0, 0, 0.1, this._STATE_ATTACK_PREPARE]; + this._STATE_EVADE = [2, 1, 0.8, this._STATE_ATTACK_AIM]; + + this.s = vec3(12,28,12); + + this._step_height = 17; + this._speed = 196; + + this._target_yaw = this._yaw; + this._state_update_at = 0; + this._attack_distance = 800; + this._evade_distance = 96; + this._attack_chance = 0.65; + this._keep_off_ledges = 1; + this._turn_bias = 1; + + this._check_against = ENTITY_GROUP_PLAYER; + + game_entities_enemies.push(this); + + // If patrol_dir is non-zero it determines the partrol direction in + // increments of 90°. Otherwise we just idle. + if (patrol_dir) { + this._set_state(this._STATE_PATROL); + this._target_yaw = (Math.PI/2) * patrol_dir; + this._anim_time = Math.random(); + } + else { + this._set_state(this._STATE_IDLE); + } + } + + _set_state(state) { + this._state = state; + this._anim = this._ANIMS[state[0]]; + this._anim_time = 0; + this._state_update_at = game_time + state[2] + state[2]/4 * Math.random(); + } + + _update() { + // Is it time for a state update? + if (this._state_update_at < game_time) { + + // Choose a new turning bias for FOLLOW/EVADE when we hit a wall + this._turn_bias = Math.random() > 0.5 ? 0.5 : -0.5; + + let distance_to_player = vec3_dist(this.p, game_entity_player.p), + angle_to_player = vec3_2d_angle(this.p, game_entity_player.p); + + if (this._state[3]) { + this._set_state(this._state[3]); + } + + // Try to minimize distance to the player + if (this._state == this._STATE_FOLLOW) { + + // Do we have a line of sight? + if (!map_trace(this.p, game_entity_player.p)) { + this._target_yaw = angle_to_player; + } + + // Are we close enough to attack? + if (distance_to_player < this._attack_distance) { + + // Are we too close? Evade! + if ( + distance_to_player < this._evade_distance || + Math.random() > this._attack_chance + ) { + this._set_state(this._STATE_EVADE); + this._target_yaw += Math.PI/2 + Math.random() * Math.PI; + } + + // Just the right distance to attack! + else { + this._set_state(this._STATE_ATTACK_AIM); + } + } + } + + // We just attacked; just keep looking at the player 0_o + if (this._state == this._STATE_ATTACK_RECOVER) { + this._target_yaw = angle_to_player; + } + + // Wake up from patroling or idlyng if we have a line of sight + // and are near enough + if (this._state == this._STATE_PATROL || this._state == this._STATE_IDLE) { + if ( + distance_to_player < 700 && + !map_trace(this.p, game_entity_player.p) + ) { + this._set_state(this._STATE_ATTACK_AIM); + } + } + + // Aiming - reorient the entity towards the player, check + // if we have a line of sight + if (this._state == this._STATE_ATTACK_AIM) { + this._target_yaw = angle_to_player; + + // No line of sight? Randomly shuffle around :/ + if (map_trace(this.p, game_entity_player.p)) { + this._set_state(this._STATE_EVADE); + } + } + + // Execute the attack! + if (this._state == this._STATE_ATTACK_EXEC) { + this._attack(); + } + } + + // Rotate to desired angle + this._yaw += anglemod(this._target_yaw - this._yaw) * 0.1; + + + // Move along the yaw direction with the current speed (which might be 0) + if (this._on_ground) { + this.v = vec3_rotate_y(vec3(0, this.v.y, this._state[1] * this._speed), this._target_yaw); + } + + this._update_physics(); + this._draw_model(); + } + + _spawn_projectile(type, speed, yaw_offset, pitch_offset) { + let projectile = game_spawn(type, this.p); + projectile._check_against = ENTITY_GROUP_PLAYER; + projectile._yaw = this._yaw + Math.PI/2; + + projectile.v = vec3_rotate_yaw_pitch( + vec3(0, 0, speed), + this._yaw + yaw_offset, + Math.atan2( + this.p.y-game_entity_player.p.y, + vec3_dist(this.p, game_entity_player.p) + ) + pitch_offset + ); + return projectile; + } + + _receive_damage(from, amount) { + super._receive_damage(from, amount); + this._play_sound(sfx_enemy_hit); + + // Wake up if we're idle or patrolling + if (this._state == this._STATE_IDLE || this._state == this._STATE_PATROL) { + this._target_yaw = vec3_2d_angle(this.p, game_entity_player.p); + this._set_state(this._STATE_FOLLOW); + } + + this._spawn_particles(2, 200, model_blood, 18, 0.5); + } + + _kill() { + super._kill(); + for (let m of model_gib_pieces) { + this._spawn_particles(2, 300, m, 18, 1); + } + this._play_sound(sfx_enemy_gib); + game_entities_enemies = game_entities_enemies.filter(e => e != this); + } + + _did_collide(axis) { + if (axis == 1) { + return; + } + + // If we hit a wall/ledge while patrolling just turn around 180 + if (this._state == this._STATE_PATROL) { + this._target_yaw += Math.PI; + } + else { + this._target_yaw += this._turn_bias; + } + } +} diff --git a/source/entity_enemy_enforcer.js b/source/entity_enemy_enforcer.js new file mode 100644 index 0000000..cb8ae00 --- /dev/null +++ b/source/entity_enemy_enforcer.js @@ -0,0 +1,15 @@ + +class entity_enemy_enforcer_t extends entity_enemy_t { + _init(patrol_dir) { + super._init(patrol_dir); + this._model = model_enforcer; + this._texture = 19; + this._health = 80; + this.s = vec3(14,44,14); + } + + _attack() { + this._play_sound(sfx_plasma_shoot); + this._spawn_projectile(entity_projectile_plasma_t, 800, 0, 0); + } +} diff --git a/source/entity_enemy_grunt.js b/source/entity_enemy_grunt.js new file mode 100644 index 0000000..a265ca3 --- /dev/null +++ b/source/entity_enemy_grunt.js @@ -0,0 +1,21 @@ + +class entity_enemy_grunt_t extends entity_enemy_t { + _init(patrol_dir) { + super._init(patrol_dir); + this._model = model_grunt; + this._texture = 17; + this._health = 40; + } + + _attack() { + this._play_sound(sfx_shotgun_shoot); + game_spawn(entity_light_t, vec3_add(this.p, vec3(0,30,0)), 10, 0xff)._die_at = game_time + 0.1; + + for (let i = 0; i < 3; i++) { + this._spawn_projectile( + entity_projectile_shell_t, 10000, + Math.random()*0.08-0.04, Math.random()*0.08-0.04 + ); + } + } +} diff --git a/source/entity_enemy_hound.js b/source/entity_enemy_hound.js new file mode 100644 index 0000000..ef5bd6a --- /dev/null +++ b/source/entity_enemy_hound.js @@ -0,0 +1,53 @@ + +class entity_enemy_hound_t extends entity_enemy_t { + _init(patrol_dir) { + super._init(patrol_dir); + this._model = model_hound; + this._texture = 22; + this._health = 25; + this._check_against = ENTITY_GROUP_PLAYER; + + this.s = vec3(12,16,12); + + this._attack_distance = 200; + this._evade_distance = 64; + this._attack_chance = 0.7; + this._speed = 256; + + this._ANIMS = [ + [1, [0]], // 0: Idle + [0.15, [0,1]], // 2: Run + [0.15, [0,1]], // 2: Run + [1, [0]], // 3: Attack prepare + [0.1, [0,1,1,1,0,0,0]], // 4: Attack + ]; + + this._STATE_PATROL = [1, 0.2, 0.5]; + this._STATE_ATTACK_RECOVER = [0, 0, 0.5, this._STATE_FOLLOW]; + this._STATE_ATTACK_EXEC = [4, 0, 1, this._STATE_ATTACK_RECOVER]; + this._STATE_ATTACK_PREPARE = [3, 0, 0.0, this._STATE_ATTACK_EXEC]; + this._STATE_ATTACK_AIM = [0, 0, 0.0, this._STATE_ATTACK_PREPARE]; + this._STATE_EVADE = [2, 1, 0.3, this._STATE_ATTACK_AIM]; + + this._set_state(this._STATE_IDLE); + } + + _did_collide_with_entity(other) { + if (!this._did_hit && this._state == this._STATE_ATTACK_EXEC) { + this._did_hit = 1; + other._receive_damage(this, 14); + } + } + + _attack() { + this._play_sound(sfx_enemy_hound_attack); + this.v = vec3_rotate_y(vec3(0, 250, 600), this._target_yaw); + this._on_ground = 0; + this._did_hit = 0; + + // Ignore ledges while attacking + this._keep_off_ledges = 0; + clearTimeout(this._reset_ledges); + this._reset_ledges = setTimeout(()=>this._keep_off_ledges = 1, 1000); + } +} diff --git a/source/entity_enemy_ogre.js b/source/entity_enemy_ogre.js new file mode 100644 index 0000000..f962a49 --- /dev/null +++ b/source/entity_enemy_ogre.js @@ -0,0 +1,25 @@ + +class entity_enemy_ogre_t extends entity_enemy_t { + _init(patrol_dir) { + super._init(patrol_dir); + this._model = model_ogre; + this._texture = 20; + this._speed = 96; + this._health = 200; + this.s = vec3(14,36,14); + + this._attack_distance = 350; + this._ANIMS =[ + [1, [0]], // 0: Idle + [0.80, [1,2,3,4]], // 1: Walk + [0.40, [1,2,3,4]], // 2: Run + [0.35, [0,5,5,5]], // 3: Attack prepare + [0.35, [5,0,0,0]], // 4: Attack + ]; + } + + _attack() { + this._play_sound(sfx_grenade_shoot); + this._spawn_projectile(entity_projectile_grenade_t, 600, 0, -0.4)._damage = 40; + } +} diff --git a/source/entity_enemy_zombie.js b/source/entity_enemy_zombie.js new file mode 100644 index 0000000..eec07f8 --- /dev/null +++ b/source/entity_enemy_zombie.js @@ -0,0 +1,34 @@ + +class entity_enemy_zombie_t extends entity_enemy_t { + _init(patrol_dir) { + super._init(patrol_dir); + this._model = model_zombie; + this._texture = 18; + this._speed = 0; + this._attack_distance = 350; + this._health = 60; + + this._ANIMS[3] = [0.25, [0,0,5,5]]; // 3: Attack prepare + + this._STATE_FOLLOW = [0, 0, 0.1]; + this._STATE_ATTACK_RECOVER = [0, 0, 1.1, this._STATE_IDLE]; + this._STATE_ATTACK_EXEC = [4, 0, 0.4, this._STATE_ATTACK_RECOVER]; + this._STATE_ATTACK_PREPARE = [3, 0, 0.4, this._STATE_ATTACK_EXEC]; + this._STATE_ATTACK_AIM = [0, 0, 0.1, this._STATE_ATTACK_PREPARE]; + this._STATE_EVADE = [0, 0, 0.1, this._STATE_ATTACK_AIM]; + + this._set_state(this._STATE_IDLE); + } + + _receive_damage(from, amount) { + // Ignore damage that's not large enough to gib us + if (amount > 60) { + super._receive_damage(from, amount) + } + } + + _attack() { + this._play_sound(sfx_enemy_hit); + this._spawn_projectile(entity_projectile_gib_t, 600, 0, -0.5); + } +} diff --git a/source/entity_light.js b/source/entity_light.js new file mode 100644 index 0000000..94de48a --- /dev/null +++ b/source/entity_light.js @@ -0,0 +1,35 @@ + +class entity_light_t extends entity_t { + _init(light, color) { + this._light = light; + this._spawn_time = game_time; + if (light == 1) { + this._flicker = true; + } + if (!color) { + console.log('no color!') + } + this._color = [ + ((color & 0x7) << 5), + ((color & 0x1c) << 3), + (color & 0xc0) + ]; + } + + _update() { + if (this._flicker && Math.random() > 0.9) { + this._light = Math.random() > 0.5 ? 10 : 0; + } + let intensity = this._light; + + // If this light is a temporary one, fade it out over its lifetime + if (this._die_at) { + if (this._die_at < game_time) { + this._kill(); + } + intensity = scale(game_time, this._spawn_time, this._die_at, 1, 0) * this._light; + } + + r_push_light(this.p, intensity, this._color[0], this._color[1], this._color[2]); + } +} diff --git a/source/entity_particle.js b/source/entity_particle.js new file mode 100755 index 0000000..e9faade --- /dev/null +++ b/source/entity_particle.js @@ -0,0 +1,14 @@ + +class entity_particle_t extends entity_t { + _init() { + this._bounciness = 0.5; + this.f = 0.1; + } + + _update() { + this._yaw += this.v.y * 0.001; + this._pitch += this.v.x * 0.001; + this._update_physics(); + this._draw_model(); + } +} diff --git a/source/entity_pickup.js b/source/entity_pickup.js new file mode 100644 index 0000000..54c0e73 --- /dev/null +++ b/source/entity_pickup.js @@ -0,0 +1,18 @@ + +class entity_pickup_t extends entity_t { + _init() { + this._model = model_pickup_box; + this.s = vec3(12,12,12); + this._yaw += Math.PI/2; + } + + _update() { + if (!this._on_ground) { + this._update_physics(); + } + this._draw_model(); + if (vec3_dist(this.p, game_entity_player.p) < 40) { + this._pickup(); + } + } +} diff --git a/source/entity_pickup_grenadelauncher.js b/source/entity_pickup_grenadelauncher.js new file mode 100644 index 0000000..70f25cf --- /dev/null +++ b/source/entity_pickup_grenadelauncher.js @@ -0,0 +1,19 @@ + +class entity_pickup_grenadelauncher_t extends entity_pickup_t { + _init() { + super._init(); + this._texture = 21; + this._model = model_pickup_grenadelauncher; + } + + _update() { + this._yaw += 0.02; + super._update(); + } + + _pickup() { + audio_play(sfx_pickup); + game_entity_player._weapon_index = game_entity_player._weapons.push(new weapon_grenadelauncher_t) - 1; + this._kill(); + } +} diff --git a/source/entity_pickup_grenades.js b/source/entity_pickup_grenades.js new file mode 100644 index 0000000..7e591e1 --- /dev/null +++ b/source/entity_pickup_grenades.js @@ -0,0 +1,18 @@ + +class entity_pickup_grenades_t extends entity_pickup_t { + _init() { + super._init(); + this._texture = 25; + this._model = model_pickup_grenades; + } + + _pickup() { + for (let w of game_entity_player._weapons) { + if (w instanceof(weapon_grenadelauncher_t)) { + w._ammo += 10; + audio_play(sfx_pickup); + this._kill(); + } + } + } +} diff --git a/source/entity_pickup_health.js b/source/entity_pickup_health.js new file mode 100644 index 0000000..5f23824 --- /dev/null +++ b/source/entity_pickup_health.js @@ -0,0 +1,13 @@ + +class entity_pickup_health_t extends entity_pickup_t { + _init() { + super._init(); + this._texture = 23; + } + + _pickup() { + audio_play(sfx_pickup); + game_entity_player._health += 25; + this._kill(); + } +} diff --git a/source/entity_pickup_key.js b/source/entity_pickup_key.js new file mode 100644 index 0000000..6b0f3d2 --- /dev/null +++ b/source/entity_pickup_key.js @@ -0,0 +1,25 @@ + +class entity_pickup_key_t extends entity_pickup_t { + _init() { + super._init(); + this._texture = 21; + this._model = model_pickup_key; + } + + _update() { + this._yaw += 0.02; + super._update(); + } + + _pickup() { + audio_play(sfx_pickup); + game_show_message('YOU GOT THE KEY!'); + for (let e of game_entities) { + if (e._needs_key) { + e._needs_key = 0; + break; + } + } + this._kill(); + } +} diff --git a/source/entity_pickup_nailgun.js b/source/entity_pickup_nailgun.js new file mode 100644 index 0000000..3af0a34 --- /dev/null +++ b/source/entity_pickup_nailgun.js @@ -0,0 +1,19 @@ + +class entity_pickup_nailgun_t extends entity_pickup_t { + _init() { + super._init(); + this._texture = 12; + this._model = model_pickup_nailgun; + } + + _update() { + this._yaw += 0.02; + super._update(); + } + + _pickup() { + audio_play(sfx_pickup); + game_entity_player._weapon_index = game_entity_player._weapons.push(new weapon_nailgun_t) - 1; + this._kill(); + } +} diff --git a/source/entity_pickup_nails.js b/source/entity_pickup_nails.js new file mode 100644 index 0000000..55e2f1c --- /dev/null +++ b/source/entity_pickup_nails.js @@ -0,0 +1,17 @@ + +class entity_pickup_nails_t extends entity_pickup_t { + _init() { + super._init(); + this._texture = 24; + } + + _pickup() { + for (let w of game_entity_player._weapons) { + if (w instanceof(weapon_nailgun_t)) { + w._ammo += 50; + audio_play(sfx_pickup); + this._kill(); + } + } + } +} diff --git a/source/entity_player.js b/source/entity_player.js new file mode 100755 index 0000000..875992d --- /dev/null +++ b/source/entity_player.js @@ -0,0 +1,125 @@ + +class entity_player_t extends entity_t { + _init() { + this.s = vec3(12,24,12); + this.f = 10; + this._speed = 3000; + this._step_height = 17; + this._can_jump = 0; + this._can_shoot_at = 0; + this._health = 100; + + this._check_against = ENTITY_GROUP_ENEMY; + + this._weapons = [new weapon_shotgun_t]; + this._weapon_index = 0; + + // Map 1 needs some rotation of the starting look-at direction + this._yaw += game_map_index * Math.PI; + this._bob = 0; + + game_entity_player = this; + game_entities_friendly.push(this); + } + + _update() { + // Mouse look + this._pitch = clamp(this._pitch + mouse_y * m.value * 0.00015, -1.5, 1.5); + this._yaw = (this._yaw + mouse_x * m.value * 0.00015) % (Math.PI*2); + + // Acceleration in movement direction + this.a = vec3_mulf( + vec3_rotate_y( + vec3( + keys[key_right] - keys[key_left], + 0, + keys[key_up] - keys[key_down] + ), + this._yaw + ), + this._speed * (this._on_ground ? 1 : 0.3) + ); + + if (keys[key_jump] && this._on_ground && this._can_jump) { + this.v.y = 400; + this._on_ground = 0; + this._can_jump = 0; + } + if (!keys[key_jump]) { + this._can_jump = 1; + } + + this._weapon_index = ( + this._weapon_index + keys[key_next] + this._weapons.length - keys[key_prev] + ) % this._weapons.length; + + let shoot_wait = this._can_shoot_at - game_time, + weapon = this._weapons[this._weapon_index]; + + // Shoot Weapon + if (keys[key_action] && shoot_wait < 0) { + this._can_shoot_at = game_time + weapon._reload; + + if (weapon._needs_ammo && weapon._ammo == 0) { + audio_play(sfx_no_ammo); + } + else { + weapon._shoot(this.p, this._yaw, this._pitch); + game_spawn(entity_light_t, this.p, 10, 0xff)._die_at = game_time + 0.1; + } + } + + this._bob += vec3_length(this.a) * 0.0001; + this.f = this._on_ground ? 10 : 2.5; + this._update_physics(); + + r_camera.x = this.p.x; + r_camera.z = this.p.z; + + // Smooth step up on stairs + r_camera.y = this.p.y + 8 - clamp(game_time - this._stepped_up_at, 0, 0.1) * -160; + + r_camera_yaw = this._yaw; + r_camera_pitch = this._pitch; + + + // Draw weapon at camera position at an offset and add the current + // recoil (calculated from shoot_wait and weapon._reload) accounting + // for the current view yaw/pitch + + r_draw( + vec3_add( + r_camera, + vec3_rotate_yaw_pitch( + vec3( + 0, + -10 + Math.sin(this._bob)*0.3, + 12 + clamp(scale(shoot_wait, 0, weapon._reload, 5, 0), 0, 5) + ), + this._yaw, this._pitch + ) + ), + this._yaw + Math.PI/2, this._pitch, + weapon._texture, weapon._model.f[0], weapon._model.f[0], 0, + weapon._model.nv + ); + + h.textContent = this._health|0; + a.textContent = weapon._needs_ammo ? weapon._ammo : '∞'; + + // Debug: a light around the player + // r_push_light(vec3_add(this.p, vec3(0,64,0)), 10, 255, 192, 32); + } + + _receive_damage(from, amount) { + audio_play(sfx_hurt); + super._receive_damage(from, amount); + } + + _kill() { + super._kill(); + h.textContent = this._health|0; + title_show_message('YOU DIED'); + setTimeout(() => game_init(game_map_index), 2000); + } +} diff --git a/source/entity_projectile_gib.js b/source/entity_projectile_gib.js new file mode 100644 index 0000000..4d7d709 --- /dev/null +++ b/source/entity_projectile_gib.js @@ -0,0 +1,29 @@ + +class entity_projectile_gib_t extends entity_t { + _init() { + this._texture = 18; + this._bounciness = 0; + this._die_at = game_time + 2; + this._model = model_gib; + + this._yaw = Math.random(); + this._pitch = Math.random(); + } + + _update() { + super._update_physics(); + this._draw_model(); + this.f = this._on_ground ? 15 : 0; + } + + _did_collide(axis) { + if (axis == 1 && this.v.y < -128) { + this._play_sound(sfx_enemy_hit); + } + } + + _did_collide_with_entity(other) { + other._receive_damage(this, 10); + this._kill(); + } +} diff --git a/source/entity_projectile_grenade.js b/source/entity_projectile_grenade.js new file mode 100644 index 0000000..bff4882 --- /dev/null +++ b/source/entity_projectile_grenade.js @@ -0,0 +1,43 @@ + +class entity_projectile_grenade_t extends entity_t { + _init() { + this._texture = 8; + this._model = model_grenade; + this._die_at = game_time + 2; + this._bounciness = 0.5; + this._damage = 120; + } + + _update() { + super._update_physics(); + this._draw_model(); + r_push_light(vec3_add(this.p, vec3(0,16,0)), (Math.sin(game_time*10)+2)*0.5, 255, 32, 0); + this.f = this._on_ground ? 5 : 0.5; + } + + _did_collide(axis) { + if (axis != 1 || this.v.y < -128) { + this._yaw += Math.random(); + this._play_sound(sfx_grenade_bounce); + } + } + + _did_collide_with_entity(other) { + this._kill(); + } + + _kill() { + // Deal some damage to nearby entities + for (let entity of this._check_entities) { + let dist = vec3_dist(this.p, entity.p); + if (dist < 196) { + entity._receive_damage(this, scale(dist, 0, 196, this._damage, 0)); + } + } + + super._kill(); + this._play_sound(sfx_grenade_explode); + this._spawn_particles(20, 800, model_explosion, 8, 1); + game_spawn(entity_light_t, vec3_add(this.p, vec3(0,16,0)), 250, 0x08f)._die_at = game_time + 0.2; + } +} diff --git a/source/entity_projectile_nail.js b/source/entity_projectile_nail.js new file mode 100755 index 0000000..9153180 --- /dev/null +++ b/source/entity_projectile_nail.js @@ -0,0 +1,26 @@ + +class entity_projectile_nail_t extends entity_t { + _init() { + this._texture = 2; + this._model = model_nail; + this._gravity = 0; + this._die_at = game_time + 3; + } + + _update() { + this._update_physics(); + this._draw_model(); + } + + _did_collide(axis) { + this._kill(); + this._play_sound(sfx_nailgun_hit); + this._spawn_particles(2, 80, model_explosion, 8, 0.4); + game_spawn(entity_light_t, this.p, 1, 0xff)._die_at = game_time + 0.1; + } + + _did_collide_with_entity(other) { + this._kill(); + other._receive_damage(this, 9); + } +} diff --git a/source/entity_projectile_plasma.js b/source/entity_projectile_plasma.js new file mode 100644 index 0000000..fc5c769 --- /dev/null +++ b/source/entity_projectile_plasma.js @@ -0,0 +1,27 @@ + +class entity_projectile_plasma_t extends entity_t { + _init() { + this._texture = 21; + this._model = model_nail; + this._gravity = 0; + this._die_at = game_time + 3; + } + + _update() { + this._update_physics(); + this._draw_model(); + r_push_light(this.p, 5, 255, 128, 0); + } + + _did_collide(axis) { + this._kill(); + this._play_sound(sfx_nailgun_hit); + this._spawn_particles(2, 80, model_explosion, 8, 0.4); + game_spawn(entity_light_t, vec3_add(this.p, vec3(0,10,0)), 5, 0xf5)._die_at = game_time + 0.1; + } + + _did_collide_with_entity(other) { + this._kill(); + other._receive_damage(this, 15); + } +} diff --git a/source/entity_projectile_shell.js b/source/entity_projectile_shell.js new file mode 100644 index 0000000..f3cbee7 --- /dev/null +++ b/source/entity_projectile_shell.js @@ -0,0 +1,22 @@ + +class entity_projectile_shell_t extends entity_t { + _init() { + this._gravity = 0; + this._die_at = game_time + 0.1; + } + + _update() { + this._update_physics(); + } + + _did_collide(axis) { + this._kill(); + this._spawn_particles(2, 80, model_explosion, 4, 0.4); + game_spawn(entity_light_t, this.p, 0.5, 0xff)._die_at = game_time + 0.1; + } + + _did_collide_with_entity(other) { + this._kill(); + other._receive_damage(this, 4); + } +} diff --git a/source/entity_torch.js b/source/entity_torch.js new file mode 100644 index 0000000..bf16539 --- /dev/null +++ b/source/entity_torch.js @@ -0,0 +1,35 @@ + +class entity_torch_t extends entity_t { + _init() { + this._texture = 30; + this._model = model_torch; + + this._anim = [0.05, [0,1,2,1,2,0,0,1,2]]; + + this.p.x -= 16; + this.p.z -= 16; + this._light_pos = this.p; + + // Find which wall we're on; move to the torch model towards the wall + // and the light position outwards + for (let trace_dir of [vec3(-32,0,0), vec3(32,0,0), vec3(0,0,-32), vec3(0,0,32)]) { + let trace_end = vec3_add(this.p, trace_dir); + if (map_trace(this.p, vec3_add(this.p, trace_dir))) { + this.p = vec3_add(this.p, vec3_mulf(trace_dir, 0.4)); + this._light_pos = vec3_sub(this.p, vec3_mulf(trace_dir, 2)); + break; + } + } + + this._light = 0; + } + + _update() { + super._update(); + + if (Math.random() > 0.8) { + this._light = Math.random(); + } + r_push_light(this._light_pos, Math.sin(game_time)+this._light+6, 255,192,16); + } +} diff --git a/source/entity_trigger_level.js b/source/entity_trigger_level.js new file mode 100644 index 0000000..7d8bbe9 --- /dev/null +++ b/source/entity_trigger_level.js @@ -0,0 +1,9 @@ + +class entity_trigger_level_t extends entity_t { + _update() { + if (!this._dead && vec3_dist(this.p, game_entity_player.p) < 64) { + game_next_level(); + this._dead = 1; + } + } +} diff --git a/source/game.js b/source/game.js new file mode 100755 index 0000000..efc524e --- /dev/null +++ b/source/game.js @@ -0,0 +1,92 @@ + +let +game_tick = 0, +game_time = 0.016, +game_real_time_last, +game_message_timeout = 0, + +game_entities, +game_entities_enemies, +game_entities_friendly, +game_entity_player, +game_map_index, +game_jump_to_next_level, + +game_init = (map_index) => { + ts.style.display = 'none', + + game_entities = []; + game_entities_enemies = []; + game_entities_friendly = []; + + game_map_index = map_index; + map_init(map_data[game_map_index]); +}, + +game_next_level = () => { + game_jump_to_next_level = 1; +}, + +game_spawn = (type, pos, p1, p2) => { + let entity = new (type)(pos, p1, p2) + game_entities.push(entity); + return entity; +}, + +game_show_message = (text) => { + msg.textContent = text; + msg.style.display = 'block'; + clearTimeout(game_message_timeout); + game_message_timeout = setTimeout(()=>msg.style.display = 'none', 2000); +}, + +title_show_message = (msg, sub = '') => { + ts.innerHTML = '

'+msg+'

' + sub; + ts.style.display = 'block'; +}, + +game_run = (time_now) => { + requestAnimationFrame(game_run); + + time_now *= 0.001; + game_tick = Math.min((time_now - (game_real_time_last||time_now)),0.05); + game_real_time_last = time_now; + game_time += game_tick; + + r_prepare_frame(0.1, 0.2, 0.5); + + // Update and render entities + let alive_entities = []; + for (let entity of game_entities) { + if (!entity._dead) { + entity._update(); + alive_entities.push(entity); + } + } + game_entities = alive_entities; + + map_draw(); + r_end_frame(); + + // Reset mouse movement and buttons that should be pressed, not held. + mouse_x = mouse_y = 0; + keys[key_next] = keys[key_prev] = 0; + + if (game_jump_to_next_level) { + game_jump_to_next_level = 0; + game_map_index++; + if (game_map_index == 2) { + title_show_message('THE END', 'THANKS FOR PLAYING ❤'); + h.textContent = a.textContent = ''; + game_entity_player._dead = 1; + + // Set camera position for end screen + r_camera = vec3(1856,784,2272); + r_camera_yaw = 0; + r_camera_pitch = 0.5; + } + else { + game_init(game_map_index); + } + } +}; diff --git a/source/html_template.html b/source/html_template.html new file mode 100755 index 0000000..9c5faa8 --- /dev/null +++ b/source/html_template.html @@ -0,0 +1,3 @@ +Q1K3 \ No newline at end of file diff --git a/source/input.js b/source/input.js new file mode 100755 index 0000000..0265870 --- /dev/null +++ b/source/input.js @@ -0,0 +1,83 @@ + +// We use the ev.code for keyboard input. This contains a string like "KeyW" +// or "ArrowLeft", which is awkward to use, but it's keyboard layout neutral, +// so that WASD should work with any layout. + +// We detect the 6th or 3rd char for each of those strings and map them to an +// in-game button. + +// Movement, Action, Prev/Next, Jump +let keymap = { + W: 1, p: 1, // Key[W] or ArrowU[p] + A: 2, e: 2, // Key[A] or ArrowL[e]ft + S: 3, o: 3, // Key[S] or ArrowR[i]ght + D: 4, i: 4, // Key[D] or ArrowD[o]wn + Q: 5, // Key[Q] + E: 6, // Key[E] + c: 9, // KeySpa[c]e + }, + keys = [ + // Unused zeroth key, so we can test the keymap result for truthiness + 0, + + // WASD/Arrow Keys and prev next have to be set to zero, because we use + // the value (0 or 1) to calculate the move direction or weapon switch + 0,0,0,0, + 0,0 + + // Following Keys (action, jump) to not have to be set here + // as they are just tested for truthiness + ], + key_up = 1, + key_down = 3, + key_left = 2, + key_right = 4, + key_prev = 5, + key_next = 6, + key_action = 7, // ev.button = 0 + key_jump = 9, // ev.button = 2 + mouse_x = 0, + mouse_y = 0, + last_wheel_event = 0; + +document.onkeydown = (ev) => { + let k = keymap[ev.code[6] || ev.code[3]]; + if (k) { + ev.preventDefault(); + keys[k] = 1; + } +}; + +document.onkeyup = (ev) => { + let k = keymap[ev.code[6] || ev.code[3]]; + if (k) { + ev.preventDefault(); + keys[k] = 0; + } +}; + +document.onwheel = (ev) => { + // Allow for one wheel event every 0.1s. This sucks, but prevents free + // spinning or touch scrolling mouses (eg. Apple Magic Mouse) from doing + // wild things. + if (game_time - last_wheel_event > 0.1) { + keys[key_prev + (ev.deltaY > 1 ? 1 : 0)] = 1; + last_wheel_event = game_time; + } +}; + +c.onmousemove = (ev) => { + mouse_x += ev.movementX; + mouse_y += ev.movementY; +}; + +c.onmousedown = (ev) => { + ev.preventDefault(); + keys[key_action + ev.button] = 1; +}; + +c.onmouseup = (ev) => { + ev.preventDefault(); + keys[key_action + ev.button] = 0; +}; + diff --git a/source/main.js b/source/main.js new file mode 100755 index 0000000..cbfc87c --- /dev/null +++ b/source/main.js @@ -0,0 +1,189 @@ + +let +map_data, +model_data, + +// Particles +model_explosion, +model_blood, +model_gib, +model_gib_pieces = [], + +// Enemies +model_grunt, +model_enforcer, +model_ogre, +model_zombie, +model_hound, + +// Map Objects +model_barrel, +model_torch, + +// Weapon view models +model_shotgun, +model_nailgun, +model_grenadelauncher, + +// Pickups +model_pickup_nailgun, +model_pickup_grenadelauncher, +model_pickup_box, +model_pickup_grenades, +model_pickup_key, +model_door, + +// Projectiles +model_grenade, +model_plasma, // aka. nail + +// Sounds +sfx_enemy_hit, +sfx_enemy_gib, +sfx_enemy_hound_attack, + +sfx_no_ammo, +sfx_hurt, + +sfx_plasma_shoot, + +sfx_shotgun_shoot, +sfx_shotgun_reload, + +sfx_nailgun_shoot, +sfx_nailgun_hit, + +sfx_grenade_shoot, +sfx_grenade_bounce, +sfx_grenade_explode, + +game_load = async () => { + r_init(); + + // Create textures + ttt(texture_data).map(r_create_texture); + + // Load map & model containers + map_data = await map_load_container(/*DEBUG[*/ 'build/' + /*]*/ 'l'); + model_data = await model_load_container(/*DEBUG[*/ 'build/' + /*]*/ 'm'); + + // Create models. Many models share the same geometry just with different + // sizes and textures. + // 0: generic blob + // 1: humanoid + // 2: barrel + // 3: q logo + // 4: hound + // 5: box + // 6: nailgun + // 7: torch + + model_q = model_init(model_data[3]); + + model_explosion = model_init(model_data[0], 0.1,0.1,0.1); + model_blood = model_init(model_data[0], 0.1,0.2,0.1); + model_gib = model_init(model_data[0], 0.3,0.6,0.3); + + model_grunt = model_init(model_data[1], 2.5,2.2,2.5); + model_enforcer = model_init(model_data[1], 3,2.7,3); + model_zombie = model_init(model_data[1], 1.5,2,1.5); + model_ogre = model_init(model_data[1], 4,3,4); + model_hound = model_init(model_data[4],2.5,2.5,2.5); + + model_barrel = model_init(model_data[2], 2, 2, 2); + model_torch = model_init(model_data[7], 0.6,1,0.6); + + model_pickup_nailgun = model_init(model_data[6], 1, 1, 1); + model_pickup_grenadelauncher = model_init(model_data[2], 1, 0.5, 0.5); + model_pickup_box = model_init(model_data[5], 0.7, 0.7, 0.7); + model_pickup_grenades = model_init(model_data[5], 0.5, 1, 0.5); + model_pickup_key = model_init(model_data[5], 0.1, 0.7, 0.1); + + model_door = model_init(model_data[5], 5, 5, 0.5); + + model_shotgun = model_init(model_data[2], 1,0.2,0.2); + model_grenadelauncher = model_init(model_data[2], 0.7,0.4,0.4); + model_nailgun = model_init(model_data[6], 0.7,0.7,0.7); + + model_grenade = model_init(model_data[2], 0.3,0.3,0.3); + model_nail = model_init(model_data[2], 0.5,0.1,0.1); + + // Take some parts from the grunt model and build individual giblet models + // from it. Arms and legs and stuff... + for (let i = 0; i < 204; i+=34) { + let m = model_init(model_data[1], 2,1,2); + m.f[0] += i; + m.nv = 34; + model_gib_pieces.push(m); + } + + + r_submit_buffer(); + requestAnimationFrame(run_frame); + + f.onclick = () => g.requestFullscreen(); + g.onclick = () => { + g.onclick = () => c.requestPointerLock(); + g.onclick(); + // title_show_message('...'); + + audio_init(); + + setTimeout(()=> { + // Generate sounds + sfx_enemy_hit = audio_create_sound(135, [8,0,0,1,148,1,3,5,0,0,139,1,0,2653,0,2193,255,2,639,119,2,23,0,0,0,0,0,0,0]); + sfx_enemy_gib = audio_create_sound(140, [7,0,0,1,148,1,7,5,0,1,139,1,0,4611,789,15986,195,2,849,119,3,60,0,0,0,1,10,176,1]); + sfx_enemy_hound_attack = audio_create_sound(132, [8,0,0,1,192,1,8,0,0,1,120,1,0,5614,0,20400,192,1,329,252,1,55,0,0,1,1,8,192,3]); + + sfx_no_ammo = audio_create_sound(120, [8,0,0,0,96,1,8,0,0,0,0,0,255,0,0,1075,232,1,2132,255,0,0,0,0,0,0,0,0,0]); + sfx_hurt = audio_create_sound(135, [7,3,140,1,232,3,8,0,9,1,139,3,0,4611,1403,34215,256,4,1316,255,0,0,0,1,0,1,7,255,0]); + sfx_pickup = audio_create_sound(140, [7,0,0,1,187,3,8,0,0,1,204,3,0,4298,927,1403,255,0,0,0,3,35,0,0,0,0,0,0,0]); + + sfx_plasma_shoot = audio_create_sound(135, [8,0,0,1,147,1,6,0,0,1,159,1,0,197,1234,21759,232,2,2902,255,2,53,0,0,0,0,0,0,0]); + + sfx_shotgun_shoot = audio_create_sound(135, [7,3,0,1,255,1,6,0,0,1,255,1,112,548,1979,11601,255,2,2902,176,2,77,0,0,1,0,10,255,1]); + sfx_shotgun_reload = audio_create_sound(125, [9,0,0,1,131,1,0,0,0,0,0,3,255,137,22,1776,255,2,4498,176,2,36,2,84,0,0,3,96,0]); + + sfx_nailgun_shoot = audio_create_sound(130, [7,0,0,1,132,1,8,4,0,1,132,2,162,0,0,8339,232,2,2844,195,2,40,0,0,0,0,0,0,0]); + sfx_nailgun_hit = audio_create_sound(135, [8,0,0,1,148,1,0,0,0,0,0,1,255,0,0,2193,128,2,6982,119,2,23,0,0,0,0,0,0,0]); + + sfx_grenade_shoot = audio_create_sound(127, [8,0,0,1,171,1,9,3,0,1,84,3,96,2653,0,13163,159,2,3206,255,2,64,0,0,0,1,9,226,0]); + sfx_grenade_bounce = audio_create_sound(168, [7,0,124,0,128,0,8,5,127,0,128,0,125,88,0,2193,125,1,1238,240,1,91,3,47,0,0,0,0,0]); + sfx_grenade_explode = audio_create_sound(135, [8,0,0,1,195,1,6,0,0,1,127,1,255,197,1234,21759,232,2,1052,255,4,73,3,25,1,0,10,227,1]); + + + audio_play(audio_create_song(...music_data), 1, 1); + game_init(0); + run_frame = game_run; + },100); // Not sure why such a long delay is needed. Ideally we would + // want to use requestAnimationFrame, but the previous DOM + // update (...) never makes it to the screen then ;/ + }; +}, + +run_frame = (time_now) => { + r_prepare_frame(); + + r_draw( + vec3(0,0,0), 0, 0, 1, + model_q.f[0], model_q.f[0], 0, + model_q.nv + ); + r_push_light( + vec3(Math.sin(time_now*0.00033)*200, 100, -100), + 10, 255,192,32 + ); + r_push_light( + vec3_rotate_y(vec3(0, 0, 100),time_now*0.00063), + 10, 32,64,255 + ); + r_push_light( + vec3_rotate_y(vec3(100, 0, 0),time_now*0.00053), + 10, 196,128,255 + ); + + r_end_frame(); + requestAnimationFrame(run_frame); +}; + +game_load(); \ No newline at end of file diff --git a/source/map.js b/source/map.js new file mode 100755 index 0000000..63bdb43 --- /dev/null +++ b/source/map.js @@ -0,0 +1,170 @@ + +let +map, +map_size = 128, + +map_load_container = async (path) => { + /* Parse map container format + typedef struct { + u8 x, y, z; + u8 sx, sy, sz; + } block_t; + + typedef struct { + u8 sentinel; + u8 tex; + } block_texture_t; + + typedef struct { + char type; + u8 x, y, z; + u8 data1, data2; + } entity_t; + + struct { + u16 blocks_size; + block_t blocks[]; + u16 num_entities; + entity_t entities[num_entities]; + } map_data; + + Block data is interleaved with the block_texture_t struct to denote + the texture index to use for the following blocks. + */ + + let data = new Uint8Array(await (await fetch(path)).arrayBuffer()), + maps = []; + for (let i = 0; i < data.length;) { + let blocks_size = data[i++] | (data[i++] << 8), + cm = new Uint8Array(map_size * map_size * map_size >> 3), // collision map + nm = new Uint8Array(map_size * map_size * map_size >> 3), // nav map + b = data.subarray(i, i += blocks_size), + r = [], + t; + + // Parse block data and construct geometry and the collision map + for (let j = 0; j < b.length;) { + + // First value is either the x coordinate or a texture change + // sentinel value (255) followed by the texture coordinate + if (b[j] == 255) { + j++; + t = b[j++]; + } + let + x = b[j++], y = b[j++], z = b[j++], + sx = b[j++], sy = b[j++], sz = b[j++]; + + // Submit the block to the render buffer; we get the vertex offset + // of this block within the buffer back, so we can draw it later + r.push({ + t, + b: r_push_block( + x << 5, y << 4, z << 5, + sx << 5, sy << 4, sz << 5, + t + ) + }); + + // The collision map is a bitmap; 8 x blocks per byte + for (let cz = z; cz < z + sz; cz++) { + for (let cy = y; cy < y + sy; cy++) { + for (let cx = x; cx < x + sx; cx++) { + cm[ + ( + cz * map_size * map_size + + cy * map_size + + cx + ) >> 3 + ] |= 1 << (cx & 7); + } + } + } + } + + // Slice of entity data; we parse it when we actually spawn + // the entities in map_init() + let num_entities = data[i++] | (data[i++] << 8), + e = data.subarray(i, i += num_entities * 6 /*sizeof(entity_t)*/); + maps.push({cm, e, r}); + } + return maps; +}, + +map_init = (m) => { + map = m; + + // Entity Id to class - must be consistent with map_packer.c line ~900 + let spawn_class = [ + /* 00 */ entity_player_t, + /* 01 */ entity_enemy_grunt_t, + /* 02 */ entity_enemy_enforcer_t, + /* 03 */ entity_enemy_ogre_t, + /* 04 */ entity_enemy_zombie_t, + /* 05 */ entity_enemy_hound_t, + /* 06 */ entity_pickup_nailgun_t, + /* 07 */ entity_pickup_grenadelauncher_t, + /* 08 */ entity_pickup_health_t, + /* 09 */ entity_pickup_nails_t, + /* 10 */ entity_pickup_grenades_t, + /* 11 */ entity_barrel_t, + /* 12 */ entity_light_t, + /* 13 */ entity_trigger_level_t, + /* 14 */ entity_door_t, + /* 15 */ entity_pickup_key_t, + /* 16 */ entity_torch_t, + ]; + + // Parse entity data and spawn all entities for this map + for (let i = 0; i < map.e.length;) { + let type = spawn_class[m.e[i++]]; + game_spawn( + type, + vec3(m.e[i++] * 32, m.e[i++] * 16, m.e[i++] * 32), + m.e[i++], m.e[i++] + ); + } +}, + +map_block_at = (x, y, z) => + map.cm[ + ( + z * map_size * map_size + + y * map_size + + x + ) >> 3 + ] & (1 << (x & 7)), + +map_trace = (a, b) => { + let diff = vec3_sub(b, a), + step_dir = vec3_mulf(vec3_normalize(diff), 16), + steps = vec3_length(diff)/16; + + for (let i = 0; i < steps; i++) { + a = vec3_add(a, step_dir); + if (map_block_at(a.x >> 5, a.y >> 4, a.z >> 5)) { + return a; + } + } + return null; +}, + +map_block_at_box = (box_start, box_end) => { + for (let z = box_start.z >> 5; z <= box_end.z >> 5; z++) { + for (let y = box_start.y >> 4; y <= box_end.y >> 4; y++) { + for (let x = box_start.x >> 5; x <= box_end.x >> 5; x++) { + if (map_block_at(x, y, z)) { + return true; + } + } + } + } + return false; +}, + +map_draw = () => { + let p = vec3(); + for (let r of map.r) { + r_draw(p, 0, 0, r.t, r.b,r.b,0,36); + } +}; diff --git a/source/math_utils.js b/source/math_utils.js new file mode 100755 index 0000000..e8a71da --- /dev/null +++ b/source/math_utils.js @@ -0,0 +1,21 @@ + +let +clamp = (v, min, max) => v < min ? min : (v > max ? max : v), +scale = (v, in_min, in_max, out_min, out_max) => out_min + ((out_max) - out_min) * (((v) - in_min) / ((in_max) - in_min)), +anglemod = (r) => Math.atan2(Math.sin(r), Math.cos(r)), +vec3 = (x = 0, y = 0, z = 0) => ({x, y, z}), +vec3_rotate_yaw_pitch = (p, yaw, pitch) => vec3_rotate_y(vec3_rotate_x(p, pitch), yaw), +vec3_rotate_y = (p, rad) => vec3(p.z * Math.sin(rad) + p.x * Math.cos(rad), p.y, p.z * Math.cos(rad) - p.x * Math.sin(rad)), +vec3_rotate_x = (p, rad) => vec3(p.x, p.y * Math.cos(rad) - p.z * Math.sin(rad), p.y * Math.sin(rad) + p.z * Math.cos(rad)), +vec3_2d_angle = (a, b) => Math.atan2(b.x - a.x, b.z - a.z), +vec3_clone = (a) => vec3(a.x,a.y,a.z), +vec3_length = (a) => Math.hypot(a.x,a.y,a.z), +vec3_dist = (a, b) => vec3_length(vec3_sub(a, b)), +vec3_dot = (a, b) => (a.x * b.x + a.y * b.y + a.z * b.z), +vec3_add = (a, b) => vec3(a.x + b.x, a.y + b.y, a.z + b.z), +vec3_sub = (a, b) => vec3(a.x - b.x, a.y - b.y, a.z - b.z), +vec3_mul = (a, b) => vec3(a.x * b.x, a.y * b.y, a.z * b.z), +vec3_mulf = (a, b) => vec3(a.x * b, a.y * b, a.z * b), +vec3_cross = (a, b) => vec3(a.y * b.z - a.z * b.y, a.z * b.x - a.x * b.z, a.x * b.y - a.y * b.x), +vec3_normalize = (v) => vec3_mulf(v, 1/vec3_length(v)), +vec3_face_normal = (v0, v1, v2) => vec3_normalize(vec3_cross(vec3_sub(v0, v1), vec3_sub(v2, v1))); diff --git a/source/model.js b/source/model.js new file mode 100755 index 0000000..9972004 --- /dev/null +++ b/source/model.js @@ -0,0 +1,107 @@ + +let +model_load_container = async (path) => { + /* Parse Retarded Model Format (.rmf): + struct { + u8 num_frames; + u8 num_verts; // per frame + u8 num_indices; + struct { + u8 x, y, z; + } verts[num_frames * num_verts]; + struct { + u8 a_address_inc, b_index, c_index; + } indices[num_indices]; + } rmf_data; + */ + let data = new Uint8Array(await (await fetch(path)).arrayBuffer()), + models = []; + + for (let i = 0; i < data.length;) { + // let model_size = num_frames * num_verts * 3 + num_indices * 3 + let model_size = (data[i++] * data[i++] + data[i++]) * 3; + models.push(data.subarray(i-3, i += model_size)); + } + return models; +}, + +model_init = (data, sx = 1, sy = 1, sz = 1) => { + // Load header, prepare buffers + let j = 0, + num_frames = data[j++], + num_vertices = data[j++], + num_indices = data[j++], + vertices = new Float32Array(num_vertices * num_frames * 3), + indices = new Uint8Array(num_indices * 3), + + index_increment = 0, + offset = 2, + + // Load vertices, center on origin (-15), scale, find the + // min/max x and y to compute our UV coords accordingly. + min_x = 16, + max_x = -16, + min_y = 16, + max_y = -16; + + for (let i = 0; i < num_vertices * num_frames * 3; i += 3) { + vertices[i] = (data[j++] - 15) * sx; + vertices[i+1] = (data[j++] - 15) * sy; + vertices[i+2] = (data[j++] - 15) * sz; + + // Find min/max only for the first frame + if (i < num_vertices * 3) { + min_x = Math.min(min_x, vertices[i]); + max_x = Math.max(max_x, vertices[i]); + min_y = Math.min(min_y, vertices[i+1]); + max_y = Math.max(max_y, vertices[i+1]); + } + } + + // Load indices, 1x 2bit increment, 2x 7bit absolute + for (let i = 0; i < num_indices * 3; i += 3) { + index_increment += data[j++]; + indices[i] = index_increment; + indices[i+1] = data[j++]; + indices[i+2] = data[j++]; + } + + // UV coords in texture space and width/height as fraction of model size + let uf = 1 / (max_x - min_x), + u = -min_x * uf, + vf = -1 / (max_y - min_y), + v = max_y * vf; + + // Compute normals for each frame and face and submit to render buffer. + // Capture the current vertex offset for the first vertex of each frame. + let frames = []; + + for (let frame_index = 0; frame_index < num_frames; frame_index++) { + frames.push(r_num_verts); + + let vertex_offset = frame_index * num_vertices * 3; + for (let i = 0; i < num_indices * 3; i += 3) { + + let mv = [], uv = []; + for (let face_vertex = 0, o = 0; face_vertex < 3; face_vertex++) { + let idx = indices[i + face_vertex] * 3; + mv[face_vertex] = vec3( + vertices[vertex_offset + idx + 0], + vertices[vertex_offset + idx + 1], + vertices[vertex_offset + idx + 2] + ); + uv[face_vertex] = { + u: vertices[idx + 0] * uf + u, + v: vertices[idx + 1] * vf + v + }; + } + + let n = vec3_face_normal(mv[2], mv[1], mv[0]); + r_push_vert(mv[2], n, uv[2].u, uv[2].v); + r_push_vert(mv[1], n, uv[1].u, uv[1].v); + r_push_vert(mv[0], n, uv[0].u, uv[0].v); + } + } + + return {f: frames, nv: num_indices * 3}; +} diff --git a/source/music.js b/source/music.js new file mode 100644 index 0000000..7e93c06 --- /dev/null +++ b/source/music.js @@ -0,0 +1,2 @@ + +let music_data = [6014,21,88,[[[7,0,0,1,255,0,7,0,0,1,255,0,0,100,0,3636,254,2,1199,254,4,71,0,0,0,0,0,0,0],[1,1,1,1,1,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1],[[126,126,0,0,126,0,0,0,0,0,0,0,0,0,0,0,126,126,0,0,126,0,0,0,0,0,0,0,0,0,0,0]]],[[6,0,0,0,255,2,6,0,18,0,255,2,0,100000,56363,100000,199,2,200,254,8,24,0,0,0,0,0,0,0],[0,0,2,2,3,4,2,2,3,5,2,2,3,4,2,2,3,5],[[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[132,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[133,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,128,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[125,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[120,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]],[[7,0,0,0,87,2,8,0,0,0,16,3,8,0,22,2193,255,3,1162,51,10,182,2,190,0,1,10,96,0],[0,0,0,0,0,0,1,1,1,1,1,1,1,1],[[149,149,0,0,149,0,149,0,149,149,0,0,149,0,149,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]]],[[8,0,0,0,65,2,6,0,0,0,243,3,0,200,7505,20000,204,4,6180,81,4,198,0,0,0,0,6,131,0],[0,0,0,0,0,0,0,0,0,0,1,1,2,3,1,1,2,3],[[132,0,0,0,0,0,0,0,133,0,0,0,137,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[132,0,0,0,0,0,0,0,133,0,0,0,130,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],[132,0,0,0,0,0,0,0,133,0,0,0,125,0,0,0,0,0,0,0,125,0,0,0,0,0,0,0,0,0,0,0]]]]]; \ No newline at end of file diff --git a/source/renderer.js b/source/renderer.js new file mode 100755 index 0000000..e7c75bf --- /dev/null +++ b/source/renderer.js @@ -0,0 +1,354 @@ + +let +options = {antialias: false}, +gl = (c.getContext('webgl', options) || c.getContext('experimental-webgl', options)), + +R_MAX_VERTS = 1024 * 64, // allow 512k verts max +R_MAX_LIGHT_V3 = 64, + +// Vertex shader source. This translates the model position & rotation and also +// mixes positions of two buffers for animations. +R_SOURCE_VS = + 'precision highp float;' + + + // Vertex positions, normals and uv coords for the fragment shader + 'varying vec3 vp,vn;' + + 'varying vec2 vt;' + + + // Input vertex positions & normals and blend vertex positions & normals + 'attribute vec3 p,n,p2,n2;' + + + // Input UV coords + 'attribute vec2 t;' + + + // Camera position (x, y, z) and aspect ratio (w) + 'uniform vec4 c;' + + + // Model position (x, y, z) + 'uniform vec3 mp;' + + + // Model rotation (yaw, pitch) + 'uniform vec2 mr;' + + + // Mouse rotation yaw (x), pitch (y) + 'uniform vec2 m;' + + + // Blend factor between the two vertex positions + 'uniform float f;' + + + // Generate a rotation Matrix around the x,y,z axis; + // Used for model rotation and camera yaw + 'mat4 rx(float r){' + + 'return mat4(' + + '1,0,0,0,' + + '0,cos(r),sin(r),0,' + + '0,-sin(r),cos(r),0,' + + '0,0,0,1' + + ');' + + '}' + + + 'mat4 ry(float r){' + + 'return mat4(' + + 'cos(r),0,-sin(r),0,' + + '0,1,0,0,' + + 'sin(r),0,cos(r),0,' + + '0,0,0,1' + + ');' + + '}' + + + 'mat4 rz(float r){' + + 'return mat4(' + + 'cos(r),sin(r),0,0,' + + '-sin(r),cos(r),0,0,' + + '0,0,1,0,' + + '0,0,0,1' + + ');' + + '}' + + + 'void main(void){' + + // Rotation Matrixes for model rotation + 'mat4 '+ + 'mry=ry(mr.x),' + + 'mrz=rz(mr.y);' + + + // Mix vertex positions, rotate and add the model position + 'vp=(mry*mrz*vec4(mix(p,p2,f),1.)).xyz+mp;' + + + // Mix normals + 'vn=(mry*mrz*vec4(mix(n,n2,f),1.)).xyz;' + + + // UV coords are handed over to the fragment shader as is + 'vt=t;' + + + // Final vertex position is transformed by the projection matrix, + // rotated around mouse yaw/pitch and offset by the camera position + // We use a FOV of 90, so the matrix[0] and [5] are conveniently 1. + // (1 / Math.tan((90/180) * Math.PI / 2) === 1) + 'gl_Position=' + + 'mat4(' + + '1,0,0,0,' + + '0,c.w,0,0,' + + '0,0,1,1,' + + '0,0,-2,0' + + ')*' + // projection + 'rx(-m.y)*ry(-m.x)*' + + 'vec4(vp-c.xyz,1.);' + + '}', + +// Fragment shader source. Calculates the lighting, does some cheesy gamma +// correction and reduces the colors of the final output. +R_SOURCE_FS = + 'precision highp float;' + + + // Vertex positions, normals and uv coords + 'varying vec3 vp,vn;' + + 'varying vec2 vt;' + + + 'uniform sampler2D s;' + + + // Lights [(x,y,z), [r,g,b], ...] + 'uniform vec3 l['+R_MAX_LIGHT_V3+'];' + + + 'void main(void){' + + 'gl_FragColor=texture2D(s,vt);' + + + // Debug: no textures + // 'gl_FragColor=vec4(1.0,1.0,1.0,1.0);' + + + // Calculate all lights + 'vec3 vl;' + + 'for(int i=0;i<'+R_MAX_LIGHT_V3+';i+=2) {' + + 'vl+=' + + // Angle to normal + 'max('+ + 'dot('+ + 'vn, normalize(l[i]-vp)' + + ')' + + ',0.)*' + + '(1./pow(length(l[i]-vp),2.))' + // Inverse distance squared + '*l[i+1];' + // Light color/intensity + '}' + + + // Debug: full bright lights + // 'vl = vec3(2,2,2);' + + + 'gl_FragColor.rgb=floor('+ + 'gl_FragColor.rgb*pow(vl,vec3(0.75))'+ // Light, Gamma + '*16.0+0.5'+ + ')/16.0;' + // Reduce final output color for some extra dirty looks + '}', + +// 8 properties per vert [x,y,z, u,v, nx,ny,nz] +r_buffer = new Float32Array(R_MAX_VERTS*8), +r_num_verts = 0, + +// 2 vec3 per light [(x,y,z), [r,g,b], ...] +r_light_buffer = new Float32Array(R_MAX_LIGHT_V3*3), +r_num_lights = 0, + +// Uniform locations +r_u_camera, +r_u_lights, +r_u_mouse, +r_u_pos, +r_u_rotation, +r_u_frame_mix, + +// Vertex attribute location for mixing +r_va_p2, r_va_n2, + +// Texture handles +r_textures = [], + +// Camera position +r_camera = vec3(0, 0,-50), +r_camera_pitch = 0.2, +r_camera_yaw = 0, + +// We collect all draw calls in an array and draw them all at once at the end +// the frame. This way the lights buffer will be completely filled and we +// only need to set it once for all geometry +r_draw_calls = [], + +r_init = () => { + // Create shorthand WebGL function names + // let webglShortFunctionNames = {}; + for (let name in gl) { + if (gl[name].length != undefined) { + gl[name.match(/(^..|[A-Z]|\d.|v$)/g).join('')] = gl[name]; + // webglShortFunctionNames[name] = 'gl.' +name.match(/(^..|[A-Z]|\d.|v$)/g).join(''); + } + } + // console.log(JSON.stringify(webglShortFunctionNames, null, '\t')); + + let shader_program = gl.createProgram(); + gl.attachShader(shader_program, r_compile_shader(gl.VERTEX_SHADER, R_SOURCE_VS)); + gl.attachShader(shader_program, r_compile_shader(gl.FRAGMENT_SHADER, R_SOURCE_FS)); + gl.linkProgram(shader_program); + gl.useProgram(shader_program); + + r_u_camera = gl.getUniformLocation(shader_program, 'c'); + r_u_lights = gl.getUniformLocation(shader_program, 'l'); + r_u_mouse = gl.getUniformLocation(shader_program, 'm'); + r_u_pos = gl.getUniformLocation(shader_program, 'mp'); + r_u_rotation = gl.getUniformLocation(shader_program, 'mr'); + r_u_frame_mix = gl.getUniformLocation(shader_program, 'f'); + + gl.bindBuffer(gl.ARRAY_BUFFER, gl.createBuffer()); + + r_vertex_attrib(shader_program, 'p', 3, 8, 0); // position + r_vertex_attrib(shader_program, 't', 2, 8, 3); // texture coord + r_vertex_attrib(shader_program, 'n', 3, 8, 5); // normals + + r_va_p2 = r_vertex_attrib(shader_program, 'p2', 3, 8, 0); // mix position + r_va_n2 = r_vertex_attrib(shader_program, 'n2', 3, 8, 5); // mix normals + + gl.enable(gl.DEPTH_TEST); + gl.enable(gl.BLEND); + gl.enable(gl.CULL_FACE); + gl.viewport(0,0,c.width,c.height); +}, + +r_compile_shader = (shader_type, shader_source) => { + let shader = gl.createShader(shader_type); + gl.shaderSource(shader, shader_source); + gl.compileShader(shader); + // console.log(gl.getShaderInfoLog(shader)); + return shader; +}, + +r_vertex_attrib = (shader_program, attrib_name, count, vertex_size, offset) => { + let location = gl.getAttribLocation(shader_program, attrib_name); + gl.enableVertexAttribArray(location); + gl.vertexAttribPointer(location, count, gl.FLOAT, false, vertex_size * 4, offset * 4); + return location; +}, + +r_create_texture = (c) => { + let t = {t:gl.createTexture(), c}; + gl.bindTexture(gl.TEXTURE_2D, t.t); + gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, c); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST_MIPMAP_NEAREST); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.REPEAT); + gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.REPEAT); + gl.generateMipmap(gl.TEXTURE_2D); + r_textures.push(t); +}, + +r_prepare_frame = (r,g,b) => { + gl.clearColor(r,g,b,1); + gl.clear(gl.COLOR_BUFFER_BIT|gl.DEPTH_BUFFER_BIT); + + r_num_lights = 0; + r_light_buffer.fill(0); +}, + +r_end_frame = () => { + gl.uniform4f(r_u_camera, r_camera.x, r_camera.y, r_camera.z, 16/9); + gl.uniform2f(r_u_mouse, r_camera_yaw, r_camera_pitch); + gl.uniform3fv(r_u_lights, r_light_buffer); + + let vo = 0, + last_texture = -1; + for (let c of r_draw_calls) { + + // c = [x, y, z, yaw, pitch, texture, offset1, offset2, mix, length] + + // Bind new texture only if it changed from the previous one. The map + // is sorted by texture indices, so this helps. + if (last_texture != c[5]) { + last_texture = c[5]; + gl.bindTexture(gl.TEXTURE_2D, r_textures[last_texture].t); + } + + gl.uniform3f(r_u_pos, c[0], c[1], c[2]); + gl.uniform2f(r_u_rotation, c[3], c[4]); + gl.uniform1f(r_u_frame_mix, c[8]); + + // If we have two different frames, calculate the offset from the + // drawArrays call to the mix frame. + // Setting the vertexAttribPointer is quite expensive, so we only + // do this if we have to; i.e. for animated models. + if (vo != (c[7]-c[6])) { + vo = (c[7]-c[6]); + gl.vertexAttribPointer(r_va_p2, 3, gl.FLOAT, false, 8 * 4, vo*8*4); + gl.vertexAttribPointer(r_va_n2, 3, gl.FLOAT, false, 8 * 4, (vo*8+5)*4); + } + gl.drawArrays(gl.TRIANGLES, c[6], c[9]); + } + + // Reset draw calls + r_draw_calls = []; +}, + +r_draw = (pos, yaw, pitch, texture, f1, f2, mix, num_verts) => { + r_draw_calls.push([ + pos.x, pos.y, pos.z, yaw, pitch, + texture, f1, f2, mix, num_verts + ]); +}, + +r_submit_buffer = () => { + gl.bufferData(gl.ARRAY_BUFFER, r_buffer.subarray(0, r_num_verts*8), gl.STATIC_DRAW); +}, + +r_push_vert = (pos, normal, u, v) => { + r_buffer.set([pos.x, pos.y, pos.z, u, v, normal.x, normal.y, normal.z], r_num_verts * 8); + r_num_verts++; +}, + +r_push_quad = (v0, v1, v2, v3, u, v) => { + let n = vec3_face_normal(v0, v1, v2); + r_push_vert(v0, n, u, 0); + r_push_vert(v1, n, 0, 0); + r_push_vert(v2, n, u, v); + r_push_vert(v3, n, 0, v); + r_push_vert(v2, n, u, v); + r_push_vert(v1, n, 0, 0); +}, + +r_push_block = (x, y, z, sx, sy, sz, texture) => { + let canvas = r_textures[texture].c, + index = r_num_verts, + tx = sx/canvas.width, + ty = sy/canvas.height, + tz = sz/canvas.width, + + // top + v0 = vec3(x, y + sy, z), + v1 = vec3(x + sx, y + sy, z), + v2 = vec3(x, y + sy, z + sz), + v3 = vec3(x + sx, y + sy, z + sz), + + // bottom + v4 = vec3(x, y, z + sz), + v5 = vec3(x + sx, y, z + sz), + v6 = vec3(x, y, z), + v7 = vec3(x + sx, y, z); + + r_push_quad(v0, v1, v2, v3, tx, tz); // top + r_push_quad(v4, v5, v6, v7, tx, tz); // bottom + r_push_quad(v2, v3, v4, v5, tx, ty); // front + r_push_quad(v1, v0, v7, v6, tx, ty); // back + r_push_quad(v3, v1, v5, v7, tz, ty); // right + r_push_quad(v0, v2, v6, v4, tz, ty); // left + return index; +}, + +r_push_light = (pos, intensity, r, g, b) => { + // Calculate the distance to the light, fade it out between 768--1024 + let fade = clamp( + scale( + vec3_dist(pos, r_camera), + 768, 1024, 1, 0 + ), + 0, 1 + ) * intensity * 10; + + if (fade && r_num_lights < R_MAX_LIGHT_V3/2) { + r_light_buffer.set([pos.x, pos.y, pos.z, r*fade, g*fade, b*fade], r_num_lights*6); + r_num_lights++; + } +}; + diff --git a/source/textures.js b/source/textures.js new file mode 100644 index 0000000..89b7230 --- /dev/null +++ b/source/textures.js @@ -0,0 +1,2 @@ + +let texture_data = [[64,64,0,2,3,1.4,2,17176,1.3],[64,64,38751,1,18,4,2,2,27,9,65530,0,7,1,-1,9,13,5,52,8,8,65528,39039,4,0,0,0,64,512,15,4,0,0,0,64,64,14],[64,64,38751,1,18,4,2,2,27,9,65530,0,7,1,-1,0,13,64,52,64,8,65531,39039,4,0,0,0,64,512,15,4,0,0,0,64,64,14],[64,64,13119,4,1,0,0,64,64,15,0,24,11,17,50,65523,2,8],[32,32,21839,1,0,2,10,2,11,4,65528,10,25931,4,0,0,0,32,32,14],[32,32,17487,0,1,1,30,30,65528,11,21580,4,0,0,0,32,32,15],[32,32,30015,4,5,0,0,32,32,15,1,5,4,2,2,22,6,65522,0,8],[32,32,8751,1,1,1,8,4,11,5,65524,15,17487,4,0,0,0,64,64,15],[32,32,13119,4,4,0,0,32,32,15,1,10,3,11,6,25,10,64536,64568,65519],[32,32,8751,1,1,1,3,3,4,4,65524,14,21565,1,1,-1,15,1,16,16,65522,7,0,1,-1,0,1,15,16,6,65521,0,4,4,0,0,0,32,32,15],[32,32,8719,2,63506,1,4,0,0,0,32,32,12],[32,32,21295,4,10,0,-4,32,298,10,2,4372,1],[32,32,8463,1,-1,1,35,1,35,4,65522,10,34399,0,-1,6,34,6,65526,2,34399,2,29479,1,4,6,0,0,32,32,5],[32,32,5535,4,0,0,0,128,64,14],[32,32,8463,1,0,0,3,3,4,4,0,10,65521,0,4,4,23,23,10,64885,21551,3,4,16,13,0,11,"::][::",4,0,4,4,26,26,15],[32,32,8751,1,1,1,8,3,11,5,65524,15,17487,0,9,6,14,13,15,65525,4383,4,0,0,0,64,64,12,3,10,11,20267,0,8,"---"],[32,32,17487,4,5,0,0,32,32,15,1,4,4,3,3,22,22,65523,7,30587],[64,64,38767,2,36875,2.5,1,4,10,15,8,39,59,15,15,8463,1,3,30,14,5,15,6,12813,4367,38671,0,20,1,22,6,13119,10,38671,4,0,0,0,64,64,11],[32,32,40975,2,63308,1.5,2,63751,7.3],[64,64,13119,4,17,0,0,64,64,15,0,0,29,64,64,0,0,89,4,4,21,-6,22,24,15],[32,32,13119,4,9,0,0,32,32,15,4,8,6,-22,21,32,15,4,18,0,0,32,32,4],[64,64,13119,0,0,0,64,64,0,0,64271,3,-1,50,33795,0,32,"XXX",4,7,0,0,64,64,6],[64,64,34063,4,7,0,0,64,64,12,2,12554,1],[32,32,65535,4,12,0,0,32,32,9,3,6,30,61455,0,25,"+"],[32,32,5903,4,12,0,0,32,32,9,3,5,14,65529,0,12,"NIИ"],[32,32,64271,0,12,1,7,30,65528,8,63247,4,7,0,0,32,32,8],[32,32,13119,1,1,1,14,14,16,32,56328,15,26399,1,-7,17,14,14,16,32,56328,8,26159,2,29706,1,4,0,0,0,32,320,14],[32,32,33567,1,1,1,6,30,16,31,65526,15,33823,1,9,-14,6,30,16,32,65526,15,29743,2,55625,1.5,4,0,0,0,32,320,15],[32,32,12559,1,1,1,14,14,16,16,65525,7,21295,0,1,1,14,14,65525,0,34399,0,17,17,14,14,65524,0,34399,2,8,1.5],[32,32,9503,4,11,0,0,32,32,12,1,1,1,6,7,6,8,65521,0,4],[32,32,15,4,18,0,16,32,32,15,4,27,0,-16,32,32,10]]; diff --git a/source/ttt.js b/source/ttt.js new file mode 100644 index 0000000..ca665df --- /dev/null +++ b/source/ttt.js @@ -0,0 +1,111 @@ +/* +TTT Tiny Texture Tumbler +Dominic Szablewski - https://phoboslab.org + +-- LICENSE: The MIT License(MIT) +Copyright(c) 2019 Dominic Szablewski +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. +*/ + +// Compress with: +// uglifyjs ttt.js --compress --screw-ie8 --mangle toplevel -o ttt.min.js +let +ttt=(td, only_this_index = -1,stack_depth = 0) => { + return td.filter((d,i) => only_this_index < 0 || i == only_this_index).map(d => { + let i = 0, + e = document.createElement('canvas'), + c = e.getContext('2d'), + rgba_from_2byte = (c) => + 'rgba(' + [ + ((c>>12)&15) * 17, + ((c>>8)&15) * 17, + ((c>>4)&15) * 17, + (c&15)/15 + ].join() + ')', + fill_rect = (x, y, w, h, ...colors) => + colors.map((color, j) => { + c.fillStyle = rgba_from_2byte(color); + c.fillRect(x+[-1,1,0][j], y+[-1,1,0][j], w, h); + }) + ; + // Set up canvas width and height + e.width = d[i++]; + e.height = d[i++]; + + // Fill with background color + fill_rect(0, 0, e.width, e.height, 0,0, d[i++]); + + // Perform all the steps for this texture + while (i < d.length) { + let f = [ + // 0 - rectangle: x, y, width, height, top, bottom, fill + (x, y, width, height, top, bottom, fill) => { + fill_rect(x, y, width, height, top, bottom, fill) + }, + + // 1 - rectangle_multiple: start_x, start_y, width, height, + // inc_x, inc_y, top, bottom, fill + (sx, sy, w, h, inc_x, inc_y, top, bottom, fill) => { + for (let x = sx; x < e.width; x += inc_x) { + for (let y = sy; y < e.height; y += inc_y) { + fill_rect(x, y, w, h, top, bottom, fill); + } + } + }, + + // 2 - random noise: color, size + (color, size) => { + for (let x = 0; x < e.width; x += size) { + for (let y = 0; y < e.height; y += size) { + // Take the color value (first 3 nibbles) and + // randomize the alpha value (last nibble) + // between 0 and the input alpha. + fill_rect( + x, y, size, size, 0, 0, + (color&0xfff0) + Math.random()*(color&15) + ); + } + } + }, + + // 3 - text: x, y, color, font,size, text + (x, y, color, font, size, text) => { + c.fillStyle = rgba_from_2byte(color); + c.font = size + 'px ' + ['sans-',''][font]+'serif'; + c.fillText(text, x, y); + }, + + // 4 - draw a previous texture + // We limit the stack depth here to not end up in an infinite + // loop by accident + (texture_index, x, y, w, h, alpha) => { + c.globalAlpha = alpha/15; + ( + texture_index < td.length && stack_depth < 16 && + c.drawImage( + ttt(td, texture_index, stack_depth+1)[0], + x, y, w, h + ) + ); + c.globalAlpha = 1; + } + ][d[i++]]; + f(...d.slice(i, i+=f.length)); + } + return e; + }); +}; diff --git a/source/weapons.js b/source/weapons.js new file mode 100644 index 0000000..1f64d4c --- /dev/null +++ b/source/weapons.js @@ -0,0 +1,86 @@ + +class weapon_t { + constructor() { + this._needs_ammo = 1; + this._projectile_offset = vec3(0,0,8); + this._init(); + } + + _shoot(pos, yaw, pitch) { + if (this._needs_ammo) { + this._ammo--; + } + audio_play(this._sound); + this._spawn_projectile(pos, yaw, pitch); + } + + _spawn_projectile(pos, yaw, pitch) { + let projectile = game_spawn(this._projectile_type, vec3_add( + pos, + vec3_add( + vec3(0, 12, 0), + vec3_rotate_yaw_pitch( + this._projectile_offset, + yaw, pitch + ) + ) + )); + + // Set the projectile velocity, yaw and pitch + projectile.v = vec3_rotate_yaw_pitch( + vec3(0, 0, this._projectile_speed), + yaw, pitch + ); + projectile._yaw = yaw -Math.PI/2; + projectile._pitch = -pitch; + projectile._check_against = ENTITY_GROUP_ENEMY; + + // Alternate left/right fire for next projectile (nailgun) + this._projectile_offset.x *= -1; + } +} + +class weapon_shotgun_t extends weapon_t { + _init() { + this._texture = 7; + this._model = model_shotgun; + this._sound = sfx_shotgun_shoot; + this._needs_ammo = 0; + this._reload = 0.9; + this._projectile_type = entity_projectile_shell_t; + this._projectile_speed = 10000; + } + + _spawn_projectile(pos, yaw, pitch) { + setTimeout(()=>audio_play(sfx_shotgun_reload), 200); + setTimeout(()=>audio_play(sfx_shotgun_reload), 350); + for (let i = 0; i < 8; i++) { + super._spawn_projectile(pos, yaw+Math.random()*0.08-0.04, pitch+Math.random()*0.08-0.04); + } + } +} + +class weapon_nailgun_t extends weapon_t { + _init() { + this._texture = 4; + this._model = model_nailgun; + this._sound = sfx_nailgun_shoot; + this._ammo = 100; + this._reload = 0.09; + this._projectile_type = entity_projectile_nail_t; + this._projectile_speed = 1300; + this._projectile_offset = vec3(6,0,8); + } +} + +class weapon_grenadelauncher_t extends weapon_t { + _init() { + this._texture = 21; + this._model = model_grenadelauncher; + this._sound = sfx_grenade_shoot; + this._ammo = 10; + this._reload = 0.650; + this._projectile_type = entity_projectile_grenade_t; + this._projectile_speed = 900; + } +} \ No newline at end of file diff --git a/source/wrap_post.js b/source/wrap_post.js new file mode 100644 index 0000000..9cfedc3 --- /dev/null +++ b/source/wrap_post.js @@ -0,0 +1,2 @@ +}; +gs(); \ No newline at end of file diff --git a/source/wrap_pre.js b/source/wrap_pre.js new file mode 100644 index 0000000..bcd0681 --- /dev/null +++ b/source/wrap_pre.js @@ -0,0 +1,9 @@ +// Holy hell, wtf, bbq! If we don't wrap the whole game in a global function, +// installed on the window scope, everything will be garbage collected in chrome +// in the roadrolled version, even though the requestAnimationFrame should hold +// on to the closure. + +// I assumme it's a weird interaction between eval() (used by roadroller) and +// async functions. In any case, it seems to be a bug in v8. + +gs = () => { \ No newline at end of file