Merge branch 'explain-assert' into master
authorAlexis Laferrière <alexis.laf@xymus.net>
Fri, 16 Feb 2018 16:26:25 +0000 (11:26 -0500)
committerAlexis Laferrière <alexis.laf@xymus.net>
Fri, 16 Feb 2018 16:26:25 +0000 (11:26 -0500)
673 files changed:
.gitignore
benchmarks/bench_engines.sh
benchmarks/microbenches/catches.nit [new file with mode: 0644]
clib/gc_chooser.c
contrib/action_nitro/Makefile
contrib/action_nitro/src/action_nitro.nit
contrib/asteronits/.gitignore [new file with mode: 0644]
contrib/asteronits/Makefile
contrib/asteronits/src/asteronits.nit
contrib/asteronits/src/touch_ui.nit
contrib/benitlux/src/client/android.nit
contrib/crazy_moles/.gitignore [deleted file]
contrib/crazy_moles/Makefile [deleted file]
contrib/crazy_moles/README.md [deleted file]
contrib/crazy_moles/art/drawing.svg [deleted file]
contrib/crazy_moles/art/icon.svg [deleted file]
contrib/crazy_moles/org.nitlanguage.moles_android.txt [deleted file]
contrib/crazy_moles/package.ini [deleted file]
contrib/crazy_moles/src/effects.nit [deleted file]
contrib/crazy_moles/src/moles.nit [deleted file]
contrib/crazy_moles/src/moles_android.nit [deleted file]
contrib/crazy_moles/src/more_traps.nit [deleted file]
contrib/friendz/.gitignore [deleted file]
contrib/friendz/Makefile [deleted file]
contrib/friendz/README.md [deleted file]
contrib/friendz/android/res/raw/music.ogg [deleted file]
contrib/friendz/art/icon.svg [deleted file]
contrib/friendz/assets/background.png [deleted file]
contrib/friendz/assets/bing.wav [deleted file]
contrib/friendz/assets/click.wav [deleted file]
contrib/friendz/assets/deltaforce_font.png [deleted file]
contrib/friendz/assets/duh.wav [deleted file]
contrib/friendz/assets/hitbox.png [deleted file]
contrib/friendz/assets/level.wav [deleted file]
contrib/friendz/assets/logo.png [deleted file]
contrib/friendz/assets/music.ogg [deleted file]
contrib/friendz/assets/tiles2.png [deleted file]
contrib/friendz/assets/whip.wav [deleted file]
contrib/friendz/org.nitlanguage.friendz_android.txt [deleted file]
contrib/friendz/package.ini [deleted file]
contrib/friendz/src/friendz.nit [deleted file]
contrib/friendz/src/friendz_android.nit [deleted file]
contrib/friendz/src/friendz_linux.nit [deleted file]
contrib/friendz/src/grid.nit [deleted file]
contrib/friendz/src/level.nit [deleted file]
contrib/friendz/src/solver.nit [deleted file]
contrib/friendz/src/solver_cmd.nit [deleted file]
contrib/inkscape_tools/Makefile
contrib/inkscape_tools/README.md
contrib/inkscape_tools/src/svg_to_png_and_nit.nit
contrib/inkscape_tools/tests/app/Makefile [deleted file]
contrib/inkscape_tools/tests/app/art/drawing.svg [deleted file]
contrib/inkscape_tools/tests/app/src/s2pn.nit [deleted file]
contrib/inkscape_tools/tests/app/src/s2pn_android.nit [deleted file]
contrib/inkscape_tools/tests/packages.ini [deleted file]
contrib/jwrapper/examples/java_api/api_user.nit
contrib/jwrapper/examples/queue/user_test.nit
contrib/memory/.gitignore [deleted file]
contrib/memory/Makefile [deleted file]
contrib/memory/README.md [deleted file]
contrib/memory/art/drawing.svg [deleted file]
contrib/memory/art/icon.svg [deleted file]
contrib/memory/assets/bing.wav [deleted file]
contrib/memory/assets/boing.wav [deleted file]
contrib/memory/assets/click.wav [deleted file]
contrib/memory/assets/cymbal.wav [deleted file]
contrib/memory/assets/dart.wav [deleted file]
contrib/memory/assets/duh.wav [deleted file]
contrib/memory/assets/grunt.wav [deleted file]
contrib/memory/assets/honkhonk.wav [deleted file]
contrib/memory/assets/level.wav [deleted file]
contrib/memory/assets/line_end.wav [deleted file]
contrib/memory/assets/penalty.wav [deleted file]
contrib/memory/assets/squishy-hit.wav [deleted file]
contrib/memory/assets/whip.wav [deleted file]
contrib/memory/assets/woodthunk.wav [deleted file]
contrib/memory/org.nitlanguage.memory.txt [deleted file]
contrib/memory/package.ini [deleted file]
contrib/memory/src/memory.nit [deleted file]
contrib/mnit_test/Makefile [deleted file]
contrib/mnit_test/android/res/drawable-hdpi/icon.png [deleted file]
contrib/mnit_test/android/res/drawable-ldpi/icon.png [deleted file]
contrib/mnit_test/android/res/drawable-mdpi/icon.png [deleted file]
contrib/mnit_test/android/res/drawable-xhdpi/icon.png [deleted file]
contrib/mnit_test/android/res/drawable-xxhdpi/icon.png [deleted file]
contrib/mnit_test/android/res/drawable-xxxhdpi/icon.png [deleted file]
contrib/mnit_test/android/res/drawable/fighter.png [deleted file]
contrib/mnit_test/android/res/raw/testsound.ogg [deleted file]
contrib/mnit_test/android/res/raw/xylofon.ogg [deleted file]
contrib/mnit_test/android/res/values/bools.xml [deleted file]
contrib/mnit_test/android/res/values/dimens.xml [deleted file]
contrib/mnit_test/assets/fighter.png [deleted file]
contrib/mnit_test/assets/hello.txt [deleted file]
contrib/mnit_test/assets/testsound.ogg [deleted file]
contrib/mnit_test/assets/xylofon.ogg [deleted file]
contrib/mnit_test/org.nitlanguage.test_all.txt [deleted file]
contrib/mnit_test/org.nitlanguage.test_minimal.txt [deleted file]
contrib/mnit_test/package.ini [deleted file]
contrib/mnit_test/src/complete_simple_android.nit [deleted file]
contrib/mnit_test/src/simple.nit [deleted file]
contrib/mnit_test/src/simple_android.nit [deleted file]
contrib/mnit_test/src/test_assets_and_resources.nit [deleted file]
contrib/mnit_test/src/test_audio.nit [deleted file]
contrib/mnit_test/src/test_bundle.nit [deleted file]
contrib/mnit_test/src/test_data_store.nit [deleted file]
contrib/mnit_test/src/test_intent.nit [deleted file]
contrib/mnit_test/src/test_shared_preferences.nit [deleted file]
contrib/mnit_test/src/test_target_api.nit [deleted file]
contrib/model_viewer/Makefile
contrib/model_viewer/src/model_viewer.nit
contrib/nitcc/examples/calc.nit
contrib/nitcc/examples/minilang.nit
contrib/nitcc/src/autom.nit
contrib/nitcc/src/nitcc.nit
contrib/nitin/README.md
contrib/nitin/nitin.nit
contrib/nitiwiki/src/wiki_html.nit
contrib/nitiwiki/src/wiki_links.nit
contrib/rss_downloader/src/rss_downloader.nit
contrib/shibuqam/examples/reloadgame.nit
contrib/shibuqam/examples/shibuqamoauth.nit
contrib/tinks/.gitignore
contrib/tinks/Makefile
contrib/tinks/README.md
contrib/tinks/doc/tinks.png [deleted file]
contrib/tinks/src/client/android_client.nit [deleted file]
contrib/tinks/src/client/assets.nit [deleted file]
contrib/tinks/src/client/client.nit [deleted file]
contrib/tinks/src/client/controls.nit [deleted file]
contrib/tinks/src/client/linux_client.nit [deleted file]
contrib/tnitter/Makefile
contrib/wiringPi/examples/blink.nit
contrib/wiringPi/examples/read.nit
contrib/wiringPi/examples/shift.nit
examples/calculator/Makefile
examples/circular_list.nit
examples/fibonacci.nit
examples/int_stack.nit
examples/mnit_ballz/Makefile [deleted file]
examples/mnit_ballz/art/ball.svg [deleted file]
examples/mnit_ballz/assets/images/ball.png [deleted file]
examples/mnit_ballz/assets/images/horizontal_wall.png [deleted file]
examples/mnit_ballz/assets/images/vertical_wall.png [deleted file]
examples/mnit_ballz/org.nitlanguage.ballz.txt [deleted file]
examples/mnit_ballz/package.ini [deleted file]
examples/mnit_ballz/res/raw/bounce.ogg [deleted file]
examples/mnit_ballz/res/raw/walld.wav [deleted file]
examples/mnit_ballz/src/assets.nit [deleted file]
examples/mnit_ballz/src/ballz_android.nit [deleted file]
examples/mnit_ballz/src/ballz_linux.nit [deleted file]
examples/mnit_ballz/src/collision.nit [deleted file]
examples/mnit_ballz/src/display.nit [deleted file]
examples/mnit_ballz/src/game_logic.nit [deleted file]
examples/mnit_ballz/src/objects.nit [deleted file]
examples/mnit_dino/Makefile [deleted file]
examples/mnit_dino/README.md [deleted file]
examples/mnit_dino/art/drawing.svg [deleted file]
examples/mnit_dino/art/icon.svg [deleted file]
examples/mnit_dino/assets/images/0.png [deleted file]
examples/mnit_dino/assets/images/1.png [deleted file]
examples/mnit_dino/assets/images/2.png [deleted file]
examples/mnit_dino/assets/images/3.png [deleted file]
examples/mnit_dino/assets/images/4.png [deleted file]
examples/mnit_dino/assets/images/5.png [deleted file]
examples/mnit_dino/assets/images/6.png [deleted file]
examples/mnit_dino/assets/images/7.png [deleted file]
examples/mnit_dino/assets/images/8.png [deleted file]
examples/mnit_dino/assets/images/9.png [deleted file]
examples/mnit_dino/assets/images/blood.png [deleted file]
examples/mnit_dino/assets/images/bush.png [deleted file]
examples/mnit_dino/assets/images/caveman.png [deleted file]
examples/mnit_dino/assets/images/caveman_afraid.png [deleted file]
examples/mnit_dino/assets/images/caveman_ready.png [deleted file]
examples/mnit_dino/assets/images/dino.png [deleted file]
examples/mnit_dino/assets/images/dino_dead.png [deleted file]
examples/mnit_dino/assets/images/javelin.png [deleted file]
examples/mnit_dino/assets/images/life.png [deleted file]
examples/mnit_dino/assets/images/life_empty.png [deleted file]
examples/mnit_dino/assets/images/play_again.png [deleted file]
examples/mnit_dino/assets/images/play_again_mobile.png [deleted file]
examples/mnit_dino/assets/images/shadow.png [deleted file]
examples/mnit_dino/assets/images/splash_head.png [deleted file]
examples/mnit_dino/assets/images/splash_play.png [deleted file]
examples/mnit_dino/assets/images/splash_play_mobile.png [deleted file]
examples/mnit_dino/assets/images/splash_text.png [deleted file]
examples/mnit_dino/assets/images/splash_title.png [deleted file]
examples/mnit_dino/assets/images/you_lost.png [deleted file]
examples/mnit_dino/assets/images/you_won.png [deleted file]
examples/mnit_dino/org.nitlanguage.dino.txt [deleted file]
examples/mnit_dino/package.ini [deleted file]
examples/mnit_dino/src/dino.nit [deleted file]
examples/mnit_dino/src/dino_android.nit [deleted file]
examples/mnit_dino/src/fancy_dino.nit [deleted file]
examples/mnit_dino/src/game_logic.nit [deleted file]
examples/mnit_dino/src/graphism.nit [deleted file]
examples/mnit_dino/src/splash.nit [deleted file]
examples/mnit_dino/tools/svg-to-pngs [deleted file]
examples/procedural_array.nit
examples/shoot/Makefile [deleted file]
examples/shoot/README.md [deleted file]
examples/shoot/art/bio.png [deleted file]
examples/shoot/art/blue.png [deleted file]
examples/shoot/art/fighter.png [deleted file]
examples/shoot/art/ships.svg [deleted file]
examples/shoot/assets/boss.png [deleted file]
examples/shoot/assets/boss_left.png [deleted file]
examples/shoot/assets/boss_right.png [deleted file]
examples/shoot/assets/enemy.png [deleted file]
examples/shoot/assets/enemy0.png [deleted file]
examples/shoot/assets/enemy1.png [deleted file]
examples/shoot/assets/enemy2.png [deleted file]
examples/shoot/assets/enemy3.png [deleted file]
examples/shoot/assets/enemy4.png [deleted file]
examples/shoot/assets/enemy4_turret.png [deleted file]
examples/shoot/assets/enemy_kamikaze.png [deleted file]
examples/shoot/assets/enemy_missile.png [deleted file]
examples/shoot/assets/enemy_shoot.png [deleted file]
examples/shoot/assets/explosion.png [deleted file]
examples/shoot/assets/hitbox.png [deleted file]
examples/shoot/assets/money.png [deleted file]
examples/shoot/assets/player.png [deleted file]
examples/shoot/assets/player_missile.png [deleted file]
examples/shoot/assets/player_shoot.png [deleted file]
examples/shoot/assets/splash.png [deleted file]
examples/shoot/assets/splash_play.png [deleted file]
examples/shoot/assets/star0.png [deleted file]
examples/shoot/assets/star1.png [deleted file]
examples/shoot/assets/star2.png [deleted file]
examples/shoot/assets/up_missile.png [deleted file]
examples/shoot/org.nitlanguage.shoot_android.txt [deleted file]
examples/shoot/package.ini [deleted file]
examples/shoot/src/shoot.nit [deleted file]
examples/shoot/src/shoot_logic.nit [deleted file]
examples/shoot/src/shoot_null.nit [deleted file]
lib/actors/examples/agent_simulation/agent_simulation.nit
lib/actors/examples/agent_simulation/simple_simulation.nit
lib/actors/examples/chameneos-redux/chameneosredux.nit
lib/actors/examples/fannkuchredux/fannkuchredux.nit
lib/actors/examples/mandelbrot/mandelbrot.nit
lib/actors/examples/simple/simple.nit
lib/actors/examples/thread-ring/thread_ring.nit
lib/ai/examples/puzzle.nit
lib/ai/examples/queens.nit
lib/android/NitActivity.java
lib/android/README.md
lib/android/assets_and_resources.nit
lib/android/audio.nit
lib/android/examples/src/ui_test.nit
lib/android/native_app_glue.nit
lib/android/nit_activity.nit
lib/android/sensors.nit
lib/android/service/NitService.java
lib/android/ui/ui.nit
lib/app/audio.nit
lib/app/examples/Makefile
lib/app/examples/http_request_example.nit
lib/app/examples/ui_example.nit
lib/bcm2835/examples/blink.nit
lib/bcm2835/examples/input.nit
lib/cocoa/examples/cocoa_extern_types.nit
lib/cocoa/examples/cocoa_message_box.nit
lib/cocoa/examples/hello_cocoa.nit
lib/config.nit
lib/core/README.md
lib/core/collection/abstract_collection.nit
lib/core/core.nit
lib/core/exec.nit
lib/core/text/abstract_text.nit
lib/crapto/examples/repeating_key_xor_solve.nit
lib/curl/curl.nit
lib/curl/examples/curl_http.nit
lib/dom/dom.nit
lib/dom/examples/checker.nit
lib/dom/parser.nit
lib/dot/examples/clusters.nit
lib/dot/examples/hello.nit
lib/dot/examples/undirected_clusters.nit
lib/egl.nit
lib/fca/fca.nit [new file with mode: 0644]
lib/gamnit/README.md
lib/gamnit/android19.nit
lib/gamnit/bmfont.nit
lib/gamnit/cameras.nit
lib/gamnit/depth/cardboard.nit
lib/gamnit/depth/depth.nit
lib/gamnit/depth/depth_core.nit
lib/gamnit/depth/more_materials.nit
lib/gamnit/depth/more_models.nit
lib/gamnit/depth/particles.nit
lib/gamnit/depth/shadow.nit
lib/gamnit/display.nit
lib/gamnit/display_android.nit
lib/gamnit/display_ios.nit [new file with mode: 0644]
lib/gamnit/display_linux.nit
lib/gamnit/dynamic_resolution.nit
lib/gamnit/egl.nit
lib/gamnit/examples/fonts_showcase/src/fonts_showcase.nit
lib/gamnit/examples/template/src/template.nit
lib/gamnit/examples/triangle/src/portable_triangle.nit
lib/gamnit/examples/triangle/src/standalone_triangle.nit
lib/gamnit/flat/flat_core.nit
lib/gamnit/gamnit.nit
lib/gamnit/gamnit_android.nit
lib/gamnit/gamnit_ios.nit [moved from lib/mnit/linux/linux_assets.nit with 53% similarity]
lib/gamnit/gamnit_linux.nit
lib/gamnit/input_ios.nit [new file with mode: 0644]
lib/gamnit/landscape.nit [moved from lib/mnit/android/android.nit with 77% similarity]
lib/gamnit/limit_fps.nit
lib/gamnit/model_parsers/obj.nit
lib/gamnit/portrait.nit [moved from examples/shoot/src/shoot_linux.nit with 76% similarity]
lib/gamnit/programs.nit
lib/gamnit/textures.nit
lib/gamnit/virtual_gamepad/virtual_gamepad.nit
lib/gettext/examples/langannot.nit
lib/glesv2/examples/opengles2_hello_triangle.nit
lib/glesv2/glesv2.nit
lib/html/bootstrap.nit
lib/html/examples/html_page.nit
lib/ios/assets.nit [new file with mode: 0644]
lib/ios/audio.nit [new file with mode: 0644]
lib/ios/examples/hello_ios.nit
lib/ios/glkit.nit [new file with mode: 0644]
lib/json/dynamic.nit
lib/markdown/README.md
lib/markdown/decorators.nit
lib/markdown/man.nit
lib/markdown/markdown.nit
lib/markdown/nitmd.nit
lib/markdown/test_markdown.nit
lib/markdown/wikilinks.nit
lib/matrix/matrix.nit
lib/matrix/projection.nit
lib/mnit/android/android_app.nit [deleted file]
lib/mnit/android/android_assets.nit [deleted file]
lib/mnit/android/android_opengles1.nit [deleted file]
lib/mnit/assets.nit [deleted file]
lib/mnit/display.nit [deleted file]
lib/mnit/image_set.nit [deleted file]
lib/mnit/input.nit
lib/mnit/linux/linux.nit [deleted file]
lib/mnit/linux/linux_opengles1.nit [deleted file]
lib/mnit/mnit.nit [deleted file]
lib/mnit/mnit_app.nit [deleted file]
lib/mnit/mnit_fps.nit [deleted file]
lib/mnit/mnit_injected_input.nit [deleted file]
lib/mnit/mnit_null.nit [deleted file]
lib/mnit/numbers.nit [deleted file]
lib/mnit/opengles1.nit [deleted file]
lib/mnit/tileset.nit [deleted file]
lib/mpi/examples/src/mpi_simple.nit
lib/nitcorn/examples/src/htcpcp_server.nit
lib/nitcorn/examples/src/nitcorn_hello_world.nit
lib/nitcorn/examples/src/nitcorn_reverse_proxy.nit
lib/nitcorn/examples/src/restful_annot.nit
lib/nitcorn/examples/src/simple_file_server.nit
lib/nitcorn/examples/src/test_restful_annot.nit
lib/nlp/README.md
lib/nlp/examples/nlp_index.nit [new file with mode: 0644]
lib/nlp/examples/nlp_server.nit [moved from lib/mnit/linux/linux_app.nit with 55% similarity]
lib/nlp/nitnlp.nit [deleted file]
lib/nlp/nlp.nit
lib/nlp/stanford.nit
lib/nlp/vsm.nit [deleted file]
lib/performance_analysis.nit
lib/pnacl/examples/converter/converter.nit
lib/popcorn/examples/angular/example_angular.nit
lib/popcorn/examples/handlers/example_post_handler.nit
lib/popcorn/examples/handlers/example_query_string.nit
lib/popcorn/examples/hello_world/example_hello.nit
lib/popcorn/examples/middlewares/example_advanced_logger.nit
lib/popcorn/examples/middlewares/example_html_error_handler.nit
lib/popcorn/examples/middlewares/example_simple_logger.nit
lib/popcorn/examples/mongodb/example_mongodb.nit
lib/popcorn/examples/routing/example_glob_route.nit
lib/popcorn/examples/routing/example_param_route.nit
lib/popcorn/examples/routing/example_router.nit
lib/popcorn/examples/sessions/example_session.nit
lib/popcorn/examples/static_files/example_static.nit
lib/popcorn/examples/static_files/example_static_default.nit
lib/popcorn/examples/static_files/example_static_multiple.nit
lib/popcorn/examples/templates/example_templates.nit
lib/popcorn/pop_json.nit
lib/popcorn/pop_tests.nit
lib/privileges/examples/drop_privileges.nit
lib/pthreads/examples/concurrent_array_and_barrier.nit
lib/pthreads/examples/jointask_example.nit
lib/pthreads/examples/threaded_example.nit
lib/pthreads/examples/threadpool_example.nit
lib/pthreads/pthreads.nit
lib/realtime.nit
lib/sdl.ini [deleted file]
lib/sdl.nit [deleted file]
lib/sdl2/examples/minimal/src/minimal.nit
lib/serialization/examples/custom_serialization.nit
lib/template/examples/tmpl_composer.nit
lib/vsm/.vsm.nit.swn [new file with mode: 0644]
lib/vsm/README.md [new file with mode: 0644]
lib/vsm/examples/example_vsm.nit [new file with mode: 0644]
lib/vsm/vsm.nit [new file with mode: 0644]
lib/websocket/examples/websocket_server.nit
misc/docker/full/Dockerfile
share/android-bdwgc/.gitignore [new file with mode: 0644]
share/android-bdwgc/setup.sh [moved from examples/mnit_dino/src/dino_linux.nit with 66% similarity, mode: 0755]
share/android-gradlew/gradle/wrapper/gradle-wrapper.jar [new file with mode: 0644]
share/android-gradlew/gradle/wrapper/gradle-wrapper.properties [new file with mode: 0644]
share/android-gradlew/gradlew [new file with mode: 0755]
share/libgc/.gitignore [deleted file]
share/libgc/android-setup-libgc.sh [deleted file]
share/man/nitlight.md
share/man/nitunit.md
share/man/nitx.md
share/nitweb/directives/contributor-list.html [deleted file]
share/nitweb/directives/entity/card.html
share/nitweb/directives/entity/defcard.html
share/nitweb/directives/entity/link.html
share/nitweb/directives/entity/location.html
share/nitweb/directives/entity/signature.html
share/nitweb/directives/search/card.html [deleted file]
share/nitweb/directives/search/field.html [deleted file]
share/nitweb/directives/ui/pagination.html [new file with mode: 0644]
share/nitweb/directives/ui/search-field.html
share/nitweb/index.html
share/nitweb/javascripts/catalog.js [new file with mode: 0644]
share/nitweb/javascripts/entities.js
share/nitweb/javascripts/grades.js
share/nitweb/javascripts/index.js [deleted file]
share/nitweb/javascripts/nitweb.js
share/nitweb/javascripts/ui.js
share/nitweb/stylesheets/cards.css
share/nitweb/stylesheets/nitweb.css
share/nitweb/stylesheets/search.css
share/nitweb/views/catalog/by_tags.html [deleted file]
share/nitweb/views/catalog/highlighted.html [deleted file]
share/nitweb/views/catalog/index.html
share/nitweb/views/catalog/most_required.html [deleted file]
share/nitweb/views/catalog/person.html [new file with mode: 0644]
share/nitweb/views/catalog/tag.html [new file with mode: 0644]
share/nitweb/views/doc/code.html
share/nitweb/views/doc/defs.html
share/nitweb/views/doc/doc.html
share/nitweb/views/doc/entity.html
share/nitweb/views/doc/grades.html [new file with mode: 0644]
share/nitweb/views/doc/graph.html
share/nitweb/views/doc/lin.html
share/nitweb/views/search.html [new file with mode: 0644]
src/catalog/catalog.nit [moved from src/catalog.nit with 65% similarity]
src/catalog/catalog_json.nit [new file with mode: 0644]
src/compiler/abstract_compiler.nit
src/doc/api/api.nit [moved from src/web/web.nit with 95% similarity]
src/doc/api/api_auth.nit [moved from src/web/api_auth.nit with 98% similarity]
src/doc/api/api_base.nit [new file with mode: 0644]
src/doc/api/api_docdown.nit [new file with mode: 0644]
src/doc/api/api_feedback.nit [moved from src/web/api_feedback.nit with 93% similarity]
src/doc/api/api_light.nit [moved from src/web/api_light.nit with 87% similarity]
src/doc/api/api_metrics.nit [moved from src/web/api_metrics.nit with 76% similarity]
src/doc/api/api_model.nit [new file with mode: 0644]
src/doc/commands/commands.nit [moved from contrib/mnit_test/src/simple_linux.nit with 71% similarity]
src/doc/commands/commands_base.nit [new file with mode: 0644]
src/doc/commands/commands_catalog.nit [new file with mode: 0644]
src/doc/commands/commands_docdown.nit [new file with mode: 0644]
src/doc/commands/commands_graph.nit [moved from src/web/api_graph.nit with 64% similarity]
src/doc/commands/commands_html.nit [new file with mode: 0644]
src/doc/commands/commands_http.nit [new file with mode: 0644]
src/doc/commands/commands_json.nit [new file with mode: 0644]
src/doc/commands/commands_model.nit [new file with mode: 0644]
src/doc/commands/commands_parser.nit [new file with mode: 0644]
src/doc/commands/commands_usage.nit [new file with mode: 0644]
src/doc/commands/tests/test_commands.nit [new file with mode: 0644]
src/doc/commands/tests/test_commands_catalog.nit [new file with mode: 0644]
src/doc/commands/tests/test_commands_graph.nit [new file with mode: 0644]
src/doc/commands/tests/test_commands_http.nit [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.nit [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_ancestors.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_call.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_children.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_comment.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_descendants.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_entity.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_features.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_lin.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_mentities.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_new.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_param.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_parents.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_return.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_json.sav/test_cmd_search.res [new file with mode: 0644]
src/doc/commands/tests/test_commands_model.nit [new file with mode: 0644]
src/doc/commands/tests/test_commands_parser.nit [new file with mode: 0644]
src/doc/commands/tests/test_commands_usage.nit [new file with mode: 0644]
src/doc/console_templates/console_model.nit [deleted file]
src/doc/console_templates/console_templates.nit [deleted file]
src/doc/doc_base.nit
src/doc/doc_commands.nit
src/doc/doc_down.nit
src/doc/doc_phases/doc_console.nit [deleted file]
src/doc/doc_phases/doc_html.nit
src/doc/doc_phases/doc_readme.nit
src/doc/html_templates/html_components.nit
src/doc/html_templates/html_model.nit
src/doc/html_templates/html_templates.nit
src/doc/html_templates/model_html.nit
src/doc/templates/templates_html.nit [new file with mode: 0644]
src/doc/templates/templates_json.nit [new file with mode: 0644]
src/doc/templates/templates_term.nit [new file with mode: 0644]
src/doc/templates/tests/test_templates_json.nit [moved from src/model/test_model_json.nit with 76% similarity]
src/doc/templates/tests/test_templates_json.sav/test_classdefs_to_full_json.res [new file with mode: 0644]
src/doc/templates/tests/test_templates_json.sav/test_classes_to_full_json.res [new file with mode: 0644]
src/doc/templates/tests/test_templates_json.sav/test_groups_to_full_json.res [new file with mode: 0644]
src/doc/templates/tests/test_templates_json.sav/test_modules_to_full_json.res [new file with mode: 0644]
src/doc/templates/tests/test_templates_json.sav/test_packages_to_full_json.res [new file with mode: 0644]
src/doc/templates/tests/test_templates_json.sav/test_propdefs_to_full_json.res [new file with mode: 0644]
src/doc/templates/tests/test_templates_json.sav/test_props_to_full_json.res [new file with mode: 0644]
src/doc/templates/tests/test_templates_json.sav/test_refs_to_full_json.res [new file with mode: 0644]
src/doc/term/term.nit [new file with mode: 0644]
src/doc/term/tests/test_term.nit [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_ancestors.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_ancestors_without_parents.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_call.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_children.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_code.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_comment.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_comment_no_fallback.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_comment_short.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_descendants.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_descendants_without_children.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_features.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_init.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_lin.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_lin_no_lin.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_mentity_conflict.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_mentity_empty.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_mentity_full_name.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_mentity_name.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_mentity_not_found.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_param.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_parents.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_return.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_search.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_search_no_query.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog_contrib.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog_maintain.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog_search.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog_stats.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog_tag.res [new file with mode: 0644]
src/doc/term/tests/test_term.sav/test_term_catalog_tags.res [new file with mode: 0644]
src/doc/test_doc_commands.nit [new file with mode: 0644]
src/doc/vim_autocomplete.nit
src/examples/get_mclasses.nit
src/examples/nitlight_as_a_service.nit
src/examples/nitwebcrawl.nit
src/examples/test_loader.nit
src/ffi/pkgconfig.nit
src/frontend/check_annotation.nit
src/frontend/parse_examples.nit [new file with mode: 0644]
src/frontend/tests/test_examples.nit [new file with mode: 0644]
src/frontend/tests/test_examples.sav/test_model_examples.res [new file with mode: 0644]
src/highlight.nit
src/htmlight.nit [new file with mode: 0644]
src/interpreter/dynamic_loading_ffi/on_demand_compiler.nit
src/interpreter/naive_interpreter.nit
src/location.nit
src/metrics/codesmells_metrics.nit
src/metrics/inheritance_metrics.nit
src/metrics/mclasses_metrics.nit
src/metrics/mendel_metrics.nit
src/metrics/method_analyze_metrics.nit
src/metrics/mmodules_metrics.nit
src/metrics/nullables_metrics.nit
src/metrics/rta_metrics.nit
src/model/model.nit
src/model/model_collect.nit
src/model/model_examples.nit [new file with mode: 0644]
src/model/model_filters.nit [new file with mode: 0644]
src/model/model_index.nit
src/model/model_json.nit [deleted file]
src/model/model_views.nit
src/model/model_visitor.nit
src/model/test_model_json.sav/test_classdefs_to_full_json.res [deleted file]
src/model/test_model_json.sav/test_classes_to_full_json.res [deleted file]
src/model/test_model_json.sav/test_groups_to_full_json.res [deleted file]
src/model/test_model_json.sav/test_modules_to_full_json.res [deleted file]
src/model/test_model_json.sav/test_packages_to_full_json.res [deleted file]
src/model/test_model_json.sav/test_propdefs_to_full_json.res [deleted file]
src/model/test_model_json.sav/test_props_to_full_json.res [deleted file]
src/model/test_model_json.sav/test_refs_to_full_json.res [deleted file]
src/modelize/modelize_property.nit
src/nitcatalog.nit
src/nitdoc.nit
src/nitlight.nit
src/nituml.nit
src/nitweb.nit
src/nitx.nit
src/parser/lexer.nit
src/parser/nit.sablecc3xx
src/parser/parser_abs.nit
src/parser/parser_nodes.nit
src/parser/tables_nit.c
src/platform/android.nit
src/platform/app_annotations.nit
src/platform/ios.nit
src/platform/platform.nit
src/platform/xcode_templates.nit
src/test_highlight.nit
src/test_model_index.nit
src/test_model_visitor.nit
src/testing/README.md
src/testing/testing_doc.nit
src/testing/testing_suite.nit
src/web/api_catalog.nit [deleted file]
src/web/api_docdown.nit [deleted file]
src/web/api_model.nit [deleted file]
src/web/web_base.nit [deleted file]
tests/Darwin.skip
tests/MINGW64_NT.skip
tests/base_init_ret.nit [moved from contrib/inkscape_tools/tests/app/src/s2pn_linux.nit with 86% similarity]
tests/nitce.skip
tests/nitdoc.args
tests/nitlight.args
tests/nitunit.args
tests/nitx.args
tests/sav/Darwin/todo
tests/sav/base_init_ret.res [new file with mode: 0644]
tests/sav/error_annot_pkgconfig_alt0.res
tests/sav/error_annot_pkgconfig_alt1.res
tests/sav/example_vsm.res [new file with mode: 0644]
tests/sav/fibonacci_word.res
tests/sav/montecarlo.res
tests/sav/nitcatalog_args1.res
tests/sav/nitdoc_args4.res
tests/sav/niti/fixme/test_json_deserialization_alt2.res [deleted file]
tests/sav/niti/fixme/test_json_deserialization_alt4.res [deleted file]
tests/sav/niti/fixme/test_msgpack_deserialization_alt2.res [deleted file]
tests/sav/nitlight_args4.res [new file with mode: 0644]
tests/sav/nitls_args7.res
tests/sav/nitsmells_args1.res
tests/sav/nitunit_args11.res
tests/sav/nitunit_args13.res [new file with mode: 0644]
tests/sav/nitunit_args14.res [new file with mode: 0644]
tests/sav/nitx.res
tests/sav/nitx_args1.res
tests/sav/nitx_args2.res
tests/sav/nitx_args3.res
tests/sav/nlp_index.res [new file with mode: 0644]
tests/sav/perlin_noise.res
tests/sav/shoot_null.res [deleted file]
tests/sav/test_attr_easy.res
tests/sav/test_jvm.res
tests/sav/test_loader_args1.res
tests/sav/test_loader_args2.res
tests/sav/test_loader_args3.res
tests/sav/test_loader_args4.res
tests/sav/test_math.res
tests/sav/test_model_index_args10.res
tests/sav/test_model_index_args11.res
tests/sav/test_model_index_args13.res
tests/sav/test_model_index_args16.res
tests/sav/test_model_index_args20.res
tests/sav/test_model_index_args3.res
tests/sav/test_model_index_args8.res
tests/sav/test_model_index_args9.res
tests/sav/test_neo_args1.res
tests/sav/test_platform_ios.res
tests/sav/test_sort_perf_args1.res
tests/sav/test_syntax.res
tests/test_nitunit10.nit [new file with mode: 0644]
tests/test_nitunit11.nit [new file with mode: 0644]
tests/test_nitunit8.nit [moved from examples/shoot/src/shoot_android.nit with 76% similarity]
tests/test_nitunit9.nit [moved from contrib/crazy_moles/src/moles_linux.nit with 62% similarity]
tests/test_prog/examples/game_examples.nit [new file with mode: 0644]
tests/testfull.sh
tests/tests.sh
tests/turing.skip

index a739d3f..a37d586 100644 (file)
@@ -1,6 +1,8 @@
 *.bak
 *.swp
 *.swo
+*.swn
+*.swm
 *~
 .project
 EIFGENs
index 6710807..dfe66ae 100755 (executable)
@@ -43,8 +43,6 @@ function run_compiler()
                bench_command "nitc-g" "nitc --global ../src/test_parser.nit" "./nitc.$title.bin" -v --global --no-cc ../src/test_parser.nit
                run_command "$@" ../src/nit.nit -o "nit.$title.bin"
                bench_command "nit" "nit ../src/test_parser.nit ../src/location.nit" "./nit.$title.bin" -v ../src/test_parser.nit -- -n ../src/location.nit
-               run_command "$@" ../examples/shoot/src/shoot_logic.nit -o "shoot.$title.bin"
-               bench_command "shoot" "shoot_logic" "./shoot.$title.bin"
                run_command "$@" ../tests/bench_bintree_gen.nit -o "bintrees.$title.bin"
                bench_command "bintrees" "bench_bintree_gen 16" "./bintrees.$title.bin" 16
        else
@@ -61,8 +59,6 @@ function run_compiler()
                bench_command "nitdoc" "nitdoc ../src/nitls.nit" "./nitdoc.$title.bin" -v ../src/nitls.nit -d out
                run_command "$@" ../src/nitlight.nit -o "nitlight.$title.bin"
                bench_command "nitlight" "nitlight ../lib/[a-f]*/" "./nitlight.$title.bin" ../lib/[a-f]*/ -d out
-               run_command "$@" ../examples/shoot/src/shoot_logic.nit -o "shoot.$title.bin"
-               bench_command "shoot" "shoot_logic 15" "./shoot.$title.bin" 15
                run_command "$@" ../tests/bench_bintree_gen.nit -o "bintrees.$title.bin"
                bench_command "bintrees" "bench_bintree_gen 17" "./bintrees.$title.bin" 17
                #run_command "$@" "../contrib/pep8analysis/src/pep8analysis.nit" -o "pep8a.$title.bin"
diff --git a/benchmarks/microbenches/catches.nit b/benchmarks/microbenches/catches.nit
new file mode 100644 (file)
index 0000000..b866f6f
--- /dev/null
@@ -0,0 +1,70 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# This program micro-benches do/catches
+# arg1 is the mode, arg2 is the depth
+
+# mode 0, no catch, only calls
+fun sub0(n: Int)
+do
+       if n < 0 then return
+       do
+               sub0(n-1)
+               sub0(n-1)
+       end
+end
+
+# mode 1, unused catches
+fun sub1(n: Int)
+do
+       if n < 0 then return
+       do
+               sub1(n-1)
+               sub1(n-1)
+       catch
+               print "dead code"
+       end
+end
+
+# mode 2, many nested catches and aborts
+fun sub2(n: Int)
+do
+       if n < 0 then abort
+       do
+               sub2(n-1)
+               sub2(n-1)
+       catch
+               if n > 0 then print "dead code"
+       end
+end
+
+
+var m = 1
+if args.length > 0 then m = args[0].to_i
+
+var n = 25
+if args.length > 1 then n = args[1].to_i
+
+if m == 0 then
+       print "mode {m} (no catch, no abort), size n={n}"
+       sub0(n)
+else if m == 1 then
+       print "mode {m} (catch, no abort), size n={n}"
+       sub1(n)
+else if m == 2 then
+       print "mode {m} (catch, abort), size n={n}"
+       sub2(n)
+else
+       abort
+end
index 5cf3065..3a37da5 100644 (file)
@@ -18,9 +18,6 @@
 #ifdef ANDROID
        #include <android/log.h>
        #define PRINT_ERROR(...) ((void)__android_log_print(ANDROID_LOG_WARN, "nit", __VA_ARGS__))
-
-       // FIXME bring back when the GC is fixed in Android
-       #undef WITH_LIBGC
 #else
        #define PRINT_ERROR(...) ((void)fprintf(stderr, __VA_ARGS__))
 #endif
@@ -28,7 +25,7 @@
 enum gc_option { gc_opt_large, gc_opt_malloc, gc_opt_boehm } gc_option;
 
 #ifdef WITH_LIBGC
-#include <gc/gc.h>
+       #include <gc.h>
 #endif
 
 void *nit_raw_alloc(size_t s0)
index 81db63b..22c9358 100644 (file)
@@ -10,6 +10,10 @@ bin/action_nitro.apk: $(shell nitls -M src/action_nitro.nit -m gamnit::android19
 android-release: $(shell nitls -M src/action_nitro.nit -m gamnit::android19 -m src/touch_ui.nit) pre-build android/res/
        nitc src/action_nitro.nit -m gamnit::android19 -m src/touch_ui.nit -o bin/action_nitro.apk --release
 
+ios: bin/action_nitro.app
+bin/action_nitro.app: $(shell nitls -M src/action_nitro.nit -m ios -m src/touch_ui.nit) pre-build
+       nitc src/action_nitro.nit -m ios -m src/touch_ui.nit -o $@ --compile-dir nit_compile
+
 src/gen/texts.nit: art/texts.svg
        make -C ../inkscape_tools/
        ../inkscape_tools/bin/svg_to_png_and_nit art/texts.svg -a assets/ -s src/gen/ -x 2.0 -g
index 5ddeea6..485ebc2 100644 (file)
@@ -16,11 +16,10 @@ module action_nitro is
        app_name "Action Nitro"
        app_namespace "net.xymus.action_nitro"
        app_version(1, 0, git_revision)
-
-       android_manifest_activity """android:screenOrientation="sensorLandscape""""
 end
 
 import gamnit::depth
+import gamnit::landscape
 
 import game
 
diff --git a/contrib/asteronits/.gitignore b/contrib/asteronits/.gitignore
new file mode 100644 (file)
index 0000000..db11f0f
--- /dev/null
@@ -0,0 +1 @@
+/nit_compile
index aee8027..846c337 100644 (file)
@@ -3,7 +3,7 @@ NITLS=nitls
 
 all: bin/asteronits
 
-bin/asteronits: $(shell ${NITLS} -M src/asteronits.nit linux) pre-build
+bin/asteronits: $(shell ${NITLS} -M src/asteronits.nit -m linux) pre-build
        ${NITC} src/asteronits.nit -m linux -o $@
 
 bin/texture_atlas_parser: ../../lib/gamnit/texture_atlas_parser.nit
@@ -21,12 +21,23 @@ check: bin/asteronits
 # Android
 
 android: bin/asteronits.apk
-bin/asteronits.apk: $(shell ${NITLS} -M src/asteronits.nit android) android/res/ pre-build
+bin/asteronits.apk: $(shell ${NITLS} -M src/asteronits.nit -m android) android/res/ pre-build
        ${NITC} src/android.nit -m android -o $@
 
-android-release: $(shell ${NITLS} -M src/asteronits.nit android) android/res/ pre-build
+android-release: $(shell ${NITLS} -M src/asteronits.nit -m android) android/res/ pre-build
        ${NITC} src/android.nit -m android -o bin/asteronits.apk --release
 
 android/res/: art/icon.svg
        make -C ../inkscape_tools/
        ../inkscape_tools/bin/svg_to_icons --out android/res --android art/icon.svg
+
+# ---
+# iOS
+
+ios: bin/asteronits.app
+bin/asteronits.app: $(shell ${NITLS} -M src/asteronits.nit -m ios -m src/touch_ui.nit) pre-build ios/AppIcon.appiconset/Contents.json
+       ${NITC} src/asteronits.nit -m ios -m src/touch_ui.nit -o $@ --compile-dir nit_compile
+
+ios/AppIcon.appiconset/Contents.json: art/icon.svg
+       mkdir -p ios
+       ../../contrib/inkscape_tools/bin/svg_to_icons art/icon.svg --ios --out ios/AppIcon.appiconset/
index d7621de..e0c9991 100644 (file)
@@ -17,13 +17,12 @@ module asteronits is
        app_name "Asteronits"
        app_namespace "org.nitlanguage.asteronits"
        app_version(1, 0, git_revision)
-
-       android_manifest_activity """android:screenOrientation="sensorLandscape""""
-       android_api_target 10
 end
 
 import gamnit::flat
 
+import gamnit::landscape
+
 import game_logic
 import spritesheet
 
@@ -64,12 +63,14 @@ redef class App
        private var fx_explosion_ship = new Sound("sounds/explosion_ship.wav")
        private var fx_explosion_asteroids = new Sound("sounds/explosion_asteroids.wav")
 
-       redef fun on_create
+       redef fun create_scene
        do
                super
 
                # Move the camera to show all the world world in the screen range
                world_camera.reset_height(world.half_height * 2.0)
+
+               ui_camera.reset_height 720.0
        end
 
        # Main spritesheet with ships, asteroids and beams
index 5cae0d4..2264f28 100644 (file)
@@ -20,7 +20,7 @@ import gamnit::virtual_gamepad
 import asteronits
 
 redef class App
-       redef fun on_create
+       redef fun create_scene
        do
                super
 
index c009b50..ee51327 100644 (file)
@@ -53,6 +53,7 @@ redef class App
                android.content.IntentFilter filter = new android.content.IntentFilter();
                filter.addAction(android.net.wifi.WifiManager.SCAN_RESULTS_AVAILABLE_ACTION);
                final int final_self = self;
+               App_incr_ref(final_self);
 
                context.registerReceiver(
                        new android.content.BroadcastReceiver() {
diff --git a/contrib/crazy_moles/.gitignore b/contrib/crazy_moles/.gitignore
deleted file mode 100644 (file)
index daa854d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-src/drawing.nit
-assets/images/
-android/
diff --git a/contrib/crazy_moles/Makefile b/contrib/crazy_moles/Makefile
deleted file mode 100644 (file)
index 7b91216..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-
-SVG2ICONS=../inkscape_tools/bin/svg_to_icons
-SVG2PNG=../inkscape_tools/bin/svg_to_png_and_nit
-
-default: bin/moles
-
-pre-build: assets/images/drawing.png
-
-bin/moles: $(shell nitls -M src/moles_linux.nit) assets/images/drawing.png
-       mkdir -p bin
-       nitc -o bin/moles src/moles_linux.nit
-
-android: bin/moles.apk
-bin/moles.apk: android/res/ $(shell nitls -M src/moles_android.nit) assets/images/drawing.png
-       mkdir -p bin
-       nitc -o bin/moles.apk src/moles_android.nit
-
-android-release: android/res/ $(shell nitls -M src/moles_android.nit) assets/images/drawing.png
-       mkdir -p bin
-       nitc -o bin/moles.apk src/moles_android.nit --release
-
-$(SVG2ICONS):
-       $(MAKE) -C ../inkscape_tools
-
-android/res/: $(SVG2ICONS) art/icon.svg
-       mkdir -p android/res
-       $(SVG2ICONS) art/icon.svg --android --out android/res/
-
-android-install: bin/moles.apk
-       adb install -rf bin/moles.apk
-
-assets/images/drawing.png: art/drawing.svg $(SVG2ICONS)
-       mkdir -p assets/images
-       $(SVG2PNG) --src src/ --scale 2.0 art/drawing.svg
-
-check-android: bin/moles.apk
-       ../../misc/jenkins/check_android.sh bin/moles.apk
-
-clean:
-       rm -rf bin android
diff --git a/contrib/crazy_moles/README.md b/contrib/crazy_moles/README.md
deleted file mode 100644 (file)
index a4c7b2d..0000000
+++ /dev/null
@@ -1 +0,0 @@
-Crazy Moles, a very simple portable whack-a-mole style game with particle effects!
diff --git a/contrib/crazy_moles/art/drawing.svg b/contrib/crazy_moles/art/drawing.svg
deleted file mode 100644 (file)
index 665b93f..0000000
+++ /dev/null
@@ -1,3383 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="980.68469"
-   height="1141.1479"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="drawing.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#00590c"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.77254902"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.8910882"
-     inkscape:cx="622.56056"
-     inkscape:cy="603.82845"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1781"
-     inkscape:window-height="1274"
-     inkscape:window-x="2955"
-     inkscape:window-y="75"
-     inkscape:window-maximized="0"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     showguides="true"
-     inkscape:guide-bbox="true" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(154.42237,306.56642)">
-    <g
-       id="0empty"
-       inkscape:label="#g4008">
-      <g
-         id="0empty-back"
-         inkscape:label="#g3188">
-        <g
-           id="g3975"
-           inkscape:label="#g3777"
-           transform="matrix(1.3901274,0,0,1.3901274,341.58474,-368.60908)"
-           inkscape:tile-x0="522.758"
-           inkscape:tile-y0="204.64342">
-          <path
-             d="m 342.85714,452.36218 c 0,15.77957 -38.37559,28.57143 -85.71429,28.57143 -47.33869,0 -85.71428,-12.79186 -85.71428,-28.57143 0,-15.77956 38.37559,-28.57143 85.71428,-28.57143 47.3387,0 85.71429,12.79187 85.71429,28.57143 z"
-             sodipodi:ry="28.571428"
-             sodipodi:rx="85.714287"
-             sodipodi:cy="452.36218"
-             sodipodi:cx="257.14285"
-             id="path3978"
-             style="fill:#000000;stroke:none"
-             sodipodi:type="arc" />
-        </g>
-        <path
-           style="fill:#0f7f0f;fill-opacity:1;stroke:#000000;stroke-width:1.20354867000000021;stroke-opacity:1"
-           d="m 816.15407,245.31557 c 2.12049,3.00831 -3.02081,6.62413 -6.74718,6.62413 -3.72637,0 -6.68204,-2.96628 -6.74719,-6.62413 -0.33279,-18.6873 11.85252,-38.28079 11.94415,-34.14247 -1.38307,3.98264 -1.20162,30.23846 1.55022,34.14247 z"
-           id="path3980"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ssscs" />
-        <path
-           sodipodi:nodetypes="ssscs"
-           inkscape:connector-curvature="0"
-           id="path3988"
-           d="m 824.15936,256.45695 c -0.926,3.84038 -3.77529,7.88891 -7.12854,9.09243 -4.2889,1.53933 -11.52105,-5.07752 -8.25076,-8.25076 7.77989,-7.54905 14.10324,-46.01662 12.54315,-45.41659 -1.50356,-6.61644 7.51615,25.16565 2.83615,44.57492 z"
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.48536134000000009;stroke-opacity:1" />
-        <path
-           sodipodi:nodetypes="ssscs"
-           inkscape:connector-curvature="0"
-           id="path4000"
-           d="m 755.40989,218.13873 c -0.58476,4.11763 -3.3715,7.53046 -7.53047,7.53046 -4.15897,0 -9.20305,-3.72266 -7.53047,-7.53046 9.33151,-21.24414 13.95259,-43.51848 13.33075,-38.81395 1.93615,0.86569 2.55003,33.04096 1.73019,38.81395 z"
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.35568762000000009;stroke-opacity:1" />
-        <path
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.31436788999999998;stroke-opacity:1"
-           d="m 735.59779,221.67786 c 0.60714,3.72781 3.02347,3.44463 7.25751,4.29255 4.98344,0.998 10.94357,0.39565 8.37973,-4.29255 -10.33291,-18.8946 -14.48648,-39.39857 -13.84084,-35.13942 -2.01024,0.78373 -2.64761,29.91296 -1.7964,35.13942 z"
-           id="path4002"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ssscs" />
-        <path
-           sodipodi:nodetypes="ssscs"
-           inkscape:connector-curvature="0"
-           id="path4004"
-           d="m 739.88521,220.64862 c 0.0929,3.46026 -1.65994,3.9548 -5.8189,3.9548 -4.15897,0 -8.81789,-1.33135 -7.53047,-5.28602 7.10263,-21.81771 -2.457,-31.55331 -2.37835,-31.37838 3.48877,2.69066 15.08567,8.80156 15.72772,32.7096 z"
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.35568762000000009;stroke-opacity:1" />
-        <path
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.35568762000000009;stroke-opacity:1"
-           d="m 766.09351,223.61041 c 1.24208,6.70972 -3.89392,5.61504 -7.81102,4.16379 -3.89992,-1.44488 -6.92082,-0.0179 -7.24991,-4.16379 -0.0892,-1.12413 12.06056,-29.75665 13.33075,-36.3417 1.52292,-1.86845 0.30937,28.66644 1.73018,36.3417 z"
-           id="path4006"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ssscs" />
-      </g>
-      <g
-         inkscape:label="#g3188"
-         id="0empty-front">
-        <path
-           sodipodi:nodetypes="ssscs"
-           inkscape:connector-curvature="0"
-           id="path3965"
-           d="m 586.18291,255.21982 c 2.71739,3.92675 -3.87116,8.64649 -8.64649,8.64649 -4.77533,0 -8.56301,-3.87191 -8.64649,-8.64649 -0.42646,-24.39254 15.18895,-49.96795 15.30638,-44.5662 -1.77239,5.19853 -1.53988,39.4703 1.9866,44.5662 z"
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.55660164000000001;stroke-opacity:1" />
-        <path
-           sodipodi:nodetypes="ssscs"
-           inkscape:connector-curvature="0"
-           id="path3969"
-           d="m 579.63218,260.67875 c 1.60056,3.72053 -4.43095,8.87397 -9.20627,6.27631 -4.19485,-2.28189 -4.91164,-3.18531 -6.12149,-7.80482 -1.82387,-6.96397 -0.58253,-29.65657 2.42332,-34.74015 -0.36976,6.57837 10.12007,29.79635 12.90444,36.26866 z"
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.55660164000000001;stroke-opacity:1" />
-        <path
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.55660164000000001;stroke-opacity:1"
-           d="m 594.2621,265.04587 c -1.1157,6.92776 -2.22147,13.64253 -9.83678,8.84487 -4.04036,-2.54543 -9.70306,-4.63119 -7.45619,-8.84487 1.5916,-2.98478 17.18913,-37.50779 15.30638,-41.72757 2.83698,-2.22907 3.6138,31.62371 1.98659,41.72757 z"
-           id="path3963"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ssscs" />
-        <path
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.58057249000000000;stroke-opacity:1"
-           d="m 817.02202,265.60669 c 0.63593,2.79633 -5.32422,11.70302 -8.49907,12.70742 -4.62304,1.46255 -10.45783,-8.06437 -9.0602,-12.70742 6.51456,-21.64174 7.58881,-24.43681 9.73071,-35.07673 1.57596,5.56511 6.77241,30.43259 7.82856,35.07673 z"
-           id="path3971"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ssscs" />
-        <path
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.33338176999999991;stroke-opacity:1"
-           d="m 618.74376,284.54928 c 2.61086,2.99886 -3.71939,6.60332 -8.30751,6.60332 -4.58811,0 -8.2273,-2.95696 -8.30752,-6.60332 -0.40974,-18.62858 14.59349,-38.16052 14.70631,-34.0352 -1.70291,3.97013 -1.4795,30.14346 1.90872,34.0352 z"
-           id="path3973"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ssscs" />
-        <path
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.55660164000000001;stroke-opacity:1"
-           d="m 625.71665,287.40463 c 3.31919,3.43315 -1.14262,9.28876 -10.61037,6.6826 -5.71544,-1.57327 -8.60104,-2.00841 -6.6826,-6.6826 8.45136,-20.59133 22.12398,-15.53273 30.61775,-9.34712 -18.28625,-0.074 -16.32787,6.24093 -13.32478,9.34712 z"
-           id="path3977"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ssscs" />
-        <path
-           sodipodi:nodetypes="ssscs"
-           inkscape:connector-curvature="0"
-           id="path3975"
-           d="m 634.73915,293.20829 c 1.92217,4.37136 -3.02948,4.7187 -7.80481,4.7187 -4.77533,0 -7.27341,-1.66342 -6.6826,-6.40204 3.33658,-26.76132 7.73171,-27.26178 9.19239,-34.74014 -2.64888,9.68164 3.99345,33.46345 5.29502,36.42348 z"
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.55660164000000001;stroke-opacity:1" />
-        <path
-           sodipodi:nodetypes="ssscs"
-           inkscape:connector-curvature="0"
-           id="path3192"
-           d="m 810.90706,276.55264 c 0.13944,4.84683 -8.98078,7.93796 -13.82964,7.93796 -4.84886,0 -1.767,-3.50405 -3.72963,-7.93796 -3.31815,-7.49625 0.20181,-48.28125 4.28097,-46.16265 2.27865,12.8389 13.11935,40.63759 13.2783,46.16265 z"
-           style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:1.58057249000000000;stroke-opacity:1" />
-      </g>
-    </g>
-    <g
-       id="0up"
-       inkscape:label="#g4948">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4533"
-         d="m -127.26814,-98.063473 c -5.95186,1.40398 -0.2481,8.635395 0.83368,11.991316 2.24081,5.979379 7.51684,11.886198 8.3357,17.847385 -2.62353,2.574653 -3.85637,8.944892 1.49003,6.877037 7.90915,-3.992679 17.380548,-7.629391 25.750679,-2.559786 14.710026,7.405353 15.841258,31.458759 1.031556,39.199112 -11.072405,7.261846 -26.161435,9.565391 -37.670885,2.139523 -6.17665,-0.315109 -4.38976,8.690863 -5.66148,12.7164549 -0.94084,12.8917246 -4.49017,25.4374211 -8.62747,37.4859171 -0.18176,4.437309 5.04449,3.411524 7.56474,1.833876 -2.83088,2.430046 -3.70633,8.312205 1.49002,6.877038 2.63273,-1.267918 6.95152,-3.715862 7.71757,0.878732 4.75803,7.151288 9.39205,15.415322 17.30721,19.484939 4.29992,-3.203098 0.74888,-9.710755 5.08136,-13.180988 3.140909,-6.068884 10.191174,-8.427262 13.868696,-13.830486 -1.972725,-8.564326 -14.939736,-11.666071 -13.104576,-21.8154903 2.146821,-10.5535319 8.866365,-20.4278567 19.141087,-24.3370707 12.082813,-7.168232 31.492135,-6.969318 38.167556,7.2973006 3.843194,8.609366 1.612626,18.5334504 -2.712609,26.5147994 -2.783605,10.343211 8.396661,16.781267 13.295605,24.222453 1.906107,3.450684 5.739154,8.743875 9.818881,4.775721 5.096515,-3.360738 9.891148,-12.368924 16.9463895,-7.853504 4.8812293,4.089998 0.6420891,-5.684198 2.2711095,-5.671336 2.90321,1.707265 8.7438625,2.162091 6.4185681,-2.597992 C -3.0975928,23.888062 1.8254978,15.835082 0.37730995,8.6834277 -0.42578129,-4.2660885 -2.732688,-17.734836 -8.3718097,-29.369512 c -7.4160253,-3.251487 -14.9369123,3.717525 -22.3503713,4.355457 -15.75635,2.980893 -31.017553,-13.460617 -26.05633,-29.074585 3.216828,-12.382812 19.26194,-12.789614 29.416176,-9.903814 3.432063,0.871495 5.427186,-4.069299 9.133439,-4.805405 6.972875,-4.441368 17.94322288,-7.074191 20.5546998,-15.970008 -1.75343051,-5.640296 -9.2846238,-0.481955 -13.1045768,-0.420264 -6.880265,1.299852 -14.363154,5.152008 -21.089581,4.50828 -4.987141,-2.981198 -7.175629,-11.254574 -13.715868,-10.506584 -0.870688,2.601292 1.61029,6.458094 1.26079,8.137827 -6.070547,-1.486822 -10.619918,-7.335727 -16.886947,-7.832181 -2.431158,1.306637 -0.259836,5.412968 -3.018255,2.445168 -6.150003,-3.794229 -10.120077,6.368345 -16.581301,3.400313 -3.524846,-1.473446 -10.120175,-1.56256 -8.710914,3.858782 -1.754714,1.269067 -5.624231,-3.783287 -7.802204,-4.521679 -2.640293,-3.207585 -7.332647,-1.249763 -5.684427,2.917037 1.28382,2.439435 -0.43856,6.28516 -2.55979,2.483375 -6.81601,-5.755573 -11.84574,-17.051947 -21.70087,-17.76568 z"
-         style="fill:#a05a2c;fill-opacity:1;stroke:none" />
-      <path
-         id="path27595"
-         d="m -128.64355,-98.330913 c -4.51196,0.135817 2.29544,10.340448 8.40527,24.451688 5.59286,5.388846 -2.37336,14.95552 -8.67271,20.325466 -10.46414,8.364898 -3.24552,25.819515 -1.60464,30.220758 -2.36354,7.471054 -4.22953,37.686653 -12.95176,53.984742 -0.78364,2.15 10.54536,-2.411181 9.32221,-1.872082 -4.38782,1.933884 -6.95345,11.003259 -6.95345,11.003259 0,0 10.61434,-1.323447 11.80558,-4.928543 4.59647,7.445967 -8.51327,36.317065 -7.71756,45.655886 -3.35976,13.007662 1.3099,28.483219 -9.85709,39.581169 -4.19109,5.98004 -13.06696,16.24697 -0.38206,10.77403 1.26048,-1.07252 -11.87855,29.66016 4.50828,12.14943 -0.40913,17.26216 -0.84323,38.42636 -2.25414,55.66579 -0.82682,20.16164 0.76032,40.49146 6.38037,59.90664 13.78536,6.43183 29.36652,8.38891 44.242269,11.19429 23.399471,3.0414 55.390568,2.22068 78.933105,1.75746 10.0766998,-1.48473 17.6899774,-1.33326 30.526405,-3.66775 L 26.777492,265.77 c 0.01663,-12.87961 -1.904726,-26.43766 -0.611292,-39.8104 0.139301,-14.36637 2.377584,-28.40878 1.910288,-42.75225 0.409015,-12.59618 -2.488828,-26.25604 1.298996,-38.35858 -13.068926,-4.8777 13.24164,-12.57597 -1.528231,-10.96506 -13.558485,-0.9744 9.769513,-2.75969 -1.52823,-7.60295 C 22.158348,124.35941 18.803234,105.27744 13.90215,96.862328 9.1427877,86.602326 5.0309552,79.677033 -1.0363033,69.659825 -8.6725899,56.974619 -19.150957,42.346971 -9.8236286,37.032103 c 9.30368386,10.662306 7.9403433,2.249617 4.1644281,-4.164428 12.4187556,5.06073 7.7349981,0.373952 5.11957215,-7.411918 C 1.1734202,19.967625 0.04773787,11.342659 -0.15757072,7.0405799 -0.6866319,3.8952982 -0.45067311,0.36168692 -1.0363033,-3.3131817 -1.6219334,-6.9880381 -3.0312431,-11.050209 -3.5578836,-14.698499 -4.084524,-18.346801 -7.2911551,-29.39878 -10.129275,-29.675158 c -3.071217,-0.299081 -2.54992,0.485941 2.8654325,-9.322206 2.9583852,-5.358147 3.1762498,-12.077703 -7.8321815,-22.159342 -22.769277,-8.114232 2.009868,-3.652006 17.077976,-21.127787 6.8775752,-13.316499 -23.42907,2.522815 -31.901812,1.107967 -6.301456,1.936403 -21.16774,-24.636974 -13.945103,-2.52158 -0.356909,1.438456 -1.160013,1.876716 -2.215934,1.719259 2.665368,1.063649 4.703942,1.358634 3.935193,-0.649498 -7.85497,-20.518965 7.643292,5.366571 11.117877,3.9734 12.109332,-1.303532 26.8548245,-8.14756 32.2838695,-7.297301 -1.40701127,11.206967 -29.9253575,16.94837 -26.2473585,21.127787 -11.853653,-4.574031 -30.936423,-3.263579 -33.582866,11.232494 -3.292994,13.921202 5.799109,26.450014 17.345417,29.380231 13.730356,5.188 26.006057,-8.034164 32.1692516,-3.935193 6.639538,17.444152 9.98526249,35.9448613 6.6478027,54.252182 10.8172311,17.765142 -13.3910283,-7.980713 -1.6428478,14.594602 -11.9651765,-17.53021 -21.2021805,15.848031 -26.9732685,2.330551 -5.02904,-9.322401 -21.273824,-17.286561 -13.104576,-29.036379 6.819954,-12.4953264 3.013047,-30.465813 -11.652758,-35.07289 -12.760407,-5.364578 -27.197857,1.753491 -38.358585,9.704263 -6.141234,9.0486654 -14.650084,20.6160621 -5.23419,30.717433 4.023256,3.431245 9.27164,7.45285 9.054766,10.124527 -0.203744,2.509954 -5.184247,3.161347 -7.985005,6.456774 -2.106125,2.478118 -4.701045,5.001887 -6.494975,7.832182 -1.79394,2.830295 -2.82959,5.957825 -1.9867,9.704263 -1.40702,5.845005 -12.55493,-10.625151 -15.66437,-14.250749 -3.55558,-5.371987 0.37795,-10.417825 -15.20589,-2.101317 18.23377,-24.24188 -12.28037,6.274792 0.26744,-17.001564 2.48369,-8.538738 3.41974,-14.8286165 4.43187,-18.6444124 1.96387,-7.4038367 0.78006,-26.7642916 6.15113,-22.3503706 12.23027,9.621702 33.989775,3.003461 43.860212,-7.297301 12.885049,-15.422095 1.969388,-40.799341 -19.293912,-39.886816 -7.60565,-0.603431 -24.04382,13.81304 -13.52484,-0.764115 -2.75252,-6.593398 -13.88397,-23.602542 -12.64611,-28.004824 13.11205,-1.020822 25.64394,31.958111 27.62277,15.855391 -6.32012,-17.095618 16.101388,14.302184 12.493285,-3.629547 4.402465,0.100863 11.998101,3.346164 15.129482,0.229234 9.565977,-9.521805 10.21336,3.02718 13.945103,1.375408 -2.352619,-4.889335 -2.64412,-6.687757 -1.52823,-6.76242 1.115877,-0.0747 3.633802,1.593027 6.877037,3.705959 1.049442,0.683706 2.848989,1.698279 4.699309,2.636197 -5.596649,-3.767455 -13.37566,-12.743767 -12.837136,-3.51493 -9.705658,-7.653268 -10.034129,7.714006 -17.994914,-3.056461 -0.942906,0.835832 3.779118,4.531827 2.25414,5.195984 -1.524979,0.664169 -9.308795,-1.715677 -11.194289,-1.413613 -1.885506,0.302076 0.763675,5.713895 -1.26079,5.463424 -2.024465,-0.250459 -8.71754,-6.15103 -10.659407,-7.144478 -6.06574,-5.591954 2.636784,20.835063 -7.06807,4.393663 -6.60225,-7.513698 -11.59768,-10.995643 -15.62615,-13.219194 -2.39453,-1.114642 -4.04014,-1.635977 -5.08137,-1.604642 z m 82.562653,16.352066 c -0.978557,-0.390493 -2.021042,-0.889992 -3.056461,-1.413613 1.134851,0.759665 2.192962,1.284863 3.056461,1.413613 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27591"
-         d="m -101.14264,-66.616866 c 1.08956,-0.06211 2.349344,-0.01284 4.049812,0.191029 15.178422,1.81956 19.678572,21.379309 15.244099,34.041334 -7.637607,10.370927 -21.372961,16.160439 -34.155951,15.014865 -14.42653,-3.613739 -22.37215,-19.145293 -13.56305,-33.468248 4.65885,-6.004625 14.62694,-12.54742 15.58796,-12.378667 l 7.83218,-2.597992 c 1.86724,-0.31259 3.18903,-0.698756 5.00495,-0.802321 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27589"
-         d="m -39.402127,-65.547105 c 11.331927,0.0037 24.842329,2.223319 30.1825529,13.639458 6.8810351,13.571286 -6.8435019,25.677805 -19.4467329,27.04968 -12.991634,1.600375 -31.124419,-7.354335 -28.195853,-22.732429 0.417708,-8.648684 5.241708,-18.456403 15.244099,-17.918503 0.733074,-0.01736 1.460475,-0.03839 2.215934,-0.03814 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         sodipodi:nodetypes="csccccccc"
-         inkscape:connector-curvature="0"
-         id="path27587"
-         d="m -127.04615,-46.2914 c -1.63223,3.339183 -1.0304,2.873733 -1.60464,6.380362 -0.57425,3.506641 2.15583,11.898558 3.74417,12.569696 9.02869,12.618281 24.70027,7.352219 37.976525,-4.011605 7.07435,-7.018111 0.429408,-32.404147 -11.2707,-31.366931 3.831139,16.637393 -3.102965,14.062899 -8.431845,17.856432 -4.81437,-4.438544 -11.45355,-10.741138 4.62952,-17.338093 -3.87571,-0.265252 -6.49544,-0.498766 -10.17642,1.564981 -7.3582,3.534211 -11.1141,6.675275 -14.86661,14.345158 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         sodipodi:nodetypes="cccccc"
-         inkscape:connector-curvature="0"
-         id="path27585"
-         d="m -31.653142,-57.675874 c -13.419869,-2.764691 -22.654281,18.225029 -9.513235,24.337071 14.629152,7.32531 33.781144,-9.885732 13.372017,-12.416873 3.757197,-6.208663 10.42406,-11.125005 -2.712609,-11.881992 -0.384197,-0.02482 -0.767698,-0.04878 -1.146173,-0.03815 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27583"
-         d="m -64.923576,-21.037391 c 12.763084,0.824719 23.977081,15.349877 20.745729,28.0812352 -6.404851,10.7986238 -5.329172,20.0435128 3.782371,28.2340588 4.449302,4.029956 9.593118,7.396696 7.488329,16.963358 -1.009207,7.559276 -25.865044,14.088684 -35.684182,8.137828 -6.989967,0.58173 -15.353178,5.610256 -27.011474,2.25414 -18.017297,-5.901501 -9.782597,-20.518769 2.597992,-28.883557 13.865843,-5.640234 -12.279769,-16.270092 -8.634499,-26.4001817 1.06419,-11.5718102 10.157924,-20.2881283 21.013166,-24.4134823 4.940243,-2.118299 10.260894,-3.973301 15.702568,-3.973399 z"
-         style="fill:#9e6947;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27581"
-         d="m -73.214226,-11.868008 c -10.678896,0.329914 -19.960219,4.5031204 -14.059721,18.7590292 1.88871,7.2271368 9.521524,26.5881668 19.714174,21.0131698 7.164796,-4.092614 9.832048,-15.50127 13.486634,-24.1460424 4.784608,-14.1316326 -6.05606,-15.5407106 -14.747425,-15.5115396 -0.718684,-0.07727 -1.485733,-0.10392 -2.25414,-0.114556 -0.720383,-0.0098 -1.427599,-0.02201 -2.139522,0 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27579"
-         d="m -72.335494,-9.7284855 c 7.958768,-0.2558747 16.263209,2.0212743 17.230799,6.1893335 -0.184879,8.2852711 -8.202502,31.322038 -16.237449,30.56461 -10.59466,-0.998717 -14.693423,-21.6710787 -16.122832,-27.89020662 -0.451635,-5.82404978 7.170715,-8.60786218 15.129482,-8.86373688 z"
-         style="fill:#ff8598;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27577"
-         d="m -77.378654,0.1286012 c -4.310307,0.20257001 1.107429,13.2332778 2.063111,1.9484939 l 0.191029,-0.3438519 -0.573087,-1.18437861 C -76.367345,0.25398946 -76.932766,0.1076461 -77.378654,0.1286012 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27575"
-         d="m -66.222572,0.58707035 c -1.237659,-0.15226066 -2.571131,12.36680765 0.72591,6.03651045 l 0.191029,-2.25414 c -0.22866,-2.7164969 -0.570397,-3.73973893 -0.916939,-3.78237045 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27571"
-         d="m -127.19897,34.284553 c 2.73931,0.537081 15.36955,24.102946 20.59291,22.006519 7.319855,9.807487 26.607982,12.875281 31.023076,7.832181 -8.146361,10.471106 -9.792424,30.633295 6.265745,29.112791 8.674873,1.7225 17.493533,4.089753 14.059721,-7.450123 -0.827005,-2.800183 -3.86822,-17.3824 -6.800626,-19.179293 -3.901768,-2.390886 7.610111,-0.570654 13.410223,-2.101317 7.358564,-3.165992 7.195936,-1.411388 13.180988,-6.074716 7.607825,-5.640247 -0.795034,-19.792065 7.75577,-10.124527 10.019275,-8.791458 12.552482,-10.698262 13.983309,-11.232494 2.235605,-0.83472 -2.833266,7.033197 -1.337202,9.742469 L 7.8966075,88.460324 c 3.2894125,5.956896 8.5910275,18.682256 11.9966095,26.896856 3.192486,7.70061 0.746791,10.64675 3.094667,11.07967 13.30964,2.45411 0.784263,4.88285 0.343852,5.19599 -3.924081,2.7901 5.755633,3.69723 7.526535,3.01825 -0.812163,0.67635 -21.0715847,17.48125 -30.56461027,19.17929 -9.57825193,4.98263 -19.56904073,6.53085 -17.99491373,-7.87038 -7.206047,-9.0651 -6.104682,-16.40454 5.04316,-14.70922 6.9258186,0.0279 35.358682,-4.92329 24.107836,-11.30891 -7.6681835,1.90569 8.49058,2.02158 -4.0880162,5.57804 -7.46374329,1.08164 -16.6834112,4.48378 -27.7373838,4.39367 -4.31829,1.22329 -50.280715,7.96751 -38.473203,9.09297 50.8494373,-2.53217 40.325052,0.81393 -2.941843,4.58469 1.561582,8.00203 35.903379,1.08473 38.58782,-0.26744 6.029101,5.66612 -27.220561,8.41544 -37.174207,11.88199 -7.525142,2.46392 34.130754,-1.89527 42.217367,-0.53488 -13.460923,6.57473 -44.887724,4.03954 -39.428346,6.18933 9.338955,3.94917 37.459912,4.94978 44.662536,-0.0381 12.25902484,-0.69515 37.632676,-16.88695 37.632676,-16.88695 0,0 0.11908,23.77844 -0.07641,34.80545 -0.35093,19.96806 0.679574,39.93588 -0.191028,59.83023 -0.521738,6.60956 1.337201,26.17094 1.337201,26.17094 -29.1934202,14.8881 -55.96215,18.25746 -90.206091,16.58295 -34.243929,-1.67448 -55.298425,-13.07765 -72.703285,-24.41519 0,0 -6.52383,-37.71768 -6.22754,-51.65419 0.44,-10.03552 0.68337,-21.75203 0.99335,-33.46825 0.30999,-11.71622 -0.46405,-22.22609 1.56644,-32.05463 0.30066,-1.45533 3.53725,-4.00521 2.98005,-0.42027 -0.78799,5.06979 7.10955,12.34647 10.39197,14.70922 6.89159,4.96074 15.55847,9.03512 21.50984,11.53814 12.191492,4.5406 29.290912,-1.38585 38.052942,-2.71261 5.565412,-4.96083 -88.399732,2.70458 -1.146172,-4.73751 3.555654,-4.5475 -35.71146,-0.67935 -36.4483,-2.71261 2.98036,-2.93365 32.855772,-0.6984 35.837007,-6.34216 -3.479353,-1.90818 -33.207707,-1.66271 -33.926717,-3.40031 -0.2758,-0.66652 31.674839,-0.89558 33.391837,-1.41361 -2.582722,-5.39551 -24.54859,-4.84589 -31.672577,-6.95345 -3.96685,-5.64094 -18.5298,-19.48494 -18.5298,-19.48494 0,0 -9.87892,-16.47556 -3.70596,-4.27905 5.93324,11.21142 20.42792,13.78995 17.11619,31.94002 0.89904,4.94325 -0.85459,14.65261 -0.72591,18.60621 -9.63223,-6.08156 -28.20253,-11.06737 -27.92842,-24.33707 -0.49371,-13.37336 -14.05974,10.29361 -13.41022,6.30395 -2.13128,-10.09071 11.26939,-21.66948 -2.94184,-14.82384 -6.8817,3.31495 15.42008,-15.13151 13.75407,-28.99817 -0.53033,-7.587886 1.59753,-19.865519 3.66775,-29.609467 1.97486,-10.236113 9.09471,-31.258219 6.80063,-36.983178 -0.0643,-1.005588 0.14356,-1.413932 0.53488,-1.337202 z"
-         style="fill:#784421;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         sodipodi:nodetypes="cccccscccsccssscccccccccccccccccczccsssscccccsccccccccscccc" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27569"
-         d="m -71.800613,64.505311 c -0.801294,2.2526 2.871472,18.93952 2.024905,26.705828 -17.735677,5.519162 -11.677368,-27.253008 -2.024905,-26.705828 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3168"
-         d="m -67.597979,64.543456 c 8.774916,0.198914 10.934917,20.727952 11.53814,27.546354 -2.895337,1.482005 -9.274158,1.422869 -11.881992,-0.878732 -0.279165,-7.145297 -4.652643,-27.012012 0.343852,-26.667622 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-    </g>
-    <path
-       style="fill:#000000;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 463.97438,1158.0795 c -1.21015,0.9185 -4.38505,0.8755 -8.69868,-5.9957 4.71496,9.3129 -1.91741,7.5815 -0.41561,8.194 5.40941,2.2062 12.00553,11.3071 -1.47491,2.1849 2.14048,3.1537 8.18699,6.4286 5.4292,4.4087 -0.52302,-0.3831 -4.65635,3.788 -4.97565,4.7244 -0.32363,0.9492 -0.80654,-8.6761 -1.62354,-8.1439 -0.32354,-2.1996 1.5929,9.2023 -2.1986,11.7683 -1.11131,0.7521 -1.65129,-12.0504 -1.78805,-9.3298 -0.14108,2.8052 0.14256,9.8259 0.47122,11.2446 0.43707,1.8868 -0.63514,2.4183 -3.36375,1.3915 -0.23112,0.7279 0.92877,-10.2087 0.52038,-9.3139 -0.42372,0.9283 -0.65468,2.4614 -0.85237,4.0976 -0.19771,1.6362 -0.33039,3.3894 -0.46231,4.7994 -0.13193,1.41 -0.26312,2.4768 -0.45782,2.7403 -0.77881,1.0539 -2.04786,-10.7367 -2.35722,-7.8878 -0.41394,3.8121 2.14799,14.7116 2.67243,16.8321 0.65417,2.6451 -1.1532,-0.099 -4.96025,2.8315 -3.11422,6.0782 5.79818,-9.2841 9.26227,7.0756 -15.61235,-4.0249 -5.21992,-0.2087 -0.15383,1.5595 -1.54636,3.4367 -2.15153,-0.6624 -8.83227,2.9675 -1.01559,0.5518 6.47258,-1.8746 9.48894,2.1823 1.29503,1.7418 2.67625,3.5227 3.63834,5.2656 0.96207,1.7428 -0.13822,0.4187 -0.3117,1.3576 -0.2856,1.5462 -3.53365,-3.6227 -8.01713,-0.07 9.02576,-1.3308 9.72745,10.0357 6.93332,8.6332 -2.71102,-1.3607 -6.78811,-2.3733 -8.46605,-1.506 -4.77323,0.9905 -0.29028,0.1244 -5.8757,0.9354 -8.59353,-10.7068 -1.99706,-1.9706 -5.70171,0.099 -6.02426,-4.4858 -2.47029,-0.2729 -9.80716,1.5113 -6.06793,-14.5581 1.18828,10.6479 -10.83687,0.868 -14.62705,-4.0977 7.56648,6.5104 -7.76955,6.3168 -19.16231,6.5915 13.65997,-4.9503 4.74469,10.0508 5.55788,-3.987 3.04794,-4.0537 11.61573,-2.8396 2.13431,10.3532 3.27119,-5.1586 7.70713,2.1701 3.23375,-2.8873 11.68591,-1.5037 15.07441,-4.9231 -0.88384,3.361 -0.71538,2.1427 -0.57488,4.7533 1.636,-3.8793 0.61451,-3.5827 2.87502,-5.2552 2.66583,-1.9723 2.10385,-0.965 5.37447,3.7737 -1.35768,-13.5172 5.73689,-0.5252 5.2954,9.4363 -0.0512,1.1576 -8.74911,-4.4872 -7.17252,-3.1641 1.57658,1.323 5.44793,3.3826 6.77512,5.039 1.32722,1.6564 2.14403,3.5129 1.6791,5.6366 -3.11586,-0.017 -9.07841,-4.6573 -8.71909,-3.7716 0.3593,0.8857 1.9446,2.0982 3.73267,3.3888 1.78806,1.2906 3.77891,2.6592 4.94934,3.8573 1.1704,1.198 1.5204,2.2253 0.0267,2.8332 -6.27133,0.544 -12.97599,0.9833 -16.88355,1.5592 -3.60212,0.5309 -1.86646,6.0309 -1.32401,8.9893 0.61453,3.3515 -1.14214,5.2424 3.02118,7.3825 3.30936,1.7013 6.72986,3.6886 11.65499,3.4203 -1.97034,4.7582 1.54844,11.5596 0.82133,19.8449 0.75007,5.4762 0.59023,11.0312 0.81416,12.961 -0.1813,3.1114 1.32301,7.6868 1.33853,12.3337 1.89598,3.272 3.19246,5.9133 4.57437,8.2676 1.38189,2.3542 2.25394,3.9295 2.1212,3.9927 -0.53098,0.2528 -17.62026,-29.8831 -18.34704,-31.0455 -4.79681,0.6565 9.49682,37.9473 8.65907,37.5085 -0.84267,-0.4413 -13.24283,-38.6619 -14.8805,-34.2603 -0.49123,5.2587 10.38148,40.368 8.9331,40.0062 -1.44837,-0.3619 -10.23945,-33.0591 -10.81985,-37.9465 -6.90045,9.8567 -3.38942,13.7842 -1.93504,21.6755 4.39304,12.3274 7.88707,19.9218 20.70489,26.0617 15.11848,2.1426 11.7674,2.3002 12.24117,4.3172 0.58935,3.3096 0.20836,4.3882 0.74903,7.4132 0.54069,3.025 0.51786,6.3885 0.37912,9.7681 -0.13812,3.3796 -0.40832,6.7857 -0.42742,9.8478 0.40186,6.0065 0.17791,12.7989 0.48111,19.7536 0.30322,6.9548 0.17012,12.4977 1.07532,21.0414 0.75958,7.1692 0.70154,14.1422 0.86786,20.5352 0.1663,6.3931 -0.25962,12.1475 -1.83753,16.7849 -1.16072,1.6204 -3.28689,1.6918 -4.972,0.014 -3.69626,-3.681 -8.57793,-10.2255 -10.49372,-4.9297 -3.70023,-3.3877 -23.57319,-17.6972 -5.90765,4.8297 -2.56318,3.9498 -11.28705,21.7215 -16.15648,33.9075 -4.86943,12.1861 -5.32847,16.6154 15.78218,19.6529 24.10939,2.6493 47.77663,1.1742 75.04836,1.3452 8.68064,-0.9701 25.91908,-0.8833 33.34864,-0.9236 l 8.86029,-1.4893 c 1.24404,-0.2062 1.72191,-1.0029 1.66271,-2.1841 -1.38864,3.482 -18.82608,2.1235 -20.82549,3.1498 -12.09601,0.072 -22.97445,0.3556 -34.25807,0.7311 -23.18832,0.02 -47.30485,1.7693 -70.37351,-2.4425 -15.69864,-3.3751 -11.26991,-10.9952 -6.00599,-22.8615 4.3484,-9.8025 7.26859,-17.7624 14.14383,-28.947 -14.40527,-15.8229 -4.62906,-12.6411 4.29967,-3.0257 3.62283,1.2018 -0.58066,-8.2143 8.34103,1.6623 6.09809,7.8118 9.80496,2.4113 9.51251,-0.6579 2.2343,-20.5461 -1.15886,-41.356 -1.43352,-61.249 1.47901,-16.475 -3.90151,-35.0889 6.61508,-42.276 -2.92281,-4.1436 -19.9806,-1.643 -25.72361,-7.3498 -10.51941,-4.195 7.79918,-12.5156 13.02962,-15.6108 5.37022,-7.708 15.76172,0.7631 21.28544,0.3502 5.63797,5.7626 5.145,29.6779 4.77257,39.8256 -0.22146,3.7209 -0.37221,8.5689 -0.0652,13.8407 0.61228,10.5079 0.78539,22.7128 1.87101,30.904 1.84572,18.1546 0.61519,40.2298 2.17014,58.3746 2.12898,-0.3408 -1.21841,-24.8802 -0.0622,-32.9288 -0.71254,-27.1959 -4.68142,-60.9216 -3.26925,-64.7704 0.35229,-2.9726 1.19575,-30.7724 4.99015,-45.3676 2.52137,-2.2914 9.26358,-3.4767 10.79271,-3.4858 5.46118,-0.033 15.06047,11.8682 18.91347,16.9572 12.55944,8.2342 -19.06891,4.7278 -23.62062,10.0469 3.16608,-0.6768 5.08444,2.754 6.51265,4.8357 1.42821,2.0818 1.87638,2.9147 2.19764,6.0288 0.32123,3.1141 0.65998,5.1807 0.40276,9.9603 -0.13031,2.4216 -0.14763,4.0724 -0.14763,4.0724 0,0 2.61986,35.3834 3.81685,52.921 2.50833,10.1064 0.8576,36.7652 18.32701,21.5871 -5.29858,12.3807 12.33799,3.3793 2.41264,9.7667 -5.31433,7.2197 5.30946,10.3541 11.66058,16.6209 6.39141,6.5793 12.68762,18.7308 18.63906,26.8815 0.35678,0.3497 0.61062,0.6505 0.79999,0.9525 -1.97057,-6.4929 -13.24647,-19.7022 -15.85395,-25.0481 -4.60933,-9.0472 -27.42715,-11.4141 -8.85216,-23.3675 -21.30231,4.3861 3.17886,-15.586 -10.59167,-5.3164 -15.27033,12.1669 -13.39819,-11.5087 -15.4342,-22.0021 -2.50135,-24.3946 -3.70982,-51.019 -4.7983,-75.5113 -10e-4,-2.1739 -1.30592,-3.3569 0.24957,-4.0559 1.55552,-0.699 5.97058,-0.914 8.178,-1.0667 2.20741,-0.1528 4.51443,-0.2646 6.46829,-0.7997 1.95387,-0.5352 3.55457,-1.4936 4.34937,-3.3398 16.36058,-4.2252 22.50943,-21.9345 22.49408,-37.1889 -0.68544,0.8206 -1.82259,2.6206 -3.10438,4.6109 -1.2818,1.9903 -2.70827,4.1709 -3.97237,5.753 -1.26412,1.5821 -16.57076,21.347 -17.20318,20.9429 -0.63242,-0.404 13.40941,-20.977 14.02271,-24.945 0.89562,-3.2108 4.62826,-18.2384 -4.38973,-2.8292 -2.23845,3.5456 -14.94162,22.805 -15.31596,23.5155 -2.47128,4.6907 12.13778,-21.4185 12.01799,-23.7819 -0.11982,-2.3634 0.56933,-6.7426 0.0899,-9.1393 -0.47949,-2.3968 -14.94098,26.2916 -16.72617,25.809 1.40277,-1.3534 2.58212,-3.4282 3.59299,-6.0341 1.01089,-2.6059 1.85328,-5.7428 2.58212,-9.2204 0.72884,-3.4776 1.34411,-7.2958 1.90077,-11.2641 0.55666,-3.9684 -1.62186,-23.9872 -1.60728,-28.0953 0.0149,-4.2206 -0.6106,-11.1876 0.97191,-11.0049 2.15294,0.017 3.71808,-0.1318 4.12807,-0.4544 2.54986,-0.9376 1.80282,-1.3201 3.21747,-2.2693 0.47614,-1.8907 1.98318,-9.7316 1.63777,-9.7675 -0.10362,-5.0503 -2.22526,-6.4111 -9.25481,-4.7582 -20.62769,-9.5113 21.89688,-20.992 18.10888,-36.5808 -7.34959,-4.847 12.05293,-8.0734 13.5513,-9.1546 0.64456,-0.4651 -23.48028,3.6184 -17.22612,-0.042 2.05111,-1.9233 13.51906,-14.5515 8.30578,-10.5402 -13.12512,17.0481 -18.82289,1.9398 -13.35896,-9.0788 -3.21302,4.2761 -7.88031,23.18 -10.94592,3.6091 -4.47509,7.771 -13.04658,1.2274 -10.77007,-11.9259 -3.10564,12.462 -10.3446,17.9167 -11.88756,10.8452 0.36713,3.2938 -16.51936,11.8466 -15.13128,6.7622 -4.90703,-7.2497 7.11053,2.5506 3.37682,-4.6719 -18.05764,-5.7898 -10.80677,-8.3616 2.53877,-4.7465 -5.17205,-3.565 -24.41381,-3.3563 4.00418,-4.1475 -23.31639,-0.6656 -8.28108,-5.9316 4.55851,-3.7028 -4.94277,-2.4786 -20.78344,-3.4882 1.51282,-5.6655 -6.96765,0.6251 -7.15882,-6.7256 -0.96155,-12.3225 -10.03788,5.2973 -5.48553,-7.1815 -7.66306,1.1587 -12.86884,8.203 -23.12432,12.9351 -17.00486,-8.1222 -2.37215,4.1787 -3.62152,5.2555 -3.83381,6.6136 -0.19657,1.2576 -2.7029,0.4051 -3.21988,-0.9514 -0.51701,-1.3565 0.82377,-2.7561 -0.46096,-4.2071 -1.24711,-1.4086 1.99975,-5.7697 2.04852,-5.6985 0,0 0.38115,-0.5235 -3.28765,2.4377 -2.15415,1.0401 -1.15036,-6.5518 -1.46901,-6.7852 -0.23071,-2.6886 -0.1137,1.0054 -0.85535,5.8868 z"
-       id="path27793"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 565.24799,1519.7381 c 0.16709,0.5506 0.25662,1.0587 0.27893,1.5036 0.16922,-0.4244 0.0856,-0.9222 -0.27893,-1.5036 z"
-       id="path27791"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 460.61071,1174.5396 c 0.7163,10e-4 1.62055,0.1458 2.76983,0.5027 5.35053,-0.9656 0.72038,9.0913 -1.59306,1.4605 -1.52236,5.2936 -6.19083,-1.9712 -1.17677,-1.9632 z"
-       id="path27789"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 460.87692,1167.5144 c 0.9049,0.038 1.56802,1.0454 1.78595,3.7869 1.45085,-2.8802 1.68461,-4.6587 7.1874,-1.7148 4.25956,7.6146 -5.19539,-0.6316 0.90164,6.5402 -1.62536,2.1708 -4.40669,-0.993 -0.78613,6.6582 -5.02328,-2.7877 -6.01929,-4.1417 -2.48243,3.4487 -8.5813,-4.2519 -10.39826,8.818 -12.58497,14.1769 -5.17595,11.0768 -17.46313,-38.5493 -4.46852,-13.1084 -2.37205,-10.0761 0.8242,-11.3784 1.98542,-14.2658 3.16719,-1.0331 6.47083,-5.6051 8.46164,-5.5219 z"
-       id="path27787"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 493.59191,1170.6169 c 0.26982,0.017 0.5625,0.064 0.83642,0.1129 0.80363,1.386 0.12921,3.0414 -0.64359,4.2551 -5.05012,8.1918 -14.64701,12.029 -17.88699,17.3885 0.28358,-9.077 -2.60084,0.4286 -3.72871,3.9683 -4.40086,7.9839 -12.81817,9.9545 -11.18735,-3.9274 6.17492,-10.6462 0.0424,9.9949 6.63844,3.0033 1.05559,-9.0675 9.44475,-8.9104 12.29095,-17.9755 -0.99684,7.1629 5.31613,-7.3399 13.68083,-6.8251 z"
-       id="path27785"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 465.1357,1188.3501 c -0.38622,0 -0.43831,1.0897 1.00428,3.2941 0.10226,-2.1861 -0.61808,-3.2896 -1.00428,-3.2941 z"
-       id="path27783"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 490.88377,1189.85 c -0.34511,-0.015 -0.70202,0.2419 -0.0331,0.7634 0.71155,-0.4616 0.37822,-0.7484 0.0331,-0.7634 z"
-       id="path27781"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 462.57838,1189.1186 c -0.75808,-0.2 -1.99988,1.9401 0.0384,3.5199 0.68555,-2.4446 0.41642,-3.3998 -0.0384,-3.5199 z"
-       id="path27779"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 472.76808,1189.5991 c 1.71537,4.0719 -2.3687,0.6633 0,0 z"
-       id="path27777"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 455.58337,1189.0445 c -1.29264,-0.1011 -3.43839,2.1596 0.003,3.4419 1.25364,-2.4546 0.772,-3.3812 -0.003,-3.4419 z"
-       id="path27775"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 487.59805,1192.4226 c -1.03158,-0.1363 -1.63681,9.7239 0.46473,0.7467 -0.15796,-0.5119 -0.31736,-0.7273 -0.46473,-0.7467 z"
-       id="path27773"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 473.72921,1193.0061 c -0.34498,6.6937 -4.62639,0.3944 0,0 z"
-       id="path27771"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 456.42191,1195.276 c -1.27375,-0.1424 -3.26735,4.4031 0.66746,4.0062 0.34624,-2.9014 -0.0885,-3.9414 -0.66746,-4.0062 z"
-       id="path27769"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 462.60212,1195.6208 c -0.64976,0.015 -1.3335,1.4364 0.32716,3.0353 0.66483,-2.1964 0.17815,-3.0474 -0.32716,-3.0353 z"
-       id="path27767"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 483.28195,1197.5891 c -0.78769,-0.1636 -3.36229,2.9191 -0.6968,2.8379 1.02968,-2.016 1.05484,-2.7636 0.6968,-2.8379 z"
-       id="path27765"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 458.94795,1197.8714 c -0.56429,0.1059 -1.01589,1.5015 0.56778,2.778 0.38919,-2.1674 -0.12889,-2.8604 -0.56778,-2.778 z"
-       id="path27763"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 456.49223,1203.3481 c -0.97234,0.1002 -2.40039,3.1338 0.58765,2.32 0.20935,-1.7981 -0.14568,-2.3656 -0.58765,-2.32 z"
-       id="path27761"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 471.85665,1207.0743 c -0.6092,0.092 -1.30566,0.6092 -0.28204,1.2115 1.41316,-0.9708 0.89123,-1.3036 0.28204,-1.2115 z"
-       id="path27759"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 452.06818,1207.4774 c -1.42807,-0.096 -3.62437,4.382 0.58123,5.1114 0.70433,-3.7491 0.16679,-5.0611 -0.58123,-5.1114 z"
-       id="path27757"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 468.99763,1212.1511 c -0.90357,-0.1706 -6.13606,3.299 -1.06863,1.7127 1.20892,-1.1845 1.36981,-1.6559 1.06863,-1.7127 z"
-       id="path27755"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 478.77911,1197.3551 c 0.68193,0.062 1.40397,0.8755 2.09125,2.9206 l 0.12803,3.2179 c -6.13023,2.9883 -4.65473,-6.3585 -2.21928,-6.1385 z"
-       id="path27753"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 458.12943,1199.0975 c 0.58399,0.063 1.1915,0.8679 1.93527,2.9904 1.79575,12.5142 1.24668,4.3339 10.46901,7.2614 -4.76672,-11.1696 11.75376,-5.0897 7.96913,-0.3425 -8.29946,-9.3728 -1.45767,7.4254 -6.87844,5.17 -9.98815,-5.4619 0.33349,1.4386 -2.25806,7.971 -10.0266,-10.9287 5.27786,7.9474 -1.73154,13.4625 5.49445,-0.3486 8.55982,7.367 13.9477,10.8159 2.50332,12.0574 0.68113,-4.0754 3.68948,3.9843 l 0.63252,3.0485 -1.3641,0.5909 c 1.40689,5.4172 -4.37285,9.7941 -8.05695,2.3655 2.40538,8.2113 -10.73323,3.6736 -12.30726,-0.1517 0.0449,12.4893 -4.81904,-10.8229 -3.90485,0.9777 -2.10822,8.888 -2.98724,-5.5227 -3.08062,-6.5583 -2.58434,-9.0397 -4.06544,-31.2148 -4.02042,-33.3658 4.87971,-1.166 -3.98547,-8.9728 -3.279,-15.3412 3.33177,4.4998 6.1525,-3.1049 8.23813,-2.8786 z"
-       id="path27751"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 464.17619,1256.2637 c -0.001,-0.4349 -0.005,-0.8144 -0.0183,-1.3393 -0.19455,0.4167 -0.17154,0.8777 0.0183,1.3393 z"
-       id="path27749"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 467.6348,1235.6103 c -1.14036,0.072 -2.37482,0.4899 -3.76874,1.3661 1.68064,-0.1855 2.88797,-0.6731 3.76874,-1.3661 z"
-       id="path27747"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 506.15212,1201.9466 c 13.88581,0.4803 29.3975,6.2268 32.91711,20.4731 3.90236,15.3863 -16.12988,17.8049 -21.45249,29.0504 -2.94568,13.9742 -1.086,-11.5517 -3.97808,-1.7405 4.54657,10.557 -20.85815,12.6342 -11.02226,6.3668 -7.71445,-8.6166 2.90144,-23.3553 -7.59774,-25.8369 6.72055,6.663 -0.45884,4.3898 0.47038,9.4278 7.48264,15.6636 -8.2561,4.2758 -12.13966,-0.4886 2.98104,4.5023 -0.41056,2.5558 -5.44006,-0.6568 2.47051,-1.4753 1.01766,-2.3632 -3.57685,-6.5798 8.62212,-1.7548 -3.55025,-1.2102 -1.13417,-9.1126 10.88989,6.6214 -4.2232,-9.7306 7.9168,-12.3526 9.26206,3.7292 2.61473,-8.1548 11.16361,-2.5748 2.68201,-4.9014 9.17363,-2.528 13.87341,-5.9755 z"
-       id="path27745"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 520.76978,1206.1376 c -6.58396,0.6228 -2.32952,16.8878 -0.21716,3.2411 l 0.43795,-2.1608 z"
-       id="path27743"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 510.20673,1206.3292 c -1.06422,-0.04 -3.08824,5.1561 0.51297,2.2785 0.10869,-1.6696 -0.15822,-2.2652 -0.51297,-2.2785 z"
-       id="path27741"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 464.55733,1205.1893 c 5.11833,1.2987 -1.53163,3.059 0,0 z"
-       id="path27739"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 459.36459,1205.0021 c -1.53364,0.2081 -4.12281,3.9234 -0.0544,4.7779 1.52601,-3.7515 0.97459,-4.9028 0.0544,-4.7779 z"
-       id="path27737"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 503.51388,1208.1038 c -1.0545,0.2073 -0.75192,2.602 3.65803,4.7095 -1.2032,-3.722 -2.83786,-4.8707 -3.65803,-4.7095 z"
-       id="path27735"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 529.10113,1211.5471 c -0.93004,-0.2021 -2.44154,8.9519 0.54465,4.1919 0.006,-3.0036 -0.23465,-4.1246 -0.54465,-4.1919 z"
-       id="path27733"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 497.55959,1210.484 c -1.56687,-0.2291 -2.26794,4.4478 2.2623,4.2666 -0.66319,-3.0604 -1.55008,-4.1624 -2.2623,-4.2666 z"
-       id="path27731"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 508.93606,1213.5782 c -1.32746,-0.3208 -4.79704,9.5851 -0.30483,6.1437 l 0.56408,-1.5434 c 0.40797,-3.2492 0.18277,-4.4933 -0.25925,-4.6003 z"
-       id="path27729"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 489.52763,1214.0361 c -1.1035,-0.067 -1.43906,1.0455 2.2556,3.5396 0.71933,-2.2252 -1.15209,-3.4724 -2.2556,-3.5396 z"
-       id="path27727"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 480.45488,1214.2542 c -1.73262,0.1901 -2.15931,3.0738 3.95349,5.8313 -0.46899,-4.5112 -2.6059,-5.9792 -3.95349,-5.8313 z"
-       id="path27725"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 501.96119,1216.5643 c 3.38311,3.5332 -3.90953,20.9484 4.19444,9.9719 0.82612,-2.4982 -1.80782,-8.5315 -4.19444,-9.9719 z"
-       id="path27723"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 459.16784,1214.8217 c -1.4981,0.2116 -3.40743,3.8768 0.97446,3.9812 0.48891,-2.7569 0.0153,-3.8327 -0.66909,-3.9679 -0.0942,-0.019 -0.20549,-0.027 -0.30537,-0.013 z"
-       id="path27721"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 517.8299,1217.4825 c -1.45036,0.2168 -7.50398,13.8244 -0.27846,3.7738 0.7022,-2.8542 0.68474,-3.8345 0.27846,-3.7738 z"
-       id="path27719"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 462.28949,1215.1484 c -0.66457,-0.011 -1.29532,1.1357 0.50303,2.5075 0.54714,-1.7743 0.0138,-2.4985 -0.50303,-2.5075 z"
-       id="path27717"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 495.87914,1219.2449 c -0.83988,0.057 -0.59996,1.2376 3.22482,4.1171 0.71618,-2.4079 -2.145,-4.1905 -3.22482,-4.1171 z"
-       id="path27715"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 408.6561,1215.574 c -0.21015,-0.025 -0.39939,-0.016 -0.57419,0.013 -1.3985,0.2382 -1.40632,2.1785 4.21564,5.0779 -0.0245,-3.3706 -2.17032,-4.9179 -3.64145,-5.0912 z"
-       id="path27713"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 525.9622,1223.9541 c -2.39881,-0.047 -8.62605,9.8029 0.79507,1.9466 0.0913,-1.4053 -0.2415,-1.9357 -0.79507,-1.9466 z"
-       id="path27711"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 443.96513,1220.5865 c 1.25061,-0.1216 6.21882,-0.2581 7.29474,1.9869 4.16608,5.0302 0.74689,9.0933 -7.57055,9.5402 1.0517,-6.6096 -2.8537,-2.1564 -1.76909,0.5018 -1.07135,1.9535 -12.98794,6.7104 -21.5126,1.8148 3.43253,-3.5641 -8.37615,-5.0486 -2.92539,0.2455 -13.01074,2.4109 -10.79852,-12.0332 -0.53247,-7.5369 5.14189,-10.471 2.60339,0.7821 7.37009,0.2434 -1.80956,-11.0051 7.59677,-0.6958 9.69706,-7.5534 3.96083,3.751 6.66001,1.0773 9.94821,0.7577 z"
-       id="path27709"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 489.87514,1222.7703 c -1.50613,-0.046 -2.51139,1.3327 2.04316,3.148 0.60269,-2.2121 -0.87171,-3.1122 -2.04316,-3.148 z"
-       id="path27707"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 535.30062,1225.5449 c -1.77727,0.1698 -5.5651,9.3927 0.77015,1.6396 -0.0452,-1.2464 -0.36002,-1.6788 -0.77015,-1.6396 z"
-       id="path27705"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 460.36165,1222.5601 c -1.3392,0.014 -3.41748,5.9216 0.52325,6.4473 0.68746,-4.8367 0.17821,-6.4548 -0.52325,-6.4473 z"
-       id="path27703"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 462.16398,1223.3267 c -0.60407,0.037 -0.81072,1.3092 1.26146,2.6552 -0.0849,-1.9558 -0.79162,-2.6841 -1.26146,-2.6552 z"
-       id="path27701"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 444.94773,1222.6177 c -2.04169,-0.2469 -6.82853,3.8784 0.55942,2.0893 0.47475,-1.4327 0.12116,-2.007 -0.55942,-2.0893 z"
-       id="path27699"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 455.70003,1223.3521 c -1.39243,0.076 -2.6925,4.2416 0.82031,6.6514 l 0.73677,-1.1153 c 0.11969,-4.1729 -0.72163,-5.5815 -1.55708,-5.5361 z"
-       id="path27697"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 436.83923,1223.5278 c -1.92205,-0.1616 -5.68813,4.0284 0.86976,1.988 0.22629,-1.4207 -0.22908,-1.9342 -0.86976,-1.988 z"
-       id="path27695"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 483.08616,1225.8791 c -1.82878,-0.063 -1.71494,3.2693 4.49111,4.8987 -1.59426,-3.6235 -3.39385,-4.861 -4.49111,-4.8987 z"
-       id="path27693"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 430.21273,1224.6551 c -1.8761,0.01 -6.51295,2.1832 -0.4214,1.779 1.5497,-1.3418 1.27417,-1.7824 0.4214,-1.779 z"
-       id="path27691"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 467.87143,1226.6337 c -0.92134,0.1727 -2.33193,4.5707 0.50642,3.3108 0.22306,-2.599 -0.0877,-3.3892 -0.50642,-3.3108 z"
-       id="path27689"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 510.80256,1228.7265 c -1.38575,0.324 -7.72714,8.6986 -0.39814,2.1242 0.80134,-1.677 0.78613,-2.2149 0.39814,-2.1242 z"
-       id="path27687"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 434.95261,1227.3465 c -2.97483,-0.052 -6.28979,6.1029 2.17581,1.8536 -0.50713,-1.3565 -1.34286,-1.839 -2.17581,-1.8536 z"
-       id="path27685"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 490.88149,1231.3036 c -1.08636,0.1714 -1.73042,2.9203 1.21174,3.8003 l 0.51279,-0.3602 c -0.29491,-2.7259 -1.07273,-3.5429 -1.72453,-3.4401 z"
-       id="path27683"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 517.54894,1232.767 c -3.04486,-0.237 -7.4812,7.9401 -0.65366,2.725 l 1.84858,-2.0613 c -0.34168,-0.4407 -0.75995,-0.6299 -1.19492,-0.6637 z"
-       id="path27681"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 528.95177,1233.4913 c -1.67668,0.1966 -9.52959,7.9771 -0.54914,2.0795 1.00412,-1.6025 1.01862,-2.1345 0.54914,-2.0795 z"
-       id="path27679"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 426.78944,1229.5162 c -1.31288,0.081 -4.39519,2.5259 -0.15752,1.867 0.99604,-1.4599 0.75429,-1.9037 0.15752,-1.867 z"
-       id="path27677"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 463.7196,1231.5397 c -0.28299,0.062 -0.18773,0.6406 0.89964,2.1806 1.68386,-0.2559 -0.0326,-2.0288 -0.74696,-2.174 -0.0536,-0.011 -0.11223,-0.015 -0.15268,-0.01 z"
-       id="path27675"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 484.34139,1233.9644 c -1.54802,-0.1006 -1.89633,0.9584 3.55999,3.4433 0.73578,-2.0822 -2.01196,-3.3427 -3.55999,-3.4433 z"
-       id="path27673"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 456.16874,1232.8181 c -1.14347,0.2465 -1.22033,4.2772 2.53803,7.6055 l 0.40483,-1.3973 c -0.88305,-4.7709 -2.16049,-6.3768 -2.94286,-6.2082 z"
-       id="path27671"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 504.97821,1237.8047 c -1.48213,-0.017 -3.72679,4.4842 -0.0443,7.1875 l 0.42147,-0.8995 c 1.11067,-4.6298 0.51209,-6.2777 -0.3772,-6.288 z"
-       id="path27669"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 461.62405,1237.5292 c -1.30946,0.1838 -2.22653,3.9271 1.77104,4.1305 -0.15966,-2.8764 -0.85345,-3.9626 -1.50386,-4.1189 -0.0894,-0.022 -0.17989,-0.024 -0.26718,-0.012 z"
-       id="path27667"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 521.12418,1240.2646 c -1.90561,-0.086 -5.9071,6.5045 0.82159,1.3358 -0.0598,-0.9602 -0.38183,-1.316 -0.82159,-1.3358 z"
-       id="path27665"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 491.76496,1239.1433 c -1.27338,-0.063 -1.52414,1.2046 3.03895,3.9943 0.53047,-2.5375 -1.76556,-3.9313 -3.03895,-3.9943 z"
-       id="path27663"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 469.11865,1238.4281 c -0.62331,0.039 -1.1931,1.6842 0.49648,3.5398 0.50934,-2.6409 -0.0123,-3.57 -0.49648,-3.5398 z"
-       id="path27661"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 472.85605,1239.5463 c -0.47683,0.2401 0.57453,5.9505 2.46514,9.285 1.27397,-1.0103 -0.51701,-2.961 -0.36044,-4.031 -1.18435,-4.01 -1.85492,-5.3797 -2.1047,-5.254 z"
-       id="path27659"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 510.29733,1241.2478 c -0.94116,0.02 -5.42875,11.3349 -0.33497,3.3125 0.57981,-2.438 0.5985,-3.318 0.33497,-3.3125 z"
-       id="path27657"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 466.29939,1242.5888 c -0.77655,0.028 -1.40692,1.2546 0.45665,3.5763 1.24268,-2.4357 0.31991,-3.6048 -0.45665,-3.5763 z"
-       id="path27655"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 469.92234,1244.5816 c -0.6099,-0.067 -0.84144,1.4869 1.16538,4.8691 0.43279,-3.1129 -0.55548,-4.8017 -1.16538,-4.8691 z"
-       id="path27653"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 459.14526,1245.2994 c -0.91411,0.093 -1.74818,2.4856 0.4634,5.1827 l 0.43313,-0.2871 c 0.58788,-3.6679 -0.18554,-4.9682 -0.89653,-4.8956 z"
-       id="path27651"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 477.94477,1246.536 c -0.29531,0.095 -0.50257,0.7751 0.0566,2.2204 0.84215,-1.4909 0.32309,-2.3422 -0.0566,-2.2204 z"
-       id="path27649"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 504.84621,1247.8948 c -1.16998,0.1532 -2.97764,2.5427 0.21266,3.0303 0.9459,-2.4053 0.48932,-3.1223 -0.21266,-3.0303 z"
-       id="path27647"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 463.65938,1247.025 c -1.01293,0.1981 -2.21685,4.178 0.76539,4.3927 0.23749,-3.0357 -0.10467,-4.2194 -0.57455,-4.3845 -0.0645,-0.023 -0.12332,-0.021 -0.19084,-0.01 z"
-       id="path27645"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 467.93281,1248.1282 c -0.46024,-0.066 -0.7393,1.1074 0.68395,2.7449 0.14232,-1.8892 -0.32598,-2.6938 -0.68395,-2.7449 z"
-       id="path27643"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 495.91301,1250.184 c 0.562,-0.01 1.41449,0.2406 2.60059,0.8777 2.98669,12.3051 -6.53446,-0.817 -2.60059,-0.8777 z"
-       id="path27641"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 508.2469,1251.4841 c -2.32483,0.1554 -6.77589,5.5774 -0.0146,5.6209 1.87074,-4.3375 1.23228,-5.7022 0.0146,-5.6209 z"
-       id="path27639"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 490.49462,1250.7901 c 1.00257,0.053 2.49248,1.568 4.48456,5.9309 2.77671,9.68 -5.53644,0.2099 -4.9023,0.1697 -1.59852,-0.9692 -1.4963,-6.2012 0.41774,-6.1006 z"
-       id="path27637"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 476.01845,1252.1504 c -0.48032,0.021 -0.77357,0.787 0.59429,2.1673 0.55341,-1.4644 -0.11395,-2.1884 -0.59429,-2.1673 z"
-       id="path27635"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 472.73922,1252.8111 c -0.11602,-0.025 -0.20999,-0.01 -0.30701,0.025 -0.60363,0.1956 -0.71601,1.5128 1.34622,4.2268 0.90188,-2.5159 -0.22695,-4.074 -1.03921,-4.2517 z"
-       id="path27633"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 469.2459,1253.1184 c -0.63324,0.072 -1.10031,1.8988 0.46009,5.2591 0.97253,-3.6491 0.17314,-5.3313 -0.46009,-5.2591 z"
-       id="path27631"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:#a05a2c;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 524.54436,1260.1457 c 3.20892,-0.7616 7.8362,-2.3891 7.43794,1.0209 1.63763,1.9216 -2.04416,11.427 -1.03653,11.8845 -1.89241,2.6898 -4.32548,1.8131 -7.26631,2.0602 -4.23263,7.6708 1.28666,25.1806 0.35346,36.7746 -0.25656,3.1874 -7.40211,10.3167 -10.2538,17.4308 -1.78028,3.7422 -4.4597,6.1353 -7.67319,7.6213 -3.2135,1.4859 -7.66702,2.3657 -11.08549,4.299 -9.22514,1.3031 -15.54927,-0.8787 -24.19324,-3.8417 -0.95005,-1.5993 -1.29119,-3.0765 -2.01174,-4.7528 -1.58652,-4.9242 -5.69506,-17.5223 -7.35188,-22.6905 -1.21541,-4.8772 -2.18543,-6.5649 -2.97604,-6.3243 -0.79064,0.2407 -1.07985,3.377 -1.29069,5.9479 -1.24999,4.7999 0.38071,14.9875 -0.17275,19.84 -2.90577,-11.754 -1.72947,-30.543 -3.4302,-42.5589 1.56121,-5.7392 0.35185,-5.2902 -2.83327,-6.1038 -3.18506,-0.8137 -8.08487,-0.9905 -10.80513,-4.2415 -2.40283,-9.5613 -0.71768,-13.1645 -0.71768,-13.1645 0,0 10.27509,-1.3074 15.89701,-1.0094 14.32266,0.7591 28.31409,1.2105 42.76071,1.2024 6.81263,0.9429 19.85556,-1.7817 26.64882,-3.3942 z"
-       id="path27629"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 493.49213,1342.9681 c -1.78824,1.4494 -2.44684,26.2023 -3.62406,27.109 -0.82023,-4.5968 -0.52249,-24.9898 -4.3219,-27.3009 1.18741,0.4926 6.26351,0.4502 7.94596,0.1919 z"
-       id="path27627"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-       d="m 522.00045,1524.9358 c 0.3851,0.087 -0.696,0.6671 -0.96252,0.1494 0.53655,-0.1331 0.83416,-0.1784 0.96252,-0.1494 z"
-       id="path3218"
-       inkscape:connector-curvature="0" />
-    <path
-       inkscape:connector-curvature="0"
-       id="path27552"
-       d="m -96.095076,1177.4687 c -4.511964,0.1358 2.295438,10.3405 8.405267,24.4517 5.592859,5.3888 -2.373355,14.9555 -8.672708,20.3255 -10.464133,8.3648 -3.245521,25.8195 -1.604642,30.2207 -2.363541,7.4711 -4.229531,37.6867 -12.951751,53.9848 -0.78364,2.15 10.54536,-2.4112 9.3222,-1.8721 -4.3878,1.9339 -6.95345,11.0032 -6.95345,11.0032 0,0 10.614347,-1.3234 11.805585,-4.9285 4.596465,7.446 -8.513275,36.3171 -7.717565,45.6559 -3.35976,13.0076 1.3099,28.4832 -9.85708,39.5811 -4.1911,5.9801 -13.06697,16.247 -0.38206,10.7741 1.26047,-1.0725 -11.87855,29.6601 4.50828,12.1494 -0.40914,17.2622 -0.84323,38.4264 -2.25414,55.6658 -0.82682,20.1616 0.76031,40.4915 6.38036,59.9066 13.78536,6.4319 29.366526,8.3889 44.242273,11.1943 23.39947,3.0414 55.3905661,2.2207 78.933104,1.7575 10.0767,-1.4848 17.689977,-1.3333 30.526409,-3.6678 l 11.690962,-2.1013 c 0.01668,-12.8796 -1.904725,-26.4376 -0.611299,-39.8104 0.139303,-14.3664 2.377592,-28.4088 1.910294,-42.7522 0.409015,-12.5962 -2.488829,-26.2561 1.298995,-38.3586 -13.068923,-4.8777 13.24164,-12.576 -1.528234,-10.9651 -13.558486,-0.9744 9.76952,-2.7597 -1.528233,-7.6029 -4.160666,-1.9214 -7.515781,-21.0034 -12.416866,-29.4185 -4.759365,-10.26 -8.871197,-17.1853 -14.938455,-27.2025 -7.636287,-12.6852 -18.114654,-27.3128 -8.787326,-32.6277 9.303684,10.6623 7.940343,2.2496 4.164428,-4.1644 12.418756,5.0607 7.734998,0.3739 5.119573,-7.4119 1.713048,-5.4882 0.587365,-14.1131 0.382057,-18.4152 -0.529061,-3.1453 -0.293102,-6.6789 -0.878732,-10.3538 -0.58563,-3.6748 -1.99494,-7.737 -2.521581,-11.3853 -0.52664,-3.6483 -3.733272,-14.7003 -6.571391,-14.9766 -3.071218,-0.2991 -2.54992,0.4859 2.865432,-9.3223 2.958385,-5.3581 3.17625,-12.0777 -7.832181,-22.1593 -22.7692769,-8.1142 2.009867,-3.652 17.077976,-21.1278 6.877574,-13.3165 -23.429069,2.5228 -31.9018124,1.108 -6.3014562,1.9364 -21.1677396,-24.637 -13.9451016,-2.5216 -0.35691,1.4385 -1.160013,1.8767 -2.215935,1.7193 2.665368,1.0636 4.7039421,1.3586 3.9351929,-0.6495 -7.8549699,-20.519 7.6432927,5.3665 11.1178774,3.9734 12.1093317,-1.3036 26.8548237,-8.1476 32.2838687,-7.2973 -1.407011,11.2069 -29.9253565,16.9483 -26.247359,21.1278 -11.8536521,-4.5741 -30.936417,-3.2636 -33.582859,11.2325 -3.292995,13.9212 5.799104,26.45 17.3454108,29.3802 13.7303562,5.188 26.0060572,-8.0342 32.1692522,-3.9352 6.639537,17.4441 9.985262,35.9448 6.647802,54.2522 10.817231,17.7651 -13.391028,-7.9807 -1.642848,14.5946 -11.965176,-17.5302 -21.2021806,15.848 -26.9732677,2.3305 -5.0290404,-9.3224 -21.2738243,-17.2865 -13.1045763,-29.0364 6.8199546,-12.4953 3.0130467,-30.4658 -11.652752,-35.0729 -12.760413,-5.3645 -27.197863,1.7535 -38.358591,9.7043 -6.141237,9.0487 -14.650083,20.6161 -5.23419,30.7174 4.023257,3.4313 9.271641,7.4529 9.054766,10.1246 -0.203744,2.5099 -5.184246,3.1613 -7.985005,6.4567 -2.106121,2.4782 -4.701044,5.0019 -6.494979,7.8322 -1.793935,2.8303 -2.829586,5.9579 -1.986699,9.7043 -1.407012,5.845 -12.554928,-10.6252 -15.664363,-14.2508 -3.555582,-5.3719 0.377949,-10.4178 -15.205897,-2.1013 18.233774,-24.2419 -12.28037,6.2748 0.26744,-17.0015 2.4837,-8.5388 3.41974,-14.8287 4.43187,-18.6445 1.963876,-7.4038 0.78006,-26.7642 6.151129,-22.3503 12.23027,9.6217 33.989779,3.0034 43.860216,-7.2973 12.885049,-15.4221 1.969387,-40.7994 -19.29391,-39.8868 -7.605649,-0.6035 -24.043821,13.813 -13.52484,-0.7642 -2.752527,-6.5933 -13.883974,-23.6025 -12.646107,-28.0048 13.112046,-1.0208 25.643941,31.9581 27.622766,15.8554 -6.320126,-17.0956 16.101388,14.3022 12.493285,-3.6295 4.402465,0.1009 11.9981,3.3461 15.129482,0.2292 9.565977,-9.5218 10.213359,3.0272 13.945108,1.3754 -2.352619,-4.8893 -2.64412,-6.6877 -1.528231,-6.7624 1.115878,-0.075 3.633802,1.593 6.877033,3.706 1.049441,0.6837 2.848988,1.6982 4.699308,2.6362 -5.596648,-3.7675 -13.375655,-12.7438 -12.837131,-3.515 -9.705662,-7.6533 -10.034134,7.714 -17.994919,-3.0564 -0.942906,0.8358 3.779118,4.5318 2.25414,5.1959 -1.524979,0.6642 -9.308795,-1.7156 -11.194289,-1.4136 -1.885505,0.3021 0.763675,5.7139 -1.260789,5.4634 -2.024466,-0.2504 -8.717541,-6.151 -10.659408,-7.1444 -6.065743,-5.592 2.636784,20.835 -7.068067,4.3936 -6.602249,-7.5137 -11.59768,-10.9956 -15.626157,-13.2192 -2.394529,-1.1146 -4.040139,-1.6359 -5.081365,-1.6046 z m 82.562652,16.3521 c -0.978557,-0.3905 -2.021042,-0.89 -3.05646,-1.4136 1.134851,0.7596 2.192961,1.2848 3.05646,1.4136 z m -55.054503,15.3587 c 1.089554,-0.062 2.349342,-0.013 4.04981,0.191 15.178422,1.8196 19.678572,21.3793 15.244099,34.0413 -7.637607,10.371 -21.372963,16.1605 -34.155952,15.0149 -14.426532,-3.6137 -22.37214,-19.1453 -13.563045,-33.4682 4.658841,-6.0047 14.626938,-12.5475 15.587951,-12.3787 l 7.832181,-2.598 c 1.867242,-0.3126 3.189039,-0.6988 5.004956,-0.8023 z m 61.7405107,1.0697 c 11.3319272,0 24.8423283,2.2234 30.1825523,13.6395 6.881036,13.5713 -6.843501,25.6778 -19.4467327,27.0497 -12.9916343,1.6004 -31.1244143,-7.3543 -28.1958473,-22.7324 0.417709,-8.6487 5.241703,-18.4565 15.244094,-17.9185 0.733074,-0.017 1.4604749,-0.038 2.2159337,-0.038 z m -66.5926437,1.7575 c -6.859921,0.3348 -19.592208,14.5132 -21.051375,17.4982 -1.632236,3.3392 -1.030406,2.8738 -1.604641,6.3804 -0.574249,3.5067 2.155831,11.8986 3.744164,12.5697 9.028688,12.6183 29.91488,8.6862 37.976529,-4.0116 7.074349,-7.0181 -3.329967,-35.1933 -11.270701,-31.3669 7.168061,29.6505 -35.756476,11.5074 -3.438518,-0.5731 l -3.705959,-0.4585 c -0.208463,-0.019 -0.428211,-0.049 -0.649499,-0.038 z m 71.5975992,6.4568 c -11.7325562,0.3287 -22.6024022,18.3201 -9.5132342,24.3371 12.34572941,6.1836 32.212457,-10.6701 13.3720164,-12.4169 3.7571974,-6.2087 10.4240596,-11.125 -2.71260976,-11.882 -0.38419734,-0.025 -0.76769734,-0.049 -1.14617244,-0.038 z m -30.5264042,36.2955 c 12.763084,0.8247 23.9770804,15.3498 20.745729,28.0812 -6.40485,10.7986 -5.329171,20.0435 3.7823706,28.234 4.4493017,4.03 9.5931178,7.3967 7.48832876,16.9634 -1.00920606,7.5593 -25.86503936,14.0887 -35.68418236,8.1378 -6.989967,0.5818 -15.353177,5.6103 -27.011473,2.2542 -18.0173,-5.9015 -9.782595,-20.5188 2.597992,-28.8836 13.865842,-5.6402 -12.279773,-16.2701 -8.634502,-26.4002 1.064198,-11.5718 10.157927,-20.2881 21.013169,-24.4134 4.940243,-2.1183 10.260894,-3.9733 15.702568,-3.9734 z m -8.290651,9.1693 c -10.678895,0.33 -19.960218,4.5032 -14.05972,18.7591 1.88871,7.2271 9.521524,26.5881 19.714173,21.0131 7.164803,-4.0926 9.832053,-15.5012 13.486635,-24.146 4.784608,-14.1316 -6.056055,-15.5407 -14.747425,-15.5115 -0.718684,-0.077 -1.485734,-0.104 -2.25414,-0.1146 -0.720383,-0.01 -1.427599,-0.022 -2.139523,0 z m 0.878733,2.1396 c 7.958768,-0.2559 16.263214,2.0212 17.230804,6.1893 -0.184879,8.2853 -8.202507,31.322 -16.237455,30.5646 -10.594659,-0.9987 -14.693422,-21.6711 -16.122831,-27.8902 -0.451635,-5.824 7.170714,-8.6079 15.129482,-8.8637 z m -5.04316,9.8571 c -4.310307,0.2025 1.107429,13.2332 2.06311,1.9484 l 0.191029,-0.3438 -0.573086,-1.1844 c -0.669744,-0.2949 -1.235165,-0.4412 -1.681053,-0.4202 z m 11.156082,0.4584 c -1.237659,-0.1522 -2.571131,12.3668 0.72591,6.0365 l 0.191028,-2.2541 c -0.22866,-2.7165 -0.570397,-3.7397 -0.916938,-3.7824 z m 65.943146,11.3853 c 0.450779,1.1453 -0.437074,1.287 0,0 z m -126.919542,22.3122 c 2.73931,0.5371 15.369548,24.1029 20.592905,22.0065 7.319858,9.8075 26.607985,12.8753 31.023079,7.8322 -8.146361,10.4711 -9.792424,30.6333 6.265746,29.1128 8.674876,1.7225 17.493532,4.0897 14.059725,-7.4501 -0.827005,-2.8002 -3.86822,-17.3824 -6.800625,-19.1793 -3.901774,-2.3909 7.610106,-0.5707 13.410217,-2.1013 7.3585638,-3.166 7.1959361,-1.4114 13.180988,-6.0748 7.607824,-5.6402 -0.7950346,-19.792 7.7557693,-10.1245 10.0192747,-8.7914 12.5524817,-10.6982 13.9833097,-11.2325 2.235605,-0.8347 -2.833266,7.0332 -1.337202,9.7425 l 22.961662,41.6443 c 3.289413,5.9569 8.591032,18.6822 11.996607,26.8968 3.192487,7.7006 0.746795,10.6468 3.094674,11.0797 13.309635,2.4541 0.78426,4.8828 0.343843,5.196 -3.924075,2.7901 5.755635,3.6972 7.526542,3.0182 -0.812168,0.6764 -21.071586,17.4813 -30.564612,19.1793 -9.578252,4.9827 -19.56904,6.5309 -17.994914,-7.8704 -7.2060471,-9.065 -6.104682,-16.4045 5.043161,-14.7092 6.925818,0.028 35.35868,-4.9233 24.107836,-11.3089 -7.668184,1.9057 8.490582,2.0216 -4.088017,5.5781 -7.463743,1.0816 -16.683411,4.4837 -27.737383,4.3936 -4.3182907,1.2233 -50.280715,7.9675 -38.473198,9.093 50.849432,-2.5322 40.325046,0.8139 -2.941843,4.5847 1.561583,8.002 35.903373,1.0847 38.5878138,-0.2674 6.0291022,5.6661 -27.2205588,8.4154 -37.1742008,11.8819 -7.525147,2.464 34.1307488,-1.8952 42.217361,-0.5348 -13.4609224,6.5747 -44.887722,4.0395 -39.42834,6.1893 9.33895,3.9492 37.459906,4.9498 44.662531,-0.038 12.259025,-0.6952 37.632674,-16.887 37.632674,-16.887 0,0 0.119082,23.7785 -0.07646,34.8055 -0.350932,19.968 0.679567,39.9359 -0.19103,59.8302 -0.521742,6.6096 1.337203,26.171 1.337203,26.171 0,0 -23.069218,3.2602 -33.773898,4.5082 l -54.748852,1.4136 c -18.647547,-1.6411 -37.683601,-1.973 -56.047858,-7.1063 -10.523456,-1.1154 -18.338767,-6.6478 -18.338767,-6.6478 0,0 -6.52383,-37.7177 -6.22754,-51.6542 0.44001,-10.0355 0.68338,-21.752 0.99335,-33.4682 0.30999,-11.7162 -0.46405,-22.2261 1.56644,-32.0547 0.30067,-1.4553 3.53725,-4.0052 2.98005,-0.4202 -0.78798,5.0698 7.109545,12.3464 10.391965,14.7092 6.891598,4.9607 15.558474,9.0351 21.509843,11.5381 12.19149,4.5406 29.29091,-1.3858 38.052939,-2.7126 5.565418,-4.9608 -88.399737,2.7046 -1.146172,-4.7375 3.555655,-4.5475 -35.711458,-0.6793 -36.448297,-2.7126 2.980356,-2.9336 32.855769,-0.6984 35.837005,-6.3421 -3.479353,-1.9082 -33.207703,-1.6628 -33.926717,-3.4004 -0.275803,-0.6665 31.674838,-0.8955 33.391836,-1.4136 -2.582721,-5.3955 -24.54859,-4.8459 -31.672576,-6.9534 -3.966847,-5.641 -18.529795,-19.485 -18.529795,-19.485 0,0 -9.878922,-16.4755 -3.705959,-4.279 5.933238,11.2114 20.427918,13.7899 17.116181,31.94 0.89904,4.9433 -0.854586,14.6526 -0.72591,18.6062 -9.632229,-6.0815 -28.202523,-11.0674 -27.928413,-24.3371 -0.4937,-13.3733 -14.05974,10.2936 -13.41022,6.304 -2.13127,-10.0907 11.26939,-21.6695 -2.94184,-14.8238 -6.8817,3.3149 15.42007,-15.1316 13.75407,-28.9982 -0.53033,-7.5879 1.59753,-19.8655 3.66775,-29.6095 1.97487,-10.2361 9.09471,-31.2582 6.800628,-36.9832 -0.06431,-1.0056 0.143556,-1.4139 0.534881,-1.3372 z m 55.398354,30.2208 c -0.801294,2.2526 2.871473,18.9395 2.024906,26.7058 -17.735676,5.5191 -11.677368,-27.253 -2.024906,-26.7058 z m 4.202634,0.038 c 8.774922,0.1989 10.934922,20.7279 11.538146,27.5463 -2.895337,1.482 -9.274164,1.4229 -11.881997,-0.8787 -0.279166,-7.1453 -4.652644,-27.012 0.343851,-26.6676 z"
-       style="fill:#000000" />
-    <path
-       sodipodi:nodetypes="ccccccccscsccccccccccccccccccccccccccccccccccsccccccccsccccccccccccccccscccccccsccsccccccccsssscccccccsscccccssccssscsccsccccsssscsssccsssccssccscccccccccccccscccccccccccccccccccccccccccccsccccccsscccccc"
-       inkscape:connector-curvature="0"
-       id="path27554"
-       d="m 147.46151,1219.6737 c -0.34909,0.033 -0.73598,0.1307 -1.14617,0.2675 l -2.55978,0.8405 c -3.28153,1.0939 -6.90227,1.1053 -10.20095,2.8654 -0.14548,5.0817 9.24671,11.5282 11.42353,17.8039 -3.9886,4.5109 -14.23509,8.5828 -18.91185,15.1295 -9.18913,5.3356 -8.12598,16.9882 -6.11293,25.9035 0.65947,9.2312 10.44018,14.1775 17.00157,19.676 4.76716,2.3414 10.40835,2.2411 13.71587,3.2475 3.3075,1.0063 3.01634,5.283 6.72421,10.0481 9.40366,6.9745 21.09314,17.7692 33.50645,22.5032 15.95603,6.0851 -22.00132,-8.096 -27.20249,-7.1063 -0.5002,0.4107 -1.2865,2.2431 -2.06312,2.598 -4.97378,0.5443 -9.14559,1.0647 -13.67766,1.6428 -2.91312,0.3652 -2.6188,0.4175 -6.07472,1.4901 -1.40809,0.115 -5.22924,-0.3965 -6.57139,-0.3057 -5.88681,-2.26 21.64863,15.6199 -0.38206,9.0548 -14.55433,3.9188 20.6632,18.057 -9.39862,9.2458 10.72468,6.7469 24.88101,1.4909 5.31061,10.8122 -9.72113,6.0998 5.29674,6.2103 8.6345,8.0614 -2.01093,3.1793 -12.61328,9.7954 -2.13953,10.6594 15.4083,6.0805 -11.19921,2.9295 -14.36536,7.412 -9.93802,9.7592 17.83233,5.6892 5.3488,11.5381 -7.48095,1.7357 -2.88906,6.0853 5.42522,5.7691 -3.13683,4.4987 -17.88793,7.2966 -24.41348,9.475 -7.95039,5.8709 14.33144,5.9575 6.38037,10.3538 -1.99701,8.3207 15.9656,1.0271 21.31881,1.5282 10.14498,0.4805 14.70059,0.7161 24.41348,0.7259 6.84365,-0.241 13.00594,-0.7291 19.71418,0.1528 2.56255,0.1824 8.05865,0.1996 10.6212,0.3821 11.44005,0.052 19.68366,-0.1248 31.1759,-0.3057 24.3226,-1.3969 48.73746,0.3629 73.01121,-2.1777 15.84138,-0.8679 31.13601,-7.4561 29.57127,-11.9584 -5.34872,-0.03 -9.62514,-4.1336 -4.77572,-9.9717 -13.16378,5.2461 -1.68106,-4.2026 -1.68106,-4.2026 0,0 -19.93112,1.0986 -26.78224,-1.2226 -2.22227,-5.1304 5.15097,-15.0857 10.04811,-20.6693 8.97013,-9.7895 -9.67955,-3.9113 -7.67935,-9.6279 9.67306,-15.6747 -20.34247,-0.8069 -20.40531,-0.367 0,0 18.36103,-20.1401 18.49501,-28.0199 -7.99007,7.6562 -9.16286,9.9205 -13.2956,-2.598 -7.89367,10.7017 -3.28968,-0.5982 -4.39366,-6.2657 -9.46591,4.3038 0.64698,-5.4388 -5.53984,-5.7691 -11.0313,12.7582 -0.19951,-3.4008 -5.84548,-5.8073 -16.53683,2.5431 -1.11986,-3.584 1.14448,-9.0861 4.4427,-4.3574 9.0624,-14.6304 18.05689,-16.6722 20.57837,-4.6713 -29.04852,-10.4871 6.4729,-9.5056 12.96365,-5.2902 -36.96876,-4.7778 -7.67935,-6.0747 12.63308,-2.5962 -5.7283,-6.7147 -10.69761,-8.5963 -5.98397,-5.8941 -8.81707,-15.784 -11.95841,-23.8786 -15.26703,-13.1894 7.15177,-7.7172 13.86869,-13.6012 9.53851,-5.3175 2.36626,-8.9214 -4.96675,-9.3987 -9.29565,-0.4188 -18.25668,-2.3268 -24.5281,4.2027 -1.86986,12.7388 -1.2614,9.5531 -16.39027,1.2608 -5.79661,-0.2838 -24.10271,-4.1926 -31.36693,-1.0316 -3.7957,1.6517 -6.07828,-0.8759 -12.07302,1.3754 -5.9453,12.8688 -19.95103,-1.5525 -29.64767,-8.4817 -2.85237,-1.4428 -4.01309,-3.5521 -6.45678,-3.3239 z m -0.22924,2.7891 c 12.54372,1.8436 17.82938,15.8807 25.86531,15.8935 7.26616,5.4421 10.54022,-9.4037 17.07798,-5.2341 13.49461,-4.5533 23.84237,-0.8506 36.21906,-0.4203 7.18614,4.6717 23.28934,14.6863 16.84874,6.3039 0.17154,-12.8089 19.53818,-11.81 28.00482,-9.9717 11.59302,0.1161 -4.08113,7.263 -8.32886,8.2525 -7.84433,-0.7239 -15.42112,1.1425 -8.56474,8.2108 0.72621,1.1902 1.39407,1.9114 2.15777,2.6345 3.82965,1.1014 5.11273,15.2078 13.26406,25.8288 23.7554,4.6843 13.93495,7.2951 -0.55465,6.3904 -0.67572,4.7391 41.41452,5.2867 5.50315,5.8007 -4.37981,1.1087 5.15808,5.1412 10.82261,7.3114 -2.05305,1.9987 -9.22238,3.8601 -10.8741,6.2564 -2.72116,3.9478 -6.53046,7.7684 -8.28993,10.0999 -11.50302,12.3644 -23.07036,21.0115 -35.74804,29.209 -11.70928,8.5367 -9.31737,-10.2903 -3.51492,-15.0148 7.03632,-7.9845 16.65537,-18.1365 12.44007,-29.7739 -7.95387,-5.6717 -18.4782,-9.0358 -28.21906,-7.1329 -7.55804,-1.1919 -37.99669,23.7841 -16.07132,0.8787 6.72558,-19.5047 -3.15303,-37.8355 -19.76568,-45.0064 -8.57116,-6.506 -23.42457,-0.5375 -29.38023,-4.6611 -4.84862,-3.357 -12.00824,-13.065 -10.20094,-13.4484 z m 10.54479,18.8736 c 3.23114,0.06 6.16047,0.6731 9.09298,1.3754 11.60531,3.1345 7.38968,2.3949 12.5697,5.005 8.28738,5.0597 12.19157,13.8595 14.6328,22.847 0.35425,1.7988 0.66016,5.5855 -0.0898,6.4336 1.47906,7.1381 -2.64459,14.3705 -8.51988,19.7142 -6.6589,7.4486 -16.3042,-2.7319 -24.5148,-2.9569 -9.45913,-1.4517 -19.07053,-3.1269 -28.23406,-5.0814 -14.12338,0.3335 -14.02252,-13.3018 -12.49328,-19.0264 2.1863,-12.1801 19.55032,-23.7278 26.66762,-26.362 4.12288,-1.5259 7.65752,-2.0082 10.88864,-1.9485 z m 99.83167,12.073 c -3.03205,-0.1714 -9.20759,6.2276 -9.20759,6.2276 -4.08128,5.3147 -5.67041,7.1211 -17.2308,-3.3239 -13.09803,-3.5994 1.47615,3.0605 7.9468,10.0099 3.49242,2.7719 -14.66632,11.6233 -4.66111,12.1112 10.627,-17.6117 13.68613,-8.8666 21.66267,-2.3688 8.81673,2.8092 -0.26783,-6.1016 -4.12622,-7.1444 -8.36077,-3.9866 1.59805,-10.0159 6.18933,-15.397 -0.17138,-0.074 -0.37094,-0.1032 -0.57308,-0.1145 z m -37.28883,35.2639 c 7.26562,-0.098 14.39482,3.5541 18.26235,8.0099 1.82947,8.0332 -5.38086,14.3206 -8.97834,20.6445 -6.23633,6.9921 -12.27646,16.8679 -9.36042,25.9417 -9.21092,1.5362 -18.84592,2.5214 -24.87195,-6.6478 -3.29423,-9.4953 -11.46291,-16.788 -9.55144,-27.6992 1.06572,-11.3059 12.80569,-15.2446 21.9301,-18.377 3.79372,-1.0046 8.21033,-1.8133 12.5697,-1.8721 z m -94.48285,1.0316 c 8.04336,-0.5267 44.68952,9.9119 52.22727,11.2707 5.75324,1.714 -13.19442,4.0536 -28.08122,2.3305 0.56492,-0.6732 3.24748,-2.6411 3.24748,-3.6677 0,-2.4627 -1.60003,-4.2734 -4.96675,-4.8139 -11.96835,-1.9217 -12.43563,-2.0811 -13.14278,0.8023 -0.43955,1.7923 1.30944,3.7642 2.67441,4.9285 -7.09399,-3.9757 -14.91749,-10.6567 -11.95841,-10.8504 z m 85.96297,7.4883 c -1.84588,0.051 -3.6087,0.2427 -5.08136,0.4585 -11.8009,-1.5068 -14.22883,9.7905 -9.28401,19.0265 5.49483,5.639 6.82481,17.9669 15.62616,20.3636 8.97771,-5.4443 8.25003,-18.7791 12.45507,-27.8138 4.0139,-10.2365 -5.7171,-12.257 -13.71586,-12.0348 z m -25.38021,1.8721 c 4.60461,0.087 -5.95744,11.4339 -3.1595,16.8488 3.01741,4.4568 10.59852,21.9117 8.40527,20.3254 -3.11997,1.5269 -34.318,-22.1997 -37.97653,-29.4948 -2.18692,-4.3608 21.02655,0.9515 24.5281,-2.0249 1.5382,-1.3076 7.5753,-5.6576 8.20266,-5.6545 z m 22.6676,0 c 4.95913,-0.027 10.23796,1.2348 13.52484,2.9418 3.49995,3.0109 0.43416,7.7704 -0.53489,11.2325 -3.02112,5.5946 -3.80646,26.9745 -12.95175,18.9501 -4.57109,-8.0125 -10.38922,-15.6837 -12.72252,-24.7191 0.42995,-6.2004 6.3083,-8.3701 12.68432,-8.4053 z m -3.89699,8.2907 c -4.31031,0.2025 1.10743,13.2332 2.06311,1.9485 l 0.19103,-0.3439 -0.57308,-1.1844 c -0.66975,-0.2949 -1.23517,-0.4412 -1.68106,-0.4202 z m 11.15608,0.4584 c -1.23766,-0.1522 -2.57113,12.3668 0.72592,6.0365 l 0.19103,-2.2541 c -0.22867,-2.7165 -0.57041,-3.7397 -0.91695,-3.7824 z m 46.76385,15.7026 c 2.30329,3.0733 -0.72573,7.7535 -0.19103,9.8189 -0.0986,0.727 1.83281,3.5221 7.14448,-3.0947 -1.6433,4.1751 -0.61811,7.9213 4.58469,5.387 -2.43719,4.2568 -0.68005,9.4722 -1.79567,11.2707 3.35985,-0.6922 4.31958,-2.0753 6.11293,-4.4318 0.54731,3.3153 3.31978,13.9829 12.30225,3.4385 -1.42279,3.5647 -12.43818,20.9782 -19.42183,24.6626 2.17377,3.944 10.74417,-4.0837 19.14109,-4.7375 9.78406,-2.346 -2.14981,7.9852 3.87209,9.99 18.02466,-2.4012 3.03868,7.2892 0.53487,12.4933 -3.64875,4.2383 -9.29415,15.4806 -0.76411,15.6261 23.11642,0.633 25.29433,-3.0424 16.46668,5.5399 6.68589,1.8202 8.9443,-2.5657 7.9468,-0.917 -0.99748,1.6487 -3.08473,5.4413 0.26744,7.985 14.56444,1.4592 -5.93861,7.7868 -8.36706,9.2076 -14.93037,1.6126 -30.08,2.677 -45.15921,2.9419 -18.7821,-0.3636 -37.57204,0.1849 -56.31529,1.1461 -22.45409,0.202 -46.44902,-0.8282 -68.9232,-0.2292 -4.70029,-4.0384 -31.047,10.6057 -21.2424,-4.3555 -14.12903,-3.1643 -13.27058,-5.8259 -1.06977,-8.0232 10.45476,-3.2387 27.8083,-8.0661 10.583,-10.8886 -6.49796,-0.893 6.05612,-0.3893 3.89699,-7.8322 -22.2993,-2.4222 -4.00198,-8.9975 5.19598,-9.3222 11.77616,-1.5802 5.22955,-3.2611 -3.78237,-7.794 7.34365,-6.6186 12.41477,-10.0085 0.11455,-11.4235 -16.68337,-0.2404 11.14098,-5.4043 8.97836,-12.7989 -17.17298,-9.044 -10.41321,-14.9574 3.89699,-6.1512 5.48161,-4.4328 -19.40359,-17.1235 -6.6096,-13.0281 5.42048,-1.2805 15.39182,-3.4788 20.97497,-3.2093 0.0777,3.9092 1.66457,11.1614 4.20263,13.4866 -1.92721,3.1737 1.01857,4.792 2.13953,10.0481 4.0522,9.3164 7.69108,3.5013 27.69918,-4.6993 2.26426,-1.332 5.16469,-6.2206 4.66109,-10.1245 4.10467,2.1597 6.27203,1.4944 13.83049,2.0249 10.36367,0.7696 23.91753,-8.5594 31.84578,-14.3671 4.47167,-3.2522 6.44368,-7.1418 9.45465,-7.5248 2.61974,0.7935 5.72829,0.5374 7.79398,-0.1145 z m -97.80674,8.2524 c 4.34022,0.4556 15.4445,5.3579 21.12778,6.9535 5.29853,0.6774 9.04845,2.6076 10.88865,3.6295 1.1353,1.755 -3.21822,1.0322 -5.80728,1.8721 -2.58907,0.84 -7.48939,0.4313 -11.42353,2.1777 -3.70686,1.6456 -8.82798,1.6572 -11.9202,-0.077 -3.09221,-1.7335 -4.9998,-6.8021 -4.6993,-11.3089 -0.74756,-1.7914 0.5084,-3.1568 1.83388,-3.2475 z m 31.8636,12.6079 c 0.67544,0.022 1.19921,0.2212 1.49002,0.7642 1.22065,1.0694 -0.47514,5.7044 -3.05646,7.2208 -1.29515,1.3758 -3.96233,1.3707 -6.83883,3.0565 -2.87649,1.6859 -6.32884,3.4621 -9.55144,4.4319 -3.22261,0.9698 -6.16253,2.7331 -7.67936,0.6113 -4.0025,-5.5989 -3.77585,-6.0204 -3.17108,-12.0349 7.74339,2.1704 18.61624,-3.1861 24.87195,-3.5531 1.30328,-0.077 2.80945,-0.5327 3.9352,-0.4967 z"
-       style="fill:#000000" />
-    <path
-       sodipodi:nodetypes="ccscsscssscsssssscccsssscscccccccccccscssscssscsssccccsscscsccccsccssscsccsccccccccsccccccccccccccccsccsssccccccccccccsssccsssccssscssssccccccscccccccccccccccsssccccscsscssccccccccsccccccccscscsssscscssssscscsscscscssssssscscsssssssssscssccccccccccccccccscccccccccccccccccccccsccscscssssssssssscscsccsssscscccccccccccscscscsccssssscccccccsssssssssssssssssscssssssssssssssssssssscssscssssscscsccssssscssccsccccccccccccccccccccccccscsccscscscsccccccccscscsccccccccscccscscccccsccccccccccsccsccccccccc"
-       inkscape:connector-curvature="0"
-       id="path27556"
-       d="m 628.40486,1197.1322 c -1.21015,0.9186 -4.38505,0.8756 -8.6987,-5.9957 4.71498,9.313 -1.91739,7.5816 -0.4156,8.1941 5.40941,2.2062 12.00554,11.3071 -1.4749,2.1849 2.14048,3.1537 8.18699,6.4286 5.42919,4.4086 -0.52302,-0.3831 -4.65634,3.788 -4.97565,4.7245 -0.32362,0.9491 -0.80654,-8.6761 -1.62353,-8.1439 -0.32356,-2.1996 1.59289,9.2023 -2.19861,11.7683 -1.1113,0.7521 -1.65128,-12.0505 -1.78805,-9.3298 -0.14107,2.8051 0.14257,9.8258 0.47122,11.2446 0.43707,1.8868 -0.63514,2.4183 -3.36374,1.3915 -0.23112,0.7279 0.92877,-10.2087 0.52037,-9.314 -0.42372,0.9283 -0.65467,2.4614 -0.85236,4.0977 -0.19772,1.6362 -0.33039,3.3894 -0.46232,4.7993 -0.13193,1.41 -0.26313,2.4769 -0.45782,2.7403 -0.77881,1.054 -2.04785,-10.7366 -2.35721,-7.8877 -0.41395,3.8121 2.14798,14.7115 2.67242,16.8321 0.65418,2.6451 -1.15321,-0.099 -4.96025,2.8315 -3.11421,6.0782 5.79818,-9.2841 9.26228,7.0756 -15.61236,-4.0249 -5.21993,-0.2087 -0.15384,1.5595 -1.54635,3.4366 -2.15152,-0.6624 -8.83226,2.9674 -1.0156,0.5518 6.47258,-1.8745 9.48894,2.1824 1.29503,1.7417 2.67624,3.5227 3.63834,5.2655 0.96207,1.7429 -0.13823,0.4187 -0.3117,1.3577 -0.2856,1.5462 -3.53366,-3.6228 -8.01713,-0.07 9.02576,-1.3309 9.72745,10.0357 6.93332,8.6332 -2.71102,-1.3607 -6.78813,-2.3733 -8.46606,-1.506 -4.77322,0.9905 -0.29028,0.1244 -5.87569,0.9353 -8.59353,-10.7067 -1.99706,-1.9705 -5.70172,0.099 -6.02426,-4.4857 -2.47028,-0.2729 -9.80716,1.5114 -6.06793,-14.5581 1.18829,10.6479 -10.83686,0.8679 -14.62706,-4.0976 7.56648,6.5105 -7.76955,6.3169 -19.16232,6.5915 13.65996,-4.9504 4.74468,10.0508 5.55789,-3.9871 3.04794,-4.0537 11.61574,-2.8396 2.13431,10.3532 3.27119,-5.1586 7.70712,2.1701 3.23376,-2.8873 11.68592,-1.5037 15.07442,-4.9231 -0.88384,3.361 -0.71538,2.1427 -0.57489,4.7532 1.636,-3.8792 0.61451,-3.5826 2.87502,-5.2551 2.66583,-1.9723 2.10386,-0.9651 5.37447,3.7736 -1.35768,-13.5171 5.7369,-0.5251 5.29541,9.4364 -0.0513,1.1576 -8.74911,-4.4872 -7.17253,-3.1641 1.57659,1.323 5.44794,3.3825 6.77512,5.0389 1.32722,1.6565 2.14404,3.513 1.6791,5.6367 -3.11585,-0.017 -9.07841,-4.6573 -8.7191,-3.7716 0.35932,0.8857 1.94462,2.0982 3.73268,3.3888 1.78807,1.2905 3.77892,2.6592 4.94934,3.8572 1.1704,1.198 1.5204,2.2254 0.0267,2.8333 -6.27134,0.544 -12.97599,0.9833 -16.88356,1.5592 -3.60212,0.5308 -1.86645,6.0309 -1.32401,8.9892 0.61453,3.3516 -1.14213,5.2424 3.02118,7.3826 3.30937,1.7012 6.72986,3.6886 11.655,3.4203 -1.97034,4.7582 1.54844,11.5596 0.82132,19.8449 0.75008,5.4762 0.59024,11.0311 0.81416,12.961 -0.1813,3.1114 1.32301,7.6868 1.33854,12.3337 1.89598,3.272 3.19245,5.9133 4.57436,8.2676 1.3819,2.3542 2.25394,3.9295 2.12121,3.9927 -0.53099,0.2528 -17.62026,-29.8831 -18.34705,-31.0455 -4.79681,0.6564 9.49683,37.9473 8.65907,37.5085 -0.84267,-0.4413 -13.24282,-38.6619 -14.88049,-34.2603 -0.49123,5.2587 10.38148,40.368 8.93309,40.0061 -1.44836,-0.3618 -10.23945,-33.059 -10.81985,-37.9465 -6.90044,9.8568 -3.38941,13.7843 -1.93503,21.6756 4.39302,12.3274 7.88707,19.9218 20.70488,26.0617 15.11848,2.1425 11.7674,2.3002 12.24118,4.3172 0.58935,3.3095 0.20835,4.3882 0.74903,7.4132 0.54068,3.0249 0.51785,6.3885 0.37911,9.7681 -0.13811,3.3796 -0.40832,6.7857 -0.42742,9.8478 0.40187,6.0065 0.17791,12.7989 0.48111,19.7536 0.30321,6.9547 0.17013,12.4977 1.07533,21.0414 0.75958,7.1691 0.70153,14.1422 0.86785,20.5352 0.16631,6.3931 -0.25961,12.1474 -1.83752,16.7849 -1.16072,1.6204 -3.28689,1.6918 -4.972,0.014 -3.69627,-3.6811 -8.57794,-10.2256 -10.49373,-4.9298 -3.70022,-3.3877 -23.57318,-17.6972 -5.90765,4.8298 -2.56319,3.9497 -11.28704,21.7215 -16.15647,33.9075 -4.86943,12.186 -5.32848,16.6154 15.78216,19.6529 24.1094,2.6492 47.77665,1.1741 75.04837,1.3452 8.68063,-0.9701 25.91905,-0.8833 33.34865,-0.9236 l 8.8603,-1.4893 c 1.2441,-0.2062 1.7219,-1.003 1.6626,-2.1841 -1.3886,3.4819 -18.826,2.1235 -20.8254,3.1498 -12.096,0.072 -22.97444,0.3555 -34.25807,0.7311 -23.18831,0.02 -47.30484,1.7693 -70.37351,-2.4425 -15.69864,-3.3751 -11.26992,-10.9952 -6.00599,-22.8615 4.34841,-9.8025 7.26859,-17.7624 14.14383,-28.947 -14.40526,-15.8229 -4.62905,-12.6411 4.29968,-3.0257 3.62282,1.2018 -0.58067,-8.2143 8.34103,1.6622 6.09809,7.8119 9.80495,2.4114 9.5125,-0.6579 2.23431,-20.546 -1.15885,-41.356 -1.43352,-61.249 1.47902,-16.4749 -3.90151,-35.0889 6.61509,-42.2759 -2.92283,-4.1436 -19.98061,-1.643 -25.72362,-7.3499 -10.5194,-4.195 7.79919,-12.5155 13.02962,-15.6107 5.37023,-7.708 15.76172,0.763 21.28544,0.3502 5.63797,5.7625 5.145,29.6779 4.77258,39.8256 -0.22146,3.7209 -0.37222,8.5689 -0.0653,13.8407 0.61228,10.5079 0.78539,22.7128 1.87101,30.904 1.84572,18.1546 0.61519,40.2298 2.17013,58.3746 2.12899,-0.3408 -1.21839,-24.8803 -0.0622,-32.9288 -0.71254,-27.1959 -4.68142,-60.9217 -3.26924,-64.7705 0.35228,-2.9725 1.19575,-30.7724 4.99014,-45.3675 2.52137,-2.2915 9.26358,-3.4767 10.79271,-3.4858 5.46118,-0.033 15.06047,11.8682 18.91347,16.9572 12.55946,8.2342 -19.06891,4.7278 -23.62062,10.0469 3.16608,-0.6768 5.08444,2.7539 6.51265,4.8357 1.42821,2.0818 1.87639,2.9147 2.19763,6.0288 0.32124,3.1141 0.65999,5.1807 0.40277,9.9603 -0.13031,2.4216 -0.14763,4.0723 -0.14763,4.0723 0,0 2.61986,35.3835 3.81685,52.921 2.50833,10.1065 0.8576,36.7652 18.32702,21.5872 -5.29859,12.3806 12.33799,3.3793 2.41268,9.7667 -5.31443,7.2197 5.3094,10.3541 11.66051,16.6209 6.3914,6.5792 12.6876,18.7308 18.6391,26.8815 0.3567,0.3497 0.6106,0.6505 0.8,0.9525 -1.9706,-6.493 -13.2465,-19.7022 -15.854,-25.0481 -4.6093,-9.0473 -27.42713,-11.4142 -8.8522,-23.3675 -21.30225,4.3861 3.1789,-15.5861 -10.59159,-5.3164 -15.27035,12.1669 -13.39821,-11.5088 -15.43422,-22.0021 -2.50135,-24.3946 -3.70981,-51.019 -4.7983,-75.5114 -0.001,-2.1738 -1.30592,-3.3568 0.24957,-4.0558 1.55552,-0.699 5.97058,-0.914 8.178,-1.0667 2.20742,-0.1528 4.51443,-0.2646 6.4683,-0.7998 1.95386,-0.5351 3.55456,-1.4936 4.34941,-3.3397 16.36053,-4.2252 22.50933,-21.9345 22.49403,-37.189 -0.6855,0.8207 -1.8226,2.6206 -3.1043,4.6109 -1.2819,1.9903 -2.7084,4.171 -3.9724,5.7531 -1.2642,1.582 -16.57082,21.3469 -17.20323,20.9429 -0.63242,-0.404 13.40943,-20.977 14.02273,-24.945 0.8956,-3.2109 4.6283,-18.2384 -4.38973,-2.8292 -2.23848,3.5455 -14.94164,22.805 -15.31599,23.5155 -2.47127,4.6907 12.13777,-21.4186 12.018,-23.782 -0.11978,-2.3633 0.56929,-6.7425 0.0902,-9.1393 -0.47952,-2.3967 -14.94101,26.2917 -16.72621,25.809 1.40277,-1.3533 2.58213,-3.4282 3.59299,-6.0341 1.0109,-2.6058 1.85328,-5.7428 2.58212,-9.2203 0.72883,-3.4776 1.34412,-7.2958 1.90077,-11.2642 0.55665,-3.9684 -1.62186,-23.9871 -1.60728,-28.0953 0.0149,-4.2205 -0.61059,-11.1875 0.97191,-11.0048 2.15294,0.017 3.71808,-0.1319 4.12807,-0.4544 2.54986,-0.9376 1.80279,-1.3201 3.21743,-2.2693 0.47616,-1.8907 1.9832,-9.7317 1.63782,-9.7675 -0.10383,-5.0503 -2.22526,-6.4112 -9.25481,-4.7582 -20.6277,-9.5114 21.89691,-20.992 18.10891,-36.5808 -7.34968,-4.847 12.0529,-8.0734 13.5512,-9.1546 0.6446,-0.4651 -23.48022,3.6184 -17.22606,-0.042 2.05116,-1.9233 13.51906,-14.5515 8.30576,-10.5402 -13.12504,17.0481 -18.82288,1.9398 -13.35893,-9.0789 -3.21303,4.2762 -7.88033,23.18 -10.94593,3.6092 -4.47509,7.7709 -13.04659,1.2274 -10.77006,-11.926 -3.10565,12.4621 -10.34461,17.9167 -11.88756,10.8453 0.36712,3.2937 -16.51937,11.8465 -15.13129,6.7622 -4.90704,-7.2498 7.11053,2.5506 3.37683,-4.6719 -18.05765,-5.7898 -10.80677,-8.3617 2.53876,-4.7465 -5.17204,-3.5651 -24.41382,-3.3564 4.00418,-4.1476 -23.31638,-0.6655 -8.28107,-5.9315 4.55852,-3.7028 -4.94278,-2.4785 -20.78345,-3.4881 1.51281,-5.6654 -6.96765,0.625 -7.15882,-6.7256 -0.96155,-12.3225 -10.03788,5.2973 -5.48552,-7.1816 -7.66306,1.1586 -12.86883,8.2031 -23.12432,12.9351 -17.00485,-8.1221 -2.37216,4.1787 -3.62153,5.2554 -3.83382,6.6135 -0.19657,1.2576 -2.7029,0.4052 -3.21988,-0.9513 -0.517,-1.3566 0.82378,-2.7561 -0.46095,-4.2072 -1.24711,-1.4086 1.99974,-5.7696 2.0485,-5.6985 0,0 0.38116,-0.5234 -3.28763,2.4378 -2.15415,1.0401 -1.15037,-6.5519 -1.46902,-6.7852 -0.2307,-2.6887 -0.1137,1.0053 -0.85535,5.8868 z m 101.27362,361.6587 c 0.1671,0.5506 0.2566,1.0587 0.2789,1.5035 0.1693,-0.4243 0.086,-0.9222 -0.2789,-1.5035 z m -104.6373,-361.0692 c 0.7163,10e-4 1.62055,0.1458 2.76984,0.5027 5.35052,-0.9655 0.72038,9.0913 -1.59306,1.4605 -1.52236,5.2936 -6.19084,-1.9712 -1.17678,-1.9632 z m 0.26621,8.8454 c 0.90491,0.038 1.56803,1.0455 1.78596,3.787 1.45084,-2.8802 1.6846,-4.6588 7.18739,-1.7149 4.25956,7.6146 -5.19538,-0.6316 0.90163,6.5403 -1.62535,2.1708 -4.40667,-0.993 -0.78611,6.6581 -5.02329,-2.7876 -6.01929,-4.1416 -2.48244,3.4488 -8.5813,-4.2519 -10.39827,8.8179 -12.58497,14.1768 -5.17594,11.0769 -17.46312,-38.5492 -4.46852,-13.1084 -2.37204,-10.0761 0.82421,-11.3783 1.98542,-14.2657 3.16719,-1.0331 6.47083,-5.6052 8.46164,-5.522 z m 32.71499,3.1026 c 0.26982,0.017 0.56249,0.064 0.83642,0.1128 0.80362,1.386 0.12922,3.0414 -0.64358,4.2551 -5.05012,8.1918 -14.64702,12.029 -17.887,17.3885 0.28357,-9.077 -2.60083,0.4286 -3.72871,3.9683 -4.40085,7.9839 -12.81818,9.9545 -11.18734,-3.9274 6.17492,-10.6462 0.0425,9.9949 6.63843,3.0033 1.0556,-9.0675 9.44474,-8.9104 12.29095,-17.9755 -0.99684,7.1629 5.31614,-7.3399 13.68083,-6.8251 z m -28.4562,1.8625 c -0.38622,0 -0.43831,1.0898 1.00427,3.2941 0.10216,-2.1861 -0.61807,-3.2895 -1.00427,-3.2941 z m 25.74806,1.4999 c -0.34511,-0.015 -0.70201,0.2419 -0.0331,0.7634 0.71154,-0.4616 0.37823,-0.7484 0.0331,-0.7634 z m -28.30538,-0.7313 c -0.75809,-0.2001 -1.9999,1.9401 0.0384,3.5199 0.68556,-2.4447 0.41643,-3.3999 -0.0384,-3.5199 z m 10.18969,0.4805 c 1.71538,4.0718 -2.36869,0.6632 0,0 z m -17.18471,-0.5547 c -1.29263,-0.1011 -3.43839,2.1596 0.004,3.4419 1.25363,-2.4545 0.772,-3.3812 -0.004,-3.4419 z m 32.01468,3.3781 c -1.03158,-0.1363 -1.6368,9.7239 0.46473,0.7468 -0.15796,-0.512 -0.31736,-0.7273 -0.46473,-0.7468 z m -13.86884,0.5835 c -0.34497,6.6937 -4.62639,0.3944 0,0 z m -17.30729,2.27 c -1.27375,-0.1425 -3.26735,4.403 0.66744,4.0061 0.34626,-2.9014 -0.0885,-3.9414 -0.66744,-4.0061 z m 6.1802,0.3447 c -0.64976,0.015 -1.3335,1.4364 0.32716,3.0353 0.66483,-2.1964 0.17816,-3.0474 -0.32716,-3.0353 z m 20.67983,1.9683 c -0.78768,-0.1636 -3.36228,2.9191 -0.69679,2.8379 1.02968,-2.016 1.05484,-2.7635 0.69679,-2.8379 z m -24.33399,0.2823 c -0.56429,0.1059 -1.01589,1.5015 0.56777,2.7781 0.3892,-2.1675 -0.12888,-2.8604 -0.56777,-2.7781 z m -2.45573,5.4767 c -0.97233,0.1002 -2.40038,3.1338 0.58766,2.32 0.20934,-1.7981 -0.14568,-2.3655 -0.58766,-2.32 z m 15.36443,3.7262 c -0.60921,0.092 -1.30566,0.6092 -0.28204,1.2115 1.41316,-0.9707 0.89123,-1.3036 0.28204,-1.2115 z m -19.78847,0.4031 c -1.42808,-0.096 -3.62438,4.382 0.58123,5.1114 0.70433,-3.749 0.16679,-5.061 -0.58123,-5.1114 z m 16.92944,4.6737 c -0.90356,-0.1706 -6.13605,3.299 -1.06863,1.7127 1.20893,-1.1845 1.36982,-1.6558 1.06863,-1.7127 z m 9.78148,1.0746 c 0.68194,0.062 1.40397,0.8756 2.09126,2.9207 l 0.12803,3.2179 c -6.13024,2.9883 -4.65474,-6.3586 -2.21929,-6.1386 z m -20.64968,1.7425 c 0.584,0.063 1.19151,0.8679 1.93526,2.9904 1.79577,12.5142 1.24668,4.3339 10.46902,7.2614 -4.76672,-11.1696 11.75375,-5.0897 7.96914,-0.3425 -8.29947,-9.3728 -1.45768,7.4254 -6.87844,5.17 -9.98816,-5.4619 0.33349,1.4386 -2.25806,7.971 -10.02661,-10.9287 5.27786,7.9474 -1.73155,13.4624 5.49444,-0.3485 8.55982,7.3671 13.9477,10.8159 2.50333,12.0575 0.68112,-4.0754 3.68949,3.9843 l 0.63252,3.0486 -1.36412,0.5909 c 1.40691,5.4171 -4.37284,9.7941 -8.05693,2.3655 2.40538,8.2113 -10.73323,3.6736 -12.30726,-0.1518 0.0449,12.4894 -4.81905,-10.8229 -3.90485,0.9778 -2.10823,8.8879 -2.98726,-5.5227 -3.08062,-6.5583 -2.58434,-9.0398 -4.06544,-31.2148 -4.02042,-33.3658 4.87971,-1.166 -3.98548,-8.9728 -3.27901,-15.3413 3.33178,4.4999 6.1525,-3.1048 8.23813,-2.8785 z m 6.04677,57.1661 c -10e-4,-0.4348 -0.005,-0.8144 -0.0183,-1.3392 -0.19456,0.4167 -0.17156,0.8777 0.0183,1.3392 z m 3.4586,-20.6534 c -1.14035,0.072 -2.37482,0.49 -3.76873,1.3661 1.68063,-0.1855 2.88796,-0.6731 3.76873,-1.3661 z m 38.51731,-33.6636 c 13.88581,0.4803 29.39755,6.2268 32.91715,20.4731 3.90235,15.3862 -16.12991,17.8048 -21.45252,29.0504 -2.94567,13.9742 -1.08599,-11.5517 -3.97808,-1.7406 4.54657,10.5571 -20.85815,12.6343 -11.02226,6.3669 -7.71445,-8.6166 2.90144,-23.3554 -7.59773,-25.837 6.72054,6.663 -0.45885,4.3899 0.47037,9.4279 7.48265,15.6636 -8.2561,4.2757 -12.13966,-0.4886 2.98105,4.5023 -0.41055,2.5557 -5.44007,-0.6568 2.47053,-1.4754 1.01768,-2.3632 -3.57683,-6.5799 8.62211,-1.7547 -3.55026,-1.2102 -1.13417,-9.1125 10.88989,6.6213 -4.2232,-9.7306 7.91679,-12.3526 9.26206,3.7292 2.61474,-8.1549 11.16362,-2.5748 2.68201,-4.9014 9.17363,-2.5281 13.87339,-5.9755 z m 14.61766,4.1909 c -6.58394,0.6229 -2.3295,16.8879 -0.21714,3.2412 l 0.43795,-2.1608 z m -10.56304,0.1917 c -1.06422,-0.04 -3.08823,5.156 0.51298,2.2785 0.10868,-1.6696 -0.15823,-2.2652 -0.51298,-2.2785 z m -45.64939,-1.14 c 5.11832,1.2987 -1.53163,3.0591 0,0 z m -5.19275,-0.1871 c -1.53364,0.2081 -4.1228,3.9234 -0.0544,4.7778 1.52601,-3.7514 0.97458,-4.9027 0.0544,-4.7778 z m 44.1493,3.1016 c -1.05451,0.2073 -0.75192,2.6021 3.65802,4.7096 -1.20319,-3.722 -2.83785,-4.8708 -3.65802,-4.7096 z m 25.58726,3.4433 c -0.93005,-0.2021 -2.44156,8.952 0.54465,4.192 0.0105,-3.0037 -0.23462,-4.1246 -0.54465,-4.192 z m -31.54155,-1.063 c -1.56688,-0.2291 -2.26795,4.4477 2.2623,4.2665 -0.6632,-3.0604 -1.55008,-4.1623 -2.2623,-4.2665 z m 11.37647,3.0942 c -1.32746,-0.3208 -4.79705,9.5851 -0.30483,6.1437 l 0.56407,-1.5434 c 0.40798,-3.2492 0.18278,-4.4934 -0.25924,-4.6003 z m -19.40843,0.4579 c -1.1035,-0.067 -1.43907,1.0455 2.2556,3.5396 0.71932,-2.2252 -1.1521,-3.4724 -2.2556,-3.5396 z m -9.07276,0.218 c -1.73262,0.1902 -2.1593,3.0738 3.9535,5.8314 -0.469,-4.5112 -2.6059,-5.9792 -3.9535,-5.8314 z m 21.50632,2.3102 c 3.38311,3.5332 -3.90954,20.9484 4.19444,9.9719 0.82611,-2.4983 -1.80783,-8.5315 -4.19444,-9.9719 z m -42.79336,-1.7426 c -1.4981,0.2116 -3.40743,3.8768 0.97446,3.9812 0.48892,-2.757 0.0153,-3.8327 -0.66909,-3.968 -0.0941,-0.019 -0.20549,-0.027 -0.30537,-0.013 z m 58.66206,2.6608 c -1.45037,0.2167 -7.50398,13.8243 -0.27846,3.7738 0.70219,-2.8542 0.68475,-3.8345 0.27846,-3.7738 z m -55.54041,-2.3341 c -0.66456,-0.012 -1.29531,1.1357 0.50304,2.5075 0.54714,-1.7744 0.0138,-2.4985 -0.50304,-2.5075 z m 33.58965,4.0965 c -0.83987,0.057 -0.59996,1.2375 3.22482,4.1171 0.71619,-2.408 -2.14499,-4.1906 -3.22482,-4.1171 z m -87.22303,-3.6709 c -0.21015,-0.025 -0.39939,-0.017 -0.57419,0.013 -1.3985,0.2382 -1.40632,2.1785 4.21563,5.0779 -0.0245,-3.3707 -2.17032,-4.918 -3.64144,-5.0913 z m 117.3061,8.3801 c -2.39881,-0.047 -8.62606,9.8029 0.79507,1.9466 0.0912,-1.4053 -0.2415,-1.9357 -0.79507,-1.9466 z m -81.99708,-3.3677 c 1.25062,-0.1215 6.21883,-0.2581 7.29475,1.9869 4.16608,5.0303 0.74688,9.0934 -7.57055,9.5403 1.05169,-6.6096 -2.8537,-2.1564 -1.76909,0.5018 -1.07135,1.9534 -12.98795,6.7104 -21.5126,1.8147 3.43253,-3.564 -8.37615,-5.0485 -2.9254,0.2456 -13.01073,2.4109 -10.79852,-12.0332 -0.53247,-7.537 5.14189,-10.471 2.60339,0.7822 7.37009,0.2434 -1.80955,-11.0051 7.59677,-0.6957 9.69706,-7.5533 3.96084,3.751 6.66,1.0773 9.94821,0.7576 z m 45.91001,2.1838 c -1.50613,-0.046 -2.51138,1.3327 2.04316,3.1481 0.6027,-2.2121 -0.8717,-3.1122 -2.04316,-3.1481 z m 45.42543,2.7747 c -1.77721,0.1698 -5.56499,9.3927 0.77025,1.6396 -0.0451,-1.2464 -0.36006,-1.6788 -0.77025,-1.6396 z m -74.93892,-2.9848 c -1.33919,0.014 -3.41747,5.9216 0.52326,6.4473 0.68745,-4.8368 0.17821,-6.4548 -0.52326,-6.4473 z m 1.80233,0.7665 c -0.60406,0.037 -0.81072,1.3092 1.26147,2.6552 -0.085,-1.9557 -0.79163,-2.684 -1.26147,-2.6552 z m -17.21624,-0.7089 c -2.04169,-0.2469 -6.82853,3.8783 0.55942,2.0893 0.47475,-1.4327 0.12116,-2.0071 -0.55942,-2.0893 z m 10.75229,0.7343 c -1.39242,0.076 -2.69249,4.2417 0.82032,6.6514 l 0.73677,-1.1152 c 0.11969,-4.1729 -0.72164,-5.5815 -1.55709,-5.5362 z m -18.86079,0.1757 c -1.92205,-0.1615 -5.68814,4.0285 0.86976,1.9881 0.22628,-1.4208 -0.22908,-1.9342 -0.86976,-1.9881 z m 46.24691,2.3514 c -1.82877,-0.063 -1.71493,3.2693 4.49112,4.8987 -1.59425,-3.6235 -3.39384,-4.861 -4.49112,-4.8987 z m -52.87342,-1.2241 c -1.87611,0.01 -6.51296,2.1833 -0.4214,1.7791 1.5497,-1.3419 1.27416,-1.7824 0.4214,-1.7791 z m 37.65871,1.9787 c -0.92134,0.1726 -2.33194,4.5707 0.50641,3.3108 0.22307,-2.599 -0.0877,-3.3893 -0.50641,-3.3108 z m 42.93112,2.0928 c -1.38574,0.324 -7.72714,8.6986 -0.39814,2.1242 0.80135,-1.677 0.78614,-2.215 0.39814,-2.1242 z m -75.84994,-1.38 c -2.97483,-0.052 -6.2898,6.1028 2.17581,1.8535 -0.50713,-1.3564 -1.34287,-1.839 -2.17581,-1.8535 z m 55.92886,3.9571 c -1.08634,0.1714 -1.7304,2.9203 1.21176,3.8003 l 0.51277,-0.3602 c -0.29489,-2.7259 -1.07271,-3.543 -1.72453,-3.4401 z m 26.66746,1.4634 c -3.04485,-0.2371 -7.48121,7.9401 -0.65365,2.725 l 1.84858,-2.0613 c -0.34168,-0.4407 -0.75995,-0.6299 -1.19493,-0.6637 z m 11.40286,0.7243 c -1.6767,0.1966 -9.52961,7.9771 -0.54917,2.0795 1.00414,-1.6025 1.01862,-2.1345 0.54917,-2.0795 z m -102.16235,-3.9752 c -1.31288,0.081 -4.39519,2.5259 -0.15752,1.867 0.99604,-1.4598 0.75428,-1.9037 0.15752,-1.867 z m 36.93016,2.0235 c -0.28299,0.062 -0.18774,0.6407 0.89964,2.1806 1.68386,-0.2559 -0.0326,-2.0287 -0.74696,-2.1739 -0.0536,-0.011 -0.11224,-0.015 -0.15268,-0.01 z m 20.62178,2.4247 c -1.54801,-0.1006 -1.89632,0.9585 3.56,3.4433 0.73577,-2.0821 -2.01198,-3.3426 -3.56,-3.4433 z m -28.17264,-1.1462 c -1.14347,0.2465 -1.22034,4.2772 2.53803,7.6055 l 0.40483,-1.3974 c -0.88305,-4.7708 -2.16049,-6.3768 -2.94286,-6.2081 z m 48.80947,4.9865 c -1.48214,-0.017 -3.72679,4.4842 -0.0443,7.1876 l 0.42146,-0.8995 c 1.11066,-4.6299 0.51209,-6.2778 -0.37719,-6.2881 z m -43.35417,-0.2755 c -1.30946,0.1839 -2.22653,3.9271 1.77105,4.1305 -0.15967,-2.8763 -0.85345,-3.9625 -1.50386,-4.1189 -0.0894,-0.022 -0.17989,-0.024 -0.26719,-0.012 z m 59.50013,2.7354 c -1.90561,-0.086 -5.9071,6.5046 0.82159,1.3359 -0.0598,-0.9603 -0.38183,-1.316 -0.82159,-1.3359 z m -29.35922,-1.1213 c -1.27338,-0.063 -1.52413,1.2047 3.03894,3.9944 0.53049,-2.5376 -1.76556,-3.9313 -3.03894,-3.9944 z m -22.64631,-0.7152 c -0.62331,0.039 -1.19311,1.6843 0.49649,3.5398 0.50933,-2.6408 -0.0123,-3.5699 -0.49649,-3.5398 z m 3.73741,1.1183 c -0.47683,0.24 0.57453,5.9504 2.46513,9.285 1.27397,-1.0104 -0.51701,-2.961 -0.36043,-4.031 -1.18435,-4.0101 -1.85493,-5.3797 -2.1047,-5.254 z m 37.44128,1.7015 c -0.94116,0.02 -5.42875,11.3349 -0.33498,3.3125 0.57981,-2.438 0.5985,-3.318 0.33498,-3.3125 z m -43.99796,1.341 c -0.77654,0.028 -1.4069,1.2546 0.45667,3.5763 1.24268,-2.4358 0.31989,-3.6049 -0.45667,-3.5763 z m 3.62296,1.9928 c -0.60989,-0.067 -0.84144,1.4869 1.16538,4.869 0.43279,-3.1128 -0.55547,-4.8017 -1.16538,-4.869 z m -10.77708,0.7178 c -0.9141,0.093 -1.74819,2.4856 0.46341,5.1827 l 0.43313,-0.2871 c 0.58788,-3.668 -0.18556,-4.9683 -0.89654,-4.8956 z m 18.79951,1.2365 c -0.2953,0.095 -0.50256,0.7752 0.0566,2.2205 0.84214,-1.4909 0.32308,-2.3422 -0.0566,-2.2205 z m 26.90145,1.3588 c -1.16998,0.1532 -2.97765,2.5428 0.21265,3.0304 0.94591,-2.4053 0.48933,-3.1223 -0.21265,-3.0304 z m -41.18683,-0.8698 c -1.01293,0.1982 -2.21685,4.178 0.76539,4.3928 0.23748,-3.0358 -0.10467,-4.2195 -0.57455,-4.3845 -0.0646,-0.023 -0.12332,-0.022 -0.19084,-0.01 z m 4.27342,1.1033 c -0.46025,-0.066 -0.73929,1.1074 0.68395,2.7449 0.14232,-1.8892 -0.32598,-2.6939 -0.68395,-2.7449 z m 27.98021,2.0557 c 0.56198,-0.01 1.41448,0.2407 2.60059,0.8777 2.98669,12.3051 -6.53446,-0.817 -2.60059,-0.8777 z m 12.33388,1.3002 c -2.32482,0.1553 -6.77588,5.5774 -0.0146,5.6209 1.87075,-4.3376 1.23228,-5.7023 0.0146,-5.6209 z m -17.75227,-0.694 c 1.00257,0.053 2.49248,1.568 4.48456,5.9309 2.77671,9.68 -5.53646,0.2099 -4.90231,0.1696 -1.59852,-0.9691 -1.4963,-6.2011 0.41775,-6.1005 z m -14.47618,1.3603 c -0.48031,0.021 -0.77357,0.787 0.59429,2.1673 0.55342,-1.4645 -0.11394,-2.1884 -0.59429,-2.1673 z m -3.27922,0.6607 c -0.11603,-0.025 -0.20999,-0.01 -0.30702,0.025 -0.60362,0.1956 -0.716,1.5128 1.34622,4.2268 0.90189,-2.5159 -0.22696,-4.0741 -1.0392,-4.2517 z m -3.49333,0.3073 c -0.63324,0.072 -1.10032,1.8988 0.4601,5.2591 0.97253,-3.6492 0.17312,-5.3313 -0.4601,-5.2591 z m 55.29847,7.0273 c 3.2089,-0.7617 7.8362,-2.3891 7.43797,1.0209 1.63761,1.9216 -2.04424,11.427 -1.03654,11.8845 -1.89247,2.6898 -4.32551,1.8131 -7.26633,2.0602 -4.23264,7.6708 1.28666,25.1806 0.35346,36.7746 -0.25656,3.1874 -7.40211,10.3166 -10.25381,17.4308 -1.78027,3.7422 -4.45969,6.1353 -7.67319,7.6212 -3.21349,1.4859 -7.66703,2.3658 -11.08548,4.2991 -9.22515,1.303 -15.54928,-0.8787 -24.19324,-3.8417 -0.95005,-1.5993 -1.29121,-3.0765 -2.01174,-4.7528 -1.58653,-4.9243 -5.69508,-17.5224 -7.35188,-22.6905 -1.21542,-4.8772 -2.18543,-6.565 -2.97605,-6.3243 -0.79063,0.2406 -1.07985,3.377 -1.29069,5.9479 -1.24998,4.7998 0.3807,14.9875 -0.17274,19.84 -2.90578,-11.754 -1.72947,-30.543 -3.43022,-42.559 1.56122,-5.7391 0.35187,-5.2901 -2.83325,-6.1038 -3.18508,-0.8136 -8.08487,-0.9904 -10.80513,-4.2415 -2.40284,-9.5612 -0.71768,-13.1644 -0.71768,-13.1644 0,0 10.27509,-1.3074 15.897,-1.0094 14.32266,0.7591 28.3141,1.2105 42.76072,1.2024 6.81262,0.9428 19.85555,-1.7817 26.64882,-3.3942 z m -31.05224,82.8223 c -1.78823,1.4495 -2.44684,26.2024 -3.62405,27.1091 -0.82023,-4.5968 -0.5225,-24.9898 -4.3219,-27.301 1.1874,0.4927 6.26349,0.4503 7.94595,0.1919 z m 28.50833,181.9678 c 0.3851,0.087 -0.69601,0.667 -0.96254,0.1494 0.53656,-0.1331 0.83417,-0.1784 0.96254,-0.1494 z"
-       style="fill:#000000" />
-    <g
-       id="0hit"
-       inkscape:label="#g4980">
-      <path
-         sodipodi:nodetypes="ccccccccscscccccccccccccccccccccccccccccccccsccccccccsccc"
-         inkscape:connector-curvature="0"
-         id="path27623"
-         d="m 128.33505,49.404077 c -0.3491,0.03264 -0.73599,0.130707 -1.14618,0.267441 l -2.55978,0.840526 c -3.28153,1.093859 -6.90226,1.105278 -10.20094,2.865433 -0.14549,5.081635 9.2467,11.528212 11.42352,17.803885 -3.98859,4.510933 -14.23509,8.582762 -18.91185,15.129482 -9.189127,5.335554 -8.12598,16.988206 -6.11292,25.903506 0.65946,9.23116 10.44017,14.17747 17.00156,19.67597 4.76716,2.34144 10.40835,2.24112 13.71587,3.24749 3.30751,1.00637 3.01635,5.28304 6.72422,10.04811 9.40365,6.97455 21.09313,17.76918 33.50645,22.5032 15.95602,6.08508 -22.00132,-8.09599 -27.2025,-7.10627 -0.5002,0.4107 -1.28649,2.24307 -2.06311,2.59799 -4.97378,0.54432 -9.1456,1.06472 -13.67767,1.64285 -2.91311,0.36519 -2.6188,0.41743 -6.07471,1.49002 -1.40809,0.11505 -5.22925,-0.39647 -6.5714,-0.30565 -5.50431,-2.09006 26.95539,18.89472 -2.44365,9.05477 -5.77657,8.69805 23.19025,12.63976 -2.02642,20.05803 -9.72112,6.09982 5.29674,6.21025 8.6345,8.06141 -2.01093,3.17927 -12.61328,9.79534 -2.13952,10.65941 15.40829,6.08051 -11.19922,2.92942 -14.36537,7.41192 -9.938018,9.75929 17.83234,5.68921 5.34881,11.53814 -7.48096,1.73568 -2.88906,6.0853 5.42522,5.76907 -3.13684,4.4987 -17.887927,7.29661 -24.413484,9.47503 -7.950393,5.87093 14.331444,5.95753 6.380363,10.35376 -1.997006,8.32079 15.965611,1.02714 21.318811,1.52823 10.14499,0.48049 14.70059,0.71613 24.41349,0.72591 6.84364,-0.241 13.00593,-0.72913 19.71417,0.15282 2.56255,0.18242 8.05865,0.19964 10.6212,0.38206 11.44005,0.0517 19.68366,-0.12473 31.1759,-0.30565 24.32261,-1.39697 48.73746,0.36289 73.01122,-2.17773 15.84138,-0.86792 31.13601,-7.45609 29.57126,-11.9584 -5.34871,-0.0297 -9.62514,-4.13358 -4.77572,-9.9717 -13.16378,5.24606 -1.68106,-4.20264 -1.68106,-4.20264 0,0 -19.93111,1.09864 -26.78224,-1.22258 -2.22226,-5.13034 5.15097,-15.08564 10.04812,-20.66932 8.97012,-9.78949 -9.67956,-3.91124 -7.67936,-9.62785 9.67306,-15.67476 -20.34247,-0.80686 -20.4053,-0.36705 0,0 18.36102,-20.14002 18.49501,-28.01983 -7.99008,7.65618 -9.16286,9.92044 -13.2956,-2.59799 -7.89367,10.70166 -3.28968,-0.59823 -4.39367,-6.26575 -9.4659,4.30384 0.64698,-5.4388 -5.53983,-5.76907 -11.03131,12.75822 -0.19952,-3.40085 -5.84548,-5.80728 -16.53684,2.54305 -1.11987,-3.58403 1.14447,-9.08618 4.4427,-4.35731 9.06241,-14.63039 18.05689,-16.67214 20.57837,-4.67131 -29.04851,-10.48713 6.47291,-9.50559 12.96364,-5.29024 -36.96876,-4.77779 -7.67936,-6.07472 12.63309,-2.5962 -5.7283,-6.71472 -10.69761,-8.5963 -5.98397,-5.894077 -8.81706,-15.784051 -11.95841,-23.878599 -15.26703,-13.189436 7.15177,-7.717197 13.8687,-13.601251 9.5385,-5.317411 2.36625,-8.921333 -4.96675,-9.398618 -9.29566,-0.418796 -18.25669,-2.326798 -24.5281,4.202634 -1.86986,12.738865 -1.2614,9.553164 -16.39028,1.26079 -5.7966,-0.283737 -24.10271,-4.192535 -31.36693,-1.031556 -3.79569,1.651675 -6.07827,-0.875908 -12.07302,1.375408 -5.9453,12.868801 -19.95103,-1.552487 -29.64767,-8.481679 -2.85236,-1.442858 -4.01308,-3.552134 -6.45677,-3.323902 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27621"
-         d="m 128.10581,52.193098 c 12.54372,1.843633 17.82937,15.880711 25.8653,15.893597 7.26617,5.44209 10.54022,-9.403703 17.07798,-5.234189 13.49462,-4.553271 23.84238,-0.850516 36.21906,-0.420264 7.18615,4.671728 23.28934,14.686283 16.84874,6.303951 0.17154,-12.808931 19.53819,-11.810092 28.00483,-9.971704 11.59301,0.116023 -4.08114,7.262934 -8.32886,8.252445 -7.84433,-0.723892 -15.42113,1.142517 -8.56474,8.210815 0.7262,1.190199 1.39406,1.911438 2.15776,2.634486 3.82966,1.101415 5.11273,15.207777 13.26407,25.828805 23.7554,4.68426 13.93495,7.29508 -0.55465,6.39044 -0.67573,4.7391 41.41452,5.28666 5.50314,5.80062 -4.3798,1.10877 5.15809,5.14122 10.82261,7.3114 -2.05305,1.99869 -9.22237,3.8601 -10.87409,6.25641 -2.72117,3.94784 -6.53047,7.76841 -8.28993,10.09994 -11.50303,12.36438 -23.07036,21.01152 -35.74804,29.20903 -11.70929,8.53663 -9.31737,-10.29031 -3.51493,-15.01487 7.03632,-7.98447 16.65538,-18.13648 12.44007,-29.77387 -7.95387,-5.67173 -18.47819,-9.03577 -28.21905,-7.13289 -7.55804,-1.19185 -37.9967,23.78408 -16.07132,0.87873 6.72557,-19.504756 -3.15304,-37.835527 -19.76568,-45.006388 -8.57118,-6.506044 -23.42457,-0.537533 -29.38023,-4.661103 -4.84863,-3.357082 -12.00824,-13.065062 -10.20094,-13.448428 z"
-         style="fill:#a05a2c;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27617"
-         d="m 233.75273,83.139766 c -3.03205,-0.171382 -9.20759,6.227539 -9.20759,6.227539 -4.08128,5.314696 -5.67041,7.121126 -17.2308,-3.323902 -13.09802,-3.599398 1.47615,3.060557 7.9468,10.00991 3.49242,2.771966 -14.66632,11.623357 -4.6611,12.111227 10.62699,-17.611744 13.68612,-8.866586 21.66266,-2.36876 8.81673,2.80915 -0.26783,-6.101672 -4.12622,-7.144475 -8.36076,-3.986566 1.59805,-10.015888 6.18934,-15.396922 -0.17139,-0.07372 -0.37095,-0.103186 -0.57309,-0.114556 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27615"
-         d="m 201.19344,118.40368 c 7.26562,-0.0979 14.39482,3.55402 18.26235,8.00991 1.82946,8.03315 -5.38086,14.32057 -8.97835,20.64442 -6.23632,6.99213 -12.27645,16.8679 -9.36042,25.94171 -9.21091,1.53627 -18.84591,2.52144 -24.87195,-6.6478 -3.29423,-9.49527 -11.46291,-16.78798 -9.55144,-27.69918 1.06573,-11.30585 12.80569,-15.24461 21.93011,-18.37697 3.79372,-1.0046 8.21033,-1.81335 12.5697,-1.87209 z"
-         style="fill:#9e6947;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27613"
-         d="m 106.71059,119.43524 c 8.04335,-0.52669 44.68951,9.9119 52.22727,11.2707 5.75323,1.71404 -13.19442,4.05365 -28.08123,2.33055 0.56492,-0.67323 3.24749,-2.64115 3.24749,-3.66775 0,-2.46267 -1.60004,-4.27337 -4.96675,-4.81393 -11.96836,-1.92163 -12.43563,-2.08111 -13.14278,0.80232 -0.43956,1.7923 1.30943,3.76424 2.6744,4.92855 -7.09399,-3.97573 -14.91749,-10.65668 -11.9584,-10.85044 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27611"
-         d="m 192.67355,126.92357 c -1.84587,0.0512 -3.60869,0.24268 -5.08137,0.45847 -11.80089,-1.50685 -14.22881,9.79047 -9.284,19.02647 5.49484,5.63906 6.82481,17.96694 15.62616,20.36367 8.97771,-5.44432 8.25004,-18.77914 12.45508,-27.8138 4.01389,-10.23655 -5.71711,-12.257 -13.71587,-12.03481 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         sodipodi:nodetypes="cccssc"
-         inkscape:connector-curvature="0"
-         id="path27609"
-         d="m 167.29333,128.79565 c 4.60462,0.0867 -5.95743,11.43387 -3.15948,16.84874 3.01741,4.4569 10.59852,21.91177 8.40526,20.32547 -3.11997,1.5269 -33.28899,-20.48466 -36.43301,-28.29433 -1.82186,-4.52546 19.48303,-0.24898 22.98459,-3.22543 1.5382,-1.30753 7.57529,-5.65753 8.20264,-5.65445 z"
-         style="fill:#a05a2c;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27607"
-         d="m 189.96094,128.79565 c 4.95913,-0.0274 10.23796,1.2348 13.52484,2.94185 3.49996,3.01085 0.43417,7.77034 -0.53488,11.23249 -3.02113,5.59456 -3.80647,26.9744 -12.95175,18.95006 -4.5711,-8.01249 -10.38922,-15.68372 -12.72252,-24.71913 0.42995,-6.2004 6.30829,-8.37003 12.68431,-8.40527 z"
-         style="fill:#917c6f;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27605"
-         d="m 186.06395,137.0863 c -4.3103,0.20257 1.10743,13.23328 2.06312,1.9485 l 0.19102,-0.34386 -0.57308,-1.18437 c -0.66975,-0.29488 -1.23517,-0.44122 -1.68106,-0.42027 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27603"
-         d="m 197.22004,137.54477 c -1.23766,-0.15226 -2.57113,12.36681 0.72591,6.03651 l 0.19103,-2.25414 c -0.22866,-2.7165 -0.5704,-3.73974 -0.91694,-3.78237 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27601"
-         d="m 243.98389,153.24734 c 2.30328,3.07326 -0.72574,7.75354 -0.19103,9.81888 -0.0985,0.727 1.8328,3.52212 7.14448,-3.09467 -1.6433,4.17509 -0.61812,7.92132 4.58469,5.38702 -2.4372,4.25679 -0.68005,9.47219 -1.79567,11.2707 3.35985,-0.69224 4.31957,-2.07528 6.11292,-4.43187 0.54732,3.31537 3.31978,13.98295 12.30226,3.43852 -1.4228,3.56477 -12.43819,20.97822 -19.42183,24.66267 2.17377,3.94399 10.74417,-4.08374 19.14109,-4.73752 9.78406,-2.34605 -2.14981,7.98514 3.87208,9.98996 18.02466,-2.40114 3.03868,7.28924 0.53488,12.49328 -3.64875,4.23831 -9.29415,15.4806 -0.76412,15.62616 23.11642,0.63296 25.29433,-3.04243 16.46669,5.53984 6.68588,1.82022 8.94429,-2.56562 7.9468,-0.91694 -0.99749,1.64866 -3.08473,5.44132 0.26744,7.985 14.56444,1.45913 -5.93862,7.78676 -8.36706,9.20759 -14.93038,1.61259 -20.16086,16.96057 -35.24007,17.22542 -8.57685,-1.47559 -24.56409,4.94219 -32.84203,9.82798 -11.74701,6.93329 -24.00179,-11.27973 -34.18594,-6.30122 -22.45408,0.20195 -49.22637,7.10706 -65.35231,-3.00659 -4.70029,-4.03843 -33.824361,-3.28113 -24.01976,-18.24226 -14.129029,-3.16432 -13.270579,-5.82599 -1.069761,-8.02321 10.454761,-3.23877 27.808291,-8.06613 10.583001,-10.88865 -6.49797,-0.89299 6.05612,-0.38926 3.89698,-7.83218 -22.299289,-2.42217 -4.00197,-8.9975 5.19599,-9.3222 11.77615,-1.58017 5.22955,-3.26114 -3.78237,-7.79398 7.34365,-6.61866 12.41477,-10.00855 0.11455,-11.42352 -16.683384,-0.2404 11.14097,-5.40433 8.97836,-12.79893 -17.17299,-9.04401 -10.41322,-14.95738 3.89698,-6.15113 5.48161,-4.43288 -19.40358,-17.12359 -6.60959,-13.02817 5.42047,-1.28051 15.39181,-3.4788 20.97496,-3.20928 0.0778,3.9092 1.66457,11.16142 4.20263,13.48663 -1.9272,3.1737 1.01858,4.79197 2.13953,10.04812 4.0522,9.31639 7.69108,3.50129 27.69918,-4.69931 2.26427,-1.33204 5.16469,-6.22066 4.6611,-10.12453 4.10467,2.15965 6.27203,1.49437 13.83048,2.02491 10.36367,0.76954 23.91753,-8.55945 31.84579,-14.36707 4.47166,-3.25227 6.44368,-7.14185 9.45464,-7.52483 2.61975,0.79349 5.7283,0.53741 7.79398,-0.11456 z"
-         style="fill:#784421;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         sodipodi:nodetypes="cccccccccccccscccscccccccccccccccccccccc" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27599"
-         d="m 146.17714,161.49978 c 4.34022,0.45555 15.4445,5.35787 21.12779,6.95345 5.29852,0.6774 9.04844,2.60765 10.88864,3.62955 1.13531,1.75497 -3.21821,1.03213 -5.80728,1.87208 -2.58907,0.83996 -7.48939,0.43125 -11.42352,2.17773 -3.70687,1.64554 -8.82798,1.65714 -11.9202,-0.0764 -3.09221,-1.73354 -4.99981,-6.80214 -4.69931,-11.30891 -0.74756,-1.7914 0.5084,-3.15679 1.83388,-3.24749 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27539"
-         d="m 178.04074,174.10769 c 0.67545,0.0216 1.19921,0.22112 1.49003,0.76411 1.22064,1.0694 -0.47515,5.7044 -3.05646,7.22089 -1.29516,1.37576 -3.96234,1.37062 -6.83883,3.05646 -2.8765,1.68585 -6.32885,3.46205 -9.55144,4.43187 -3.22261,0.96981 -6.16254,2.7331 -7.67936,0.61129 -4.00251,-5.59885 -3.77586,-6.02037 -3.17108,-12.03481 7.74338,2.17032 18.61624,-3.18611 24.87195,-3.55314 1.30328,-0.0764 2.80945,-0.53276 3.93519,-0.49667 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27619"
-         d="m 138.6506,71.066745 c 3.23113,0.05966 6.16046,0.673118 9.09297,1.375407 11.60531,3.134511 7.38968,2.394847 12.5697,5.004955 8.28739,5.059751 12.19158,13.85951 14.63281,22.847043 0.35424,1.79882 0.66016,5.5855 -0.0897,6.43358 1.47906,7.13816 -2.64458,14.37053 -8.51989,19.71418 -6.6589,7.44867 -16.3042,-2.7319 -24.51479,-2.95686 -9.45914,-1.45174 -19.07053,-3.12692 -28.23406,-5.08137 -14.123382,0.3335 -14.022531,-13.30186 -12.49329,-19.026465 2.1863,-12.180108 19.55033,-23.727821 26.66763,-26.361977 4.12287,-1.525919 7.65751,-2.008156 10.88864,-1.948493 z"
-         style="fill:#a05a2c;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-    </g>
-    <g
-       id="0trap"
-       inkscape:label="#g5080">
-      <path
-         sodipodi:nodetypes="cccccccccccccccccccccccccccccc"
-         inkscape:connector-curvature="0"
-         id="path4735"
-         d="m 419.64206,77.888594 c -6.2234,1.303508 -10.76172,6.708028 -16.50489,9.245795 -3.89735,1.938151 -10.21519,7.129843 -4.34215,10.842074 7.00394,6.161577 16.80455,5.425097 25.2025,7.955157 -9.02738,9.3599 -3.47494,23.99232 -4.81887,35.53801 -0.69147,23.30969 3.31601,47.0578 0.005,70.02452 -3.78962,2.67112 -6.62294,-4.75858 -9.55981,-6.09549 -4.55552,-8.70208 -3.96345,3.20792 -7.44175,-0.93437 -3.42342,-2.14502 -7.31285,-7.85103 -11.76738,-4.96675 -0.50835,5.06927 4.96392,8.37457 6.72422,12.26405 -7.17074,13.31481 -15.09703,29.62238 -19.24691,44.18505 -0.41947,9.60739 13.00801,16.91279 20.32775,17.55641 30.07061,4.58728 82.73946,5.9384 94.69446,-0.0255 7.23521,-1.30786 19.20836,-5.76058 25.06953,-10.9787 0.66051,-4.89594 -5.51863,-9.06743 -7.27789,-13.63167 -5.858,-9.96285 -12.67547,-19.27868 -22.4844,-25.52924 -3.76699,-2.09108 -3.1056,-7.02777 0.79963,-8.79959 7.05316,-5.13612 -2.66367,-1.33709 -6.39934,-2.87636 0.76731,-4.2987 -2.18654,-6.33004 -5.05305,-3.30565 -4.76258,3.36086 -8.65751,-3.03743 -8.64115,-7.40697 -4.37088,-24.34285 -5.92444,-49.43062 -7.10799,-74.1956 0.34373,-7.37788 0.28422,-15.4269 -5.65274,-20.5929 7.31196,-2.35887 16.32334,-0.41147 22.80884,-4.69931 2.38493,-4.957531 -5.14735,-7.68376 -6.91524,-11.652758 -5.299,-5.600854 -12.02088,-14.867506 -20.93676,-10.926848 -4.64231,0.509219 -8.1874,3.629328 -8.06141,8.519885 -0.74127,2.809487 -1.2221,10.118365 -1.87209,10.506585 -0.99332,-6.479746 -1.14173,-16.752255 -9.85708,-17.230799 -3.8607,-0.93804 -7.64408,-3.000638 -11.69097,-2.789021 z"
-         style="fill:#784421;fill-opacity:1;stroke:none" />
-      <path
-         sodipodi:nodetypes="cccccscsccccccsccccssccscccccccccccccsccsscssscsssccccsscscczccsccsssccccscczsccccscccscccczzzscccccccccccccccccccccccssscccccccccccccccsssccccczzscccccccccscc"
-         inkscape:connector-curvature="0"
-         id="path4562"
-         d="m 418.57725,-92.795601 c -1.21015,0.91858 -3.73604,-7.834809 -3.73604,-7.834809 1.93127,7.216858 -1.04362,14.883055 -5.26982,0.70228 1.77209,3.838349 -0.13746,12.536892 -7.42449,2.893256 1.21454,1.789435 6.00112,3.456669 7.40884,4.334741 -1.14589,0.55454 -4.34351,3.879921 -4.6229,4.699309 -0.32363,0.949141 -4.47682,-6.392832 -5.29381,-5.860592 -0.32356,-2.199625 5.26474,6.885949 1.47324,9.451934 -0.9724,0.65808 -4.8816,-6.072738 -5.09177,-6.690314 2.1669,6.183901 8.32542,6.001774 3.79278,8.638808 0.43708,1.886802 3.50471,0.08757 0.77609,-0.939179 -0.36377,2.982985 -6.48307,-1.855427 -6.75961,-3.202242 4.86488,7.91913 4.58701,6.725157 4.58701,6.725157 l -7.32747,0.170276 c 0,0 9.14271,-0.22427 9.66715,1.896254 0.65418,2.645098 -10.62394,5.367536 -10.62394,5.367536 1.38764,0.06608 10.11883,-3.650269 9.68077,12.523597 -15.61235,-4.024894 -5.21891,-0.201799 -0.15282,1.566437 -1.54635,3.436623 64.17323,28.158217 -6.94089,3.773581 -1.01559,0.551789 4.57403,-2.672681 7.59039,1.384197 1.29503,1.741755 2.66746,3.529564 3.62954,5.272395 0.96208,1.742843 -0.13217,0.398232 -0.30564,1.337202 -0.2856,1.546141 -3.53973,-3.629022 -8.02321,-0.07641 9.02576,-1.330893 9.74758,10.036978 6.95345,8.634502 -2.71102,-1.360761 -6.80375,-2.357338 -8.48168,-1.490024 -4.77323,0.990476 -0.29828,0.105998 -5.88369,0.916938 -8.36531,-10.645899 1.30042,-1.07845 -5.69266,0.114556 -5.23425,4.983113 -4.18121,-0.962491 -4.86872,-4.389257 -1.87668,9.146233 -0.81431,15.246468 -7.04127,1.268029 1.80316,20.355118 -9.41278,3.164442 -9.47482,2.999005 3.21279,12.101095 1.25275,7.85528 -9.71845,9.825052 0,0 16.43445,-6.01456 7.45389,9.0562 4.3319,-6.356428 3.1523,-5.549402 11.75484,-4.268211 2.4941,-1.691637 1.34333,5.062495 1.3353,5.080005 1.87122,-9.549809 10.67981,-14.510277 6.27391,2.568563 2.33559,-11.989366 11.78384,-6.353357 15.02114,-8.996604 -0.88384,3.360983 -0.78373,4.90058 -0.64323,7.51114 0.48062,-4.209373 0.64809,-6.343088 2.93558,-8.007815 2.68125,-1.951291 4.2425,1.526429 4.96618,6.728207 -1.35768,-13.517162 6.13471,-3.470557 5.69322,6.490987 -0.0512,1.157617 -6.12592,-2.810787 -4.54933,-1.487743 1.57658,1.323056 2.84009,1.703407 4.16728,3.359826 1.32721,1.6564059 2.14599,3.5307868 1.68105,5.6544525 -3.11585,-0.016749 -6.33481,-2.2833348 -5.97549,-1.3976458 0.3593,0.8856769 -0.81753,-0.3132143 0.97053,0.9773824 1.78807,1.2905846 3.79634,2.6607594 4.96675,3.8587821 1.17041,1.19799818 1.53184,2.25751428 0.0381,2.8654321 -6.27133,0.5439645 -12.97939,0.9523566 -16.88695,1.5282305 -3.60212,0.5308584 -1.87965,6.0581845 -1.3372,9.0165572 0.61453,3.351557 -1.14506,5.233517 3.01826,7.373713 3.30936,1.701226 6.72762,3.668572 11.65275,3.400312 -1.97034,4.758177 1.56765,11.581738 0.84053,19.866997 0.75008,5.476237 0.57839,11.021867 0.80232,12.951753 -0.1813,3.111343 1.32168,7.693504 1.3372,12.340462 1.89597,3.271941 3.20278,5.898187 4.58469,8.252444 1.3819,2.35427 2.23406,3.948398 2.10132,4.011605 -0.53098,0.252855 -15.55039,-30.383961 -16.27717,-31.546369 -4.79681,0.656491 7.44888,38.441904 6.61111,38.003143 -0.84266,-0.441328 -13.26258,-38.672154 -14.90024,-34.270569 -0.49124,5.258715 9.17583,36.118823 7.72745,35.756987 -7.20643,-22.117737 -14.00492,-35.449054 -9.85025,-17.08635 4.15468,18.362716 6.19192,25.00981 19.00974,31.149672 15.11848,2.14256 11.75207,2.3002 12.22585,4.31725 0.58934,3.30953 0.22344,4.38694 0.76411,7.41192 0.54069,3.02497 0.5208,6.36291 0.38206,9.74247 -0.13812,3.37959 -0.40117,6.79499 -0.42026,9.85709 0.40186,6.00648 0.15526,12.79763 0.45846,19.75238 0.30322,6.95473 0.20277,12.50771 1.10797,21.05137 0.75958,7.16916 0.33036,14.12343 0.49668,20.5165 0.16631,6.39306 0.0879,12.1731 -1.49003,16.81053 -1.16072,1.6204 -3.28163,1.67812 -4.96675,0 -3.47742,-6.1156 -7.6183,-21.04328 -10.50658,-4.92854 -2.73108,-4.35685 -27.16404,-18.70533 -5.88369,4.81393 -2.56318,3.94976 -11.29161,21.74069 -16.16104,33.92671 -4.86943,12.18602 -10.08572,25.79416 11.02493,28.83167 24.08125,2.76182 57.99406,4.01442 85.52577,3.14554 22.04792,-4.15359 37.36588,-10.90407 39.19582,-15.37976 1.82993,-4.47569 -15.4503,-24.24461 -17.30865,-29.5492 -1.85834,-5.30457 -25.94894,-9.36536 -8.71092,-20.5547 -21.30231,4.38611 3.14934,-15.61848 -10.6212,-5.34881 -13.7642,10.66072 -12.77671,-11.63892 -14.82383,-22.12113 -2.50135,-24.39462 -4.29853,-50.8876 -5.38702,-75.37997 -10e-4,-2.17383 -1.32626,-3.35081 0.22924,-4.04981 1.55552,-0.699 5.96861,-0.917 8.17603,-1.06977 3.14769,-0.47491 3.55995,-0.0263 12.66948,-4.004948 17.49498,-14.187028 24.81658,-44.002671 17.55128,-32.710783 -1.28181,1.990306 -2.7093,4.187009 -3.9734,5.76907 -1.26413,1.582073 -16.56018,21.340797 -17.19259,20.936758 -0.63242,-0.404028 6.98089,-11.278745 7.5942,-15.246765 0.89562,-3.210861 11.05163,-27.938009 2.03365,-12.528825 -2.17059,3.438079 -14.68159,22.553247 -15.74914,24.302289 2.46192,-4.341337 0.81935,-0.115535 11.25075,-23.842108 10.43138,-23.726524 -1.17649,-7.946847 -6.59231,2.105315 -5.41583,10.052174 -7.41721,11.190706 -2.66338,-1.419323 4.75384,-12.610029 7.86995,-23.242943 1.42521,-13.817367 -2.26178,3.307909 -1.17234,-21.426403 -1.15777,-25.534568 0.0149,-4.220533 -0.58916,-11.185963 0.99335,-11.00326 2.15294,0.01748 3.71623,-0.13589 4.12623,-0.458469 2.54986,-0.937588 1.79464,-1.343094 3.20928,-2.292346 0.47615,-1.89069 1.98827,-9.706596 1.64285,-9.7424667 -0.10368,-5.0503005 -2.21625,-6.4286422 -9.2458,-4.77572027 -20.62768,-9.51134003 21.89753,-20.97410803 18.10954,-36.56291503 -7.34961,-4.847046 4.77023,-6.404843 6.26859,-7.486048 0.64457,-0.465132 -16.1905,1.938645 -9.93635,-1.721475 -5.4738,1.387632 5.82567,-11.396447 1.41703,-7.739233 -13.12511,17.048145 -11.96233,-0.879865 -6.49839,-11.898529 -3.21302,4.276099 -7.86125,23.200385 -10.92685,3.629547 -4.48859,8.000442 -13.79092,10.873604 -11.19486,-7.71186 -3.10564,12.462048 -9.9182,13.713539 -11.46116,6.642099 0.36713,3.293716 -16.51757,11.846806 -15.12948,6.76242 -4.90704,-7.249706 7.09581,2.523206 3.36211,-4.699309 -18.05765,-5.789756 -10.78575,-8.352635 2.55978,-4.737515 -5.17204,-3.565031 -24.4446,-3.335014 3.9734,-4.126222 -23.31638,-0.665526 -8.2549,-5.934657 4.58469,-3.705959 -4.94277,-2.478557 -20.80623,-3.515309 1.49003,-5.692658 -6.96766,0.625058 -7.15241,-6.705338 -0.95515,-12.302256 -10.03788,5.297324 -5.46362,-7.194029 -7.64115,1.146173 -12.86884,8.20304 -20.38187,20.000204 -14.26241,-1.057028 -4.55377,9.850872 -6.54889,-1.366681 -6.59794,-0.432997 -0.0668,1.271103 -2.6923,0.401387 -3.20928,-0.955144 -0.51699,-1.356543 6.05144,4.84716 4.76671,3.396087 -1.24711,-1.408588 1.90892,-7.311861 1.95769,-7.240691 0,0 -0.55777,2.260432 -4.22656,5.221632 -2.15416,1.040096 -0.0761,-8.679322 -0.39475,-8.912662 -0.70935,4.873037 -2.04441,4.020439 -2.63292,7.898629 z m 1.56149,172.288837 c 5.18566,-0.03007 11.29372,3.875153 15.09127,3.591342 5.63798,5.762517 5.14815,29.700902 4.77572,39.848612 -0.22146,3.72092 -0.38334,8.55874 -0.0764,13.83048 0.61228,10.50797 0.78647,22.71724 1.87208,30.90847 1.84573,18.15456 0.62279,40.23357 2.17773,58.3784 2.12899,-0.34081 -1.19438,-24.88477 -0.0381,-32.93337 -0.71255,-27.19588 -4.69787,-60.90996 -3.2857,-64.75876 0.35229,-2.97258 1.21056,-30.793298 5.00496,-45.388449 2.52136,-2.291429 9.24489,-3.467641 10.77402,-3.476725 5.46119,-0.03252 15.05886,11.874364 18.91185,16.963359 12.55944,8.234205 -19.05945,4.728985 -23.61116,10.048115 3.16608,-0.67682 5.06677,2.73216 6.49498,4.81393 1.42821,2.08175 1.89469,2.92241 2.21594,6.03651 0.32123,3.1141 0.63927,5.19209 0.38206,9.9717 -0.13032,2.42161 -0.11456,4.08802 -0.11456,4.08802 0,0 3.19667,35.37742 4.39366,52.91498 2.50833,10.10646 0.25806,36.76433 17.72748,21.58625 -5.29858,12.38068 12.3323,3.35508 2.40696,9.74247 -5.31433,7.21968 5.35043,8.91387 12.03481,15.43513 6.68438,6.52126 11.16761,15.43611 14.03902,19.4439 2.87141,4.00779 6.40976,7.36344 5.58809,11.23037 -1.03431,4.86767 -41.14692,20.74953 -71.90228,14.97136 -30.80247,-4.91626 -84.32031,4.83167 -59.82053,-36.51445 4.3484,-9.80247 7.26089,-17.77539 14.13613,-28.95997 -14.40527,-15.82288 -4.64969,-12.63366 4.27904,-3.01825 3.73348,0.37192 0.48669,-16.04366 8.36707,1.64284 6.09809,7.81184 9.80569,2.41978 9.51323,-0.64949 2.23431,-20.54605 -1.17715,-41.35085 -1.45182,-61.24384 1.47902,-16.47493 -3.907,-35.10676 6.6096,-42.29378 -2.92282,-4.14361 -19.96947,-1.62864 -25.71248,-7.335507 -10.51941,-4.195017 7.79773,-12.53094 13.02817,-15.626157 1.67819,-2.408748 3.83221,-3.233846 6.18933,-3.24749 z"
-         style="fill:#000000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1" />
-      <path
-         sodipodi:nodetypes="zzsz"
-         inkscape:connector-curvature="0"
-         style="fill:#88aa00;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 376.20574,-22.586177 c -41.14968,-0.941903 -12.02182,-15.867348 7.88562,-16.168691 19.90745,-0.301354 21.48793,-0.860161 20.49613,6.110624 -1.39619,9.813037 12.76795,10.999971 -28.38175,10.058067 z"
-         id="path4646" />
-      <path
-         sodipodi:nodetypes="ccccczc"
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 422.6515,-90.632559 c 4.25956,7.61461 -0.46585,1.066167 5.63117,8.238006 -1.62536,2.170833 -10.834,-2.084433 -7.21344,5.566757 -5.02328,-2.787639 -6.01928,-4.141664 -2.48243,3.448739 -8.58129,-4.251916 -10.39826,8.817951 -12.58497,14.176857 -15.74914,-10.624687 -10.18108,-16.641184 -2.4831,-27.37413 7.69798,-10.732946 16.56332,-15.23949 19.13277,-4.056229 z"
-         id="path4568" />
-      <path
-         sodipodi:nodetypes="zccczz"
-         inkscape:connector-curvature="0"
-         style="fill:#88aa00;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 416.30129,-96.952318 c 16.87208,-0.508216 28.59311,77.385228 39.06215,100.9861439 -19.40711,17.1444941 -4.0266,-6.7059855 -15.23261,2.6517 -27.56614,36.1472701 -34.81405,-18.4539209 -37.31231,-48.8595949 -0.7827,-7.029225 -6.87901,-19.242305 -6.5533,-27.832073 0.32571,-8.589768 3.16398,-26.43796 20.03607,-26.946176 z"
-         id="path4604" />
-      <path
-         sodipodi:nodetypes="zzccccz"
-         inkscape:connector-curvature="0"
-         style="fill:#88aa00;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 458.11308,-61.782074 c 17.52028,-0.893342 32.96597,6.764046 35.14662,22.188086 2.18066,15.424027 -19.09563,21.539858 -24.41824,32.7854219 2.86981,9.8466581 23.01658,6.85960324 -19.60859,12.0237753 -13.07292,1.8422268 4.04976,-2.3582797 -14.78004,-25.6291962 -4.26187,-2.649083 -11.24836,-11.973539 -10.15107,-16.349144 0.052,-14.213632 16.29103,-24.1256 33.81132,-25.018943 z"
-         id="path4610" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 471.87323,-53.475114 c -6.58395,0.622858 -2.32952,16.88784 -0.21716,3.24112 l 0.43796,-2.160771 z"
-         id="path4612" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 461.31018,-53.283462 c -1.06422,-0.03998 -3.08823,5.156055 0.51298,2.278531 0.10868,-1.669659 -0.15823,-2.265217 -0.51298,-2.278531 z"
-         id="path4614" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 407.24166,-55.311954 c -1.53365,0.208096 -4.12282,3.923384 -0.0544,4.77786 1.52601,-3.751488 0.97458,-4.902722 0.0544,-4.77786 z"
-         id="path4618" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 454.61734,-51.508893 c -1.0545,0.207302 -0.75193,2.602051 3.65802,4.70953 -1.20319,-3.721987 -2.83785,-4.870752 -3.65802,-4.70953 z"
-         id="path4620" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 480.20459,-48.065606 c -0.93004,-0.202093 -2.44155,8.951947 0.54465,4.191985 0.006,-3.003694 -0.23465,-4.12462 -0.54465,-4.191985 z"
-         id="path4622" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 448.66305,-49.128643 c -1.56688,-0.229137 -2.26794,4.447738 2.26229,4.266538 -0.66319,-3.060397 -1.55007,-4.162386 -2.26229,-4.266538 z"
-         id="path4624" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 460.03952,-46.034441 c -1.32746,-0.320843 -4.79705,9.58505 -0.30483,6.143695 l 0.56407,-1.54344 c 0.40798,-3.249165 0.18278,-4.493328 -0.25924,-4.600255 z"
-         id="path4626" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 440.63109,-45.576595 c -1.1035,-0.06724 -1.43907,1.045566 2.2556,3.539663 0.71932,-2.225189 -1.1521,-3.472433 -2.2556,-3.539663 z"
-         id="path4628" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 431.55834,-45.358498 c -1.73263,0.190124 -2.15931,3.073797 3.95349,5.831361 -0.46899,-4.511202 -2.6059,-5.979245 -3.95349,-5.831361 z"
-         id="path4630" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 453.06465,-43.048376 c 3.38311,3.533232 -3.90953,20.948433 4.19444,9.971936 0.82611,-2.498253 -1.80782,-8.531536 -4.19444,-9.971936 z"
-         id="path4632" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 468.93335,-42.130191 c -1.45036,0.216777 -7.50398,13.824398 -0.27845,3.773849 0.70219,-2.854209 0.68474,-3.834538 0.27845,-3.773849 z"
-         id="path4636" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 411.70961,-49.794849 c -0.66457,-0.011 -1.29531,1.135757 0.50304,2.507545 0.54714,-1.774373 0.0138,-2.498522 -0.50304,-2.507545 z"
-         id="path4638" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 446.98259,-40.367738 c -0.83987,0.0571 -0.59995,1.237549 3.22483,4.117102 0.71618,-2.407965 -2.145,-4.190579 -3.22483,-4.117102 z"
-         id="path4640" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 477.06565,-35.65855 c -2.39881,-0.04719 -8.62605,9.802865 0.79507,1.946599 0.0912,-1.405288 -0.24149,-1.935718 -0.79507,-1.946599 z"
-         id="path4644" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 440.97859,-36.842391 c -1.50612,-0.04609 -2.51138,1.33269 2.04316,3.14802 0.6027,-2.212095 -0.8717,-3.112186 -2.04316,-3.14802 z"
-         id="path4648" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 486.40407,-34.067748 c -1.77726,0.169793 -5.56509,9.392713 0.77016,1.639584 -0.0452,-1.246413 -0.36002,-1.678768 -0.77016,-1.639584 z"
-         id="path4650" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.05836891999999994;stroke-opacity:1;fill-opacity:1"
-         d="m 411.77839,-35.731911 c -1.21302,0.01183 -3.09551,4.899265 0.47396,5.334204 0.62269,-4.001705 0.16143,-5.340404 -0.47396,-5.334204 z"
-         id="path4652" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 396.05118,-36.994982 c -2.04169,-0.24684 -6.82852,3.87838 0.55943,2.089336 0.47475,-1.432735 0.12116,-2.007056 -0.55943,-2.089336 z"
-         id="path4656" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 407.08404,-37.663391 c -1.39242,0.07556 -2.69249,4.241622 0.82032,6.651421 l 0.73677,-1.115278 c 0.11969,-4.172913 -0.72163,-5.581501 -1.55709,-5.536143 z"
-         id="path4658" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 387.94269,-36.084927 c -1.92205,-0.161564 -5.68814,4.028489 0.86975,1.988069 0.22629,-1.420765 -0.22907,-1.934226 -0.86975,-1.988069 z"
-         id="path4660" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 434.18961,-33.733542 c -1.82878,-0.06284 -1.71494,3.269276 4.49111,4.898663 -1.59425,-3.623508 -3.39384,-4.860959 -4.49111,-4.898663 z"
-         id="path4662" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 381.31618,-35.518706 c -1.8761,0.0073 -6.51295,2.183206 -0.4214,1.779068 1.5497,-1.341896 1.27417,-1.782405 0.4214,-1.779068 z"
-         id="path4664" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 407.05126,-45.183131 c -0.92134,0.172641 -2.33194,4.570681 0.50641,3.310771 0.22307,-2.598995 -0.0876,-3.389236 -0.50641,-3.310771 z"
-         id="path4666" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 461.90601,-30.886192 c -1.38574,0.324046 -7.72714,8.698639 -0.39813,2.124265 0.80134,-1.677019 0.78613,-2.214993 0.39813,-2.124265 z"
-         id="path4668" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 386.05607,-32.26616 c -2.97483,-0.05196 -6.2898,6.10286 2.17581,1.85356 -0.50713,-1.356433 -1.34287,-1.839011 -2.17581,-1.85356 z"
-         id="path4670" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 441.98494,-28.309058 c -1.08635,0.171419 -1.73041,2.920278 1.21175,3.800294 l 0.51278,-0.360161 c -0.2949,-2.725923 -1.07272,-3.542976 -1.72453,-3.440133 z"
-         id="path4672" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 468.65239,-26.845685 c -3.04485,-0.23701 -7.4812,7.940099 -0.65365,2.72503 l 1.84858,-2.061301 c -0.34169,-0.44073 -0.75995,-0.629876 -1.19493,-0.663729 z"
-         id="path4674" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 480.05523,-26.121328 c -1.67668,0.196579 -9.5296,7.977082 -0.54915,2.079457 1.00412,-1.602503 1.01863,-2.134498 0.54915,-2.079457 z"
-         id="path4676" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 379.1554,-30.938168 c -1.31289,0.08081 -4.3952,2.525883 -0.15752,1.867008 0.99604,-1.459888 0.75428,-1.903723 0.15752,-1.867008 z"
-         id="path4678" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 435.44485,-25.648286 c -1.54803,-0.100619 -1.89633,0.958457 3.55999,3.443299 0.73578,-2.082184 -2.01197,-3.342644 -3.55999,-3.443299 z"
-         id="path4682" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 456.08167,-21.807989 c -1.48214,-0.01712 -3.72679,4.48417 -0.0443,7.187524 l 0.42146,-0.899516 c 1.11067,-4.629842 0.51209,-6.277714 -0.37719,-6.288008 z"
-         id="path4686" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 472.22763,-19.348101 c -1.90561,-0.08595 -5.9071,6.504565 0.82159,1.335869 -0.0598,-0.960266 -0.38183,-1.316014 -0.82159,-1.335869 z"
-         id="path4690" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 442.86841,-20.469394 c -1.27338,-0.06308 -1.52413,1.204612 3.03895,3.994318 0.53048,-2.537523 -1.76556,-3.931269 -3.03895,-3.994318 z"
-         id="path4692" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 461.40079,-18.364825 c -0.94116,0.01968 -5.42875,11.3348489 -0.33498,3.312495 0.57981,-2.438017 0.59851,-3.318033 0.33498,-3.312495 z"
-         id="path4698" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 455.94966,-11.717903 c -1.16997,0.153202 -2.97764,2.5427436 0.21266,3.0303225 0.9459,-2.4052755 0.48933,-3.1222485 -0.21266,-3.0303225 z"
-         id="path4708" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 459.35036,-8.1285538 c -2.32483,0.1553416 -6.7759,5.5773934 -0.0146,5.6209052 1.87074,-4.3375583 1.23228,-5.7022681 0.0146,-5.6209052 z"
-         id="path4716" />
-      <path
-         sodipodi:nodetypes="scccscsccczcccsccscs"
-         inkscape:connector-curvature="0"
-         style="fill:#a05a2c;fill-opacity:1;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 475.64782,0.53307772 c 3.20891,-0.76167008 7.83619,-2.38910112 7.43794,1.02087018 1.63762,1.921597 -2.04416,11.4269801 -1.03653,11.8845201 -1.89242,2.689784 -4.32548,1.813069 -7.26631,2.060202 -4.23264,7.670751 1.28666,25.180544 0.35346,36.774581 -0.25656,3.187412 -7.40211,10.316656 -10.2538,17.430777 -1.78028,3.74222 -4.4597,6.135319 -7.6732,7.621248 -3.21349,1.485917 -7.66702,2.365762 -11.08548,4.299084 -9.22514,1.30303 -15.54928,-0.878733 -24.19325,-3.84169 -0.95004,-1.599324 -4.44421,-4.046718 -5.16475,-5.722967 -1.58653,-4.924252 -4.0365,-12.140043 -5.41155,-19.294937 -1.37507,-7.154906 -2.48777,-9.638623 -3.05404,-2.801797 -1.24999,4.79983 0.3807,14.987504 -0.17276,19.839966 -2.90577,-11.753988 -1.72946,-30.542983 -3.4302,-42.558958 1.56122,-5.739105 0.35186,-5.29011 -2.83327,-6.103789 -3.18506,-0.813679 -8.08486,-0.990416 -10.80512,-4.2415 -2.40283,-9.5612312 -0.71769,-13.1644686 -0.71769,-13.1644686 0,0 10.27509,-1.3073829 15.89701,-1.0094024 14.32266,0.7591516 28.31409,1.2105419 42.76071,1.2023995 6.81263,0.9428816 19.85557,-1.7816967 26.64883,-3.39413878 z"
-         id="path4726" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:none;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 444.59558,83.355381 c -1.78823,1.449447 -2.44684,26.202359 -3.62405,27.109059 -0.82024,-4.59683 -0.5225,-24.989783 -4.3219,-27.300956 1.1874,0.492628 6.26349,0.450277 7.94595,0.191897 z"
-         id="path4728" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
-         d="m 411.84974,-57.233 c 10.22207,2.59375 -3.0589,6.109438 0,0 z"
-         id="path4616" />
-      <path
-         sodipodi:nodetypes="czccc"
-         inkscape:connector-curvature="0"
-         style="fill:#88aa00;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 447.48456,-89.965921 c 3.21765,10.1765 -13.2364,22.230045 -17.69415,25.637119 -4.45774,3.407061 -13.50633,13.695732 -17.70526,-2.869528 -1.47283,-6.416087 9.53596,-10.480397 18.4443,-16.306232 10.41011,-4.760132 14.60298,-10.299479 16.95511,-6.461359 z"
-         id="path4570" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 416.23916,-85.87074 c -0.38622,-0.0049 -0.43831,1.08975 1.00428,3.294131 0.10221,-2.18614 -0.61808,-3.289583 -1.00428,-3.294131 z"
-         id="path4572" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:none;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 441.98722,-85.633302 c -0.34511,-0.01504 -0.70202,0.241852 -0.0331,0.763394 0.71155,-0.461623 0.37823,-0.748417 0.0331,-0.763394 z"
-         id="path4574" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 411.71795,-86.504954 c -0.75809,-0.200064 -1.99989,1.940107 0.0384,3.519906 0.68556,-2.444643 0.41642,-3.399873 -0.0384,-3.519906 z"
-         id="path4576" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 423.87153,-85.884188 c 1.71537,4.071854 -2.36869,0.663252 0,0 z"
-         id="path4578" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 406.68682,-86.438826 c -1.29263,-0.101107 -3.43839,2.159598 0.004,3.441905 1.25364,-2.454558 0.772,-3.381216 -0.004,-3.441905 z"
-         id="path4580" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:none;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 438.7015,-83.060752 c -1.03158,-0.136293 -1.6368,9.723923 0.46473,0.746767 -0.15795,-0.511945 -0.31735,-0.727291 -0.46473,-0.746767 z"
-         id="path4582" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 424.83267,-82.4772 c -0.34498,6.693662 -4.6264,0.394357 0,0 z"
-         id="path4584" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 403.73787,-79.225331 c -1.27375,-0.142456 -3.26736,4.403076 0.66745,4.006115 0.34624,-2.901364 -0.0885,-3.941355 -0.66745,-4.006115 z"
-         id="path4586" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 413.70557,-79.862556 c -0.64975,0.01553 -1.3335,1.436463 0.32716,3.035298 0.66483,-2.196385 0.17816,-3.047353 -0.32716,-3.035298 z"
-         id="path4588" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 434.3854,-77.894232 c -0.78768,-0.163606 -3.36229,2.919103 -0.6968,2.837887 1.02969,-2.016005 1.05485,-2.76353 0.6968,-2.837887 z"
-         id="path4590" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 410.05141,-77.611925 c -0.56429,0.105876 -1.01589,1.501505 0.56777,2.778042 0.3892,-2.167447 -0.12888,-2.860408 -0.56777,-2.778042 z"
-         id="path4592" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 407.59568,-72.135224 c -0.97233,0.100252 -2.40038,3.133777 0.58766,2.320013 0.20934,-1.798116 -0.14568,-2.365554 -0.58766,-2.320013 z"
-         id="path4594" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 418.05038,-69.531254 c -0.6092,0.09206 -1.30566,0.609201 -0.28204,1.211495 1.41316,-0.970732 0.89123,-1.303605 0.28204,-1.211495 z"
-         id="path4596" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 401.4883,-71.092035 c -1.42808,-0.0961 -3.62438,4.381987 0.58123,5.111381 0.70433,-3.74903 0.16679,-5.061035 -0.58123,-5.111381 z"
-         id="path4598" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 420.10108,-63.332237 c -0.90356,-0.170575 -6.13605,3.299021 -1.06862,1.71273 1.20891,-1.184513 1.36981,-1.65588 1.06862,-1.71273 z"
-         id="path4600" />
-      <path
-         id="path3298"
-         d="m 396.61229,-31.383865 c -2.04169,-0.24684 -6.82852,3.87838 0.55943,2.089336 0.47475,-1.432735 0.12116,-2.007056 -0.55943,-2.089336 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3300"
-         d="m 372.23156,-33.84048 c -1.92205,-0.161564 -5.68814,4.028489 0.86975,1.988069 0.22629,-1.420765 -0.22907,-1.934226 -0.86975,-1.988069 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3302"
-         d="m 365.60505,-32.713147 c -1.8761,0.0073 -6.51295,2.183206 -0.4214,1.779068 1.5497,-1.341896 1.27417,-1.782405 0.4214,-1.779068 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3306"
-         d="m 362.18177,-27.852053 c -1.31289,0.08081 -4.3952,2.525883 -0.15752,1.867008 0.99604,-1.459888 0.75428,-1.903723 0.15752,-1.867008 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3308"
-         d="m 401.10119,-27.456083 c -2.04169,-0.24684 -6.82852,3.87838 0.55943,2.089336 0.47475,-1.432735 0.12116,-2.007056 -0.55943,-2.089336 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3310"
-         d="m 391.7302,-27.668251 c -1.92205,-0.161564 -5.68814,4.028489 0.86975,1.988069 0.22629,-1.420765 -0.22907,-1.934226 -0.86975,-1.988069 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 382.05102,-27.247417 c -1.92205,-0.161564 -5.68814,4.028489 0.86975,1.988069 0.22629,-1.420765 -0.22907,-1.934226 -0.86975,-1.988069 z"
-         id="path3312" />
-      <path
-         id="path3314"
-         d="m 374.89684,-27.527974 c -1.92205,-0.161564 -5.68814,4.028489 0.86975,1.988069 0.22629,-1.420765 -0.22907,-1.934226 -0.86975,-1.988069 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3316"
-         d="m 369.112,-28.364532 c -1.8761,0.0073 -6.51295,2.183206 -0.4214,1.779068 1.5497,-1.341896 1.27417,-1.782405 0.4214,-1.779068 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3318"
-         d="m 430.56538,-72.39963 c -1.03158,-0.136293 -1.6368,9.723923 0.46473,0.746767 -0.15795,-0.511945 -0.31735,-0.727291 -0.46473,-0.746767 z"
-         style="fill:none;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3320"
-         d="m 426.24928,-67.23311 c -0.78768,-0.163606 -3.36229,2.919103 -0.6968,2.837887 1.02969,-2.016005 1.05485,-2.76353 0.6968,-2.837887 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3322"
-         d="m 425.26733,-74.387284 c -0.78768,-0.163606 -3.36229,2.919103 -0.6968,2.837887 1.02969,-2.016005 1.05485,-2.76353 0.6968,-2.837887 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:none;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 430.00427,-80.395472 c -1.03158,-0.136293 -1.6368,9.723923 0.46473,0.746767 -0.15795,-0.511945 -0.31735,-0.727291 -0.46473,-0.746767 z"
-         id="path3324" />
-      <path
-         id="path3326"
-         d="m 421.14889,-91.902691 c -0.38622,-0.0049 -0.43831,1.08975 1.00428,3.294131 0.10221,-2.18614 -0.61808,-3.289583 -1.00428,-3.294131 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3328"
-         d="m 416.62768,-92.536905 c -0.75809,-0.200064 -1.99989,1.940107 0.0384,3.519906 0.68556,-2.444643 0.41642,-3.399873 -0.0384,-3.519906 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3330"
-         d="m 411.59655,-92.470777 c -1.29263,-0.101107 -3.43839,2.159598 0.004,3.441905 1.25364,-2.454558 0.772,-3.381216 -0.004,-3.441905 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3332"
-         d="m 403.45415,-62.606406 c -1.53365,0.208096 -4.12282,3.923384 -0.0544,4.77786 1.52601,-3.751488 0.97458,-4.902722 0.0544,-4.77786 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3334"
-         d="m 407.78167,-63.264951 c 10.22207,2.59375 -3.0589,6.109438 0,0 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3336"
-         d="m 421.14428,-39.016469 c -1.33919,0.0143 -3.41748,5.921624 0.52325,6.447324 0.68746,-4.836764 0.17822,-6.454818 -0.52325,-6.447324 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3338"
-         d="m 416.48266,-38.224503 c -1.39242,0.07556 -2.69249,4.241622 0.82032,6.651421 l 0.73677,-1.115278 c 0.11969,-4.172913 -0.72163,-5.581501 -1.55709,-5.536143 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3340"
-         d="m 413.28871,-27.233124 c -1.33919,0.0143 -3.41748,5.921624 0.52325,6.447324 0.68746,-4.836764 0.17822,-6.454818 -0.52325,-6.447324 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3342"
-         d="m 408.62709,-26.441158 c -1.39242,0.07556 -2.69249,4.241622 0.82032,6.651421 l 0.73677,-1.115278 c 0.11969,-4.172913 -0.72163,-5.581501 -1.55709,-5.536143 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 422.96789,-29.197015 c -1.33919,0.0143 -3.41748,5.921624 0.52325,6.447324 0.68746,-4.836764 0.17822,-6.454818 -0.52325,-6.447324 z"
-         id="path3345" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.05836891999999994;stroke-opacity:1;fill-opacity:1"
-         d="m 417.97504,-28.577364 c -1.26124,0.06251 -2.43882,3.509313 0.74304,5.503065 l 0.66735,-0.922728 c 0.10842,-3.452466 -0.65364,-4.617864 -1.41039,-4.580337 z"
-         id="path3347" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 420.58316,-18.676171 c -1.33919,0.0143 -3.41748,5.921624 0.52325,6.447324 0.68746,-4.836764 0.17822,-6.454818 -0.52325,-6.447324 z"
-         id="path3349" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:0.94697887000000003;stroke-opacity:1;fill-opacity:1"
-         d="m 415.88206,-17.601136 c -0.80669,0.07825 -1.55988,4.392549 0.47525,6.888094 l 0.42685,-1.154962 c 0.0693,-4.321395 -0.41808,-5.780104 -0.9021,-5.733132 z"
-         id="path3351" />
-      <path
-         id="path3353"
-         d="m 430.97069,-19.837121 c -0.94675,0.01012 -2.41602,4.188995 0.36992,4.560879 0.486,-3.421558 0.12599,-4.56618 -0.36992,-4.560879 z"
-         style="fill:#668000;stroke:#000000;stroke-width:0.86459017000000005;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3355"
-         d="m 425.60072,-19.848096 c -1.39242,0.07556 -2.69249,4.241622 0.82032,6.651421 l 0.73677,-1.115278 c 0.11969,-4.172913 -0.72163,-5.581501 -1.55709,-5.536143 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3357"
-         d="m 418.05816,-7.5942153 c -1.33919,0.0143 -3.41748,5.921624 0.52325,6.447324 0.68746,-4.836764 0.17822,-6.454818 -0.52325,-6.447324 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3359"
-         d="m 413.25626,-6.9425272 c -1.39242,0.07556 -2.69249,4.241622 0.82032,6.65142103 l 0.73677,-1.11527803 c 0.11969,-4.172913 -0.72163,-5.581501 -1.55709,-5.536143 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 428.15817,-10.540052 c -1.33919,0.0143 -3.41748,5.9216243 0.52325,6.4473243 0.68746,-4.836764 0.17822,-6.4548183 -0.52325,-6.4473243 z"
-         id="path3361" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:0.94697887000000003;stroke-opacity:1;fill-opacity:1"
-         d="m 423.31221,-7.0413976 c -0.80669,0.078249 -1.55988,4.3925488 0.47525,6.88809405 l 0.42685,-1.15496215 c 0.0693,-4.321395 -0.41808,-5.7801039 -0.9021,-5.7331319 z"
-         id="path3363" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:0.93440281999999997;stroke-opacity:1;fill-opacity:1"
-         d="m 434.59756,-13.068871 c -0.90468,0.01237 -2.30865,5.1203503 0.35347,5.5749161 0.46441,-4.1822861 0.1204,-5.5813961 -0.35347,-5.5749161 z"
-         id="path3365" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 410.73126,-16.341148 c -1.39242,0.07556 -2.69249,4.241622 0.82032,6.6514212 l 0.73677,-1.1152782 c 0.11969,-4.172913 -0.72163,-5.581501 -1.55709,-5.536143 z"
-         id="path3367" />
-      <path
-         id="path3369"
-         d="m 439.94151,-4.6483791 c -1.33919,0.0143 -3.41748,5.9216241 0.52325,6.4473241 0.68746,-4.8367641 0.17822,-6.4548181 -0.52325,-6.4473241 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3371"
-         d="m 432.84679,-3.2331308 c -0.94064,0.065336 -1.81889,3.66767441 0.55416,5.7513958 l 0.49772,-0.9643661 c 0.0808,-3.6082628 -0.48749,-4.8262502 -1.05188,-4.7870297 z"
-         style="fill:#668000;stroke:#000000;stroke-width:0.93440281999999997;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3373"
-         d="m 411.82071,-43.640073 c -0.92134,0.172641 -2.33194,4.570681 0.50641,3.310771 0.22307,-2.598995 -0.0876,-3.389236 -0.50641,-3.310771 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 416.59016,-47.006743 c -0.92134,0.172641 -2.33194,4.570681 0.50641,3.310771 0.22307,-2.598995 -0.0876,-3.389236 -0.50641,-3.310771 z"
-         id="path3375" />
-      <path
-         id="path3377"
-         d="m 421.49989,-46.165075 c -0.92134,0.172641 -2.33194,4.570681 0.50641,3.310771 0.22307,-2.598995 -0.0876,-3.389236 -0.50641,-3.310771 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 424.0249,-54.581751 c -0.92134,0.172641 -2.33194,4.570681 0.50641,3.310771 0.22307,-2.598995 -0.0876,-3.389236 -0.50641,-3.310771 z"
-         id="path3379" />
-      <path
-         id="path3381"
-         d="m 432.58185,-63.278982 c -0.92134,0.172641 -2.33194,4.570681 0.50641,3.310771 0.22307,-2.598995 -0.0876,-3.389236 -0.50641,-3.310771 z"
-         style="fill:none;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:none;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 427.98545,-58.70508 c -1.39242,0.07556 -2.69249,4.241622 0.82032,6.651421 l 0.73677,-1.115278 c 0.11969,-4.172913 -0.72163,-5.581501 -1.55709,-5.536143 z"
-         id="path3383" />
-      <path
-         id="path3385"
-         d="m 419.00766,-53.795353 c -1.39242,0.07556 -2.69249,4.241622 0.82032,6.651421 l 0.73677,-1.115278 c 0.11969,-4.172913 -0.72163,-5.581501 -1.55709,-5.536143 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3387"
-         d="m 448.51897,-29.063231 c -0.98994,1.081925 2.87948,15.463903 2.16081,3.106503 -1.25243,-2.659134 -1.88348,-3.409555 -2.16081,-3.106503 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3391"
-         d="m 449.42706,-57.821399 c -1.0545,0.207302 -0.75193,2.602051 3.65802,4.70953 -1.20319,-3.721987 -2.83785,-4.870752 -3.65802,-4.70953 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3393"
-         d="m 443.47277,-55.441149 c -1.56688,-0.229137 -2.26794,4.447738 2.26229,4.266538 -0.66319,-3.060397 -1.55007,-4.162386 -2.26229,-4.266538 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3395"
-         d="m 435.44081,-51.889101 c -1.1035,-0.06724 -1.43907,1.045566 2.2556,3.539663 0.71932,-2.225189 -1.1521,-3.472433 -2.2556,-3.539663 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3397"
-         d="m 487.63932,-43.857268 c -0.93004,-0.202093 -2.44155,8.951947 0.54465,4.191985 0.006,-3.003694 -0.23465,-4.12462 -0.54465,-4.191985 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         d="m 477.67959,-56.201725 c -0.93004,-0.202093 -2.44155,8.951947 0.54465,4.191985 0.006,-3.003694 -0.23465,-4.12462 -0.54465,-4.191985 z"
-         id="path3399" />
-      <path
-         id="path3401"
-         d="m 466.03652,-59.147561 c -0.93004,-0.202093 -2.44155,8.951947 0.54465,4.191985 0.006,-3.003694 -0.23465,-4.12462 -0.54465,-4.191985 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3403"
-         d="m 466.70304,-15.040308 c -1.4685,0.832706 -5.6806,11.0534123 0.30211,2.129421 0.30245,-1.866762 0.10908,-2.362582 -0.30211,-2.129421 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3405"
-         d="m 450.33114,-16.675557 c -0.92835,-0.873865 -1.94137,-0.07156 -0.27735,5.011274 2.0495,-1.587448 1.20573,-4.137426 0.27735,-5.011274 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 447.66586,-2.9283207 c -0.92835,-0.873865 -1.94137,-0.07156 -0.27735,5.011274 2.0495,-1.58744805 1.20573,-4.137426 0.27735,-5.011274 z"
-         id="path3407" />
-      <path
-         id="path3409"
-         d="m 446.27801,-12.725984 c -1.4589,0.26202 -2.81664,5.1052214 1.30868,7.0675183 l 0.24471,-0.9627436 c 0.21982,-4.7561227 -0.67808,-6.2619597 -1.55342,-6.1047697 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         d="m 452.59052,-6.8343113 c -1.4589,0.26202 -2.81664,5.1052214 1.30868,7.06751828 l 0.24471,-0.9627436 c 0.21982,-4.75612268 -0.67808,-6.26195968 -1.55342,-6.10476968 z"
-         id="path3411" />
-      <path
-         id="path3413"
-         d="m 465.34088,-4.4713778 c -0.92835,-0.873865 -1.94137,-0.07156 -0.27735,5.01127397 2.0495,-1.58744807 1.20573,-4.13742597 0.27735,-5.01127397 z"
-         style="fill:#668000;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3415"
-         d="m 401.60421,-83.830215 c -0.64975,0.01553 -1.3335,1.436463 0.32716,3.035298 0.66483,-2.196385 0.17816,-3.047353 -0.32716,-3.035298 z"
-         style="fill:#5f7800;stroke:#000000;stroke-width:1.22258437000000009;stroke-opacity:1;fill-opacity:1"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="0sign_warning"
-       transform="matrix(1.525334,-0.20537456,0.20537456,1.525334,99.174751,416.54677)"
-       inkscape:label="#g3997">
-      <path
-         style="fill:#ac7905;fill-opacity:1;stroke:#000000;stroke-width:1.25000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m 17.598259,-420.73934 0,72.79425 -2.205794,1.22556 -3.256697,0.65967 -2.124193,-1.53194 -2.5837759,1.22555 -3.2525318,-0.90933 -2.7535111,-0.66951 0,-72.79425 2.7164414,1.0213 5.0654206,-2.34898 5.2696818,2.85962 z"
-         id="path3974"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccccccccccccc" />
-      <path
-         sodipodi:nodetypes="ccccccccccccc"
-         inkscape:connector-curvature="0"
-         id="rect3202"
-         d="m -89.373545,-452.72425 199.969995,0 3.38745,8.63727 -1.40278,10.32417 -4.20834,5.83528 3.36667,7.09778 -6.17223,7.09778 5.05001,8.02333 -199.969998,0 2.805558,-7.46222 -6.452784,-13.915 7.855564,-14.47612 z"
-         style="fill:#946804;fill-opacity:1;stroke:#000000;stroke-width:1.25000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <g
-         id="g4067"
-         style="fill:#000000;fill-opacity:1">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4027"
-           d="m -44.84375,-447.625 c -4.04892,2.71771 -3.010349,9.61695 -4.625,14.09375 -0.274588,2.74549 -2.317764,-2.80543 -4.09375,-3.28125 -3.344727,-3.01215 -8.405322,-0.4388 -8.71875,3.90625 -1.033645,1.79027 -1.5258,-5.57336 -2.53125,-7.4375 0.240748,-4.05318 -6.14459,-7.46636 -7.25,-2.40625 -0.0052,6.26209 2.871424,12.15253 3.4375,18.53125 0.337175,3.74408 1.692437,10.91389 7.09375,8.40625 3.289833,-3.15374 3.188671,-8.63947 5.5,-12.53125 2.194951,3.76135 2.901479,9.71673 8.0625,10.375 4.980069,-0.47931 3.257298,-7.01267 4.90443,-10.22619 0.367845,-5.87574 4.086313,-12.17178 2.28307,-17.96131 -0.818393,-1.31872 -2.632662,-1.75052 -4.0625,-1.46875 z"
-           style="font-size:33.90216826999999711px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4029"
-           d="m -28.0625,-439.375 c -3.881559,1.00043 -10.189619,1.37939 -11.0625,6.1875 0.418556,5.46759 6.916953,1.74545 9.71875,0.71875 2.319389,-1.68393 3.205559,2.70823 0.375,1.34375 -5.722057,-0.0148 -12.962374,5.13936 -9.71875,11.53125 2.626534,4.14657 9.169069,2.85939 12.25,1.125 1.989523,4.2018 7.673298,0.22668 6.21875,-3.5 -0.660487,-5.98521 1.874934,-17.53098 -7.78125,-17.40625 z m -1.5,14.90625 c -1.241205,1.45385 -4.448155,1.25594 -1.5,0.1875 0.481227,-0.14062 0.991436,-0.21107 1.5,-0.1875 z"
-           style="font-size:33.90216826999999711px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4031"
-           d="m -15.4375,-439.09375 c -5.394792,1.6613 -2.48071,8.97939 -2.90625,13.03125 0.518726,3.46863 -0.590468,11.45935 5.21875,10.4375 4.459513,-2.7568 2.079549,-9.54234 6.40625,-12.75 1.7155639,-2.51097 8.3962639,-3.81367 4.96875,-7.78125 -3.2025699,-2.85852 -7.6219917,0.17668 -10.09375,2.59375 0.02534,-2.384 -0.361182,-5.84952 -3.59375,-5.53125 z"
-           style="font-size:33.90216826999999711px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4033"
-           d="m 4.6875,-440.28125 c -5.30071781,1.49604 -1.6944317,8.75046 -2.0657143,12.49589 1.0140363,4.04166 -1.217366,11.44464 4.5032143,12.59786 4.508335,-1.78553 1.7501847,-8.42497 4.875,-11.71875 1.092559,-2.38676 3.314485,-6.17767 2.859952,-1.09685 0.89927,3.53664 -2.415975,11.1975 3.265048,11.47185 5.480532,-1.18576 2.430726,-8.81202 3.15625,-12.59375 0.554048,-4.40074 -1.763899,-12.51046 -7.625,-10.4375 -2.320548,0.95095 -3.7889167,3.33708 -5.28125,5.0625 -0.1937303,-2.35211 -0.4652789,-5.97795 -3.6875,-5.78125 z"
-           style="font-size:33.90216826999999711px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4035"
-           d="m 27.03125,-449.46875 c -5.537781,0.82424 -2.391319,9.59965 2.34375,7.375 3.874248,-2.08331 2.05486,-7.86437 -2.34375,-7.375 z M 27,-440.5 c -5.819073,1.68473 -2.416598,9.57271 -3,13.8125 -0.124567,3.5057 -0.2487,11.19427 5.375,9.40625 4.342062,-2.217 1.432037,-8.65938 2.09375,-12.65625 C 30.640728,-433.12426 32.328956,-440.79475 27,-440.5 z"
-           style="font-size:33.90216826999999711px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4037"
-           d="m 37.78125,-440.28125 c -5.080911,1.1153 -2.034703,8.07805 -2.21875,11.5 1.271282,4.30248 -1.417945,12.14951 4.5625,13.625 4.628738,-1.82962 1.734599,-8.42403 4.90625,-11.75 0.805782,-1.45076 3.058514,-6.36617 2.8125,-2.0625 1.21884,3.85704 -2.361342,10.51041 2.40625,12.40625 5.812938,0.39539 3.947869,-7.56222 4.099692,-11.06218 0.357857,-4.50921 -0.600152,-12.99175 -6.880942,-12.21907 -2.648763,0.71351 -4.432689,3.36558 -6.03125,5.34375 -0.246668,-2.33913 -0.438268,-5.9396 -3.65625,-5.78125 z"
-           style="font-size:33.90216826999999711px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4039"
-           d="m 71.25,-440.96875 c -8.640403,-0.0606 -18.233117,8.95 -14.59375,17.875 0.705055,2.4169 4.290238,3.66868 5.25,4.8125 -2.933719,5.24877 4.522748,8.00237 8.34375,9.125 4.457952,2.22023 12.23009,-0.25702 10.068454,-6.33619 -0.350293,-6.75417 -1.812153,-13.5847 -0.0997,-20.16381 -0.287067,-4.30435 -5.404531,-5.51665 -8.96875,-5.3125 z m 0.4375,6.625 c 1.537227,1.03391 -1.12249,5.0909 -2.4375,6.71875 -1.398911,1.97203 -6.273894,5.08572 -6.4375,0.71875 0.66765,-3.70376 5.09375,-7.21703 8.875,-7.4375 z m 1.03125,13.3125 c 0.476321,2.72623 1.662711,6.85231 -2.125,4.46875 -2.174971,0.42331 -1.23016,-3.04393 -0.3125,-3.53125 0.831591,-0.10033 2.359257,-2.28937 2.4375,-0.9375 z"
-           style="font-size:33.90216826999999711px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4041"
-           d="m 88.125,-439.875 c -4.496579,1.51596 -1.040187,7.0211 -1.598305,10.37101 -0.459598,2.58114 2.467362,4.73693 -0.276695,6.37899 -4.054194,4.94808 6.151295,9.88265 7.625,3.75 1.183496,-2.19009 -0.261361,-4.86417 -1.5625,-5.9375 1.32047,-4.52527 2.84285,-9.06984 3.03125,-13.90625 -2.391634,-0.16014 -4.823663,-0.84439 -7.21875,-0.65625 z"
-           style="font-size:33.90216826999999711px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-      </g>
-      <path
-         transform="translate(-154.42237,-108.94201)"
-         d="m 164.40573,-304.87988 c 0,0.34863 -0.28262,0.63125 -0.63125,0.63125 -0.34864,0 -0.63126,-0.28262 -0.63126,-0.63125 0,-0.34863 0.28262,-0.63125 0.63126,-0.63125 0.34863,0 0.63125,0.28262 0.63125,0.63125 z"
-         sodipodi:ry="0.63125068"
-         sodipodi:rx="0.63125068"
-         sodipodi:cy="-304.87988"
-         sodipodi:cx="163.77448"
-         id="path3985"
-         style="fill:#d39440;fill-opacity:1;stroke:#3b3b3b;stroke-width:1.25000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#d39440;fill-opacity:1;stroke:#3b3b3b;stroke-width:1.25000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="path3987"
-         sodipodi:cx="163.77448"
-         sodipodi:cy="-304.87988"
-         sodipodi:rx="0.63125068"
-         sodipodi:ry="0.63125068"
-         d="m 164.40573,-304.87988 c 0,0.34863 -0.28262,0.63125 -0.63125,0.63125 -0.34864,0 -0.63126,-0.28262 -0.63126,-0.63125 0,-0.34863 0.28262,-0.63125 0.63126,-0.63125 0.34863,0 0.63125,0.28262 0.63125,0.63125 z"
-         transform="translate(-154.42237,-137.69898)" />
-      <text
-         sodipodi:linespacing="125%"
-         id="text3989"
-         y="-418.78613"
-         x="-72.148483"
-         style="font-size:33.90216826999999711px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Purisa;-inkscape-font-specification:Purisa Bold;fill:#ffffff;fill-opacity:1"
-           y="-418.78613"
-           x="-72.148483"
-           id="tspan3991"
-           sodipodi:role="line">Warning!</tspan></text>
-      <path
-         sodipodi:nodetypes="ssscs"
-         inkscape:connector-curvature="0"
-         id="path3965-7"
-         d="m 18.878035,-348.06163 c 1.213615,2.38023 -2.792071,4.50541 -5.439965,4.14889 -2.647895,-0.35652 -4.4590732,-2.78625 -4.1488992,-5.43996 1.5846402,-13.55737 17.3012832,-21.09756 16.9631112,-18.09356 -1.370894,2.75023 -8.949209,16.29569 -7.374247,19.38463 z"
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.87091565000000004;stroke-opacity:1" />
-      <path
-         sodipodi:nodetypes="ssscs"
-         inkscape:connector-curvature="0"
-         id="path3969-2"
-         d="m -0.06781464,-347.74437 c 0.4272138,2.22545 4.83849904,2.71772 6.23399394,0.0152 1.225879,-2.37396 1.274083,-3.01739 0.38364,-5.53642 -1.3423429,-3.79747 -9.0433462,-13.91563 -12.0316377,-15.3257 2.2370366,2.93006 4.67081956,16.97546 5.41400376,20.84688 z"
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.87091565000000004;stroke-opacity:1" />
-      <path
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.87091565000000004;stroke-opacity:1"
-         d="m 13.048982,-349.48997 c 0.391662,3.90643 0.758104,7.69626 -4.0489262,6.19565 -2.550406,-0.79617 -5.912073,-1.11076 -5.30225,-3.712 0.431978,-1.84261 3.9081,-22.75109 2.283956,-24.76254 1.213952,-1.61282 6.4960052,16.58152 7.0672202,22.27889 z"
-         id="path3963-4"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ssscs" />
-    </g>
-    <g
-       id="0sign_cute"
-       transform="matrix(1.5327722,0.13939765,-0.13939765,1.5327722,-47.019003,386.37643)"
-       inkscape:label="#g4005">
-      <path
-         sodipodi:nodetypes="ccccccccccccc"
-         inkscape:connector-curvature="0"
-         id="path3213"
-         d="m 266.17074,-422.98379 0,72.79425 -3.44511,0.74066 -2.16104,1.75524 -2.663,-0.88533 -2.2784,2.39298 -3.48603,-1.28649 -2.14292,-2.71706 0,-72.79425 2.71644,1.0213 5.06542,-2.34898 5.26968,2.85962 z"
-         style="fill:#ac7905;fill-opacity:1;stroke:#000000;stroke-width:1.25000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <path
-         style="fill:#946804;fill-opacity:1;stroke:#000000;stroke-width:1.25000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m 151.84264,-467.82894 210.51567,0.99002 0.75921,8.1083 -2.04637,5.0716 4.29082,8.36034 -5.19853,13.80629 4.07631,8.94622 -1.68334,7.37834 -1.25416,10.3173 -210.51567,-0.99002 -2.22046,-12.81411 6.24373,-17.08913 -2.37647,-10.38057 3.23465,-10.38056 -4.7196,-5.61041 z"
-         id="path3215"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cccccccccccccccc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#d39440;fill-opacity:1;stroke:#656565;stroke-width:1.25000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="path3217"
-         sodipodi:cx="163.77448"
-         sodipodi:cy="-304.87988"
-         sodipodi:rx="0.63125068"
-         sodipodi:ry="0.63125068"
-         d="m 164.40573,-304.87988 c 0,0.34863 -0.28262,0.63125 -0.63125,0.63125 -0.34864,0 -0.63126,-0.28262 -0.63126,-0.63125 0,-0.34863 0.28262,-0.63125 0.63126,-0.63125 0.34863,0 0.63125,0.28262 0.63125,0.63125 z"
-         transform="translate(94.150109,-107.18646)" />
-      <path
-         transform="translate(93.994897,-154.24404)"
-         d="m 164.40573,-304.87988 c 0,0.34863 -0.28262,0.63125 -0.63125,0.63125 -0.34864,0 -0.63126,-0.28262 -0.63126,-0.63125 0,-0.34863 0.28262,-0.63125 0.63126,-0.63125 0.34863,0 0.63125,0.28262 0.63125,0.63125 z"
-         sodipodi:ry="0.63125068"
-         sodipodi:rx="0.63125068"
-         sodipodi:cy="-304.87988"
-         sodipodi:cx="163.77448"
-         id="path3219"
-         style="fill:#d39440;fill-opacity:1;stroke:#656565;stroke-width:1.25000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         sodipodi:type="arc" />
-      <g
-         id="g4219"
-         style="fill:#000000;fill-opacity:1">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4084"
-           d="m 168.84375,-459.03125 c -6.19988,0.42282 -9.97161,6.61719 -8.8125,12.46875 -1.21364,6.36188 7.22386,10.75756 11.75,6.09375 2.52256,-2.14163 5.80459,-5.93233 3.28125,-9.25 -4.24144,-1.68066 -5.20245,6.04102 -8.8125,4.875 -1.17424,-2.9243 -0.58273,-8.44515 3.5,-8.15625 3.41064,2.89508 6.62322,-2.73715 3.15625,-4.8125 -1.12701,-0.93474 -2.60629,-1.36249 -4.0625,-1.21875 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4086"
-           d="m 186.4375,-453.65625 c -3.8847,1.0849 -2.52031,6.61873 -5.28125,9.125 -0.52823,-2.99003 1.21355,-9.47062 -3.84375,-8.8125 -3.85279,2.52012 -1.70563,8.5889 -1.4375,12.4375 0.68802,4.33597 6.47753,4.08679 8.65625,1.3125 1.9592,4.44544 7.70542,0.0965 4.9375,-3.5 -1.88946,-3.41419 3.01214,-10.35081 -3.03125,-10.5625 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4088"
-           d="m 194.875,-461.78125 c -3.92368,0.083 -2.24385,5.16232 -2.96875,6.71875 -3.75305,-0.37918 -5.29612,5.65975 -1.03125,5.875 3.43099,-0.80933 1.68337,4.87334 2.5,7.03125 -1.20608,4.52586 6.44733,6.42389 6.40625,1.375 0.11195,-3.07528 -2.29785,-7.99499 -0.1875,-9.96875 4.08413,-0.45775 2.8757,-6.49836 -1.0625,-5.5625 -0.80595,-1.48291 -0.22262,-5.97505 -3.65625,-5.46875 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4090"
-           d="m 207.15625,-453.625 c -7.05912,0.95231 -8.97379,11.60806 -2.46875,14.71875 4.79954,2.78565 13.41155,-2.15971 11.21875,-7.78125 -1.54759,-0.97708 -0.39865,-4.41427 -2.90625,-5.46875 -1.58177,-1.4234 -3.82642,-1.52037 -5.84375,-1.46875 z m 2.0625,9.46875 c -1.60422,0.85066 -2.55719,3e-4 0,0 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4092"
-           d="m 239.125,-458.5625 c -7.50656,1.99122 -13.60424,11.40868 -9.0625,18.6875 2.31485,2.93328 6.76545,1.1711 8.9375,0.3125 2.38503,3.56959 6.85707,-0.33169 5.53125,-3.78125 0.18706,-3.78446 -0.9705,-8.88254 -5.78125,-8.65625 2.15815,0.863 5.67664,-0.088 5.40625,-3.3125 -0.11127,-2.36716 -2.99537,-3.47874 -5.03125,-3.25 z m -4.5,12.90625 c 3.4468,0.15288 -1.04404,2.66771 0,0 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4094"
-           d="m 246.84375,-453.4375 c -4.82383,2.1567 -1.46203,9.0802 -1.875,13.09375 0.24753,3.98896 6.14068,3.35337 6,-0.5 0.0558,-3.62692 2.92874,-5.71903 5.625,-7.5 1.68932,-4.73573 -5.01763,-4.42544 -6.65625,-2.9375 -0.21855,-1.38807 -1.70475,-2.52195 -3.09375,-2.15625 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4096"
-           d="m 264.5625,-454.03125 c -6.95768,0.0145 -12.72827,9.58875 -6.53125,14.5625 5.59032,4.43185 13.48828,-0.97881 13.53125,-7.53125 0.87748,-4.43888 -2.54141,-7.85891 -7,-7.03125 z m 1.28125,5.9375 c 0.3779,2.27679 -3.00975,6.56694 -4.3125,3.125 0.0862,-1.97969 2.44855,-3.38871 4.3125,-3.125 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4098"
-           d="m 281.59375,-453.65625 c -3.90398,1.15746 -2.44282,6.61607 -5.25,9.15625 -0.54675,-2.99722 1.18363,-9.6597 -3.96875,-8.8125 -3.67302,2.71027 -1.67642,8.60355 -1.28125,12.5 0.72782,4.7152 6.79131,3.34031 8.6875,1.40625 2.14102,4.19511 7.5872,-0.22786 4.84375,-3.6875 -1.85497,-3.30561 3.00763,-10.40269 -3.03125,-10.5625 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4100"
-           d="m 286.78125,-454.03125 c -4.04961,2.78361 -0.26246,8.93348 -0.9375,13.0625 -0.43547,4.0568 5.91903,4.80332 5.53125,0.46875 -0.12492,-1.62892 2.04525,-7.19245 1.59375,-2.90625 -1.50268,3.25434 2.39913,7.38039 4.9375,4.03125 0.88692,-4.39785 1.57003,-10.25883 -1.6875,-13.90625 -2.04777,-2.21296 -5.14041,0.98123 -6.0625,0.96875 -0.37527,-1.39758 -2.02481,-2.29358 -3.375,-1.71875 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4102"
-           d="m 310.78125,-462.46875 c -4.00741,1.40455 -1.31626,7.76425 -2.84375,9.59375 -7.71843,-3.39937 -14.81668,10.84623 -6.34375,14.21875 2.33696,1.56639 5.84979,-0.56621 7.3125,-0.21875 1.69466,4.06632 7.33857,0.529 5.5625,-3.15625 -0.42764,-6.85552 0.10576,-13.73113 0.0937,-20.59375 -1.2336,0.14562 -2.59743,-0.23379 -3.78125,0.15625 z m -4.71875,15.3125 c 3.99402,1.1668 -3.82177,5.28368 -2.0625,1.34375 0.60395,-0.31573 1.31084,-1.81408 2.0625,-1.34375 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4104"
-           d="m 315.46875,-459.3125 c -4.56266,2.78015 -0.9431,9.50273 -1.52611,13.81021 -0.46693,2.9575 0.51108,9.79973 4.86986,6.93979 1.97974,-2.05868 0.57072,-5.41585 2.4375,-7.5 -0.40567,2.86652 0.12996,10.25594 4.625,7.0625 1.60115,-3.63606 1.75459,-8.74332 0.0937,-12.4375 -1.40822,-2.68036 -5.18169,-1.98173 -6.65625,-0.78125 -0.30429,-2.46825 0.29673,-7.96133 -3.84375,-7.09375 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4106"
-           d="m 334.625,-454.03125 c -6.96817,0.0231 -12.70448,9.57958 -6.53125,14.5625 5.58741,4.43234 13.48962,-0.96695 13.53125,-7.53125 0.89458,-4.50332 -2.48479,-7.80731 -7,-7.03125 z m 1.28125,5.9375 c 0.46073,2.33222 -3.06278,6.54878 -4.3125,3.125 0.12943,-2.02762 2.42087,-3.34216 4.3125,-3.125 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4108"
-           d="m 350.125,-454.59375 c -6.54613,-0.17375 -13.41818,8.88772 -7.53125,14 2.04585,0.9816 0.38655,4.37799 3.25,5.25 3.21871,2.19936 9.99563,3.81168 11.125,-1.1875 -0.51356,-5.01167 -0.83081,-10.06487 -0.34375,-14.9375 -0.80248,-2.65762 -4.08356,-3.3427 -6.5,-3.125 z m 0.0625,5.65625 c -0.15476,1.4222 -2.83358,5.22865 -4,3.6875 0.35654,-1.66148 2.38577,-3.22444 4,-3.6875 z M 350.875,-440 c -0.7189,1.70624 -0.53352,-2.0591 0,0 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4110"
-           d="m 179.78125,-432.5625 c -3.21288,-0.18064 -10.27417,2.91194 -5.6875,6.375 1.62035,0.55777 3.68839,-0.28162 2.78125,2.4375 -0.12038,2.42016 1.60423,6.29453 -2.0625,5.78125 -4.23505,1.91814 -0.16219,7.00982 3.34375,5.8125 3.07837,-0.41793 9.55053,-2.37183 6.65625,-6.5 -2.28285,-1.53854 -1.42528,-6.39879 -0.90625,-8.25 3.77589,-1.52554 0.87858,-6.87067 -2.65625,-5.6875 -0.48934,0.019 -0.98054,-0.0285 -1.46875,0.0312 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4112"
-           d="m 188.9375,-428.34375 c -4.59228,1.81286 -0.9354,8.01926 -1.5625,11.59375 -1.11129,3.39814 3.88983,7.67877 5.46875,3.28125 0.0618,-1.62066 0.95962,-5.7105 1.78125,-5.625 -1.36365,3.0899 0.94594,9.05921 4.625,5.90625 1.6854,-3.74111 1.2057,-8.78926 -0.125,-12.6875 -1.32014,-3.15222 -5.59023,-2.72745 -7.1875,-0.0625 -0.12116,-1.47262 -1.54344,-2.66585 -3,-2.40625 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4114"
-           d="m 207.65625,-437.09375 c -5.141,0.78406 -3.55775,7.43299 -4.875,10.3125 -3.80031,-0.13848 -4.76283,5.79084 -0.5625,5.84375 2.36862,0.40337 0.30129,5.01252 2,7.0625 2.44285,3.82949 7.35884,-0.62166 4.875,-4 -0.8644,-3.3551 0.66963,-4.54416 3.40625,-5.71875 2.02159,-2.19486 -1.05924,-4.88791 -3.4375,-4.0625 0.009,-2.19307 0.1486,-5.53622 1.40625,-2.09375 4.11404,3.01078 6.81126,-4.84737 2.53125,-6.5 -1.58238,-0.93411 -3.56373,-0.86604 -5.34375,-0.84375 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4116"
-           d="m 219.84375,-427.78125 c -6.88819,1.14827 -8.68581,11.51993 -2.4375,14.625 4.66722,2.86976 13.14801,-1.77582 11.5,-7.375 -1.75072,-1.45927 -0.70855,-5.10322 -3.65625,-6.25 -1.57822,-1.01226 -3.58446,-1.05711 -5.40625,-1 z m 2.21875,9.46875 c -1.59854,0.79732 -2.29242,-7.6e-4 0,0 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4118"
-           d="m 233.59375,-427.375 c -4.09723,0.3059 -8.16041,6.17828 -4.21875,9 -3.63841,2.86069 0.80275,7.75636 4.53125,7.03125 6.01388,0.83605 6.88473,-8.62487 3.65625,-9.75 6.0259,-1.12101 0.0829,-8.58309 -3.96875,-6.28125 z m 1.6875,5.3125 c 2.07093,0.93234 -1.14555,0.0206 0,0 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4120"
-           d="m 245.1875,-435.96875 c -3.84407,0.14906 -2.31128,5.17785 -2.96875,6.75 -4.25349,-0.46862 -5.0142,6.51169 -0.40625,5.84375 2.3495,-0.0323 1.24559,4.91355 1.875,6.96875 -1.08351,4.06515 5.42133,6.66479 6.34375,2.125 0.43592,-3.36292 -2.26095,-8.22797 -0.1875,-10.59375 4.40646,-0.49335 2.73574,-6.85287 -1.3125,-5.5625 -0.21417,-2.19931 -0.14043,-5.85704 -3.34375,-5.53125 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4122"
-           d="m 259.28125,-427.78125 c -3.30282,0.0801 -10.05809,3.17174 -5.96875,6.84375 -1.47538,1.7021 -2.69774,6.97684 1.09375,8.03125 2.69294,1.54568 5.29541,-1.33297 7.46875,0.53125 5.37093,-0.76204 2.74622,-8.23668 2.65625,-11.96875 -0.73277,-2.21557 -2.86783,-3.80531 -5.25,-3.4375 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4124"
-           d="m 270.09375,-435.96875 c -3.83527,0.15828 -2.3385,5.09178 -2.96875,6.75 -4.24724,-0.45118 -5.03636,6.49168 -0.40625,5.84375 2.39012,0.16382 1.30993,5.2262 1.875,7.5625 -0.73397,4.63859 7.06516,5.41004 6.375,0.46875 0.0441,-2.89667 -2.19262,-7.64257 -0.21875,-9.5625 4.40039,-0.43612 2.72082,-6.84122 -1.3125,-5.53125 -0.21417,-2.19931 -0.14043,-5.85704 -3.34375,-5.53125 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4126"
-           d="m 279.0625,-433.8125 c -2.76784,0.67865 -2.25078,4.62291 -0.625,5.65625 -3.57841,3.44307 -0.69244,9.45068 -1,13.84375 1.84055,3.54027 7.05303,0.8645 5.8125,-2.78125 -0.17184,-3.57219 0.1674,-8.37596 -1.53125,-11.03125 2.99921,-2.00244 0.8836,-6.7967 -2.65625,-5.6875 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4128"
-           d="m 291.9375,-428.21875 c -7.24185,-0.48133 -13.569,9.53832 -7.03125,14.65625 5.85214,4.46013 13.75421,-1.46516 13.46875,-8.15625 0.55273,-4.03944 -2.40875,-7.03585 -6.4375,-6.5 z m 0.6875,5.96875 c 0.66217,2.47573 -3.61506,6.55156 -4.34375,2.90625 0.47779,-1.87806 2.42188,-3.18189 4.34375,-2.90625 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4130"
-           d="m 300.53125,-428.34375 c -4.99252,2.06777 -0.7955,8.96414 -1.53125,13.0625 -0.48902,4.03483 5.94587,5.11386 5.59375,0.5625 -0.19771,-1.62039 2.00648,-7.15466 1.5625,-2.875 -1.55304,3.27899 2.35842,7.42199 4.9375,4.03125 0.89976,-4.3778 1.60861,-10.42166 -1.8125,-13.9375 -1.97955,-2.08711 -5.08938,0.97154 -5.875,1.125 -0.34991,-1.23589 -1.58539,-2.19315 -2.875,-1.96875 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4132"
-           d="m 315.59375,-428.09375 c -3.70106,1.50903 -1.17273,6.49011 -1.15625,9.5 -1.49057,1.95119 -1.51523,5.86491 1.84375,6.1875 3.96038,1.04824 4.79578,-4.5289 3.15625,-6.71875 0.33397,-3.143 3.91748,-9.2795 -1.4375,-8.875 -0.81989,0.0696 -1.59892,-0.31851 -2.40625,-0.0937 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4134"
-           d="m 326.4375,-428.125 c -3.86256,1.39007 -1.23722,6.55049 -1.28125,9.53125 -1.44018,1.97851 -1.45678,5.85629 1.875,6.1875 3.84342,1.0725 4.90112,-4.5485 3.125,-6.6875 0.28365,-3.06319 4.03103,-9.43221 -1.40625,-8.90625 -0.8122,0.0738 -1.4816,-0.28111 -2.3125,-0.125 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4136"
-           d="m 337.0625,-428.09375 c -3.73996,1.53008 -1.11627,6.42896 -1.15625,9.5 -1.52416,1.97777 -1.45154,5.94876 1.9375,6.21875 3.8472,0.90877 4.74569,-4.5426 3.0625,-6.71875 0.28789,-3.17051 4.00331,-9.36386 -1.4375,-8.90625 -0.81989,0.0696 -1.59892,-0.31851 -2.40625,-0.0937 z"
-           style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-      </g>
-      <text
-         sodipodi:linespacing="125%"
-         id="text3993"
-         y="-440.30981"
-         x="257.99982"
-         style="font-size:20.66493224999999967px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Purisa;-inkscape-font-specification:Purisa Bold;fill:#ffffff;fill-opacity:1"
-           y="-440.30981"
-           x="257.99982"
-           id="tspan3995"
-           sodipodi:role="line">Cute Groundhog</tspan><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Purisa;-inkscape-font-specification:Purisa Bold;fill:#ffffff;fill-opacity:1"
-           id="tspan3997"
-           y="-414.47864"
-           x="257.99982"
-           sodipodi:role="line">Infestation!!!</tspan></text>
-      <path
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.87091571000000001;stroke-opacity:1"
-         d="m 267.04242,-350.36831 c 2.02342,1.74475 -0.12635,3.54329 -5.57345,4.26121 -4.00089,0.52731 -4.9229,-0.63991 -4.06218,-3.38489 3.72603,-11.88296 11.54035,-9.77593 16.58652,-6.75974 -10.19283,0.88541 -8.78161,4.30484 -6.95089,5.88342 z"
-         id="path3977-5-3"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ssscs" />
-      <path
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.87091571000000001;stroke-opacity:1"
-         d="m 257.10769,-352.48041 c 1.2516,3.72117 2.45265,7.33428 -2.56782,6.94162 -2.66366,-0.20833 -6.01099,0.23345 -5.99563,-2.43827 0.0109,-1.89253 -1.25556,-23.05014 -3.28678,-24.64948 0.82438,-1.84262 10.02483,14.71896 11.85023,20.14613 z"
-         id="path3963-4-7"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ssscs" />
-      <path
-         sodipodi:nodetypes="ssscs"
-         inkscape:connector-curvature="0"
-         id="path3975-7-1"
-         d="m 262.80009,-348.27508 c -0.84952,2.53311 1.92714,2.47572 4.58794,2.23375 2.66081,-0.24199 3.96845,-1.29543 3.39912,-3.90585 -3.21525,-14.74228 -5.68957,-14.79842 -6.88241,-18.89133 1.96655,5.26035 -0.52942,18.84814 -1.10465,20.56343 z"
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.87091571000000001;stroke-opacity:1" />
-      <path
-         sodipodi:nodetypes="csscsc"
-         inkscape:connector-curvature="0"
-         id="path3969-2-2"
-         d="m 246.66253,-346.29967 c 0.85712,1.74722 3.46745,1.38844 4.87624,1.48195 5.17109,0.34322 2.8547,-6.04183 0.34597,-8.33799 -2.97113,-2.71939 -11.91467,-11.55282 -15.14191,-12.26215 2.83326,2.35843 8.33318,15.50938 9.91968,19.11816 z"
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.87091571000000001;stroke-opacity:1" />
-    </g>
-    <g
-       id="0sign_hits"
-       transform="matrix(1.5390979,0,0,1.5390979,-6.5847589,444.36219)"
-       inkscape:label="#g4014">
-      <path
-         style="fill:#ac7905;fill-opacity:1;stroke:#000000;stroke-width:1.25000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m 469.31487,-436.19026 0,72.79425 -2.40418,0.53122 -2.95912,0.85805 -2.52096,0.65028 -2.68297,-1.25424 -2.55819,-1.10771 -3.05108,0.3224 0,-72.79425 2.71644,1.0213 5.06542,-2.34898 5.26968,2.85962 z"
-         id="path3989"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccccccccccccc" />
-      <path
-         sodipodi:nodetypes="cccccccccccccccc"
-         inkscape:connector-curvature="0"
-         id="path3991"
-         d="m 399.884,-464.65899 115.63147,0 -1.09403,6.19387 2.42047,8.47821 -5.73074,8.92139 5.6826,9.60696 -4.02746,2.82964 5.06168,18.48778 -2.31252,11.31366 -115.63147,0 2.80556,-9.04928 -8.03985,-15.50207 7.14592,-14.34822 -5.4942,-11.96763 3.61248,-11.16513 z"
-         style="fill:#946804;fill-opacity:1;stroke:#000000;stroke-width:1.25000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <path
-         transform="translate(296.50071,-103.94765)"
-         d="m 164.40573,-304.87988 c 0,0.34863 -0.28262,0.63125 -0.63125,0.63125 -0.34864,0 -0.63126,-0.28262 -0.63126,-0.63125 0,-0.34863 0.28262,-0.63125 0.63126,-0.63125 0.34863,0 0.63125,0.28262 0.63125,0.63125 z"
-         sodipodi:ry="0.63125068"
-         sodipodi:rx="0.63125068"
-         sodipodi:cy="-304.87988"
-         sodipodi:cx="163.77448"
-         id="path3993"
-         style="fill:#d39440;fill-opacity:1;stroke:#656565;stroke-width:1.25000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#d39440;fill-opacity:1;stroke:#656565;stroke-width:1.25000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="path3995"
-         sodipodi:cx="163.77448"
-         sodipodi:cy="-304.87988"
-         sodipodi:rx="0.63125068"
-         sodipodi:ry="0.63125068"
-         d="m 164.40573,-304.87988 c 0,0.34863 -0.28262,0.63125 -0.63125,0.63125 -0.34864,0 -0.63126,-0.28262 -0.63126,-0.63125 0,-0.34863 0.28262,-0.63125 0.63126,-0.63125 0.34863,0 0.63125,0.28262 0.63125,0.63125 z"
-         transform="translate(296.50071,-150.70462)" />
-      <g
-         id="g4278"
-         transform="translate(0,2.598925)"
-         style="fill:#000000;fill-opacity:1">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4253"
-           d="m 435.375,-461.59375 c -4.99081,2.30289 -1.62652,9.49086 -2.42073,13.62385 0.88425,3.72378 -1.3085,11.27465 3.98323,12.2824 6.12028,-0.6152 -0.3648,-10.36902 5.34375,-10.71875 3.33762,-1.24623 0.28279,5.7567 2.96875,7.65625 3.16399,2.40498 6.50833,-1.53992 5.0625,-4.78125 -0.96141,-4.88968 1.42432,-11.17577 -1.78125,-15.28125 -3.35392,-1.91243 -5.35672,2.28016 -5.0625,5.125 -3.4612,1.69944 -5.21343,1.16898 -4.5625,-3.09375 -0.13886,-2.18091 -0.48389,-5.47348 -3.53125,-4.8125 z"
-           style="font-size:24.51045798999999903px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4255"
-           d="m 453,-461.75 c -3.38574,0.89389 -2.19752,5.81864 0.15625,6.40625 -4.83385,1.9925 -1.57683,8.75394 -2.1875,12.59375 -1.0291,3.39142 2.4586,7.20493 5.5625,4.59375 2.21144,-4.30048 0.47557,-10.22282 0.125,-14.96875 -0.14964,-1.76284 -3.03999,-2.08702 -0.34375,-2.875 2.51301,-2.55681 0.17324,-6.72527 -3.3125,-5.75 z"
-           style="font-size:24.51045798999999903px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4257"
-           d="m 464.34375,-464.25 c -4.19411,0.36349 -2.71044,5.57136 -2.875,7.90625 -4.04085,-0.80473 -6.84678,5.47365 -2.15625,6.28125 2.75228,-0.76988 3.38781,0.4301 3.04969,3.36869 0.26955,3.58767 -0.0767,12.36758 6.04406,9.81881 3.25906,-3.35176 -0.53254,-8.57924 0.15625,-12.71875 -1.02058,-2.94039 5.94185,-2.54626 3.875,-6.53125 -0.96429,-2.8855 -5.69314,-0.01 -4.73543,-3.71263 -0.009,-2.07626 -0.73488,-4.7792 -3.35832,-4.41237 z"
-           style="font-size:24.51045798999999903px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4259"
-           d="m 478.59375,-454.0625 c -4.64205,0.33791 -9.61186,7.28484 -4.21875,10.28125 -4.53916,2.10066 -0.65002,8.51074 3.53125,7.875 6.09468,1.88351 10.74038,-8.45089 4.34375,-10.9375 -1.52235,-0.54605 -4.24397,-1.36605 -1.4375,-1.65625 2.3514,3.15261 7.21498,-0.92212 4.1875,-3.6875 -1.33016,-2.28645 -4.0642,-2.40651 -6.40625,-1.875 z m -0.78125,11.75 c 3.25428,0.98441 -0.29157,0.93591 0,0 z"
-           style="font-size:24.51045798999999903px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4261"
-           d="m 489.125,-454.03125 c -4.74395,1.56778 -1.72221,10.90873 2.90625,7.34375 3.15821,-2.21783 1.20132,-8.44298 -2.90625,-7.34375 z m 0.71875,9.28125 c -5.35438,0.8238 -2.64639,10.6548 2.1875,7.25 2.36075,-2.22811 2.0257,-7.72752 -2.1875,-7.25 z"
-           style="font-size:24.51045798999999903px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold" />
-      </g>
-      <text
-         sodipodi:linespacing="125%"
-         id="text3999"
-         y="-436.55045"
-         x="432.56479"
-         style="font-size:24.51045798999999903px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-family:Purisa;-inkscape-font-specification:Purisa Bold;fill:#ffffff;fill-opacity:1"
-           y="-436.55045"
-           x="432.56479"
-           id="tspan4001"
-           sodipodi:role="line">Hits:</tspan></text>
-      <path
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.87091571000000001;stroke-opacity:1"
-         d="m 459.12637,-367.68876 c 0.90943,3.81923 1.82578,6.18895 -3.18598,6.68053 -3.1382,0.30781 -6.47495,0.38937 -5.75016,-2.97128 0.399,-1.85004 0.83729,-18.87656 -1.04072,-20.6533 0.98788,-1.76038 8.65051,11.37386 9.97686,16.94405 z"
-         id="path3963-4-9"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ssscs" />
-      <path
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.88432734999999985;stroke-opacity:1"
-         d="m 472.21814,-364.89718 c 0.21887,1.3775 1.11533,3.78334 -5.01301,4.78966 -2.67707,0.43959 -6.09281,-2.39846 -4.81137,-4.78966 6.48893,-12.10851 4.44848,-13.67236 5.44432,-19.62536 3.12918,3.86281 4.01083,17.30146 4.38006,19.62536 z"
-         id="path3971-9-4"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ssscs" />
-      <path
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.74602460999999998;stroke-opacity:1"
-         d="m 464.92765,-363.59839 c 0.41138,0.49905 0.43345,3.77627 -4.64804,3.69454 -4.04851,-0.0651 -4.60315,-1.65441 -4.64804,-3.69454 -0.22925,-10.42266 7.64945,-20.06177 7.71257,-17.75366 -2.69471,2.55928 0.81742,16.8243 1.58351,17.75366 z"
-         id="path3973-4-9"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ssscs" />
-    </g>
-    <g
-       id="0n0"
-       transform="translate(244.12582,400.73354)"
-       inkscape:label="#g3374">
-      <path
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         d="m 295.96875,-463.6875 c -7.41455,1.66507 -12.63759,8.15114 -14.625,15.1875 -3.77839,6.10183 -2.80004,15.5801 4.5625,18.375 9.6806,3.16311 17.93893,-6.43617 19.84375,-15.09375 2.50773,-7.66418 0.006,-18.71114 -9.78125,-18.46875 z m -1,14.4375 c -0.58429,2.64985 -1.93047,4.9785 -3.5,7.125 0.88584,-2.07046 2.03658,-6.23956 3.5,-7.125 z"
-         id="path3293"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 295.86243,-441.12791 c 0.0278,-0.30602 0.31993,-0.95981 0.87636,-1.96137 0.58422,-1.00154 1.15455,-2.29521 1.71098,-3.88101 0.5564,-1.58578 0.83461,-3.26894 0.83463,-5.04949 -2e-5,-1.27974 -0.20868,-2.17001 -0.62597,-2.67081 -0.41733,-0.52857 -1.01548,-0.79287 -1.79445,-0.79289 -0.72336,2e-5 -1.41888,0.19477 -2.08656,0.58424 -1.47452,0.80682 -3.14377,2.93512 -5.00776,6.38489 -1.83619,3.4498 -2.75427,6.27361 -2.75427,8.47146 0,0.80681 0.29211,1.50233 0.87636,2.08656 0.58423,0.58424 1.29366,0.87636 2.1283,0.87636 0.9459,0 2.17001,-0.61206 3.67235,-1.83618 1.30757,-1.08501 2.03091,-1.82226 2.17003,-2.21176 m -8.17934,-11.97689 c 0,-0.44511 0.58423,-1.21018 1.75272,-2.29522 1.16847,-1.08499 2.51778,-2.08654 4.04794,-3.00465 1.53013,-0.91807 2.71252,-1.37711 3.54716,-1.37714 1.2241,3e-5 2.46213,0.75119 3.71409,2.25349 1.27973,1.47453 1.91961,3.49154 1.91964,6.05104 -3e-5,3.61673 -1.22414,7.49774 -3.67236,11.64304 -2.58736,4.2566 -5.8424,6.38489 -9.76513,6.38489 -2.2535,0 -4.02012,-1.29367 -5.29987,-3.88101 -0.63989,-1.27975 -0.95983,-2.23957 -0.95982,-2.87946 -1e-5,-1.25193 0.77898,-3.6167 2.33695,-7.09432 1.58578,-3.4776 2.37868,-5.41114 2.37868,-5.80066"
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         id="path3344"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="0n1"
-       transform="translate(247.75452,400.73354)"
-       inkscape:label="#g3378">
-      <path
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         d="m 315.25,-463.90625 c -5.66788,1.4287 -7.15031,8.1294 -10.9375,11.78125 -2.00587,3.98574 2.53715,8.50771 6.5625,7.46875 -0.52677,5.24788 -0.82626,14.47443 6.28125,15 6.0486,-0.76098 5.7595,-8.15543 4.92003,-12.71756 -0.52465,-6.71325 1.54339,-15.20818 -3.29503,-20.65744 -1.04557,-0.69751 -2.2763,-1.05991 -3.53125,-0.875 z"
-         id="path3295"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 316.9048,-433.69973 c -0.47297,0 -0.83464,-0.13911 -1.08502,-0.41732 -0.2504,-0.27821 -0.47296,-0.86244 -0.6677,-1.75271 -0.16693,-0.89027 -0.29213,-2.07265 -0.37558,-3.54716 -0.0557,-1.50232 -0.0835,-3.56107 -0.0835,-6.17624 -10e-6,-3.92273 -0.0835,-6.51007 -0.25039,-7.76202 -0.13912,0.13912 -0.58425,0.69554 -1.3354,1.66925 -0.72335,0.97375 -1.40496,1.75273 -2.04484,2.33695 -0.61206,0.55643 -1.16848,0.83464 -1.66925,0.83463 -0.3895,10e-6 -0.73726,-0.13909 -1.04328,-0.41731 -0.27822,-0.2782 -0.41732,-0.63987 -0.41732,-1.08502 0,-0.36165 0.0835,-0.66768 0.25039,-0.91809 0.16692,-0.25037 0.47295,-0.61204 0.91809,-1.08501 0.47295,-0.47294 0.86244,-0.90416 1.16848,-1.29367 l 1.41886,-1.83618 c 0.33385,-0.38947 0.75116,-1.04326 1.25194,-1.96137 0.52859,-0.91807 1.00154,-1.61359 1.41887,-2.08657 0.44512,-0.50075 0.9459,-0.75114 1.50232,-0.75116 0.0278,2e-5 0.0695,0.0139 0.1252,0.0417 0.0556,3e-5 0.11127,3e-5 0.16692,0 0.72333,0.19477 1.18238,1.07113 1.37714,2.62907 0.13909,1.1685 0.30601,4.06187 0.50077,8.68012 0.19473,4.61827 0.29211,8.30453 0.29212,11.05879 -1e-5,1.64144 -0.0557,2.6569 -0.16692,3.04639 -0.33387,0.5286 -0.75118,0.7929 -1.25194,0.7929"
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         id="path3346"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="0n2"
-       transform="matrix(0.8473467,0,0,1,302.51814,400.73354)"
-       inkscape:label="#g3382">
-      <path
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         d="m 336.53125,-462.84375 c -7.29839,0.72841 -15.87775,5.93299 -16.53125,13.875 0.17938,4.80219 6.89329,6.78935 9.375,2.5 1.83583,-1.9369 4.54114,-4.39769 6.96875,-4.625 -1.67843,6.82659 -8.61341,10.11035 -11.3125,16.125 -0.8697,5.68353 6.55768,8.53328 10.8125,5.78125 6.4543,-1.53539 14.19821,-0.11321 19.90625,-3.5625 4.17317,-4.93915 -2.6415,-11.02602 -7.84375,-9.3125 -3.13716,0.61613 -3.78672,0.16891 -1.75,-2.5625 3.62965,-5.58489 3.8309,-15.68721 -3.90625,-17.75 -1.85142,-0.55507 -3.8,-0.62192 -5.71875,-0.46875 z"
-         id="path3297"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 349.03399,-437.99806 c 1.33538,0 2.32302,0.11129 2.96293,0.33385 0.66767,0.19475 1.00152,0.63988 1.00155,1.3354 -3e-5,0.47296 -0.0974,0.82072 -0.29212,1.04329 -0.19478,0.19474 -0.57036,0.33385 -1.12675,0.41731 -0.55644,0.0556 -1.18241,0.0835 -1.8779,0.0835 -0.66773,0 -1.65537,0.0556 -2.96293,0.16693 -1.3076,0.11128 -2.643,0.27821 -4.0062,0.50077 -1.64146,0.27821 -3.28289,0.51469 -4.9243,0.70943 -1.61363,0.19475 -2.76819,0.33385 -3.4637,0.41732 -0.66771,0.0835 -1.09894,0.20865 -1.29367,0.37558 -0.3895,0.27821 -0.89028,0.41731 -1.50233,0.41731 -0.63989,0 -1.23804,-0.16692 -1.79444,-0.50077 -0.52861,-0.33385 -0.79291,-0.72335 -0.7929,-1.16848 -10e-6,-0.58424 0.58423,-1.50233 1.75272,-2.75427 1.16846,-1.25193 2.14219,-2.1422 2.92119,-2.6708 1.02936,-0.72334 2.48995,-2.75426 4.38179,-6.09277 1.91962,-3.36631 2.87944,-6.09276 2.87946,-8.17934 -2e-5,-0.66768 -0.20868,-1.12673 -0.62597,-1.37713 -0.38951,-0.25037 -1.23805,-0.37556 -2.54561,-0.37559 -1.36324,3e-5 -2.69864,0.25041 -4.00621,0.75117 -1.27977,0.50079 -2.37869,1.11285 -3.29677,1.83618 -0.9181,0.72336 -1.75273,1.4467 -2.50388,2.17002 -0.75117,0.72336 -1.39105,1.33542 -1.91964,1.83618 -0.5286,0.50079 -0.90418,0.75118 -1.12675,0.75117 -0.0278,-0.0556 -0.0974,-0.0974 -0.20865,-0.1252 -0.11129,-0.0278 -0.20866,-0.0695 -0.29212,-0.12519 -0.0557,-0.0556 -0.11129,-0.22255 -0.16693,-0.50078 -0.0556,-0.30601 -0.0835,-0.70941 -0.0835,-1.21021 0,-0.63986 0.0974,-1.15455 0.29212,-1.54406 0.22256,-0.38947 0.45904,-0.65377 0.70943,-0.79289 0.2782,-0.13909 0.52859,-0.2921 0.75116,-0.45904 0.25039,-0.16691 0.4034,-0.36166 0.45905,-0.58424 0.0278,-0.19473 0.0974,-0.37556 0.20866,-0.54251 0.13909,-0.19473 0.33384,-0.38947 0.58423,-0.58424 0.25039,-0.22254 0.48686,-0.41729 0.70944,-0.58424 0.25038,-0.1669 0.61205,-0.41729 1.08501,-0.75116 0.47295,-0.33383 0.87635,-0.61204 1.21021,-0.83463 0.63987,-0.50075 1.69706,-1.00152 3.17158,-1.50232 1.47449,-0.52858 3.07419,-0.79287 4.7991,-0.7929 2.86553,3e-5 4.79908,0.75119 5.80065,2.25349 0.47293,0.72337 0.70941,1.66928 0.70943,2.83773 -2e-5,2.19787 -0.54253,4.38181 -1.62752,6.55182 -2.44825,4.84084 -4.75738,8.34627 -6.92739,10.51629 5.34158,-0.83462 9.66773,-1.25194 12.97843,-1.25194"
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         id="path3348"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="0n3"
-       transform="translate(250.09419,400.73354)"
-       inkscape:label="#g3386">
-      <path
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         d="m 377.09375,-463.875 c -6.81991,2.22016 -16.47173,0.23414 -21.15625,6.46875 -1.44399,3.86226 2.52949,7.13391 5.34375,8 -1.43176,1.89123 0.99316,4.71257 0.375,5.71875 -6.78227,3.71624 -2.14941,15.06957 5.15625,14.4375 10.78711,1.17618 21.20768,-11.16842 15.34375,-21.21875 -3.00436,-2.20955 1.9592,-4.632 0.96875,-7.78125 -7e-4,-3.18213 -2.93486,-5.74804 -6.03125,-5.625 z m -5.15625,20.9375 c -0.0128,1.65889 -3.97754,2.87626 -2.84375,1.03125 0.98883,-0.12391 2.19431,-0.70489 2.84375,-1.03125 z"
-         id="path3299"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 367.29601,-433.19896 c -3.1994,0 -4.7991,-1.62752 -4.7991,-4.88256 0,-1.4745 0.44513,-2.21176 1.33541,-2.21176 0.69551,0 1.30757,0.34776 1.83617,1.04328 0.55641,0.69553 0.83462,1.40496 0.83463,2.1283 -1e-5,0.25039 0.0417,0.4034 0.12519,0.45904 0.11128,0.0278 0.41731,0.0417 0.91809,0.0417 1.33539,1e-5 2.58733,-0.25038 3.75582,-0.75116 1.19628,-0.52859 2.017,-0.98764 2.46215,-1.37713 0.47294,-0.38949 0.84852,-0.75116 1.12674,-1.08502 0.66769,-0.77898 1.00154,-2.04482 1.00156,-3.79755 -2e-5,-1.64142 -0.22259,-2.71252 -0.66771,-3.21331 -0.41733,-0.50076 -1.08503,-0.75115 -2.0031,-0.75116 -1.41888,1e-5 -2.68473,0.31995 -3.79755,0.95982 -1.11285,0.61207 -1.91965,0.9181 -2.42041,0.91809 -0.66772,1e-5 -1.1824,-0.18083 -1.54406,-0.54251 -0.36168,-0.36166 -0.54252,-0.79288 -0.54251,-1.29367 -10e-6,-0.36166 0.0974,-0.66769 0.29212,-0.91809 0.19474,-0.25037 0.45903,-0.37557 0.79289,-0.37558 0.47295,-0.11127 1.55796,-1.02936 3.25505,-2.75427 1.69706,-1.75269 2.78207,-2.93508 3.25504,-3.54716 -1.02939,0.0835 -2.42043,0.25041 -4.17313,0.50077 -1.72491,0.25041 -3.24114,0.48689 -4.54872,0.70944 -1.30758,0.19476 -2.01701,0.29214 -2.12829,0.29212 -0.36168,2e-5 -0.62598,-0.0835 -0.7929,-0.25039 -0.16693,-0.19473 -0.2643,-0.41729 -0.29212,-0.6677 l -0.0417,-0.33385 c -0.25039,-0.0278 -0.47296,-0.11127 -0.6677,-0.25039 -0.16693,-0.1669 -0.25039,-0.37556 -0.25039,-0.62597 0.0556,-0.30601 0.19475,-0.52857 0.41732,-0.6677 0.38948,-0.25037 1.37712,-0.5564 2.96292,-0.91809 1.58578,-0.36165 3.17157,-0.66768 4.75737,-0.91809 1.6136,-0.27818 3.24112,-0.54248 4.88256,-0.79289 1.64142,-0.25037 2.53168,-0.38947 2.67081,-0.41732 1.3632,-0.25036 2.07263,-0.37555 2.12829,-0.37558 0.47294,3e-5 0.90416,0.26432 1.29367,0.7929 0.4173,0.5008 0.62595,0.94593 0.62597,1.3354 -2e-5,0.19477 -0.1113,0.47298 -0.33385,0.83462 -0.22259,0.33388 -0.55644,0.75119 -1.00155,1.25194 -0.44515,0.47298 -0.87638,0.91811 -1.29367,1.33541 -0.38951,0.38951 -0.9042,0.90419 -1.54406,1.54405 -0.6399,0.6399 -1.12676,1.14068 -1.46059,1.50233 l 0.58424,0 c 0.97371,2e-5 2.0309,0.5147 3.17158,1.54406 1.14063,1.00157 1.86397,2.04485 2.17002,3.12985 0.11126,0.44515 0.16691,1.00156 0.16693,1.66925 -2e-5,2.39261 -0.62599,4.54872 -1.87791,6.46836 -1.00157,1.55797 -2.54563,2.82382 -4.63218,3.79755 -2.08658,0.97373 -4.08968,1.46059 -6.00931,1.46059"
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         id="path3350"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="0n4"
-       transform="translate(253.24872,400.73354)"
-       inkscape:label="#g3390">
-      <path
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         d="m 398.6875,-463.125 c -7.92172,4.04268 -13.61591,11.99097 -17.6875,19.6875 -1.06152,5.67823 6.3164,8.35198 10.59375,6 2.18212,-0.38428 0.19832,3.83475 2.03125,5.09375 2.22306,5.21955 10.68979,3.99888 10.90625,-1.84375 0.66878,-2.25195 -2.99937,-6.7831 1.03125,-6.25 7.21548,-1.68704 3.67789,-12.42296 -2.53125,-11.5625 1.16698,-3.13609 3.7227,-7.61103 -0.25,-10.03125 -1.12852,-0.92626 -2.66358,-1.24673 -4.09375,-1.09375 z"
-         id="path3301"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 389.96198,-444.25776 c 1.50232,-0.22255 2.64297,-0.40339 3.42197,-0.5425 0.77897,-0.1391 1.36321,-0.29211 1.75271,-0.45905 0.4173,-0.16691 0.65378,-0.30602 0.70944,-0.41731 0.0835,-0.11127 0.12518,-0.30602 0.12519,-0.58424 -1e-5,-0.36166 -0.0974,-1.4884 -0.29212,-3.38024 l -0.16692,-1.50232 -1.08502,1.12674 c -1.64144,1.75273 -3.12986,3.67237 -4.46525,5.75892 m -3.00465,3.4637 c -1.33541,10e-6 -2.00311,-0.47295 -2.00311,-1.41886 0,-0.75116 0.55642,-1.91963 1.66926,-3.50543 1.89181,-2.53169 3.99228,-5.09121 6.30143,-7.67857 2.30912,-2.58731 3.78362,-4.07573 4.42351,-4.46525 0.22256,-0.11126 0.37557,-0.1669 0.45905,-0.16692 0.13909,2e-5 0.33383,-0.18081 0.58424,-0.54251 0.25037,-0.38947 0.59813,-0.58421 1.04328,-0.58424 0.47294,3e-5 0.84852,0.16695 1.12675,0.50078 0.30601,0.33387 0.45902,0.68163 0.45904,1.04328 -2e-5,0.66773 -0.36169,1.36325 -1.08501,2.08657 -0.38951,0.44515 -0.62599,0.87638 -0.70944,1.29367 -0.0835,0.41733 -0.12521,1.37715 -0.12519,2.87946 -2e-5,3.19941 0.12518,4.79911 0.37558,4.7991 0.61204,10e-6 1.3493,-0.19473 2.21176,-0.58424 0.86243,-0.38948 1.40494,-0.58422 1.62752,-0.58424 0.6955,2e-5 1.27974,0.19476 1.75272,0.58424 0.50075,0.38951 0.75114,0.83464 0.75116,1.3354 -2e-5,0.38951 -0.16695,0.73727 -0.50077,1.04329 -0.30606,0.27822 -0.7651,0.44514 -1.37714,0.50077 -0.47297,0.0278 -1.46061,0.26431 -2.96292,0.70943 l -1.50233,0.45905 0.16693,3.00465 c 0.0556,1.19631 0.1669,2.19786 0.33385,3.00466 0.1669,0.77899 0.31992,1.34931 0.45904,1.71098 0.13909,0.33385 0.20864,0.57033 0.20866,0.70944 -2e-5,0.36167 -0.19477,0.73725 -0.58424,1.12674 -0.38951,0.41731 -0.82073,0.62597 -1.29367,0.62597 -0.779,0 -1.36324,-0.63988 -1.75272,-1.91964 -0.36168,-1.27976 -0.62598,-2.74035 -0.79289,-4.38179 -0.13912,-1.64142 -0.27822,-2.61515 -0.41731,-2.92119 -0.30605,0.0557 -1.09894,0.20866 -2.37869,0.45904 -1.27977,0.22258 -2.50389,0.43124 -3.67235,0.62597 -1.16849,0.16694 -2.10049,0.2504 -2.796,0.25039"
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         id="path3352"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="0n5"
-       transform="translate(258.16174,400.73354)"
-       inkscape:label="#g3394">
-      <path
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         d="m 426.875,-462.6875 c -5.54945,1.82246 -13.46905,-1.51858 -17.25,4.0625 -1.50696,4.68452 -1.18741,10.3731 0,14.625 -6.08705,3.58718 -1.63962,13.12634 4.15625,14.59375 8.92848,2.67768 18.15896,-5.52712 17.65625,-14.65625 0.26112,-2.98194 -1.22121,-6.22455 -2.375,-8.46875 4.97133,-0.73439 6.4011,-8.15966 1.25,-9.78125 -1.10273,-0.40405 -2.27308,-0.47955 -3.4375,-0.375 z m -7.09375,20 c 0.0899,1.6008 -2.8502,3.15429 -2.875,1.71875 0.9953,-0.38012 2.24531,-1.47666 2.875,-1.71875 z"
-         id="path3303"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 423.94106,-444.7168 c -2e-5,-1.05718 -0.15303,-1.93354 -0.45905,-2.62907 -0.27822,-0.72333 -0.61207,-1.085 -1.00155,-1.08502 -0.58425,2e-5 -1.48843,0.29213 -2.71253,0.87636 -1.19631,0.55643 -2.08658,1.14067 -2.67081,1.75271 -0.89027,0.89028 -1.57188,1.33542 -2.04483,1.33541 -0.41732,10e-6 -0.89028,-0.26429 -1.41887,-0.7929 -0.61206,-0.75115 -0.91809,-2.93509 -0.91809,-6.55182 0,-3.44976 0.29212,-5.32767 0.87636,-5.63372 0.44513,-0.22255 2.36477,-0.38947 5.75892,-0.50078 3.42196,-0.13908 5.60589,-0.306 6.55182,-0.50077 0.66768,-0.16691 1.34929,-0.25037 2.04484,-0.25039 1.08499,2e-5 1.62749,0.31996 1.62752,0.95982 -3e-5,0.25041 -0.0835,0.45907 -0.25039,0.62597 -0.52862,0.52862 -1.93357,1.05721 -4.21486,1.58579 -2.28133,0.50079 -4.20097,0.75118 -5.75893,0.75116 l -0.75116,0 c -1.75272,2e-5 -2.62908,0.47298 -2.62907,1.41887 -10e-6,0.19476 0.0695,0.52861 0.20865,1.00155 0.16692,0.44515 0.25038,0.94592 0.25039,1.50232 -10e-6,0.25041 -0.0417,0.62599 -0.12519,1.12675 l 0.41731,-0.20866 c 2.11438,-1.14063 4.11748,-1.71096 6.00931,-1.71098 0.72333,2e-5 1.26583,0.0835 1.62752,0.25039 0.91807,0.38951 1.65533,1.29368 2.21176,2.71253 0.5564,1.39106 0.83461,2.83774 0.83463,4.34006 -2e-5,0.66771 -0.0696,1.37714 -0.20866,2.1283 -0.61208,3.17158 -1.78055,5.48071 -3.50543,6.9274 -1.69709,1.44668 -4.1175,2.17002 -7.26125,2.17002 -1.08502,0 -1.85009,-0.11128 -2.29522,-0.33385 -0.44514,-0.19474 -0.98765,-0.69552 -1.62752,-1.50232 -1.22412,-1.47451 -1.83618,-2.76818 -1.83618,-3.88102 0,-1.02936 0.29212,-1.54405 0.87636,-1.54406 0.0278,1e-5 0.0835,0.0139 0.16692,0.0417 0.11128,0.0278 0.16692,0.0556 0.16693,0.0835 -1e-5,1e-5 0.0278,0.0278 0.0835,0.0835 0.0835,0.0278 0.1391,0.0696 0.16693,0.1252 0.0278,0.0278 0.0695,0.0835 0.12519,0.16692 0.0835,0.0835 0.15301,0.19475 0.20866,0.33385 0.0556,0.11129 0.1391,0.25039 0.25038,0.41731 0.50078,0.97374 1.14066,1.64144 1.91965,2.00311 0.77897,0.33385 1.91963,0.50078 3.42196,0.50077 1.36321,10e-6 2.37868,-0.25038 3.04639,-0.75116 0.69551,-0.52859 1.3493,-1.50232 1.96137,-2.92119 0.58422,-1.3354 0.87634,-2.8099 0.87636,-4.42352"
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         id="path3354"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="0n6"
-       transform="translate(267.68385,400.73354)"
-       inkscape:label="#g3398">
-      <path
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         d="m 439.8125,-463.40625 c -7.61231,2.0099 -6.45829,11.48364 -9.40625,17.15625 -2.54443,6.63587 0.0112,16.96351 8.5,16.90625 8.75725,0.61694 18.07856,-10.44184 12.125,-18.28125 -1.39344,-2.39782 -5.62354,-2.56864 -6.59375,-3.96875 2.50648,-4.4895 2.46734,-12.3536 -4.625,-11.8125 z"
-         id="path3305"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 445.63417,-442.00427 c -10e-6,-0.61205 -0.36168,-1.09891 -1.08501,-1.46059 -0.72336,-0.36166 -1.34933,-0.5425 -1.87791,-0.54251 -0.52861,0.0278 -1.23804,0.23649 -2.1283,0.62597 -0.86246,0.3895 -1.64144,0.89028 -2.33695,1.50233 -0.44514,0.3895 -0.72335,0.69553 -0.83463,0.91809 -0.11129,0.19475 -0.16693,0.48687 -0.16692,0.87635 -1e-5,1.0572 0.13909,1.91965 0.41731,2.58735 0.30602,0.63988 0.57032,1.04328 0.79289,1.2102 0.25038,0.13911 0.43122,0.20866 0.54251,0.20866 0.36166,0 1.6136,-0.5425 3.75582,-1.62752 0.58422,-0.27821 1.21019,-0.91808 1.87791,-1.91964 0.69551,-1.02937 1.04327,-1.82226 1.04328,-2.37869 m -7.09432,-3.54716 c 0.13909,-0.0556 0.43121,-0.22255 0.87635,-0.50077 0.47295,-0.30602 0.98764,-0.57032 1.54406,-0.7929 0.55641,-0.22255 1.09892,-0.33384 1.62752,-0.33385 0.89026,10e-6 1.8779,0.20867 2.96293,0.62597 1.085,0.41733 1.8918,0.90419 2.42041,1.4606 0.72333,0.80681 1.085,1.85009 1.08502,3.12984 -2e-5,0.52861 -0.0557,0.95983 -0.16693,1.29368 -0.1113,0.33385 -0.31995,0.72334 -0.62597,1.16847 -0.27822,0.44514 -0.50079,0.86245 -0.6677,1.25194 -0.27822,0.61207 -1.07112,1.44669 -2.37868,2.50388 -1.3076,1.0572 -2.36479,1.7249 -3.17158,2.0031 -0.779,0.27821 -1.82228,0.41732 -3.12985,0.41732 -1.61362,0 -2.93511,-0.6677 -3.96448,-2.00311 -1.00155,-1.36322 -1.50233,-2.97683 -1.50232,-4.84083 -10e-6,-0.58423 0.15301,-1.54405 0.45904,-2.87946 0.30603,-1.33539 0.68161,-2.75425 1.12675,-4.25659 0.44513,-1.53014 0.87635,-2.99073 1.29367,-4.38179 0.44513,-1.41885 0.83462,-2.64296 1.16847,-3.67236 0.36167,-1.02935 0.5425,-1.55794 0.54251,-1.58579 0.55641,-1.66923 1.37713,-2.50385 2.46215,-2.50388 0.4173,3e-5 0.77897,0.12522 1.08501,0.37559 0.33384,0.25041 0.50077,0.55644 0.50078,0.91808 -1e-5,0.83465 -0.59816,2.94904 -1.79445,6.34316 -1.16848,3.39417 -1.75272,5.48073 -1.75271,6.2597"
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         id="path3356"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="0n7"
-       transform="translate(275.86494,400.73354)"
-       inkscape:label="#g3402">
-      <path
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         d="m 466.78125,-463.65625 c -5.13699,0.54775 -10.18672,1.76182 -15.3125,2.4375 1.37414,5.85362 -2.50272,18.61832 7.625,17.46875 1.16067,0.54206 -1.5075,4.69342 -1.34375,6.65625 -1.76188,5.36626 4.87604,10.53862 9.34375,6.5625 4.80753,-4.55672 2.77023,-12.06181 5.44526,-17.69276 1.32963,-5.542 3.01073,-15.93158 -5.75776,-15.43224 z"
-         id="path3307"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 457.65866,-447.55453 c -0.72335,10e-6 -1.1963,-0.22255 -1.41887,-0.6677 -0.22257,-0.47294 -0.33385,-1.44667 -0.33385,-2.92119 l 0,-6.71875 8.01242,-1.37713 c 1.66924,-0.27818 2.79598,-0.41729 3.38023,-0.41731 1.6136,2e-5 2.4204,0.86247 2.42042,2.58734 -2e-5,0.69554 -0.0835,1.64145 -0.25039,2.83773 -0.16694,1.16849 -0.43124,2.643 -0.79289,4.42352 -0.36169,1.75273 -0.68163,3.29678 -0.95982,4.63217 -0.27823,1.33542 -0.68163,3.14377 -1.21021,5.42507 -0.50079,2.2535 -0.84855,3.82538 -1.04328,4.71564 -0.13912,0.63988 -0.36169,1.09893 -0.66771,1.37714 -0.30604,0.25038 -0.77899,0.37558 -1.41886,0.37558 -0.66771,0 -1.12676,-0.0974 -1.37713,-0.29212 -0.2504,-0.16693 -0.3756,-0.51469 -0.37559,-1.04328 -1e-5,-1.41887 0.59814,-4.2705 1.79445,-8.55492 0.44512,-1.58578 0.9459,-3.82536 1.50233,-6.71875 0.58422,-2.89335 0.91807,-4.8269 1.00155,-5.80065 l -0.50078,0 c -1.22413,2e-5 -2.22568,0.0278 -3.00465,0.0835 l -3.25504,0.20866 0.12519,1.58579 c 0.0278,0.27823 0.0417,0.72336 0.0417,1.3354 -10e-6,1.89184 -0.15302,3.18551 -0.45904,3.88102 -0.27822,0.69553 -0.68162,1.04329 -1.21021,1.04328"
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         id="path3358"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="0n8"
-       transform="translate(280.93776,400.73354)"
-       inkscape:label="#g3406">
-      <path
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         d="m 484.4375,-463.125 c -7.49107,0.15843 -15.85232,8.22546 -11.46875,15.75 2.29319,1.61914 1.70758,2.76687 0.25,4.6875 -2.55702,7.35532 6.02384,14.33075 12.875,13.9375 7.69185,-1.04661 9.9953,-11.44645 5.28125,-16.5 5.82075,-2.37996 8.77684,-11.40252 2.6875,-15.21875 -2.65197,-2.21887 -6.25383,-2.88797 -9.625,-2.65625 z"
-         id="path3309"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 482.45685,-443.25621 c -0.2504,1e-5 -0.6538,0.33386 -1.21021,1.00156 -0.52861,0.6677 -0.80682,1.32149 -0.83463,1.96137 -1e-5,0.86245 0.5425,1.76663 1.62752,2.71253 1.11283,0.94592 2.017,1.41887 2.71254,1.41887 0.4173,0 0.83461,-0.20866 1.25194,-0.62597 0.44512,-0.44513 0.66768,-0.91809 0.6677,-1.41887 -2e-5,-0.77898 -0.58425,-1.80835 -1.75272,-3.08811 -1.16848,-1.30758 -1.9892,-1.96137 -2.46214,-1.96138 m 8.2628,-10.64148 c -2e-5,-0.16691 -0.26432,-0.47294 -0.7929,-0.91809 -0.52861,-0.44511 -1.22413,-0.87634 -2.08656,-1.29367 -0.86247,-0.41729 -1.66927,-0.62595 -2.42042,-0.62597 -0.1113,2e-5 -0.22258,0.0139 -0.33385,0.0417 -0.1113,0.0278 -0.22258,0.0835 -0.33385,0.16693 -0.1113,0.0557 -0.3756,0.19476 -0.7929,0.41731 -0.41732,0.19477 -0.89028,0.41733 -1.41886,0.6677 -0.61207,0.27823 -1.12676,0.70945 -1.54406,1.29367 -0.3895,0.55644 -0.63989,1.02939 -0.75116,1.41887 -0.0835,0.36169 -0.12521,0.63989 -0.1252,0.83462 -10e-6,0.41733 0.29211,1.05721 0.87636,1.91964 0.58423,0.83464 1.11283,1.47452 1.58579,1.91964 0.11127,-0.0834 0.65378,-0.51467 1.62752,-1.29367 1.00154,-0.80679 1.97527,-1.55795 2.92119,-2.25349 0.97372,-0.6955 1.79443,-1.18237 2.46215,-1.4606 0.75115,-0.33383 1.12673,-0.61203 1.12675,-0.83462 m -5.84239,21.19951 c -0.9181,-0.0278 -1.90574,-0.33385 -2.96292,-0.91809 -1.0572,-0.61206 -1.96138,-1.29367 -2.71254,-2.04484 -0.75117,-0.77898 -1.39105,-1.51623 -1.91964,-2.21176 -0.50078,-0.72333 -0.75117,-1.22411 -0.75116,-1.50232 -1e-5,-0.72334 0.4034,-1.76662 1.21021,-3.12985 0.8068,-1.36321 1.51623,-2.29521 2.12829,-2.796 0,-0.2782 -0.22257,-0.63987 -0.6677,-1.08501 -0.41732,-0.44513 -0.87636,-0.89026 -1.37713,-1.33541 -0.50078,-0.44512 -0.97374,-1.04326 -1.41886,-1.79444 -0.41732,-0.75115 -0.62598,-1.53013 -0.62597,-2.33696 -10e-6,-1.58577 0.70942,-3.04636 2.12829,-4.38179 1.44668,-1.36319 2.8099,-2.0448 4.08967,-2.04483 0.22256,3e-5 0.40339,-0.0417 0.54251,-0.12519 0.16691,-0.11126 0.30602,-0.20864 0.41731,-0.29212 0.1391,-0.11126 0.44512,-0.20863 0.91809,-0.29212 0.47294,-0.11126 1.09891,-0.1669 1.87791,-0.16693 1.44667,3e-5 2.71252,0.2226 3.79755,0.6677 1.11282,0.41734 1.94744,0.94594 2.50388,1.58579 0.5564,0.61209 0.9598,1.19632 1.21021,1.75272 0.25036,0.52862 0.37556,1.00157 0.37558,1.41886 -0.0278,0.66772 -0.43125,1.44671 -1.21021,2.33696 -0.779,0.86246 -1.62754,1.62754 -2.54561,2.29522 -0.91811,0.66772 -1.76664,1.33542 -2.54561,2.0031 -0.75118,0.6399 -1.12676,1.09894 -1.12675,1.37714 -1e-5,0.27822 0.30602,0.80681 0.91809,1.58579 0.61205,0.75117 1.22411,1.69708 1.83618,2.83773 0.61204,1.14066 0.91807,2.28131 0.91809,3.42196 -2e-5,1.50233 -0.54252,2.74036 -1.62752,3.71409 -1.05721,0.97373 -2.18395,1.4606 -3.38024,1.4606"
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         id="path3360"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="0n9"
-       transform="translate(288.4488,400.73354)"
-       inkscape:label="#g3410">
-      <path
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         d="m 509.9375,-463.28125 c -8.18243,0.59436 -18.10016,8.83045 -13.71875,17.65625 1.90147,3.56583 6.38331,4.62881 10.0625,4.125 -0.86875,4.86151 -0.49665,12.74117 6.0625,12.8125 6.56888,-0.51254 5.71973,-8.59691 4.96875,-13.25 -0.64157,-6.43287 4.86853,-15.56102 -2,-20.125 -1.62914,-0.91519 -3.50552,-1.37847 -5.375,-1.21875 z"
-         id="path3311"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 509.92127,-456.40157 c -1.25195,2e-5 -2.39261,0.25041 -3.42197,0.75116 -1.00156,0.47298 -1.78055,1.07113 -2.33695,1.79445 -0.55643,0.72336 -0.97374,1.41888 -1.25194,2.08657 -0.27822,0.66771 -0.41732,1.25195 -0.41732,1.75271 0,1.05721 0.58423,1.58581 1.75272,1.58579 0.77897,2e-5 1.68315,-0.22255 2.71253,-0.6677 1.02936,-0.44512 2.00309,-1.2241 2.9212,-2.33695 0.91807,-1.11282 1.37711,-2.39258 1.37713,-3.83928 -2e-5,-0.5564 -0.0139,-0.90416 -0.0417,-1.04329 -0.36169,-0.0556 -0.79291,-0.0834 -1.29367,-0.0835 m 2.08656,23.70339 c -0.44515,0 -0.80682,-0.1252 -1.08501,-0.37558 -0.27822,-0.22257 -0.47297,-0.61206 -0.58424,-1.16848 -0.1113,-0.55642 -0.18085,-1.01546 -0.20866,-1.37714 -1e-5,-0.36166 -1e-5,-0.91808 0,-1.66925 -1e-5,-1.25193 0.0417,-2.97682 0.1252,-5.17468 0.11127,-2.22566 0.16691,-3.60279 0.16692,-4.1314 -1e-5,-0.52858 -0.0139,-0.84852 -0.0417,-0.95982 l -1.50233,0.95982 c -0.66771,0.41732 -1.29368,0.70944 -1.87791,0.87636 -0.55642,0.13911 -1.3215,0.20866 -2.29522,0.20865 -1.39105,1e-5 -2.35087,-0.0834 -2.87946,-0.25038 -0.50078,-0.16692 -0.97373,-0.50077 -1.41886,-1.00156 -0.9181,-1.00153 -1.37714,-2.05873 -1.37714,-3.17158 0,-0.41729 0.0974,-0.94589 0.29212,-1.58579 0.55642,-1.72487 1.50233,-3.14373 2.83773,-4.25659 1.3354,-1.14063 3.22721,-2.10045 5.67546,-2.87946 1.44667,-0.44511 2.43431,-0.66768 2.96292,-0.6677 0.33384,2e-5 0.69551,0.0557 1.08502,0.16692 0.4173,0.0835 0.86243,0.25042 1.3354,0.50078 0.50076,0.25041 0.90416,0.65381 1.21021,1.21021 0.33383,0.52862 0.50076,1.1685 0.50077,1.91964 -10e-6,0.61208 -0.12521,1.37715 -0.37558,2.29522 -0.2504,0.91811 -0.50079,2.44825 -0.75116,4.59044 -0.22259,2.1144 -0.33387,4.93822 -0.33385,8.47146 -2e-5,1.1963 0.0139,2.17003 0.0417,2.92119 0.0556,0.72335 0.0974,1.18239 0.12519,1.37714 0.0556,0.16692 0.0974,0.33385 0.1252,0.50077 0.0556,0.13911 0.0834,0.29212 0.0835,0.45905 -2e-5,0.77898 -0.19476,1.3354 -0.58424,1.66925 -0.36169,0.36167 -0.779,0.54251 -1.25194,0.54251"
-         style="font-size:41.73131561000000289px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-         id="path3362"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="0nuke"
-       transform="translate(-688.82289,415.80028)"
-       inkscape:label="#g4420">
-      <g
-         transform="translate(527.44499,0)"
-         id="g3343"
-         inkscape:label="#g5080">
-        <path
-           sodipodi:nodetypes="cccccccccccccccccccccccccccccc"
-           inkscape:connector-curvature="0"
-           id="path3364"
-           d="m 419.64206,77.888594 c -6.2234,1.303508 -10.76172,6.708028 -16.50489,9.245795 -3.89735,1.938151 -10.21519,7.129843 -4.34215,10.842074 7.00394,6.161577 16.80455,5.425097 25.2025,7.955157 -9.02738,9.3599 -3.47494,23.99232 -4.81887,35.53801 -0.69147,23.30969 3.31601,47.0578 0.005,70.02452 -3.78962,2.67112 -6.62294,-4.75858 -9.55981,-6.09549 -4.55552,-8.70208 -3.96345,3.20792 -7.44175,-0.93437 -3.42342,-2.14502 -7.31285,-7.85103 -11.76738,-4.96675 -0.50835,5.06927 4.96392,8.37457 6.72422,12.26405 -7.17074,13.31481 -15.09703,29.62238 -19.24691,44.18505 -0.41947,9.60739 13.00801,16.91279 20.32775,17.55641 30.07061,4.58728 82.73946,5.9384 94.69446,-0.0255 7.23521,-1.30786 19.20836,-5.76058 25.06953,-10.9787 0.66051,-4.89594 -5.51863,-9.06743 -7.27789,-13.63167 -5.858,-9.96285 -12.67547,-19.27868 -22.4844,-25.52924 -3.76699,-2.09108 -3.1056,-7.02777 0.79963,-8.79959 7.05316,-5.13612 -2.66367,-1.33709 -6.39934,-2.87636 0.76731,-4.2987 -2.18654,-6.33004 -5.05305,-3.30565 -4.76258,3.36086 -8.65751,-3.03743 -8.64115,-7.40697 -4.37088,-24.34285 -5.92444,-49.43062 -7.10799,-74.1956 0.34373,-7.37788 0.28422,-15.4269 -5.65274,-20.5929 7.31196,-2.35887 16.32334,-0.41147 22.80884,-4.69931 2.38493,-4.957531 -5.14735,-7.68376 -6.91524,-11.652758 -5.299,-5.600854 -12.02088,-14.867506 -20.93676,-10.926848 -4.64231,0.509219 -8.1874,3.629328 -8.06141,8.519885 -0.74127,2.809487 -1.2221,10.118365 -1.87209,10.506585 -0.99332,-6.479746 -1.14173,-16.752255 -9.85708,-17.230799 -3.8607,-0.93804 -7.64408,-3.000638 -11.69097,-2.789021 z"
-           style="fill:#784421;fill-opacity:1;stroke:none" />
-        <path
-           sodipodi:nodetypes="cccsscscczccsccsssccccscczsccccscccscccczzzcccccccccccccsssccccczzscccccccccscc"
-           inkscape:connector-curvature="0"
-           id="path3366"
-           d="m 404.77992,42.395382 c 0.75008,5.476237 0.57839,11.021867 0.80232,12.951753 -0.1813,3.111343 1.32168,7.693504 1.3372,12.340462 1.89597,3.271941 3.20278,5.898187 4.58469,8.252444 1.3819,2.35427 2.23406,3.948398 2.10132,4.011605 -0.53098,0.252855 -15.55039,-30.383961 -16.27717,-31.546369 -4.79681,0.656491 7.44888,38.441904 6.61111,38.003143 -0.84266,-0.441328 -13.26258,-38.672154 -14.90024,-34.270569 -0.49124,5.258715 9.17583,36.118823 7.72745,35.756987 -7.20643,-22.117737 -14.00492,-35.449054 -9.85025,-17.08635 4.15468,18.362716 6.19192,25.00981 19.00974,31.149672 15.11848,2.14256 11.75207,2.3002 12.22585,4.31725 0.58934,3.30953 0.22344,4.38694 0.76411,7.41192 0.54069,3.02497 0.5208,6.36291 0.38206,9.74247 -0.13812,3.37959 -0.40117,6.79499 -0.42026,9.85709 0.40186,6.00648 0.15526,12.79763 0.45846,19.75238 0.30322,6.95473 0.20277,12.50771 1.10797,21.05137 0.75958,7.16916 0.33036,14.12343 0.49668,20.5165 0.16631,6.39306 0.0879,12.1731 -1.49003,16.81053 -1.16072,1.6204 -3.28163,1.67812 -4.96675,0 -3.47742,-6.1156 -7.6183,-21.04328 -10.50658,-4.92854 -2.73108,-4.35685 -27.16404,-18.70533 -5.88369,4.81393 -2.56318,3.94976 -11.29161,21.74069 -16.16104,33.92671 -4.86943,12.18602 -10.08572,25.79416 11.02493,28.83167 24.08125,2.76182 57.99406,4.01442 85.52577,3.14554 22.04792,-4.15359 37.36588,-10.90407 39.19582,-15.37976 1.82993,-4.47569 -15.4503,-24.24461 -17.30865,-29.5492 -1.85834,-5.30457 -25.94894,-9.36536 -8.71092,-20.5547 -21.30231,4.38611 3.14934,-15.61848 -10.6212,-5.34881 -13.7642,10.66072 -12.77671,-11.63892 -14.82383,-22.12113 -2.50135,-24.39462 -4.29853,-50.8876 -5.38702,-75.37997 -10e-4,-2.17383 -1.32626,-3.35081 0.22924,-4.04981 1.55552,-0.699 5.96861,-0.917 8.17603,-1.06977 3.14769,-0.47491 3.55995,-0.0263 12.66948,-4.004948 17.49498,-14.187028 24.81658,-44.002671 17.55128,-32.710783 -1.28181,1.990306 -2.7093,4.187009 -3.9734,5.76907 -1.26413,1.582073 -16.56018,21.340797 -17.19259,20.936758 -0.63242,-0.404028 6.98089,-11.278745 7.5942,-15.246765 0.89562,-3.210861 11.05163,-27.938009 2.03365,-12.528825 -2.17059,3.438079 -14.68159,22.553247 -15.74914,24.302289 2.46192,-4.341337 0.81935,-0.115535 11.25075,-23.842108 10.43138,-23.726524 -1.17649,-7.946847 -6.59231,2.105315 -5.41583,10.052174 -7.41721,11.190706 -2.66338,-1.419323 4.75384,-12.610029 7.86995,-23.242943 1.42521,-13.817367 C 433.6109,22.54438 466.56505,117.30693 404.77992,42.395382 z m 15.35882,37.097854 c 5.18566,-0.03007 11.29372,3.875153 15.09127,3.591342 5.63798,5.762517 5.14815,29.700902 4.77572,39.848612 -0.22146,3.72092 -0.38334,8.55874 -0.0764,13.83048 0.61228,10.50797 0.78647,22.71724 1.87208,30.90847 1.84573,18.15456 0.62279,40.23357 2.17773,58.3784 2.12899,-0.34081 -1.19438,-24.88477 -0.0381,-32.93337 -0.71255,-27.19588 -4.69787,-60.90996 -3.2857,-64.75876 0.35229,-2.97258 1.21056,-30.793298 5.00496,-45.388449 2.52136,-2.291429 9.24489,-3.467641 10.77402,-3.476725 5.46119,-0.03252 15.05886,11.874364 18.91185,16.963359 12.55944,8.234205 -19.05945,4.728985 -23.61116,10.048115 3.16608,-0.67682 5.06677,2.73216 6.49498,4.81393 1.42821,2.08175 1.89469,2.92241 2.21594,6.03651 0.32123,3.1141 0.63927,5.19209 0.38206,9.9717 -0.13032,2.42161 -0.11456,4.08802 -0.11456,4.08802 0,0 3.19667,35.37742 4.39366,52.91498 2.50833,10.10646 0.25806,36.76433 17.72748,21.58625 -5.29858,12.38068 12.3323,3.35508 2.40696,9.74247 -5.31433,7.21968 5.35043,8.91387 12.03481,15.43513 6.68438,6.52126 11.16761,15.43611 14.03902,19.4439 2.87141,4.00779 6.40976,7.36344 5.58809,11.23037 -1.03431,4.86767 -41.14692,20.74953 -71.90228,14.97136 -30.80247,-4.91626 -84.32031,4.83167 -59.82053,-36.51445 4.3484,-9.80247 7.26089,-17.77539 14.13613,-28.95997 -14.40527,-15.82288 -4.64969,-12.63366 4.27904,-3.01825 3.73348,0.37192 0.48669,-16.04366 8.36707,1.64284 6.09809,7.81184 9.80569,2.41978 9.51323,-0.64949 2.23431,-20.54605 -1.17715,-41.35085 -1.45182,-61.24384 1.47902,-16.47493 -3.907,-35.10676 6.6096,-42.29378 -2.92282,-4.14361 -19.96947,-1.62864 -25.71248,-7.335507 -10.51941,-4.195017 7.79773,-12.53094 13.02817,-15.626157 1.67819,-2.408748 3.83221,-3.233846 6.18933,-3.24749 z"
-           style="fill:#000000;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:none;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-           d="m 444.59558,83.355381 c -1.78823,1.449447 -2.44684,26.202359 -3.62405,27.109059 -0.82024,-4.59683 -0.5225,-24.989783 -4.3219,-27.300956 1.1874,0.492628 6.26349,0.450277 7.94595,0.191897 z"
-           id="path3450" />
-      </g>
-      <g
-         inkscape:transform-center-y="-19.920573"
-         inkscape:transform-center-x="-24.11778"
-         transform="matrix(17.814872,-13.932599,13.932599,17.814872,-36943.519,3901.9483)"
-         inkscape:label="#g5558"
-         id="nukeself">
-        <path
-           style="fill:#495868;fill-opacity:1;stroke:#000000;stroke-width:0.22108166;stroke-linecap:square;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           d="m 1429.1147,895.74958 1.2838,0 0,3.60528 -1.2838,0 -1.0084,-1.80264 z"
-           id="rect4781"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cccccc" />
-        <g
-           style="stroke-width:0.22108166;stroke-miterlimit:4;stroke-dasharray:none"
-           id="g5551">
-          <path
-             transform="translate(1206.0656,583.14713)"
-             d="m 222.40118,314.40509 c 0,1.3269 -1.07567,2.40257 -2.40257,2.40257 -1.3269,0 -2.40257,-1.07567 -2.40257,-2.40257 0,-1.3269 1.07567,-2.40257 2.40257,-2.40257 1.3269,0 2.40257,1.07567 2.40257,2.40257 z"
-             sodipodi:ry="2.4025705"
-             sodipodi:rx="2.4025705"
-             sodipodi:cy="314.40509"
-             sodipodi:cx="219.99861"
-             id="path4758"
-             style="fill:#495868;fill-opacity:1;stroke:#000000;stroke-width:0.22108166;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-             sodipodi:type="arc" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4760"
-             d="m 1424.2692,897.27035 c -0.025,0.17525 -0.043,0.35444 -0.016,0.53924 0.1002,0.68401 0.561,1.20942 1.1586,1.44098 l 0.4821,-1.23904 c -0.1584,-0.0648 -0.2842,-0.21554 -0.3107,-0.39662 -0.01,-0.057 0,-0.1055 0.01,-0.15913 l -1.322,-0.18527 z"
-             style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.22108166;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4773"
-             d="m 1426.5725,897.46977 c 0.033,0.2264 -0.1036,0.42926 -0.3031,0.51815 l 0.5304,1.2488 c 0.7556,-0.31881 1.2271,-1.10932 1.1022,-1.96178 l -1.3295,0.19483 z"
-             style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.22108166;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4777"
-             d="m 1425.8104,895.71799 c -0.3294,0.0483 -0.6168,0.18939 -0.8604,0.37876 l 0.8479,1.04436 c 0.063,-0.0466 0.1245,-0.0813 0.2073,-0.0936 0.1362,-0.0199 0.26,0.0282 0.3628,0.10478 l 0.8226,-1.06804 c -0.01,-0.006 0,-0.0272 0,-0.0309 -0.3777,-0.28113 -0.869,-0.40959 -1.3757,-0.33533 z"
-             style="fill:#ffff00;fill-opacity:1;stroke:#000000;stroke-width:0.22108166;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        </g>
-      </g>
-    </g>
-    <g
-       id="0hair"
-       inkscape:label="#g3776"
-       transform="translate(247.58191,-393.59175)">
-      <path
-         sodipodi:nodetypes="czcccsccc"
-         inkscape:connector-curvature="0"
-         id="rect4414"
-         d="m -110.04834,333.93794 c -0.31707,0.90037 22.673315,-2.61157 31.651722,-6.8758 8.9784,-4.26422 26.981803,-1.96451 26.981803,-1.96451 -8.425126,4.28478 -13.553074,5.87856 -17.64195,9.57701 7.551813,2.36652 18.287876,4.81342 21.005758,10.44807 -4.286795,-2.82328 -20.923565,-1.63777 -28.529531,0.84787 -14.981858,4.89611 -27.202662,-0.31838 -41.251012,5.15685 4.2177,-5.44318 19.33577,-8.44439 26.203475,-10.80483 -3.199346,-3.17875 -6.954342,-4.50997 -18.420265,-6.38466 z"
-         style="fill:#784421;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    </g>
-    <g
-       inkscape:label="#g4948"
-       id="g4433"
-       transform="translate(557.02196,425.32266)">
-      <g
-         id="g4899">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4435"
-           d="m -127.26814,-98.063473 c -5.95186,1.40398 -0.2481,8.635395 0.83368,11.991316 2.24081,5.979379 7.51684,11.886198 8.3357,17.847385 -2.62353,2.574653 -3.85637,8.944892 1.49003,6.877037 7.90915,-3.992679 17.380548,-7.629391 25.750679,-2.559786 14.710026,7.405353 15.841258,31.458759 1.031556,39.199112 -11.072405,7.261846 -26.161435,9.565391 -37.670885,2.139523 -6.17665,-0.315109 -4.38976,8.690863 -5.66148,12.7164549 -0.94084,12.8917246 -4.49017,25.4374211 -8.62747,37.4859171 -0.18176,4.437309 5.04449,3.411524 7.56474,1.833876 -2.83088,2.430046 -3.70633,8.312205 1.49002,6.877038 2.63273,-1.267918 6.95152,-3.715862 7.71757,0.878732 4.75803,7.151288 9.39205,15.415322 17.30721,19.484939 4.29992,-3.203098 0.74888,-9.710755 5.08136,-13.180988 3.140909,-6.068884 10.191174,-8.427262 13.868696,-13.830486 -1.972725,-8.564326 -14.939736,-11.666071 -13.104576,-21.8154903 2.146821,-10.5535319 8.866365,-20.4278567 19.141087,-24.3370707 12.082813,-7.168232 31.492135,-6.969318 38.167556,7.2973006 3.843194,8.609366 1.612626,18.5334504 -2.712609,26.5147994 -2.783605,10.343211 8.396661,16.781267 13.295605,24.222453 1.906107,3.450684 5.739154,8.743875 9.818881,4.775721 5.096515,-3.360738 9.891148,-12.368924 16.9463895,-7.853504 4.8812293,4.089998 0.6420891,-5.684198 2.2711095,-5.671336 2.90321,1.707265 8.7438625,2.162091 6.4185681,-2.597992 C -3.0975928,23.888062 1.8254978,15.835082 0.37730995,8.6834277 -0.42578129,-4.2660885 -2.732688,-17.734836 -8.3718097,-29.369512 c -7.4160253,-3.251487 -14.9369123,3.717525 -22.3503713,4.355457 -15.75635,2.980893 -31.017553,-13.460617 -26.05633,-29.074585 3.216828,-12.382812 19.26194,-12.789614 29.416176,-9.903814 3.432063,0.871495 5.427186,-4.069299 9.133439,-4.805405 6.972875,-4.441368 17.94322288,-7.074191 20.5546998,-15.970008 -1.75343051,-5.640296 -9.2846238,-0.481955 -13.1045768,-0.420264 -6.880265,1.299852 -14.363154,5.152008 -21.089581,4.50828 -4.987141,-2.981198 -7.175629,-11.254574 -13.715868,-10.506584 -0.870688,2.601292 1.61029,6.458094 1.26079,8.137827 -6.070547,-1.486822 -10.619918,-7.335727 -16.886947,-7.832181 -2.431158,1.306637 -0.259836,5.412968 -3.018255,2.445168 -6.150003,-3.794229 -10.120077,6.368345 -16.581301,3.400313 -3.524846,-1.473446 -10.120175,-1.56256 -8.710914,3.858782 -1.754714,1.269067 -5.624231,-3.783287 -7.802204,-4.521679 -2.640293,-3.207585 -7.332647,-1.249763 -5.684427,2.917037 1.28382,2.439435 -0.43856,6.28516 -2.55979,2.483375 -6.81601,-5.755573 -11.84574,-17.051947 -21.70087,-17.76568 z"
-           style="fill:#88aa00;fill-opacity:1;stroke:none" />
-        <path
-           id="path4437"
-           d="m -128.64355,-98.330913 c -4.51196,0.135817 2.29544,10.340448 8.40527,24.451688 6.18099,7.793982 -6.91833,13.648372 -13.44216,13.592126 -5.23207,4.182449 -1.274,17.370668 -0.57225,23.33009 0.70175,5.959421 2.91662,11.423387 3.73706,13.624008 -2.36354,7.471054 -4.22953,37.686653 -12.95176,53.984742 -0.78364,2.15 10.54536,-2.411181 9.32221,-1.872082 -4.38782,1.933884 -6.95345,11.003259 -6.95345,11.003259 0,0 10.61434,-1.323447 11.80558,-4.928543 4.59647,7.445967 -8.51327,36.317065 -7.71756,45.655886 -3.35976,13.007662 1.3099,28.483219 -9.85709,39.581169 -4.19109,5.98004 -13.06696,16.24697 -0.38206,10.77403 1.26048,-1.07252 -11.87855,29.66016 4.50828,12.14943 -0.40913,17.26216 -0.84323,38.42636 -2.25414,55.66579 -0.82682,20.16164 0.76032,40.49146 6.38037,59.90664 13.78536,6.43183 29.36652,8.38891 44.242269,11.19429 23.399471,3.0414 55.390568,2.22068 78.933105,1.75746 10.0766998,-1.48473 17.6899774,-1.33326 30.526405,-3.66775 L 26.777492,265.77 c 0.01663,-12.87961 -1.904726,-26.43766 -0.611292,-39.8104 0.139301,-14.36637 2.377584,-28.40878 1.910288,-42.75225 0.409015,-12.59618 -2.488828,-26.25604 1.298996,-38.35858 -13.068926,-4.8777 13.24164,-12.57597 -1.528231,-10.96506 -13.558485,-0.9744 9.769513,-2.75969 -1.52823,-7.60295 C 22.158348,124.35941 18.803234,105.27744 13.90215,96.862328 9.1427877,86.602326 5.0309552,79.677033 -1.0363033,69.659825 -8.6725899,56.974619 -19.150957,42.346971 -9.8236286,37.032103 c 9.30368386,10.662306 7.9403433,2.249617 4.1644281,-4.164428 12.4187556,5.06073 7.7349981,0.373952 5.11957215,-7.411918 C 1.1734202,19.967625 0.04773787,11.342659 -0.15757072,7.0405799 -0.6866319,3.8952982 -0.45067311,0.36168692 -1.0363033,-3.3131817 -1.6219334,-6.9880381 -3.0312431,-11.050209 -3.5578836,-14.698499 -4.084524,-18.346801 -7.287761,-29.436186 -10.129275,-29.675158 c -2.653777,-0.223183 1.9640626,1.216319 2.8654325,-9.322206 0.4952759,-5.790605 8.23577838,-21.698067 -7.5516255,-23.562121 -20.974088,-5.276715 1.998841,-2.172219 16.79742,-19.725008 6.8775752,-13.316499 -23.42907,2.522815 -31.901812,1.107967 -6.301456,1.936403 -21.16774,-24.636974 -13.945103,-2.52158 -0.356909,1.438456 -1.160013,1.876716 -2.215934,1.719259 2.665368,1.063649 4.703942,1.358634 3.935193,-0.649498 -7.85497,-20.518965 7.643292,5.366571 11.117877,3.9734 12.109332,-1.303532 26.8548245,-8.14756 32.2838695,-7.297301 -1.40701127,11.206967 -29.9253575,16.94837 -26.2473585,21.127787 -2.963413,-1.143508 -6.378646,-1.919235 -9.875927,-2.213102 -3.49728,-0.293868 -11.004389,-0.38643 -14.295992,0.397504 -3.291602,0.783934 -23.128829,-1.202861 -25.475209,0.887035 -2.346379,2.089896 16.725873,8.537039 16.064262,12.161057 -3.292994,13.921202 5.799109,26.450014 17.345417,29.380231 13.730356,5.188 26.006057,-8.034164 32.1692516,-3.935193 6.639538,17.444152 9.98526249,35.9448613 6.6478027,54.252182 10.8172311,17.765142 -13.3910283,-7.980713 -1.6428478,14.594602 -11.9651765,-17.53021 -21.2021805,15.848031 -26.9732685,2.330551 -5.02904,-9.322401 -21.273824,-17.286561 -13.104576,-29.036379 6.819954,-12.4953264 3.013047,-30.465813 -11.652758,-35.07289 -12.760407,-5.364578 -27.197857,1.753491 -38.358585,9.704263 -6.141234,9.0486654 -14.650084,20.6160621 -5.23419,30.717433 4.023256,3.431245 9.27164,7.45285 9.054766,10.124527 -0.203744,2.509954 -5.184247,3.161347 -7.985005,6.456774 -2.106125,2.478118 -4.701045,5.001887 -6.494975,7.832182 -1.79394,2.830295 -2.82959,5.957825 -1.9867,9.704263 -1.40702,5.845005 -12.55493,-10.625151 -15.66437,-14.250749 -3.55558,-5.371987 0.37795,-10.417825 -15.20589,-2.101317 18.23377,-24.24188 -12.28037,6.274792 0.26744,-17.001564 2.48369,-8.538738 3.41974,-14.8286165 4.43187,-18.6444124 1.96387,-7.4038367 0.78006,-26.7642916 6.15113,-22.3503706 12.23027,9.621702 33.989775,3.003461 43.860212,-7.297301 3.221262,-3.855524 4.95498,-8.333244 5.411358,-12.866835 0.456378,-4.533591 -0.364585,-9.123052 -2.252683,-13.202056 -1.888098,-4.079003 18.442802,-8.769774 14.630637,-11.261537 -3.812166,-2.491763 -31.767399,-2.784519 -37.083224,-2.556388 -7.60565,-0.913561 -24.04382,10.140402 -13.52484,-0.764115 -2.75252,-6.593398 -13.88397,-23.602542 -12.64611,-28.004824 13.11205,-1.020822 25.64394,31.958111 27.62277,15.855391 -6.32012,-17.095618 16.101388,14.302184 12.493285,-3.629547 4.402465,0.100863 11.998101,3.346164 15.129482,0.229234 9.565977,-9.521805 10.21336,3.02718 13.945103,1.375408 -2.352619,-4.889335 -2.64412,-6.687757 -1.52823,-6.76242 1.115877,-0.0747 3.633802,1.593027 6.877037,3.705959 1.049442,0.683706 2.848989,1.698279 4.699309,2.636197 -5.596649,-3.767455 -13.37566,-12.743767 -12.837136,-3.51493 -9.705658,-7.653268 -10.034129,7.714006 -17.994914,-3.056461 -0.942906,0.835832 3.779118,4.531827 2.25414,5.195984 -1.524979,0.664169 -9.308795,-1.715677 -11.194289,-1.413613 -1.885506,0.302076 0.763675,5.713895 -1.26079,5.463424 -2.024465,-0.250459 -8.71754,-6.15103 -10.659407,-7.144478 -6.06574,-5.591954 2.636784,20.835063 -7.06807,4.393663 -6.60225,-7.513698 -11.59768,-10.995643 -15.62615,-13.219194 -2.39453,-1.114642 -4.04014,-1.635977 -5.08137,-1.604642 z m 82.562653,16.352066 c -0.978557,-0.390493 -2.021042,-0.889992 -3.056461,-1.413613 1.134851,0.759665 2.192962,1.284863 3.056461,1.413613 z"
-           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="sccsccscccccccccccccccccccccccsssscccccscccsssccccccccccsssccccsccssscccccsccscccssscccsccc" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4439"
-           d="m -101.14264,-66.616866 c 1.08956,-0.06211 2.349344,-0.01284 4.049812,0.191029 15.178422,1.81956 19.678572,21.379309 15.244099,34.041334 -7.637607,10.370927 -21.372961,16.160439 -34.155951,15.014865 -14.42653,-3.613739 -22.37215,-19.145293 -13.56305,-33.468248 4.65885,-6.004625 14.62694,-12.54742 15.58796,-12.378667 l 7.83218,-2.597992 c 1.86724,-0.31259 3.18903,-0.698756 5.00495,-0.802321 z"
-           style="fill:#b6c100;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4441"
-           d="m -39.402127,-65.547105 c 11.331927,0.0037 24.842329,2.223319 30.1825529,13.639458 6.8810351,13.571286 -6.8435019,25.677805 -19.4467329,27.04968 -12.991634,1.600375 -31.124419,-7.354335 -28.195853,-22.732429 0.417708,-8.648684 5.241708,-18.456403 15.244099,-17.918503 0.733074,-0.01736 1.460475,-0.03839 2.215934,-0.03814 z"
-           style="fill:#b6c100;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-        <path
-           sodipodi:nodetypes="csccccccc"
-           inkscape:connector-curvature="0"
-           id="path4443"
-           d="m -127.04615,-46.2914 c -1.63223,3.339183 -1.0304,2.873733 -1.60464,6.380362 -0.57425,3.506641 2.15583,11.898558 3.74417,12.569696 9.02869,12.618281 24.70027,7.352219 37.976525,-4.011605 7.07435,-7.018111 0.429408,-32.404147 -11.2707,-31.366931 3.831139,16.637393 -3.102965,14.062899 -8.431845,17.856432 -4.81437,-4.438544 -11.45355,-10.741138 4.62952,-17.338093 -3.87571,-0.265252 -6.49544,-0.498766 -10.17642,1.564981 -7.3582,3.534211 -11.1141,6.675275 -14.86661,14.345158 z"
-           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-        <path
-           sodipodi:nodetypes="cccccc"
-           inkscape:connector-curvature="0"
-           id="path4445"
-           d="m -31.653142,-57.675874 c -13.419869,-2.764691 -22.654281,18.225029 -9.513235,24.337071 14.629152,7.32531 33.781144,-9.885732 13.372017,-12.416873 3.757197,-6.208663 10.42406,-11.125005 -2.712609,-11.881992 -0.384197,-0.02482 -0.767698,-0.04878 -1.146173,-0.03815 z"
-           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4447"
-           d="m -64.923576,-21.037391 c 12.763084,0.824719 23.977081,15.349877 20.745729,28.0812352 -6.404851,10.7986238 -5.329172,20.0435128 3.782371,28.2340588 4.449302,4.029956 9.593118,7.396696 7.488329,16.963358 -1.009207,7.559276 -25.865044,14.088684 -35.684182,8.137828 -6.989967,0.58173 -15.353178,5.610256 -27.011474,2.25414 -18.017297,-5.901501 -9.782597,-20.518769 2.597992,-28.883557 13.865843,-5.640234 -12.279769,-16.270092 -8.634499,-26.4001817 1.06419,-11.5718102 10.157924,-20.2881283 21.013166,-24.4134823 4.940243,-2.118299 10.260894,-3.973301 15.702568,-3.973399 z"
-           style="fill:#b6c100;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4449"
-           d="m -73.214226,-11.868008 c -10.678896,0.329914 -19.960219,4.5031204 -14.059721,18.7590292 1.88871,7.2271368 9.521524,26.5881668 19.714174,21.0131698 7.164796,-4.092614 9.832048,-15.50127 13.486634,-24.1460424 4.784608,-14.1316326 -6.05606,-15.5407106 -14.747425,-15.5115396 -0.718684,-0.07727 -1.485733,-0.10392 -2.25414,-0.114556 -0.720383,-0.0098 -1.427599,-0.02201 -2.139522,0 z"
-           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4451"
-           d="m -72.335494,-9.7284855 c 7.958768,-0.2558747 16.263209,2.0212743 17.230799,6.1893335 -0.184879,8.2852711 -8.202502,31.322038 -16.237449,30.56461 -10.59466,-0.998717 -14.693423,-21.6710787 -16.122832,-27.89020662 -0.451635,-5.82404978 7.170715,-8.60786218 15.129482,-8.86373688 z"
-           style="fill:#538700;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4457"
-           d="m -127.19897,34.284553 c 2.73931,0.537081 15.36955,24.102946 20.59291,22.006519 7.319855,9.807487 20.656494,9.701154 31.023076,7.832181 6.865672,-0.947111 7.669223,-1.492805 14.119989,0.697929 6.612528,0.981624 7.014962,1.214792 12.815074,-0.315871 7.358564,-3.165992 7.195936,-1.411388 13.180988,-6.074716 7.607825,-5.640247 -0.795034,-19.792065 7.75577,-10.124527 10.019275,-8.791458 12.552482,-10.698262 13.983309,-11.232494 2.235605,-0.83472 -2.833266,7.033197 -1.337202,9.742469 L 7.8966075,88.460324 c 3.2894125,5.956896 8.5910275,18.682256 11.9966095,26.896856 3.192486,7.70061 0.746791,10.64675 3.094667,11.07967 13.30964,2.45411 0.784263,4.88285 0.343852,5.19599 -3.924081,2.7901 5.755633,3.69723 7.526535,3.01825 -0.812163,0.67635 -21.0715847,17.48125 -30.56461027,19.17929 -9.57825193,4.98263 -19.56904073,6.53085 -17.99491373,-7.87038 -7.206047,-9.0651 -6.104682,-16.40454 5.04316,-14.70922 6.9258186,0.0279 35.358682,-4.92329 24.107836,-11.30891 -7.6681835,1.90569 8.49058,2.02158 -4.0880162,5.57804 -7.46374329,1.08164 -16.6834112,4.48378 -27.7373838,4.39367 -4.31829,1.22329 -50.280715,7.96751 -38.473203,9.09297 50.8494373,-2.53217 40.325052,0.81393 -2.941843,4.58469 1.561582,8.00203 35.903379,1.08473 38.58782,-0.26744 6.029101,5.66612 -27.220561,8.41544 -37.174207,11.88199 -7.525142,2.46392 34.130754,-1.89527 42.217367,-0.53488 -13.460923,6.57473 -44.887724,4.03954 -39.428346,6.18933 9.338955,3.94917 37.459912,4.94978 44.662536,-0.0381 12.25902484,-0.69515 37.632676,-16.88695 37.632676,-16.88695 0,0 0.11908,23.77844 -0.07641,34.80545 -0.35093,19.96806 0.679574,39.93588 -0.191028,59.83023 -0.521738,6.60956 1.337201,26.17094 1.337201,26.17094 -29.1934202,14.8881 -55.96215,18.25746 -90.206091,16.58295 -34.243929,-1.67448 -55.298425,-13.07765 -72.703285,-24.41519 0,0 -6.52383,-37.71768 -6.22754,-51.65419 0.44,-10.03552 0.68337,-21.75203 0.99335,-33.46825 0.30999,-11.71622 -0.46405,-22.22609 1.56644,-32.05463 0.30066,-1.45533 3.53725,-4.00521 2.98005,-0.42027 -0.78799,5.06979 7.10955,12.34647 10.39197,14.70922 6.89159,4.96074 15.55847,9.03512 21.50984,11.53814 12.191492,4.5406 29.290912,-1.38585 38.052942,-2.71261 5.565412,-4.96083 -88.399732,2.70458 -1.146172,-4.73751 3.555654,-4.5475 -35.71146,-0.67935 -36.4483,-2.71261 2.98036,-2.93365 32.855772,-0.6984 35.837007,-6.34216 -3.479353,-1.90818 -33.207707,-1.66271 -33.926717,-3.40031 -0.2758,-0.66652 31.674839,-0.89558 33.391837,-1.41361 -2.582722,-5.39551 -24.54859,-4.84589 -31.672577,-6.95345 -3.96685,-5.64094 -18.5298,-19.48494 -18.5298,-19.48494 0,0 -9.87892,-16.47556 -3.70596,-4.27905 5.93324,11.21142 20.42792,13.78995 17.11619,31.94002 0.89904,4.94325 -0.85459,14.65261 -0.72591,18.60621 -9.63223,-6.08156 -28.20253,-11.06737 -27.92842,-24.33707 -0.49371,-13.37336 -14.05974,10.29361 -13.41022,6.30395 -2.13128,-10.09071 11.26939,-21.66948 -2.94184,-14.82384 -6.8817,3.31495 15.42008,-15.13151 13.75407,-28.99817 -0.53033,-7.587886 1.59753,-19.865519 3.66775,-29.609467 1.97486,-10.236113 9.09471,-31.258219 6.80063,-36.983178 -0.0643,-1.005588 0.14356,-1.413932 0.53488,-1.337202 z"
-           style="fill:#88aa00;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-           sodipodi:nodetypes="cccccccsccssscccccccccccccccccczccsssscccccsccccccccsccccc" />
-      </g>
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -39.246547,271.94591 c 0.695961,-5.67294 -9.610176,-19.14898 -5.321426,1.47885 3.619867,1.37491 5.089436,0.41227 5.321426,-1.47885 z"
-         id="path4656-4" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -41.280001,249.34543 c 0.475461,-5.34328 -10.029967,-15.98104 -5.07501,2.34621 3.59795,0.68286 4.91653,-0.5651 5.07501,-2.34621 z"
-         id="path4660-0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -42.491335,230.8823 c 0.04611,-5.22155 -5.318858,-18.20764 -4.500642,-1.23921 3.35273,4.36303 4.480056,3.61246 4.500642,1.23921 z"
-         id="path4664-9" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -50.907168,243.95232 c 0.233272,-8.27744 -15.273889,-17.73283 -4.77813,5.9862 3.459678,-1.36094 4.712843,-3.66874 4.77813,-5.9862 z"
-         id="path4670-4" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -54.042417,224.6976 c -0.160318,-3.6569 -6.26064,-12.32645 -4.7328,-0.50804 3.671039,2.82647 4.805639,2.17036 4.7328,0.50804 z"
-         id="path4678-6" />
-      <path
-         id="path3298-2"
-         d="m -53.505765,273.29798 c 0.695977,-5.67297 -9.610172,-19.149 -5.321422,1.47883 3.619879,1.37491 5.089441,0.41227 5.321422,-1.47883 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3300-2"
-         d="m -46.441068,205.53661 c 0.475463,-5.3433 -10.029955,-15.9811 -5.075011,2.34619 3.597977,0.68286 4.91656,-0.56539 5.075011,-2.34619 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3302-7"
-         d="m -49.07641,187.05222 c 0.04621,-5.22157 -5.318856,-18.20736 -4.500637,-1.23922 3.352738,4.36304 4.480051,3.61275 4.500637,1.23922 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3306-7"
-         d="m -61.296527,177.34372 c -0.16031,-3.65691 -6.2606,-12.32646 -4.7328,-0.50834 3.67107,2.82673 4.80568,2.17036 4.7328,0.50834 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3310-9"
-         d="m -62.769127,259.57202 c 0.47547,-5.3433 -10.02996,-15.98079 -5.075,2.3462 3.59797,0.68284 4.91655,-0.5651 5.075,-2.3462 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -63.507537,232.61846 c 0.47545,-5.34305 -10.02996,-15.98081 -5.07502,2.34647 3.59796,0.68287 4.91654,-0.56539 5.07502,-2.34647 z"
-         id="path3312-2" />
-      <path
-         id="path3314-0"
-         d="m -62.551937,212.71829 c 0.47549,-5.34299 -10.02994,-15.98078 -5.07501,2.34647 3.59798,0.6829 4.91657,-0.56538 5.07501,-2.34647 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3316-2"
-         d="m -66.183395,195.45975 c 0.0462,-5.22156 -5.31882,-18.20763 -4.50064,-1.23921 3.35275,4.36301 4.48008,3.61274 4.50064,1.23921 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4517"
-         d="m -38.932347,172.73043 c -0.695961,5.67294 9.610176,19.14898 5.321426,-1.47885 -3.619867,-1.37491 -5.089436,-0.41227 -5.321426,1.47885 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4519"
-         d="m -36.898893,195.33091 c -0.475461,5.34328 10.029967,15.98104 5.07501,-2.34621 -3.59795,-0.68286 -4.91653,0.5651 -5.07501,2.34621 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4521"
-         d="m -35.687559,213.79404 c -0.04611,5.22155 5.318858,18.20764 4.500642,1.23921 -3.35273,-4.36303 -4.480056,-3.61246 -4.500642,-1.23921 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4523"
-         d="m -27.271726,200.72402 c -0.233272,8.27744 15.273889,17.73283 4.77813,-5.9862 -3.459678,1.36094 -4.712843,3.66874 -4.77813,5.9862 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4525"
-         d="m -24.930009,222.35934 c 0.160318,3.6569 6.26064,12.32645 4.7328,0.50804 -3.671039,-2.82647 -4.805639,-2.17036 -4.7328,-0.50804 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -24.673129,171.37836 c -0.695977,5.67297 9.610172,19.149 5.321422,-1.47883 -3.619879,-1.37491 -5.089441,-0.41227 -5.321422,1.47883 z"
-         id="path4527" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -31.737826,239.13973 c -0.475463,5.3433 10.029955,15.9811 5.075011,-2.34619 -3.597977,-0.68286 -4.91656,0.56539 -5.075011,2.34619 z"
-         id="path4529" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -29.102484,257.62412 c -0.04621,5.22157 5.318856,18.20736 4.500637,1.23922 -3.352738,-4.36304 -4.480051,-3.61275 -4.500637,-1.23922 z"
-         id="path4531" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -16.882367,267.33262 c 0.16031,3.65691 6.2606,12.32646 4.7328,0.50834 -3.67107,-2.82673 -4.80568,-2.17036 -4.7328,-0.50834 z"
-         id="path4534" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -15.409767,185.10432 c -0.47547,5.3433 10.0299598,15.98079 5.075,-2.3462 -3.59797,-0.68284 -4.91655,0.5651 -5.075,2.3462 z"
-         id="path4536" />
-      <path
-         id="path4538"
-         d="m -14.274591,203.32903 c -0.47545,5.34305 10.0299597,15.98081 5.0750197,-2.34647 -3.5979597,-0.68287 -4.9165397,0.56539 -5.0750197,2.34647 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -16.420489,227.99039 c -0.47549,5.34299 10.02994,15.98078 5.07501,-2.34647 -3.59798,-0.6829 -4.91657,0.56538 -5.07501,2.34647 z"
-         id="path4540" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -17.946987,248.02629 c -0.0462,5.22156 5.31882,18.20763 4.50064,1.23921 -3.35275,-4.36301 -4.48008,-3.61274 -4.50064,-1.23921 z"
-         id="path4542" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -109.55668,172.73043 c -0.69596,5.67294 9.610184,19.14898 5.32143,-1.47885 -3.61987,-1.37491 -5.08944,-0.41227 -5.32143,1.47885 z"
-         id="path4544" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -107.52322,195.33091 c -0.47546,5.34328 10.029967,15.98104 5.07501,-2.34621 -3.59795,-0.68286 -4.91653,0.5651 -5.07501,2.34621 z"
-         id="path4546" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -106.31189,213.79404 c -0.0461,5.22155 5.31886,18.20764 4.50064,1.23921 -3.35273,-4.36303 -4.48005,-3.61246 -4.50064,-1.23921 z"
-         id="path4548" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -96.308989,199.53372 c -0.233272,8.27744 15.273889,17.73283 4.77813,-5.9862 -3.459678,1.36094 -4.712843,3.66874 -4.77813,5.9862 z"
-         id="path4550" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -94.760804,219.97874 c 0.160318,3.6569 6.26064,12.32645 4.7328,0.50804 -3.671039,-2.82647 -4.805639,-2.17036 -4.7328,-0.50804 z"
-         id="path4552" />
-      <path
-         id="path4554"
-         d="m -95.297456,171.37836 c -0.695977,5.67297 9.610172,19.149 5.321422,-1.47883 -3.619879,-1.37491 -5.089441,-0.41227 -5.321422,1.47883 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4556"
-         d="m -102.36216,239.13973 c -0.47546,5.3433 10.029962,15.9811 5.075018,-2.34619 -3.597978,-0.68286 -4.916568,0.56539 -5.075018,2.34619 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4558"
-         d="m -99.726806,257.62412 c -0.0462,5.22157 5.318851,18.20736 4.500632,1.23922 -3.352742,-4.36304 -4.480052,-3.61275 -4.500632,-1.23922 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4560"
-         d="m -79.968142,267.33262 c 0.16031,3.65691 6.2606,12.32646 4.7328,0.50834 -3.67107,-2.82673 -4.80568,-2.17036 -4.7328,-0.50834 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4563"
-         d="m -86.034094,185.10432 c -0.47547,5.3433 10.02996,15.98079 5.075,-2.3462 -3.59797,-0.68284 -4.91655,0.5651 -5.075,2.3462 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -85.295684,212.05788 c -0.47545,5.34305 10.02996,15.98081 5.07502,-2.34647 -3.59796,-0.68287 -4.91654,0.56539 -5.07502,2.34647 z"
-         id="path4565" />
-      <path
-         id="path4567"
-         d="m -86.251284,231.95805 c -0.47549,5.34299 10.02994,15.98078 5.07501,-2.34647 -3.59798,-0.6829 -4.91657,0.56538 -5.07501,2.34647 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4569"
-         d="m -88.571314,248.02629 c -0.0462,5.22156 5.31882,18.20763 4.50064,1.23921 -3.35275,-4.36301 -4.48008,-3.61274 -4.50064,-1.23921 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4571"
-         d="m -109.07734,257.66234 c 0.69596,-5.67294 -9.61019,-19.14898 -5.32143,1.47885 3.61987,1.37491 5.08944,0.41227 5.32143,-1.47885 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4573"
-         d="m -111.1108,235.06186 c 0.47546,-5.34328 -10.02997,-15.98104 -5.07501,2.34621 3.59795,0.68286 4.91653,-0.5651 5.07501,-2.34621 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4575"
-         d="m -112.32213,216.59873 c 0.0461,-5.22155 -5.31886,-18.20764 -4.50064,-1.23921 3.35273,4.36303 4.48005,3.61246 4.50064,1.23921 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4577"
-         d="m -120.73797,229.66875 c 0.23327,-8.27744 -15.27389,-17.73283 -4.77813,5.9862 3.45968,-1.36094 4.71284,-3.66874 4.77813,-5.9862 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4579"
-         d="m -123.87322,210.41403 c -0.16032,-3.6569 -6.26064,-12.32645 -4.7328,-0.50804 3.67104,2.82647 4.80564,2.17036 4.7328,0.50804 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -123.33657,259.01441 c 0.69598,-5.67297 -9.61017,-19.149 -5.32142,1.47883 3.61988,1.37491 5.08944,0.41227 5.32142,-1.47883 z"
-         id="path4581" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -116.27186,191.25304 c 0.47546,-5.3433 -10.02996,-15.9811 -5.07502,2.34619 3.59798,0.68286 4.91657,-0.56539 5.07502,-2.34619 z"
-         id="path4583" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -118.90722,172.76865 c 0.0462,-5.22157 -5.31885,-18.20736 -4.50063,-1.23922 3.35274,4.36304 4.48005,3.61275 4.50063,1.23922 z"
-         id="path4585" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -131.12733,163.06015 c -0.16031,-3.65691 -6.2606,-12.32646 -4.7328,-0.50834 3.67107,2.82673 4.80568,2.17036 4.7328,0.50834 z"
-         id="path4587" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -132.59993,245.28845 c 0.47547,-5.3433 -10.02996,-15.98079 -5.075,2.3462 3.59797,0.68284 4.91655,-0.5651 5.075,-2.3462 z"
-         id="path4589" />
-      <path
-         id="path4591"
-         d="m -133.33834,218.33489 c 0.47545,-5.34305 -10.02996,-15.98081 -5.07502,2.34647 3.59796,0.68287 4.91654,-0.56539 5.07502,-2.34647 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -132.38274,198.43472 c 0.47549,-5.34299 -10.02994,-15.98078 -5.07501,2.34647 3.59798,0.6829 4.91657,-0.56538 5.07501,-2.34647 z"
-         id="path4593" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -130.06271,182.36648 c 0.0462,-5.22156 -5.31882,-18.20763 -4.50064,-1.23921 3.35275,4.36301 4.48008,3.61274 4.50064,1.23921 z"
-         id="path4595" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 20.7964,262.9311 c 1.267381,-5.57318 -7.619768,-20.02444 -5.443919,0.93186 3.461867,1.73473 5.021441,0.92601 5.443919,-0.93186 z"
-         id="path4597" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 21.064183,240.2409 c 1.014602,-5.26756 -8.358487,-16.91536 -5.286684,1.81973 3.510206,1.04403 4.948488,-0.0639 5.286684,-1.81973 z"
-         id="path4599" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 21.730502,221.75008 c 0.575116,-5.18998 -3.445952,-18.65298 -4.351856,-1.68901 2.89323,4.68039 4.090821,4.04795 4.351856,1.68901 z"
-         id="path4601" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 12.033236,233.89977 c 1.071064,-8.21117 -13.3978396,-19.18966 -5.3602797,5.47106 3.5798067,-1.00326 5.0604297,-3.17216 5.3602797,-5.47106 z"
-         id="path4603" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 10.865779,214.42642 c 0.211166,-3.65431 -4.9789962,-12.89754 -4.6569312,-0.98513 3.3656445,3.184 4.5609042,2.64627 4.6569312,0.98513 z"
-         id="path4605" />
-      <path
-         id="path4607"
-         d="m 6.4735618,262.8309 c 1.2674042,-5.57321 -7.6197463,-20.02446 -5.4439074,0.93184 3.4618772,1.73474 5.0214414,0.92601 5.4439074,-0.93184 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4609"
-         d="m 20.370136,196.13458 c 1.014605,-5.26759 -8.35847,-16.91542 -5.286691,1.81971 3.510236,1.04403 4.948557,-0.0641 5.286691,-1.81971 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4611"
-         d="m 19.621915,177.47827 c 0.575217,-5.18999 -3.445971,-18.6527 -4.351845,-1.68902 2.893238,4.6804 4.090791,4.04824 4.351845,1.68902 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4613"
-         d="m 8.448787,166.58115 c 0.2111777,-3.65433 -4.9789551,-12.89755 -4.6569005,-0.98544 3.365648,3.18427 4.5609439,2.64629 4.6569005,0.98544 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4615"
-         d="m -1.3508364,248.2367 c 1.0146147,-5.26759 -8.3585019,-16.91512 -5.2866725,1.81972 3.5102278,1.04401 4.9485074,-0.0639 5.2866725,-1.81972 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 0.64655196,221.34711 c 1.01456944,-5.26734 -8.35849986,-16.91514 -5.28671976,1.81999 3.5102148,1.04404 4.94852683,-0.0642 5.28671976,-1.81999 z"
-         id="path4617" />
-      <path
-         id="path4619"
-         d="m 3.6142989,201.64629 c 1.0146032,-5.26728 -8.358483,-16.91511 -5.2867098,1.81998 3.5102317,1.04408 4.9485557,-0.0641 5.2867098,-1.81998 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4621"
-         d="m 7.5510469,185.89596 c 0.575216,-5.18999 -3.4459138,-18.65297 -4.3518556,-1.68901 2.893251,4.68037 4.090822,4.04823 4.3518556,1.68901 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4980"
-         d="m -40.929882,118.76241 c 0.695961,-5.67294 -9.610176,-19.148975 -5.321426,1.47885 3.619867,1.37491 5.089436,0.41227 5.321426,-1.47885 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4982"
-         d="m -41.280001,97.845273 c 0.475461,-5.34328 -10.029967,-15.98104 -5.07501,2.346207 3.59795,0.68286 4.91653,-0.565097 5.07501,-2.346207 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4984"
-         d="m -42.491335,79.382143 c 0.04611,-5.22155 -5.318858,-18.20764 -4.500642,-1.23921 3.35273,4.36303 4.480056,3.61246 4.500642,1.23921 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -53.505765,121.79782 c 0.695977,-5.67297 -9.610172,-19.149 -5.321422,1.47883 3.619879,1.37491 5.089441,0.41227 5.321422,-1.47883 z"
-         id="path4990" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -62.769127,108.07186 c 0.47547,-5.3433 -10.02996,-15.980787 -5.075,2.3462 3.59797,0.68284 4.91655,-0.5651 5.075,-2.3462 z"
-         id="path4998" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -72.599048,128.96372 c -0.695961,5.67294 9.610176,19.14898 5.321426,-1.47885 -3.619867,-1.37491 -5.089436,-0.41227 -5.321426,1.47885 z"
-         id="path5006" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -35.687559,62.293883 c -0.04611,5.22155 5.318858,18.20764 4.500642,1.23921 -3.35273,-4.36303 -4.480056,-3.61246 -4.500642,-1.23921 z"
-         id="path5010" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -24.930009,70.859183 c 0.160318,3.6569 6.26064,12.32645 4.7328,0.50804 -3.671039,-2.82647 -4.805639,-2.17036 -4.7328,-0.50804 z"
-         id="path5014" />
-      <path
-         id="path5016"
-         d="m -33.650916,119.19498 c -0.695977,5.67297 9.610172,19.149 5.321422,-1.47883 -3.619879,-1.37491 -5.089441,-0.41227 -5.321422,1.47883 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path5018"
-         d="m -31.737826,87.639573 c -0.475463,5.3433 10.029955,15.981097 5.075011,-2.34619 -3.597977,-0.68286 -4.91656,0.56539 -5.075011,2.34619 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path5020"
-         d="m -27.980261,103.3184 c -0.04621,5.22157 5.318856,18.20736 4.500637,1.23922 -3.352738,-4.36304 -4.480051,-3.61275 -4.500637,-1.23922 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path5022"
-         d="m -16.882367,115.83246 c 0.16031,3.65691 6.2606,12.32646 4.7328,0.50834 -3.67107,-2.82673 -4.80568,-2.17036 -4.7328,-0.50834 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path5028"
-         d="m -12.492707,73.123563 c -0.47549,5.34299 10.0299398,15.98078 5.0750098,-2.34647 -3.5979798,-0.6829 -4.9165698,0.56538 -5.0750098,2.34647 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path5030"
-         d="m -17.946987,96.526133 c -0.0462,5.221557 5.31882,18.207627 4.50064,1.23921 -3.35275,-4.36301 -4.48008,-3.61274 -4.50064,-1.23921 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path5032"
-         d="m -110.6789,116.61926 c -0.69596,5.67294 9.61018,19.14898 5.32143,-1.47885 -3.61987,-1.37491 -5.08944,-0.41227 -5.32143,1.47885 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path5036"
-         d="m -106.31189,68.466112 c -0.0461,5.22155 5.31886,18.20764 4.50064,1.23921 -3.35273,-4.36303 -4.48005,-3.61246 -4.50064,-1.23921 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path5040"
-         d="m -91.955246,73.528588 c 0.160318,3.6569 6.26064,12.32645 4.7328,0.50804 -3.671039,-2.82647 -4.805639,-2.17036 -4.7328,-0.50804 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -95.297456,127.05054 c -0.695977,5.67297 9.610172,19.149 5.321422,-1.47883 -3.619879,-1.37491 -5.089441,-0.41227 -5.321422,1.47883 z"
-         id="path5042" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -102.36216,87.639573 c -0.47546,5.3433 10.029962,15.981097 5.075018,-2.34619 -3.597978,-0.68286 -4.916568,0.56539 -5.075018,2.34619 z"
-         id="path5044" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -99.726806,106.12396 c -0.0462,5.22157 5.318851,18.20736 4.500632,1.23922 -3.352742,-4.36304 -4.480052,-3.61275 -4.500632,-1.23922 z"
-         id="path5046" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -79.968142,115.83246 c 0.16031,3.65691 6.2606,12.32646 4.7328,0.50834 -3.67107,-2.82673 -4.80568,-2.17036 -4.7328,-0.50834 z"
-         id="path5048" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -88.571314,96.526133 c -0.0462,5.221557 5.31882,18.207627 4.50064,1.23921 -3.35275,-4.36301 -4.48008,-3.61274 -4.50064,-1.23921 z"
-         id="path5056" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -109.07734,106.16218 c 0.69596,-5.67294 -9.61019,-19.148977 -5.32143,1.47885 3.61987,1.37491 5.08944,0.41227 5.32143,-1.47885 z"
-         id="path5058" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -111.1108,83.561703 c 0.47546,-5.34328 -10.02997,-15.98104 -5.07501,2.34621 3.59795,0.68286 4.91653,-0.5651 5.07501,-2.34621 z"
-         id="path5060" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -112.32213,65.098573 c 0.0461,-5.22155 -5.31886,-18.20764 -4.50064,-1.23921 3.35273,4.36303 4.48005,3.61246 4.50064,1.23921 z"
-         id="path5062" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:2.75792074;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -125.99481,83.254857 c 3.10678,-7.674815 -5.81659,-21.148191 -5.89149,4.175078 3.21606,-0.241042 5.0217,-2.026328 5.89149,-4.175078 z"
-         id="path5064" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -121.62877,61.15832 c -0.16032,-3.6569 -6.26064,-12.32645 -4.7328,-0.50804 3.67104,2.82647 4.80564,2.17036 4.7328,0.50804 z"
-         id="path5066" />
-      <path
-         id="path5068"
-         d="m -123.33657,107.51425 c 0.69598,-5.67297 -9.61017,-19.148997 -5.32142,1.47883 3.61988,1.37491 5.08944,0.41227 5.32142,-1.47883 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 9.8402319,113.01408 c 1.2674041,-5.57321 -7.6197463,-20.024462 -5.4439074,0.93184 3.4618772,1.73474 5.0214414,0.92601 5.4439074,-0.93184 z"
-         id="path5094" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -1.3508364,96.736543 c 1.0146147,-5.26759 -8.3585019,-16.91512 -5.2866725,1.81972 3.5102278,1.04401 4.9485074,-0.0639 5.2866725,-1.81972 z"
-         id="path5102" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -24.443374,54.533983 c -0.475463,5.3433 10.029955,15.981097 5.075011,-2.34619 -3.597977,-0.68286 -4.91656,0.56539 -5.075011,2.34619 z"
-         id="path5110" />
-    </g>
-    <g
-       id="0big_cactus"
-       inkscape:label="#g3775"
-       transform="translate(-768.17609,425.32266)">
-      <g
-         inkscape:label="#g4948"
-         id="g3998"
-         transform="translate(1553.1387,4.4888935)">
-        <g
-           id="g4000">
-          <path
-             inkscape:connector-curvature="0"
-             id="path4003"
-             d="m -127.26814,-98.063473 c -5.95186,1.40398 -0.2481,8.635395 0.83368,11.991316 2.24081,5.979379 7.51684,11.886198 8.3357,17.847385 -2.62353,2.574653 -3.85637,8.944892 1.49003,6.877037 7.90915,-3.992679 17.380548,-7.629391 25.750679,-2.559786 14.710026,7.405353 15.841258,31.458759 1.031556,39.199112 -11.072405,7.261846 -26.161435,9.565391 -37.670885,2.139523 -6.17665,-0.315109 -4.38976,8.690863 -5.66148,12.7164549 -0.94084,12.8917246 -4.49017,25.4374211 -8.62747,37.4859171 -0.18176,4.437309 5.04449,3.411524 7.56474,1.833876 -2.83088,2.430046 -3.70633,8.312205 1.49002,6.877038 2.63273,-1.267918 6.95152,-3.715862 7.71757,0.878732 4.75803,7.151288 9.39205,15.415322 17.30721,19.484939 4.29992,-3.203098 0.74888,-9.710755 5.08136,-13.180988 3.140909,-6.068884 10.191174,-8.427262 13.868696,-13.830486 -1.972725,-8.564326 -14.939736,-11.666071 -13.104576,-21.8154903 2.146821,-10.5535319 8.866365,-20.4278567 19.141087,-24.3370707 12.082813,-7.168232 31.492135,-6.969318 38.167556,7.2973006 3.843194,8.609366 1.612626,18.5334504 -2.712609,26.5147994 -2.783605,10.343211 8.396661,16.781267 13.295605,24.222453 1.906107,3.450684 5.739154,8.743875 9.818881,4.775721 5.096515,-3.360738 9.891148,-12.368924 16.9463895,-7.853504 4.8812293,4.089998 0.6420891,-5.684198 2.2711095,-5.671336 2.90321,1.707265 8.7438625,2.162091 6.4185681,-2.597992 C -3.0975928,23.888062 1.8254978,15.835082 0.37730995,8.6834277 -0.42578129,-4.2660885 -2.732688,-17.734836 -8.3718097,-29.369512 c -7.4160253,-3.251487 -14.9369123,3.717525 -22.3503713,4.355457 -15.75635,2.980893 -31.017553,-13.460617 -26.05633,-29.074585 3.216828,-12.382812 19.26194,-12.789614 29.416176,-9.903814 3.432063,0.871495 5.427186,-4.069299 9.133439,-4.805405 6.972875,-4.441368 17.94322288,-7.074191 20.5546998,-15.970008 -1.75343051,-5.640296 -9.2846238,-0.481955 -13.1045768,-0.420264 -6.880265,1.299852 -14.363154,5.152008 -21.089581,4.50828 -4.987141,-2.981198 -7.175629,-11.254574 -13.715868,-10.506584 -0.870688,2.601292 1.61029,6.458094 1.26079,8.137827 -6.070547,-1.486822 -10.619918,-7.335727 -16.886947,-7.832181 -2.431158,1.306637 -0.259836,5.412968 -3.018255,2.445168 -6.150003,-3.794229 -10.120077,6.368345 -16.581301,3.400313 -3.524846,-1.473446 -10.120175,-1.56256 -8.710914,3.858782 -1.754714,1.269067 -5.624231,-3.783287 -7.802204,-4.521679 -2.640293,-3.207585 -7.332647,-1.249763 -5.684427,2.917037 1.28382,2.439435 -0.43856,6.28516 -2.55979,2.483375 -6.81601,-5.755573 -11.84574,-17.051947 -21.70087,-17.76568 z"
-             style="fill:#88aa00;fill-opacity:1;stroke:none" />
-          <path
-             id="path4005"
-             d="m -128.64355,-98.330913 c -4.51196,0.135817 2.29544,10.340448 8.40527,24.451688 6.18099,7.793982 -6.91833,13.648372 -13.44216,13.592126 -5.23207,4.182449 -1.274,17.370668 -0.57225,23.33009 0.70175,5.959421 2.91662,11.423387 3.73706,13.624008 -2.36354,7.471054 -4.22953,37.686653 -12.95176,53.984742 -0.78364,2.15 10.54536,-2.411181 9.32221,-1.872082 -4.38782,1.933884 -6.95345,11.003259 -6.95345,11.003259 0,0 10.61434,-1.323447 11.80558,-4.928543 4.59647,7.445967 -8.51327,36.317065 -7.71756,45.655886 -3.35976,13.007662 1.3099,28.483219 -9.85709,39.581169 -4.19109,5.98004 -13.06696,16.24697 -0.38206,10.77403 1.26048,-1.07252 -11.87855,29.66016 4.50828,12.14943 -0.40913,17.26216 15.02741,40.41019 13.6165,57.64962 -0.82682,20.16164 0.76032,32.55614 6.38037,51.97132 13.78536,6.43183 13.49588,6.40508 28.371629,9.21046 23.399471,3.0414 55.390568,2.22068 78.933105,1.75746 10.0766998,-1.48473 -11.273932,-6.09445 1.562496,-8.42894 l 10.8974309,1.86634 c 0.01663,-12.87961 -1.904726,-18.50234 -0.611292,-31.87508 0.139301,-14.36637 2.377584,-28.40878 1.910288,-42.75225 0.409015,-12.59618 -2.488828,-26.25604 1.29899601,-38.35858 C -13.450883,139.17754 42.617124,132.2728 27.847253,133.88371 c -13.558485,-0.9744 9.769513,-2.75969 -1.52823,-7.60295 C 22.158348,124.35941 18.803234,105.27744 13.90215,96.862328 9.1427877,86.602326 5.0309552,79.677033 -1.0363033,69.659825 -8.6725899,56.974619 -19.150957,42.346971 -9.8236286,37.032103 c 9.30368386,10.662306 7.9403433,2.249617 4.1644281,-4.164428 12.4187556,5.06073 7.7349981,0.373952 5.11957215,-7.411918 C 1.1734202,19.967625 0.04773787,11.342659 -0.15757072,7.0405799 -0.6866319,3.8952982 -0.45067311,0.36168692 -1.0363033,-3.3131817 -1.6219334,-6.9880381 -3.0312431,-11.050209 -3.5578836,-14.698499 -4.084524,-18.346801 -7.287761,-29.436186 -10.129275,-29.675158 c -2.653777,-0.223183 1.9640626,1.216319 2.8654325,-9.322206 0.4952759,-5.790605 8.23577838,-21.698067 -7.5516255,-23.562121 -20.974088,-5.276715 1.998841,-2.172219 16.79742,-19.725008 6.8775752,-13.316499 -23.42907,2.522815 -31.901812,1.107967 -6.301456,1.936403 -21.16774,-24.636974 -13.945103,-2.52158 -0.356909,1.438456 -1.160013,1.876716 -2.215934,1.719259 2.665368,1.063649 4.703942,1.358634 3.935193,-0.649498 -7.85497,-20.518965 7.643292,5.366571 11.117877,3.9734 12.109332,-1.303532 26.8548245,-8.14756 32.2838695,-7.297301 -1.40701127,11.206967 -29.9253575,16.94837 -26.2473585,21.127787 -2.963413,-1.143508 -6.378646,-1.919235 -9.875927,-2.213102 -3.49728,-0.293868 -11.004389,-0.38643 -14.295992,0.397504 -3.291602,0.783934 -23.128829,-1.202861 -25.475209,0.887035 -2.346379,2.089896 16.725873,8.537039 16.064262,12.161057 -3.292994,13.921202 5.799109,26.450014 17.345417,29.380231 13.730356,5.188 26.006057,-8.034164 32.1692516,-3.935193 6.639538,17.444152 9.98526249,35.9448613 6.6478027,54.252182 10.8172311,17.765142 -13.3910283,-7.980713 -1.6428478,14.594602 -11.9651765,-17.53021 -21.2021805,15.848031 -26.9732685,2.330551 -5.02904,-9.322401 -21.273824,-17.286561 -13.104576,-29.036379 6.819954,-12.4953264 3.013047,-30.465813 -11.652758,-35.07289 -12.760407,-5.364578 -27.197857,1.753491 -38.358585,9.704263 -6.141234,9.0486654 -14.650084,20.6160621 -5.23419,30.717433 4.023256,3.431245 9.27164,7.45285 9.054766,10.124527 -0.203744,2.509954 -5.184247,3.161347 -7.985005,6.456774 -2.106125,2.478118 -4.701045,5.001887 -6.494975,7.832182 -1.79394,2.830295 -2.82959,5.957825 -1.9867,9.704263 -1.40702,5.845005 -12.55493,-10.625151 -15.66437,-14.250749 -3.55558,-5.371987 0.37795,-10.417825 -15.20589,-2.101317 18.23377,-24.24188 -12.28037,6.274792 0.26744,-17.001564 2.48369,-8.538738 3.41974,-14.8286165 4.43187,-18.6444124 1.96387,-7.4038367 0.78006,-26.7642916 6.15113,-22.3503706 12.23027,9.621702 33.989775,3.003461 43.860212,-7.297301 3.221262,-3.855524 4.95498,-8.333244 5.411358,-12.866835 0.456378,-4.533591 -0.364585,-9.123052 -2.252683,-13.202056 -1.888098,-4.079003 18.442802,-8.769774 14.630637,-11.261537 -3.812166,-2.491763 -31.767399,-2.784519 -37.083224,-2.556388 -7.60565,-0.913561 -24.04382,10.140402 -13.52484,-0.764115 -2.75252,-6.593398 -13.88397,-23.602542 -12.64611,-28.004824 13.11205,-1.020822 25.64394,31.958111 27.62277,15.855391 -6.32012,-17.095618 16.101388,14.302184 12.493285,-3.629547 4.402465,0.100863 11.998101,3.346164 15.129482,0.229234 9.565977,-9.521805 10.21336,3.02718 13.945103,1.375408 -2.352619,-4.889335 -2.64412,-6.687757 -1.52823,-6.76242 1.115877,-0.0747 3.633802,1.593027 6.877037,3.705959 1.049442,0.683706 2.848989,1.698279 4.699309,2.636197 -5.596649,-3.767455 -13.37566,-12.743767 -12.837136,-3.51493 -9.705658,-7.653268 -10.034129,7.714006 -17.994914,-3.056461 -0.942906,0.835832 3.779118,4.531827 2.25414,5.195984 -1.524979,0.664169 -9.308795,-1.715677 -11.194289,-1.413613 -1.885506,0.302076 0.763675,5.713895 -1.26079,5.463424 -2.024465,-0.250459 -8.71754,-6.15103 -10.659407,-7.144478 -6.06574,-5.591954 2.636784,20.835063 -7.06807,4.393663 -6.60225,-7.513698 -11.59768,-10.995643 -15.62615,-13.219194 -2.39453,-1.114642 -4.04014,-1.635977 -5.08137,-1.604642 z m 82.562653,16.352066 c -0.978557,-0.390493 -2.021042,-0.889992 -3.056461,-1.413613 1.134851,0.759665 2.192962,1.284863 3.056461,1.413613 z"
-             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-             inkscape:connector-curvature="0"
-             sodipodi:nodetypes="sccsccscccccccccccccccccccccccsssscccccscccsssccccccccccsssccccsccssscccccsccscccssscccsccc" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4007"
-             d="m -101.14264,-66.616866 c 1.08956,-0.06211 2.349344,-0.01284 4.049812,0.191029 15.178422,1.81956 19.678572,21.379309 15.244099,34.041334 -7.637607,10.370927 -21.372961,16.160439 -34.155951,15.014865 -14.42653,-3.613739 -22.37215,-19.145293 -13.56305,-33.468248 4.65885,-6.004625 14.62694,-12.54742 15.58796,-12.378667 l 7.83218,-2.597992 c 1.86724,-0.31259 3.18903,-0.698756 5.00495,-0.802321 z"
-             style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4009"
-             d="m -39.402127,-65.547105 c 11.331927,0.0037 24.842329,2.223319 30.1825529,13.639458 6.8810351,13.571286 -6.8435019,25.677805 -19.4467329,27.04968 -12.991634,1.600375 -31.124419,-7.354335 -28.195853,-22.732429 0.417708,-8.648684 5.241708,-18.456403 15.244099,-17.918503 0.733074,-0.01736 1.460475,-0.03839 2.215934,-0.03814 z"
-             style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-          <path
-             sodipodi:nodetypes="csccccccc"
-             inkscape:connector-curvature="0"
-             id="path4011"
-             d="m -127.04615,-46.2914 c -1.63223,3.339183 -1.0304,2.873733 -1.60464,6.380362 -0.57425,3.506641 2.15583,11.898558 3.74417,12.569696 9.02869,12.618281 24.70027,7.352219 37.976525,-4.011605 7.07435,-7.018111 0.429408,-32.404147 -11.2707,-31.366931 3.831139,16.637393 -3.102965,14.062899 -8.431845,17.856432 -4.81437,-4.438544 -11.45355,-10.741138 4.62952,-17.338093 -3.87571,-0.265252 -6.49544,-0.498766 -10.17642,1.564981 -7.3582,3.534211 -11.1141,6.675275 -14.86661,14.345158 z"
-             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-          <path
-             sodipodi:nodetypes="cccccc"
-             inkscape:connector-curvature="0"
-             id="path4013"
-             d="m -31.653142,-57.675874 c -13.419869,-2.764691 -22.654281,18.225029 -9.513235,24.337071 14.629152,7.32531 33.781144,-9.885732 13.372017,-12.416873 3.757197,-6.208663 10.42406,-11.125005 -2.712609,-11.881992 -0.384197,-0.02482 -0.767698,-0.04878 -1.146173,-0.03815 z"
-             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4015"
-             d="m -64.923576,-21.037391 c 12.763084,0.824719 23.977081,15.349877 20.745729,28.0812352 -6.404851,10.7986238 -5.329172,20.0435128 3.782371,28.2340588 4.449302,4.029956 9.593118,7.396696 7.488329,16.963358 -1.009207,7.559276 -25.865044,14.088684 -35.684182,8.137828 -6.989967,0.58173 -15.353178,5.610256 -27.011474,2.25414 -18.017297,-5.901501 -9.782597,-20.518769 2.597992,-28.883557 13.865843,-5.640234 -12.279769,-16.270092 -8.634499,-26.4001817 1.06419,-11.5718102 10.157924,-20.2881283 21.013166,-24.4134823 4.940243,-2.118299 10.260894,-3.973301 15.702568,-3.973399 z"
-             style="fill:#b6c100;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4017"
-             d="m -73.214226,-11.868008 c -10.678896,0.329914 -19.960219,4.5031204 -14.059721,18.7590292 1.88871,7.2271368 9.521524,26.5881668 19.714174,21.0131698 7.164796,-4.092614 9.832048,-15.50127 13.486634,-24.1460424 4.784608,-14.1316326 -6.05606,-15.5407106 -14.747425,-15.5115396 -0.718684,-0.07727 -1.485733,-0.10392 -2.25414,-0.114556 -0.720383,-0.0098 -1.427599,-0.02201 -2.139522,0 z"
-             style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4019"
-             d="m -72.335494,-9.7284855 c 7.958768,-0.2558747 16.263209,2.0212743 17.230799,6.1893335 -0.184879,8.2852711 -8.202502,31.322038 -16.237449,30.56461 -10.59466,-0.998717 -14.693423,-21.6710787 -16.122832,-27.89020662 -0.451635,-5.82404978 7.170715,-8.60786218 15.129482,-8.86373688 z"
-             style="fill:#538700;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4021"
-             d="m -127.19897,34.284553 c 2.73931,0.537081 15.36955,24.102946 20.59291,22.006519 7.319855,9.807487 20.656494,9.701154 31.023076,7.832181 6.865672,-0.947111 7.669223,-1.492805 14.119989,0.697929 6.612528,0.981624 7.014962,1.214792 12.815074,-0.315871 7.358564,-3.165992 7.195936,-1.411388 13.180988,-6.074716 7.607825,-5.640247 -0.795034,-19.792065 7.75577,-10.124527 10.019275,-8.791458 12.552482,-10.698262 13.983309,-11.232494 2.235605,-0.83472 -2.833266,7.033197 -1.337202,9.742469 L 7.8966075,88.460324 c 3.2894125,5.956896 8.5910275,18.682256 11.9966095,26.896856 3.192486,7.70061 0.746791,10.64675 3.094667,11.07967 13.30964,2.45411 0.784263,4.88285 0.343852,5.19599 -3.924081,2.7901 5.755633,3.69723 7.526535,3.01825 -0.812163,0.67635 -21.0715847,17.48125 -30.56461027,19.17929 -9.57825193,4.98263 -19.56904073,6.53085 -17.99491373,-7.87038 -7.206047,-9.0651 -6.104682,-16.40454 5.04316,-14.70922 6.9258186,0.0279 33.955903,9.1045 22.705057,2.71888 -7.6681837,1.90569 8.49058,2.02158 -4.0880164,5.57804 -7.4637433,1.08164 -15.280632,-9.54401 -26.3346046,-9.63412 -4.31829,1.22329 -50.280715,7.96751 -38.473203,9.09297 50.8494373,-2.53217 40.325052,0.81393 -2.941843,4.58469 1.561582,8.00203 35.903379,1.08473 38.58782,-0.26744 6.029101,5.66612 -27.220561,8.41544 -37.174207,11.88199 -7.525142,2.46392 34.130754,-1.89527 42.217367,-0.53488 -13.460923,6.57473 -44.887724,4.03954 -39.428346,6.18933 9.338955,3.94917 37.459912,4.94978 44.662536,-0.0381 12.25902484,-0.69515 1.721528,4.99641 1.721528,4.99641 0,0 -0.868999,1.89508 -1.064489,12.92209 -0.35093,19.96806 -1.304255,22.87495 -2.174857,42.7693 -0.521738,6.60956 1.337201,26.17094 1.337201,26.17094 -29.193421,14.8881 -19.062923,18.25746 -53.306864,16.58295 -34.243926,-1.67448 -31.095707,-14.26795 -48.500566,-25.60549 0,0 -4.54,-20.65675 -4.24371,-34.59326 0.44,-10.03552 0.68337,-21.75203 0.99335,-33.46825 0.30999,-11.71622 -24.66677,-21.03579 -22.63628,-30.86433 0.30066,-1.45533 3.53725,-4.00521 2.98005,-0.42027 -0.78799,5.06979 7.10955,12.34647 10.39197,14.70922 6.89159,4.96074 15.55847,9.03512 21.50984,11.53814 12.191492,4.5406 29.290912,-1.38585 38.052942,-2.71261 5.565412,-4.96083 -88.399732,2.70458 -1.146172,-4.73751 3.555654,-4.5475 -35.71146,-0.67935 -36.4483,-2.71261 2.98036,-2.93365 32.855772,-0.6984 35.837007,-6.34216 -3.479353,-1.90818 -33.207707,-1.66271 -33.926717,-3.40031 -0.2758,-0.66652 31.674839,-0.89558 33.391837,-1.41361 -2.582722,-5.39551 -24.54859,-4.84589 -31.672577,-6.95345 -3.96685,-5.64094 -11.79646,12.21787 -11.79646,12.21787 0,0 -9.87892,-16.47556 -3.70596,-4.27905 5.93324,11.21142 13.69458,-17.91286 10.38285,0.23721 0.89904,4.94325 -0.85459,14.65261 -0.72591,18.60621 -9.63223,-6.08156 -28.20253,-11.06737 -27.92842,-24.33707 -0.49371,-13.37336 -14.05974,10.29361 -13.41022,6.30395 -2.13128,-10.09071 11.26939,-21.66948 -2.94184,-14.82384 -6.8817,3.31495 15.42008,-15.13151 13.75407,-28.99817 -0.53033,-7.587886 1.59753,-19.865519 3.66775,-29.609467 1.97486,-10.236113 9.09471,-31.258219 6.80063,-36.983178 -0.0643,-1.005588 0.14356,-1.413932 0.53488,-1.337202 z"
-             style="fill:#88aa00;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-             sodipodi:nodetypes="cccccccsccssscccccccccccccccccczccsssscccccsccccccccsccccc" />
-        </g>
-        <path
-           id="path4155"
-           d="m -40.929882,118.76241 c 0.695961,-5.67294 -9.610176,-19.148975 -5.321426,1.47885 3.619867,1.37491 5.089436,0.41227 5.321426,-1.47885 z"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path4157"
-           d="m -41.280001,97.845273 c 0.475461,-5.34328 -10.029967,-15.98104 -5.07501,2.346207 3.59795,0.68286 4.91653,-0.565097 5.07501,-2.346207 z"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path4159"
-           d="m -42.491335,79.382143 c 0.04611,-5.22155 -5.318858,-18.20764 -4.500642,-1.23921 3.35273,4.36303 4.480056,3.61246 4.500642,1.23921 z"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -53.505765,121.79782 c 0.695977,-5.67297 -9.610172,-19.149 -5.321422,1.47883 3.619879,1.37491 5.089441,0.41227 5.321422,-1.47883 z"
-           id="path4161" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -62.769127,108.07186 c 0.47547,-5.3433 -10.02996,-15.980787 -5.075,2.3462 3.59797,0.68284 4.91655,-0.5651 5.075,-2.3462 z"
-           id="path4163" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -72.599048,128.96372 c -0.695961,5.67294 9.610176,19.14898 5.321426,-1.47885 -3.619867,-1.37491 -5.089436,-0.41227 -5.321426,1.47885 z"
-           id="path4165" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -35.687559,62.293883 c -0.04611,5.22155 5.318858,18.20764 4.500642,1.23921 -3.35273,-4.36303 -4.480056,-3.61246 -4.500642,-1.23921 z"
-           id="path4167" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -24.930009,70.859183 c 0.160318,3.6569 6.26064,12.32645 4.7328,0.50804 -3.671039,-2.82647 -4.805639,-2.17036 -4.7328,-0.50804 z"
-           id="path4169" />
-        <path
-           id="path4171"
-           d="m -33.650916,119.19498 c -0.695977,5.67297 9.610172,19.149 5.321422,-1.47883 -3.619879,-1.37491 -5.089441,-0.41227 -5.321422,1.47883 z"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path4173"
-           d="m -31.737826,87.639573 c -0.475463,5.3433 10.029955,15.981097 5.075011,-2.34619 -3.597977,-0.68286 -4.91656,0.56539 -5.075011,2.34619 z"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path4175"
-           d="m -27.980261,103.3184 c -0.04621,5.22157 5.318856,18.20736 4.500637,1.23922 -3.352738,-4.36304 -4.480051,-3.61275 -4.500637,-1.23922 z"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path4177"
-           d="m -16.882367,115.83246 c 0.16031,3.65691 6.2606,12.32646 4.7328,0.50834 -3.67107,-2.82673 -4.80568,-2.17036 -4.7328,-0.50834 z"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path4179"
-           d="m -12.492707,73.123563 c -0.47549,5.34299 10.0299398,15.98078 5.0750098,-2.34647 -3.5979798,-0.6829 -4.9165698,0.56538 -5.0750098,2.34647 z"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path4181"
-           d="m -17.946987,96.526133 c -0.0462,5.221557 5.31882,18.207627 4.50064,1.23921 -3.35275,-4.36301 -4.48008,-3.61274 -4.50064,-1.23921 z"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path4183"
-           d="m -110.6789,116.61926 c -0.69596,5.67294 9.61018,19.14898 5.32143,-1.47885 -3.61987,-1.37491 -5.08944,-0.41227 -5.32143,1.47885 z"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path4185"
-           d="m -106.31189,68.466112 c -0.0461,5.22155 5.31886,18.20764 4.50064,1.23921 -3.35273,-4.36303 -4.48005,-3.61246 -4.50064,-1.23921 z"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path4187"
-           d="m -91.955246,73.528588 c 0.160318,3.6569 6.26064,12.32645 4.7328,0.50804 -3.671039,-2.82647 -4.805639,-2.17036 -4.7328,-0.50804 z"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -95.297456,127.05054 c -0.695977,5.67297 9.610172,19.149 5.321422,-1.47883 -3.619879,-1.37491 -5.089441,-0.41227 -5.321422,1.47883 z"
-           id="path4189" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -102.36216,87.639573 c -0.47546,5.3433 10.029962,15.981097 5.075018,-2.34619 -3.597978,-0.68286 -4.916568,0.56539 -5.075018,2.34619 z"
-           id="path4191" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -99.726806,106.12396 c -0.0462,5.22157 5.318851,18.20736 4.500632,1.23922 -3.352742,-4.36304 -4.480052,-3.61275 -4.500632,-1.23922 z"
-           id="path4193" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -79.968142,115.83246 c 0.16031,3.65691 6.2606,12.32646 4.7328,0.50834 -3.67107,-2.82673 -4.80568,-2.17036 -4.7328,-0.50834 z"
-           id="path4195" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -88.571314,96.526133 c -0.0462,5.221557 5.31882,18.207627 4.50064,1.23921 -3.35275,-4.36301 -4.48008,-3.61274 -4.50064,-1.23921 z"
-           id="path4197" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -109.07734,106.16218 c 0.69596,-5.67294 -9.61019,-19.148977 -5.32143,1.47885 3.61987,1.37491 5.08944,0.41227 5.32143,-1.47885 z"
-           id="path4199" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -111.1108,83.561703 c 0.47546,-5.34328 -10.02997,-15.98104 -5.07501,2.34621 3.59795,0.68286 4.91653,-0.5651 5.07501,-2.34621 z"
-           id="path4201" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -112.32213,65.098573 c 0.0461,-5.22155 -5.31886,-18.20764 -4.50064,-1.23921 3.35273,4.36303 4.48005,3.61246 4.50064,1.23921 z"
-           id="path4203" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:2.75792074;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -125.99481,83.254857 c 3.10678,-7.674815 -5.81659,-21.148191 -5.89149,4.175078 3.21606,-0.241042 5.0217,-2.026328 5.89149,-4.175078 z"
-           id="path4205" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -121.62877,61.15832 c -0.16032,-3.6569 -6.26064,-12.32645 -4.7328,-0.50804 3.67104,2.82647 4.80564,2.17036 4.7328,0.50804 z"
-           id="path4207" />
-        <path
-           id="path4209"
-           d="m -123.33657,107.51425 c 0.69598,-5.67297 -9.61017,-19.148997 -5.32142,1.47883 3.61988,1.37491 5.08944,0.41227 5.32142,-1.47883 z"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 9.8402319,113.01408 c 1.2674041,-5.57321 -7.6197463,-20.024462 -5.4439074,0.93184 3.4618772,1.73474 5.0214414,0.92601 5.4439074,-0.93184 z"
-           id="path4211" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -1.3508364,96.736543 c 1.0146147,-5.26759 -8.3585019,-16.91512 -5.2866725,1.81972 3.5102278,1.04401 4.9485074,-0.0639 5.2866725,-1.81972 z"
-           id="path4213" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -24.443374,54.533983 c -0.475463,5.3433 10.029955,15.981097 5.075011,-2.34619 -3.597977,-0.68286 -4.91656,0.56539 -5.075011,2.34619 z"
-           id="path4215" />
-      </g>
-      <path
-         id="path4678-6-8"
-         d="m 1474.477,-67.202588 c -0.1603,-3.6569 -6.2606,-12.32645 -4.7328,-0.50804 3.6711,2.82647 4.8057,2.17036 4.7328,0.50804 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1490.0908,-67.007648 c 0.696,-5.67297 -9.6102,-19.148997 -5.3214,1.47883 3.6199,1.37491 5.0894,0.41227 5.3214,-1.47883 z"
-         id="path3298-2-9" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1488.0299,55.281842 c 0.4755,-5.3433 -10.03,-15.9811 -5.075,2.34619 3.598,0.68286 4.9165,-0.56539 5.075,-2.34619 z"
-         id="path3300-2-5" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1478.6496,15.76886 c 0.046,-5.22157 -5.3189,-18.2073597 -4.5007,-1.23922 3.3528,4.36304 4.4801,3.61275 4.5007,1.23922 z"
-         id="path3302-7-2" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1485.2227,3.8276656 c -0.6959,5.67294 9.6102,19.1489804 5.3214,-1.47885 -3.6198,-1.37491001 -5.0894,-0.41227 -5.3214,1.47885 z"
-         id="path4517-3" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1494.0012,45.869674 c -0.4755,5.34328 10.0299,15.98104 5.075,-2.34621 -3.598,-0.68286 -4.9166,0.5651 -5.075,2.34621 z"
-         id="path4519-6" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1475.458,84.987883 c -0.2332,8.27744 15.2739,17.732827 4.7782,-5.9862 -3.4597,1.36094 -4.7129,3.66874 -4.7782,5.9862 z"
-         id="path4523-1" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1513.8326,-12.97313 c -0.4704,3.6300529 4.0495,13.21888093 4.5752,1.31373 -3.1309,-3.415242 -4.3613,-2.963852 -4.5752,-1.31373 z"
-         id="path4525-0" />
-      <path
-         id="path4527-9"
-         d="m 1495.1175,28.265378 c -0.6959,5.67297 9.6102,19.149 5.3215,-1.47883 -3.6199,-1.37491 -5.0895,-0.41227 -5.3215,1.47883 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4534-7"
-         d="m 1521.5713,33.110828 c -0.4705,3.630063 4.0494,13.21889 4.5751,1.314025 -3.1308,-3.415498 -4.3613,-2.963851 -4.5751,-1.314025 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4536-1"
-         d="m 1437.7242,35.643083 c -0.4755,5.3433 10.03,15.98079 5.075,-2.3462 -3.598,-0.68284 -4.9166,0.5651 -5.075,2.3462 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1507.8966,50.2969 c -0.4755,5.34305 10.0299,15.980808 5.075,-2.34647 -3.598,-0.68287 -4.9166,0.56539 -5.075,2.34647 z"
-         id="path4538-6" />
-      <path
-         id="path4540-0"
-         d="m 1521.248,-5.9636307 c -1.3865,5.18181373 7.1347,17.4665437 5.4027,-1.4395224 -3.4271,-1.290994 -4.9406,-0.287858 -5.4027,1.4395224 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4542-3"
-         d="m 1516.3014,13.511959 c -0.9426,5.135992 2.111,18.850752 4.2207,1.994126 -2.5531,-4.874217 -3.7927,-4.32883 -4.2207,-1.994126 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4552-4"
-         d="m 1487.3221,-30.26103 c 0.1603,3.6569 6.2606,12.32645 4.7328,0.50804 -3.6711,-2.82647 -4.8057,-2.17036 -4.7328,-0.50804 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1481.6188,-21.57451 c -0.1603,-3.6569 -6.2606,-12.32645 -4.7328,-0.50804 3.6711,2.82647 4.8057,2.17036 4.7328,0.50804 z"
-         id="path4579-7" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1487.6276,-42.220793 c 0.4755,-5.34305 -10.0299,-15.98081 -5.075,2.34647 3.598,0.68287 4.9165,-0.56539 5.075,-2.34647 z"
-         id="path4591-5" />
-      <path
-         id="path4597-2"
-         d="m 1462.6351,59.848684 c 2.2061,-5.272523 -4.0656,-21.035927 -5.5231,-0.01745 3.1123,2.30379 4.7876,1.775091 5.5231,0.01745 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4599-4"
-         d="m 1476.3201,46.667587 c 1.9047,-5.014872 -5.3275,-18.100007 -5.5206,0.884257 3.2786,1.631666 4.8857,0.787343 5.5206,-0.884257 z"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4601-5"
-         d="m 1496.0245,99.984161 c 1.4584,-5.013965 -0.1895,-18.967674 -3.9969,-2.411684 2.0459,5.107923 3.3344,4.690673 3.9969,2.411684 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4603-6"
-         d="m 1548.2631,4.7471095 c 2.4661,-7.9049901 -9.9012,-21.2064085 -6.2207,4.4686142 3.6989,-0.3732138 5.5302,-2.2554398 6.2207,-4.4686142 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path4605-2"
-         d="m 1496.8957,82.570428 c 0.8359,-3.563666 -2.6888,-13.561257 -4.4184,-1.770682 2.7685,3.714977 4.0384,3.390619 4.4184,1.770682 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1537.8148,32.292592 c 2.2062,-5.272536 -4.0656,-21.03593 -5.5231,-0.01746 3.1123,2.3038 4.7877,1.775091 5.5231,0.01746 z"
-         id="path4607-5" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1445.3337,20.486795 c 1.0146,-5.26759 -8.3585,-16.9154197 -5.2867,1.81971 3.5102,1.04403 4.9486,-0.0641 5.2867,-1.81971 z"
-         id="path4609-9" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1444.5855,1.8304853 c 0.5752,-5.18999 -3.446,-18.6527003 -4.3519,-1.68902 2.8933,4.6804 4.0908,4.04824 4.3519,1.68902 z"
-         id="path4611-4" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#5f7800;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1532.6145,16.57098 c 1.9046,-5.014901 -5.3276,-18.0997865 -5.5207,0.884247 3.2786,1.631646 4.8859,0.787361 5.5207,-0.884247 z"
-         id="path4615-1" />
-      <path
-         id="path4617-0"
-         d="m 1539.2027,-9.5754451 c 1.9046,-5.0146539 -5.3277,-18.0998059 -5.5208,0.884496 3.2786,1.631676 4.8859,0.787066 5.5208,-0.884496 z"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1428.5779,25.998505 c 1.0146,-5.26728 -8.3585,-16.9151097 -5.2867,1.81998 3.5102,1.04408 4.9485,-0.0641 5.2867,-1.81998 z"
-         id="path4619-5" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#668000;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1432.5146,10.248175 c 0.5752,-5.1899897 -3.4459,-18.6529697 -4.3518,-1.6890097 2.8932,4.6803697 4.0908,4.0482297 4.3518,1.6890097 z"
-         id="path4621-7" />
-      <g
-         transform="translate(1550.9127,0)"
-         id="g3468"
-         inkscape:label="#g4948"
-         style="fill:#784421;fill-opacity:1">
-        <path
-           sodipodi:nodetypes="scccscccsccscs"
-           inkscape:connector-curvature="0"
-           style="fill:#784421;fill-opacity:1;stroke:#000000;stroke-width:2.32819724;stroke-opacity:1"
-           d="m 25.53423,126.21161 c 6.110785,-1.45047 14.922666,-4.54962 14.164174,1.94406 3.118521,3.65934 -3.892631,21.76068 -1.973833,22.63199 -3.603744,5.1222 -8.237155,3.45266 -13.837391,3.92328 -8.060434,14.6076 -1.914322,47.1584 -3.691438,69.2372 -0.488459,6.06986 3.758466,25.20099 -1.672096,38.74859 -39.952483,35.33803 -124.172896,14.17648 -152.517696,-4.17609 -5.53359,-22.38339 -3.29335,-58.16373 -6.53223,-81.04604 2.97305,-10.92913 0.67014,-10.0741 -5.39551,-11.62361 -6.06527,-1.54949 -10.63489,-2.28285 -15.81522,-8.47396 -4.57572,-18.20767 -1.36675,-25.06942 -1.36675,-25.06942 0,0 19.56713,-2.48967 30.27305,-1.92222 27.27506,1.44567 80.105781,2.30526 107.616982,2.28977 12.9734,1.79553 37.811311,-3.39294 50.747958,-6.46355 z"
-           id="path3584" />
-      </g>
-      <g
-         transform="matrix(1.4498992,0.19675206,-0.19675206,1.4498992,1671.9123,-433.9351)"
-         id="0hair-5"
-         inkscape:label="#g3776">
-        <path
-           sodipodi:nodetypes="czcccsccc"
-           inkscape:connector-curvature="0"
-           id="rect4414-4"
-           d="m -110.04834,333.93794 c -0.31707,0.90037 22.673315,-2.61157 31.651722,-6.8758 8.9784,-4.26422 26.981803,-1.96451 26.981803,-1.96451 -8.425126,4.28478 -13.553074,5.87856 -17.64195,9.57701 7.551813,2.36652 18.287876,4.81342 21.005758,10.44807 -4.286795,-2.82328 -20.923565,-1.63777 -28.529531,0.84787 -14.981858,4.89611 -27.202662,-0.31838 -41.251012,5.15685 4.2177,-5.44318 19.33577,-8.44439 26.203475,-10.80483 -3.199346,-3.17875 -6.954342,-4.50997 -18.420265,-6.38466 z"
-           style="fill:#784421;fill-opacity:1;stroke:#000000;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      </g>
-    </g>
-    <g
-       id="0penalty_ten"
-       inkscape:label="#g3899"
-       transform="translate(681.79528,410.79084)">
-      <g
-         id="g4372"
-         style="fill:#ffffff"
-         transform="translate(-178.54465,0)">
-        <path
-           style="font-size:92.30457306px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
-           d="m -402.3125,17.5625 c -8.93862,1.485828 -9.78026,12.457353 -16.15163,17.230527 -4.49017,3.507613 -7.47478,11.444132 -1.37962,15.019473 3.94291,2.359701 8.63682,-0.05451 11.4375,-3.0625 0.58789,10.808817 -1.5722,22.255833 2.4375,32.53125 2.41644,7.60555 14.30874,4.010304 13.71875,-3.34375 -0.91877,-17.846602 0.46455,-36.169344 -3.09375,-53.75 -1.16514,-2.699177 -3.87608,-4.976605 -6.96875,-4.625 z"
-           id="path4374"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-size:92.30457306px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
-           d="m -360.03125,17.90625 c -9.75157,2.187813 -19.13308,8.741243 -23.90625,17.40625 -2.92931,11.428121 -12.97732,22.131279 -9.75,34.5 2.6669,9.577919 12.90787,17.28612 22.9375,13.59375 15.94932,-4.181906 23.84169,-21.390332 27.1875,-36.21875 C -341.14264,35.927666 -345.52854,20.833744 -358,18 c -0.65998,-0.12246 -1.35548,-0.157856 -2.03125,-0.09375 z m 0.125,17.5 c 3.04176,1.440065 0.65841,6.247899 0.9375,8.8125 -2.40236,9.088772 -6.06505,20.251162 -15.59375,23.78125 -5.09264,0.02995 -2.87196,-7.407092 -1.53125,-10.1875 3.77732,-8.071776 6.78437,-18.405019 15.5625,-22.34375 0.21072,0.01572 0.41633,-0.05333 0.625,-0.0625 z"
-           id="path4376"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-size:68.20104218px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:-5.91095638px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans"
-           d="m -436.1875,49.09375 c -8.36543,0.860076 -18.24591,-1.665939 -25.28125,3.90625 -2.71247,4.109594 -1.41049,9.289989 -2.46875,13.875 15.78173,-1.625164 32.32671,1.176184 47.5625,-3.6875 6.15198,-4.124047 1.24454,-14.379227 -5.6875,-13.625 -4.68548,-0.555664 -9.41449,-0.531719 -14.125,-0.46875 z"
-           id="path4378"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g4367"
-         transform="translate(-178.54465,0)">
-        <path
-           style="font-size:92.30457306px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
-           d="m -401.9375,19.53125 c -7.29636,1.046594 -8.26268,10.300254 -13.18133,14.589597 -2.8403,3.413484 -8.8586,7.96763 -5.03742,12.847903 4.21912,4.628563 10.13039,-0.664874 12.625,-4.375 2.17893,-1.928273 0.59099,7.117865 1.125,9.59375 0.69713,9.141859 -1.52528,19.54297 3.03125,27.84375 3.69101,3.97612 10.28776,-0.258327 8.9375,-5.375 -0.16044,-16.701297 -0.11831,-33.610911 -2.21875,-50.15625 -0.61844,-2.502207 -2.45078,-5.063593 -5.28125,-4.96875 z"
-           id="path3881"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-size:92.30457306px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
-           d="m -360.40625,19.9375 c -8.40969,2.137215 -16.19191,8.03348 -21.375,14.96875 -2.61353,10.849374 -10.9368,20.439967 -10.6875,31.84375 1.83663,8.394886 8.89689,17.131408 18.34375,15.25 15.78346,-1.881476 24.07461,-18.291576 27.875,-32.0625 2.99275,-10.494332 0.99888,-24.715249 -10.15625,-29.46875 -1.28393,-0.478181 -2.62991,-0.681123 -4,-0.53125 z m 0.5,13.46875 c 5.17478,0.408782 3.01723,7.82683 2.9375,11.15625 -1.33168,6.779042 -4.61631,13.28836 -8.0625,19.125 -3.24792,2.903201 -9.17092,9.271572 -13.5625,4.78125 -3.09713,-4.929656 0.93361,-11.477281 2.57671,-16.282311 3.79933,-6.783224 7.07952,-16.155102 15.11079,-18.717689 0.33465,0.0074 0.66565,-0.06994 1,-0.0625 z"
-           id="path3883"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-size:68.20104218px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:-5.91095638px;word-spacing:0px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans"
-           d="m -441.25,51.125 c -6.09084,0.665481 -13.38171,-0.804518 -18.5625,3 -2.0587,3.112017 -1.25775,7.075631 -1.8125,10.625 14.21964,-1.068272 28.89619,0.455634 42.84375,-2.65625 5.7506,-1.686406 3.05607,-10.268778 -2.21875,-10.375 -6.67993,-0.936564 -13.51628,-0.611454 -20.25,-0.59375 z"
-           id="path3887"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <g
-       id="0point"
-       inkscape:label="#g3912"
-       transform="translate(500.0765,410.79084)">
-      <g
-         id="g4390"
-         style="fill:#ffffff">
-        <path
-           style="font-size:92.30457306px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold"
-           d="m -375.40625,-79.625 c -8.85949,1.597448 -9.8047,12.450976 -16.08126,17.269055 -4.28043,3.428817 -7.40799,10.850494 -1.88749,14.668445 3.85428,2.869069 9.13003,0.476713 11.9375,-2.78125 0.45971,10.297589 -1.22584,20.995564 1.8125,30.96875 0.79072,6.906703 10.64338,7.825663 13.375,1.90625 2.34583,-6.068195 -0.16336,-13.083848 0.6264,-19.499777 -0.4715,-12.610453 -0.0634,-25.534925 -2.7514,-37.875223 -1.12836,-2.754387 -3.94804,-4.970094 -7.03125,-4.65625 z"
-           id="path4392"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-size:92.30457306px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans"
-           d="m -409.90625,-62.375 c -6.94792,0.723868 -7.07568,9.223753 -7.78125,14.25 -5.94366,0.21175 -15.90358,-1.100821 -17.4375,6.75 -0.75871,5.707957 5.52372,8.703866 10.40625,7.75 4.07061,-0.334134 8.19765,-0.685168 5.9375,4.5 -0.63633,4.745163 -2.61879,13.101144 4.28125,13.75 6.17887,1.940353 9.8672,-4.873914 9.4375,-10.15625 0.0854,-2.684896 -0.13031,-9.496119 4.40625,-7.34375 5.62103,0.01926 15.36552,1.81648 16.4375,-6.09375 0.84551,-5.950021 -5.88384,-9.372178 -10.96875,-7.9375 -2.09003,-0.482074 -6.14699,1.35362 -7.375,-0.4375 1.02365,-5.690326 1.3366,-16.121284 -7.34375,-15.03125 z"
-           id="path4394"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g4386">
-        <path
-           inkscape:connector-curvature="0"
-           id="path3565"
-           d="m -375.03125,-77.65625 c -7.21843,1.156967 -8.20933,10.266583 -13.09991,14.573034 -2.86121,3.447405 -8.99717,8.108757 -4.96259,12.989466 4.27956,4.454657 10.1069,-0.824971 12.5625,-4.5625 2.1228,-1.562254 0.53697,7.915446 1.0928,10.687347 0.68295,8.827665 -1.45776,18.906675 3.0947,26.875153 3.66484,3.904732 10.24598,-0.335835 8.875,-5.40625 -0.16054,-16.695769 -0.13776,-33.574705 -2.21875,-50.125 -0.58101,-2.591291 -2.47846,-5.102805 -5.34375,-5.03125 z"
-           style="font-size:92.30457306px;font-style:normal;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#00d800;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3849"
-           d="m -409.81079,-60.361011 c -6.24156,0.943424 -4.81231,9.470365 -6,13.90625 -5.19979,1.367148 -12.56876,-1.203531 -16.53125,3.21875 -2.34407,3.54964 0.65608,7.978249 4.78125,7.46875 3.7955,0.259924 7.60683,0.140421 11.40625,0.03125 0.1742,5.547638 -2.62363,13.435608 -0.60224,17.536284 7.84547,3.303458 9.62426,-1.572756 9.72993,-8.708685 0.39415,-4.634829 0.74007,-9.630397 6.52856,-7.983849 4.34139,-0.568926 12.74286,2.246649 14.21875,-3.8125 0.872,-4.452019 -3.63566,-7.445656 -7.68742,-6.076052 -3.94542,-0.741897 -12.32169,2.387288 -10.3013,-4.140376 0.0564,-4.469957 1.46665,-12.200796 -5.54253,-11.439822 z"
-           style="font-size:92.30457306px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#00d800;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans" />
-      </g>
-    </g>
-    <g
-       id="0penalty_twenty"
-       inkscape:label="#g3904"
-       transform="translate(500.0765,410.79084)">
-      <g
-         id="g4405"
-         style="fill:#ffffff">
-        <path
-           style="font-size:92.30457306px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-30px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold"
-           d="m -399.3125,122.96875 c -10.07126,0.19607 -19.91745,4.61152 -26.78125,11.75 -5.97243,2.27758 -7.62303,11.88803 -2.875,16.09375 5.7158,2.96873 10.00916,-4.42518 14.75,-6.46875 5.74057,-4.13554 14.02214,-7.26731 20.625,-4.75 -3.99468,12.36819 -12.72705,23.32917 -23.8125,30.125 -4.761,2.90818 -10.66074,9.58459 -5.78125,14.96875 5.23565,6.05193 13.5722,1.51532 20.21859,2.38094 11.52638,-0.61241 23.18309,0.19115 34.62516,0.21281 7.22362,-2.14195 5.36003,-14.25693 -2.21875,-14.25 -7.92232,-1.94926 -16.18742,-1.7751 -24.3125,-1.9375 8.98666,-10.0853 19.57739,-22.80018 17.03125,-37.28125 -2.78848,-8.7643 -13.38734,-11.15569 -21.46875,-10.84375 z"
-           id="path4407"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-size:92.30457306px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-30px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold"
-           d="m -349.0625,121.15625 c -9.74546,2.24538 -19.22949,8.70967 -23.90625,17.4375 -3.04015,11.18904 -12.3955,21.56983 -10.03125,33.71875 2.43142,9.90787 12.95896,18.12272 23.28125,14.34375 15.54269,-4.15628 23.33861,-20.65642 26.90625,-35.125 2.71249,-11.4227 -1.16308,-26.80381 -13.75,-30.1875 -0.82063,-0.16789 -1.65747,-0.27928 -2.5,-0.1875 z m 0.1875,17.5 c 2.92149,2.04949 0.59362,6.96808 0.625,9.9375 -2.61469,8.67457 -6.16057,19.54601 -15.53125,22.65625 -5.01843,-0.32081 -2.52415,-7.62458 -1.28125,-10.375 3.62815,-7.70255 6.39413,-16.95021 14.03125,-21.5625 0.68844,-0.29942 1.42264,-0.50801 2.15625,-0.65625 z"
-           id="path4409"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-size:68.20104218px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:-5.91095638px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans"
-           d="m -440.53125,152.65625 c -8.36919,1.00386 -18.37985,-1.7933 -25.34375,4.03125 -2.60658,4.09932 -1.4241,9.24477 -2.28125,13.8125 15.73492,-1.73929 32.2917,1.17851 47.5,-3.75 6.10676,-4.16284 1.15917,-14.38033 -5.75,-13.625 -4.68997,-0.4972 -9.4136,-0.53509 -14.125,-0.46875 z"
-           id="path4411"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g4400">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4346"
-           d="m -395.52589,125.06851 c -9.86505,-0.82555 -20.21723,2.73942 -27.47259,9.37833 -1.05554,2.53591 -5.25403,2.30358 -5.77061,5.71438 -1.65431,3.4637 -1.31384,10.93178 3.97754,9.14662 8.88373,-6.09897 18.46931,-14.85307 30.32334,-12.08234 5.14174,-0.20995 2.01487,5.75811 0.97158,8.24232 -5.03636,9.45384 -11.52661,19.16006 -21.19089,24.63251 -3.52628,2.98716 -11.04157,7.38098 -7.3713,12.85378 2.97723,3.73644 8.09896,3.51955 12.11356,2.11693 13.22953,0.16252 26.26632,-0.82302 39.38995,0.49122 6.25745,0.2974 6.41754,-9.77487 0.42303,-10.36948 -9.38487,-2.50584 -20.07668,-1.82441 -29.0755,-2.18442 8.89253,-10.17082 19.74537,-21.29665 19.90688,-35.71532 -0.12722,-8.31762 -9.07999,-11.93307 -16.22499,-12.22453 z"
-           style="font-size:92.30457306px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-30px;word-spacing:0px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4348"
-           d="m -349.46875,123.1875 c -8.38649,2.19462 -16.17281,7.98481 -21.3125,14.9375 -2.7528,10.56354 -10.37671,19.97931 -10.84375,31.15625 1.44285,8.95639 9.36381,18.33664 19.28125,15.84375 15.34867,-2.36763 23.26671,-18.45362 27.0625,-31.9375 2.97225,-10.5336 0.95304,-24.71398 -10.15625,-29.46875 -1.3005,-0.46741 -2.64746,-0.68864 -4.03125,-0.53125 z m 0.53125,13.46875 c 5.0694,0.358 3.02199,7.80453 2.90625,11.09375 -1.3198,6.85892 -4.59765,13.36871 -8.0625,19.1875 -3.31645,2.92647 -9.02977,9.20852 -13.53125,4.84375 -3.09126,-5.23018 0.9282,-11.598 2.71875,-16.6875 3.76158,-6.43608 7.39937,-17.24736 15.96875,-18.4375 z"
-           style="font-size:92.30457306px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-30px;word-spacing:0px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4343"
-           d="m -445.57588,154.70647 c -6.13236,0.68659 -13.53101,-0.859 -18.65625,3.09375 -1.93956,3.12377 -1.18313,7.04956 -1.71875,10.53125 14.21515,-1.07202 28.91134,0.45814 42.84375,-2.65625 5.76046,-1.69886 3.03992,-10.25754 -2.21875,-10.375 -6.68443,-0.93666 -13.51145,-0.61491 -20.25,-0.59375 z"
-           style="font-size:68.20104218px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:-5.91095638px;word-spacing:0px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans" />
-      </g>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:92.30457306px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold Italic"
-       x="-105.32188"
-       y="490.56104"
-       id="text3865"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan3867"
-         x="-105.32188"
-         y="490.56104"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;letter-spacing:-8px;word-spacing:0px;fill:#d40000;font-family:Purisa;-inkscape-font-specification:Sans Bold Italic"><tspan
-           id="tspan3869"
-           style="font-weight:bold;fill:#d40000;-inkscape-font-specification:Sans Bold Italic">10</tspan></tspan></text>
-    <text
-       transform="scale(0.86385983,1.1575952)"
-       sodipodi:linespacing="125%"
-       id="text3871"
-       y="431.80731"
-       x="-169.56451"
-       style="font-size:68.20104218px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-3.69434786px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold Italic"
-       xml:space="preserve"><tspan
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;letter-spacing:-5.91095638px;word-spacing:0px;fill:#d40000;font-family:Purisa;-inkscape-font-specification:Sans Bold Italic"
-         y="431.80731"
-         x="-169.56451"
-         id="tspan3873"
-         sodipodi:role="line">-<tspan
-   style="font-weight:bold;fill:#d40000;-inkscape-font-specification:Sans Bold Italic"
-   id="tspan3875" /></tspan><tspan
-         id="tspan3877"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;letter-spacing:-5.91095638px;word-spacing:0px;fill:#d40000;font-family:Purisa;-inkscape-font-specification:Sans Bold Italic"
-         y="517.05859"
-         x="-169.56451"
-         sodipodi:role="line" /></text>
-    <g
-       id="0mokery"
-       transform="translate(142.08724,442.7742)"
-       inkscape:label="#g4410">
-      <g
-         transform="translate(24.127803,-7.294452)"
-         id="g4382">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4384"
-           d="m -155.46875,194.0625 c -6.24133,1.53092 -4.24262,9.86173 -4.53831,14.53096 0.90973,12.5038 -0.15192,25.49437 2.81956,37.68779 1.27386,4.39687 8.49687,3.92808 8.21875,-1.03125 0.6686,-5.92947 -0.15336,-11.97278 -0.15625,-17.9375 4.91001,-1.57856 10.29857,-4.00629 14.71875,-5.5 1.01368,6.88112 -1.07754,14.93434 2.78125,21.0625 3.38132,2.80635 9.33773,-0.55635 7.53125,-5.09375 -1.19781,-12.00425 0.58187,-24.42475 -1.90625,-36.21875 -2.5137,-3.96418 -8.6734,-1.1073 -8.125,3.34375 -0.81101,3.384 0.30142,8.7678 -4.84375,8.15625 -3.22064,0.0702 -9.06823,4.38102 -10.79017,2.38401 -1.16903,-6.73813 -0.4317,-14.04593 -2.77233,-20.54026 -0.8741,-0.58265 -1.84594,-1.06531 -2.9375,-0.84375 z"
-           style="font-size:57.274189px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-4.96393061px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4386"
-           d="m -99.625,197.84375 c -5.70122,1.3547 -6.68676,8.76944 -9.8125,13 -3.44225,7.2237 -6.55923,14.71377 -10.67154,21.51444 -1.05817,2.56197 -2.79495,4.63291 -3.35971,7.32931 -2.78595,2.53619 -2.59033,8.11955 1.96875,8.03125 6.65953,0.0952 6.71798,-8.78335 10.22807,-12.64183 1.71922,-4.52851 5.0538,-6.56965 9.8313,-5.96854 3.778605,-0.95504 6.730978,-0.75365 6.78438,3.64162 0.233515,4.79095 3.00543,11.40961 8.90625,10.0625 4.690042,-2.31358 0.17503,-8.77257 -0.09375,-12.4375 -2.824937,-10.82676 -3.562511,-22.73793 -10.625,-31.78125 -0.991459,-0.5498 -2.037691,-0.89904 -3.15625,-0.75 z m -0.375,17.8125 c 3.626076,3.77184 -3.43435,6.68342 -2.67948,3.13876 0.76521,-0.96369 2.43108,-7.34481 2.67948,-3.13876 z"
-           style="font-size:57.274189px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-4.96393061px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4388"
-           d="m -78.03125,194.0625 c -6.241331,1.53092 -4.242616,9.86173 -4.538314,14.53096 0.909734,12.5038 -0.151918,25.49437 2.819564,37.68779 1.27386,4.39687 8.49687,3.92808 8.21875,-1.03125 0.668604,-5.92947 -0.153364,-11.97278 -0.15625,-17.9375 4.91001,-1.57856 10.298565,-4.00629 14.71875,-5.5 1.01368,6.88112 -1.077543,14.93434 2.78125,21.0625 3.381322,2.80635 9.337734,-0.55635 7.53125,-5.09375 -1.197813,-12.00425 0.581873,-24.42475 -1.90625,-36.21875 -2.513843,-3.96651 -8.645698,-1.10765 -8.125,3.34375 -0.811012,3.384 0.301418,8.7678 -4.84375,8.15625 -3.220637,0.0702 -9.068228,4.38102 -10.790168,2.38401 -1.169027,-6.73813 -0.431698,-14.04593 -2.772332,-20.54026 -0.874098,-0.58265 -1.845944,-1.06531 -2.9375,-0.84375 z"
-           style="font-size:57.274189px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-4.96393061px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4390"
-           d="m -22.1875,197.84375 c -5.704342,1.35493 -6.67821,8.77391 -9.8125,13 -3.442255,7.2237 -6.559233,14.71377 -10.671543,21.51444 -1.058163,2.56197 -2.794942,4.63291 -3.359707,7.32931 -2.785948,2.53619 -2.590331,8.11955 1.96875,8.03125 6.659532,0.0952 6.717985,-8.78335 10.228071,-12.64183 1.719216,-4.52851 5.0538,-6.56965 9.831294,-5.96854 3.77861,-0.95504 6.730983,-0.75365 6.784385,3.64162 0.233515,4.79095 3.00543,11.40961 8.90625,10.0625 4.6900421,-2.31358 0.1750297,-8.77257 -0.09375,-12.4375 -2.824937,-10.82676 -3.562511,-22.73793 -10.625,-31.78125 -0.991459,-0.5498 -2.037691,-0.89904 -3.15625,-0.75 z m -0.375,17.8125 c 3.626076,3.77184 -3.434351,6.68342 -2.679485,3.13876 0.765218,-0.96369 2.43108,-7.34481 2.679485,-3.13876 z"
-           style="font-size:57.274189px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-4.96393061px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4393"
-           d="m 2.3125,234.21875 c -5.6592984,0.39566 -8.3185184,10.45828 -1.625,11.5 6.7910142,4.51189 11.926608,-9.46481 4.5625,-11.28125 -0.9466842,-0.28397 -1.959958,-0.29804 -2.9375,-0.21875 z"
-           style="font-size:57.274189px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-4.96393061px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4395"
-           d="m 0.59375,197.34375 c -4.1809937,0.52229 -3.6666092,5.772 -2.6875,8.5625 0.2604388,8.71787 -0.1018607,17.82648 2.0625,26.28125 2.3274764,3.94212 7.2111707,0.0722 6.5625,-3.59375 0.9454009,-9.87069 3.998289,-19.59664 3.875,-29.625 -3.2741151,-0.55437 -6.5306615,-1.50853 -9.8125,-1.625 z"
-           style="font-size:57.274189px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-4.96393061px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold" />
-      </g>
-      <g
-         transform="translate(24.127803,-7.294452)"
-         id="g4374">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4353"
-           style="font-size:57.274189px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-4.96393061px;word-spacing:0px;fill:#00b1dc;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold"
-           d="m -150.71559,241.09955 c -2e-5,1.87095 -0.0955,3.28372 -0.28638,4.23829 -0.19092,0.95456 -0.42002,1.5273 -0.68729,1.71822 -0.26729,0.22909 -0.64911,0.34364 -1.14548,0.34365 -1.71823,-1e-5 -2.82553,-1.64187 -3.3219,-4.92558 -0.4582,-3.3219 -0.93549,-10.53844 -1.43186,-21.64965 -0.30546,-6.98742 -0.4582,-12.54301 -0.45819,-16.66679 -10e-6,-3.28367 0.17182,-5.30736 0.51547,-6.07106 0.72546,-1.37453 1.58458,-2.06182 2.57734,-2.06187 0.30545,5e-5 0.59182,0.0955 0.85911,0.28637 0.49637,0.91643 1.01183,4.71562 1.5464,11.39756 0.57273,6.64384 1.06911,10.42393 1.48913,11.34029 3.7419,-1.33637 7.96109,-2.69186 12.6576,-4.06646 2.29094,-0.45817 3.81825,-0.84 4.58193,-1.14549 0.3818,-0.49634 0.78272,-2.32912 1.20276,-5.49832 0.41998,-3.20732 0.83999,-5.17373 1.26003,-5.89924 0.30543,-0.49634 0.89726,-0.74452 1.7755,-0.74457 0.91635,5e-5 1.52728,0.28642 1.83278,0.85912 0.53452,1.10734 0.87816,5.42199 1.03093,12.94396 0.0382,1.41279 0.0763,3.13102 0.11455,5.15468 0.0381,3.01646 0.0763,5.68925 0.11455,8.01839 0.0763,2.29098 0.1336,4.04738 0.17182,5.26922 0.0763,1.18368 0.1336,2.19552 0.17182,3.03553 0.0381,0.80185 0.0763,1.33641 0.11455,1.60368 0.0381,0.26729 0.0572,0.51547 0.0573,0.74457 0.0381,0.19091 0.0572,0.38183 0.0573,0.57274 -4e-5,0.61093 -0.26732,1.08821 -0.80184,1.43185 -0.53459,0.34365 -1.16461,0.51547 -1.89005,0.51547 -0.68732,0 -1.26006,-0.17182 -1.71822,-0.51547 -0.72551,-0.84002 -1.20279,-2.67279 -1.43186,-5.49832 -0.22913,-2.8637 -0.38186,-6.07105 -0.45819,-9.62206 -0.0764,-3.55098 -0.24822,-6.05195 -0.51547,-7.50292 -0.26731,0.0764 -1.89008,0.76368 -4.86831,2.06187 -2.97828,1.29824 -5.95653,2.46281 -8.93477,3.49372 l -4.63921,1.66096 0.34365,9.79388 c 0.0764,2.74917 0.11453,4.54376 0.11455,5.38378" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4355"
-           style="font-size:57.274189px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-4.96393061px;word-spacing:0px;fill:#00b1dc;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold"
-           d="m -120.97495,245.73875 c -0.49638,0 -1.03094,-0.11455 -1.60367,-0.34364 -0.57275,-0.2291 -0.85912,-0.59183 -0.85912,-1.08821 0,-0.72547 0.40092,-1.66095 1.20276,-2.80644 0.80183,-1.18366 1.20275,-1.9664 1.20276,-2.34824 -1e-5,-1.37457 0.42,-2.29096 1.26003,-2.74916 0.15272,-0.0764 0.38182,-0.51546 0.68729,-1.3173 0.34364,-0.84002 0.74456,-1.79458 1.20276,-2.86371 0.45818,-1.06911 0.91638,-1.85186 1.37458,-2.34825 1.03092,-1.0691 2.99733,-5.0401 5.89924,-11.91303 1.26001,-2.94004 3.01642,-6.47195 5.26923,-10.59572 2.25276,-4.1237 3.72279,-6.49103 4.41011,-7.102 0.91636,-0.30542 1.470013,-0.45815 1.660953,-0.45819 0.6109,4e-5 1.24091,0.19095 1.89005,0.57274 0.64908,0.7637 1.79456,3.05466 3.43645,6.8729 1.68001,3.78013 2.52003,6.20473 2.52006,7.27382 0.0381,0.76369 0.40089,2.48191 1.08821,5.15468 0.68726,2.63463 1.16454,4.73468 1.43186,6.30016 0.19087,1.45096 0.78271,3.89466 1.7755,7.3311 0.99271,3.43645 1.48909,5.59378 1.48913,6.47198 -4e-5,0.42001 -0.0955,0.72548 -0.28637,0.91639 -0.19096,0.19091 -0.61097,0.28637 -1.26004,0.28637 -0.49641,0 -1.20279,-0.21 -2.11914,-0.63002 -0.61096,-0.30546 -1.08825,-0.70638 -1.43186,-1.20276 -0.30549,-0.49637 -0.53459,-1.01183 -0.68729,-1.5464 -0.11458,-0.53455 -0.36277,-1.56549 -0.74456,-3.09281 -0.34368,-1.5273 -0.72551,-3.01642 -1.14548,-4.46738 l -1.08821,-3.72283 -2.46279,0.28638 c -2.40555,0.30548 -5.001983,0.55366 -7.789293,0.74456 l -4.12375,0.28637 -1.66095,2.46279 c -2.97827,4.35285 -5.30742,8.53386 -6.98745,12.54305 -0.87821,2.06187 -2.06188,3.0928 -3.551,3.0928 m 23.940613,-25.02882 c -3e-5,-0.72544 -0.34367,-2.55822 -1.03093,-5.49832 -0.64914,-2.97822 -1.22188,-5.05918 -1.71823,-6.24288 -1.030963,1.45098 -2.080993,3.30284 -3.150083,5.55559 -1.06914,2.25281 -1.89007,4.14286 -2.46279,5.67015 l -0.85911,2.29096 3.7801,-0.22909 c 2.3673,-0.15271 3.856433,-0.30544 4.467383,-0.4582 0.64908,-0.1527 0.97363,-0.51544 0.97366,-1.08821" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4357"
-           style="font-size:57.274189px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-4.96393061px;word-spacing:0px;fill:#00b1dc;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold"
-           d="m -73.277947,241.09955 c -1e-5,1.87095 -0.0955,3.28372 -0.28637,4.23829 -0.19093,0.95456 -0.42002,1.5273 -0.68729,1.71822 -0.26729,0.22909 -0.64912,0.34364 -1.14548,0.34365 -1.71824,-1e-5 -2.82554,-1.64187 -3.32191,-4.92558 -0.4582,-3.3219 -0.93548,-10.53844 -1.43185,-21.64965 -0.30547,-6.98742 -0.4582,-12.54301 -0.4582,-16.66679 0,-3.28367 0.17182,-5.30736 0.51547,-6.07106 0.72547,-1.37453 1.58458,-2.06182 2.57734,-2.06187 0.30545,5e-5 0.59183,0.0955 0.85911,0.28637 0.49637,0.91643 1.01184,4.71562 1.54641,11.39756 0.57273,6.64384 1.0691,10.42393 1.48913,11.34029 3.74189,-1.33637 7.96109,-2.69186 12.65759,-4.06646 2.29094,-0.45817 3.81825,-0.84 4.58194,-1.14549 0.38179,-0.49634 0.78271,-2.32912 1.20275,-5.49832 0.41998,-3.20732 0.83999,-5.17373 1.26004,-5.89924 0.30543,-0.49634 0.89726,-0.74452 1.7755,-0.74457 0.91635,5e-5 1.52727,0.28642 1.83277,0.85912 0.53452,1.10734 0.87817,5.42199 1.03094,12.94396 0.0381,1.41279 0.0763,3.13102 0.11454,5.15468 0.0382,3.01646 0.0763,5.68925 0.11455,8.01839 0.0763,2.29098 0.13361,4.04738 0.17183,5.26922 0.0763,1.18368 0.1336,2.19552 0.17182,3.03553 0.0381,0.80185 0.0763,1.33641 0.11455,1.60368 0.0381,0.26729 0.0572,0.51547 0.0573,0.74457 0.0382,0.19091 0.0572,0.38183 0.0573,0.57274 -3e-5,0.61093 -0.26731,1.08821 -0.80183,1.43185 -0.5346,0.34365 -1.16461,0.51547 -1.89005,0.51547 -0.68733,0 -1.26007,-0.17182 -1.71823,-0.51547 -0.7255,-0.84002 -1.20279,-2.67279 -1.43185,-5.49832 -0.22913,-2.8637 -0.38186,-6.07105 -0.4582,-9.62206 -0.0764,-3.55098 -0.24822,-6.05195 -0.51546,-7.50292 -0.26731,0.0764 -1.89008,0.76368 -4.86831,2.06187 -2.97828,1.29824 -5.95654,2.46281 -8.93477,3.49372 l -4.63921,1.66096 0.34364,9.79388 c 0.0764,2.74917 0.11454,4.54376 0.11455,5.38378" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4359"
-           style="font-size:57.274189px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-4.96393061px;word-spacing:0px;fill:#00b1dc;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold"
-           d="m -43.537297,245.73875 c -0.49638,0 -1.03094,-0.11455 -1.60368,-0.34364 -0.57274,-0.2291 -0.85911,-0.59183 -0.85911,-1.08821 0,-0.72547 0.40092,-1.66095 1.20276,-2.80644 0.80183,-1.18366 1.20275,-1.9664 1.20276,-2.34824 -1e-5,-1.37457 0.42,-2.29096 1.26003,-2.74916 0.15272,-0.0764 0.38182,-0.51546 0.68729,-1.3173 0.34364,-0.84002 0.74455,-1.79458 1.20276,-2.86371 0.45818,-1.06911 0.91637,-1.85186 1.37458,-2.34825 1.03092,-1.0691 2.99733,-5.0401 5.89924,-11.91303 1.26001,-2.94004 3.01642,-6.47195 5.26922,-10.59572 2.25277,-4.1237 3.7228,-6.49103 4.41012,-7.102 0.91636,-0.30542 1.47001,-0.45815 1.66095,-0.45819 0.61089,4e-5 1.24091,0.19095 1.89005,0.57274 0.64907,0.7637 1.79456,3.05466 3.43645,6.8729 1.68001,3.78013 2.52003,6.20473 2.52006,7.27382 0.0382,0.76369 0.40089,2.48191 1.08821,5.15468 0.68725,2.63463 1.16454,4.73468 1.43186,6.30016 0.19087,1.45096 0.7827,3.89466 1.7755001,7.3311 0.99271,3.43645 1.48908,5.59378 1.48913,6.47198 -5e-5,0.42001 -0.0955,0.72548 -0.28638,0.91639 -0.19095,0.19091 -0.61096,0.28637 -1.26003,0.28637 -0.4964101,0 -1.2027901,-0.21 -2.1191401,-0.63002 -0.61096,-0.30546 -1.08825,-0.70638 -1.43186,-1.20276 -0.3055,-0.49637 -0.53459,-1.01183 -0.68729,-1.5464 -0.11458,-0.53455 -0.36277,-1.56549 -0.74456,-3.09281 -0.34368,-1.5273 -0.72551,-3.01642 -1.14549,-4.46738 l -1.08821,-3.72283 -2.46279,0.28638 c -2.40554,0.30548 -5.00197,0.55366 -7.78929,0.74456 l -4.12374,0.28637 -1.66095,2.46279 c -2.97827,4.35285 -5.30742,8.53386 -6.98745,12.54305 -0.87821,2.06187 -2.06188,3.0928 -3.551,3.0928 m 23.94061,-25.02882 c -3e-5,-0.72544 -0.34367,-2.55822 -1.03093,-5.49832 -0.64914,-2.97822 -1.22188,-5.05918 -1.71823,-6.24288 -1.03096,1.45098 -2.08099,3.30284 -3.15008,5.55559 -1.06914,2.25281 -1.89007,4.14286 -2.46279,5.67015 l -0.85911,2.29096 3.78009,-0.22909 c 2.36731,-0.15271 3.85644,-0.30544 4.46739,-0.4582 0.64908,-0.1527 0.97363,-0.51544 0.97366,-1.08821" />
-        <path
-           style="font-size:57.274189px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-4.96393061px;word-spacing:0px;fill:#00b1dc;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold"
-           d="m 0.93666306,243.73416 c -0.64912,-0.0764 -1.20277,-0.38183 -1.66095,-0.91639 -0.45820996,-0.57274 -0.68729996,-1.14548 -0.68728996,-1.71822 -1e-5,-0.84002 0.32454,-1.73732 0.97365996,-2.69189 0.68728,-0.99275 1.31729,-1.64185 1.89005004,-1.94732 0.38181,-0.19091 0.93546,-0.28637 1.66095,-0.28637 2.48186,0 3.7228,0.99275 3.72282,2.97825 -2e-5,1.22186 -0.30548,2.4437 -0.91639,3.66555 -0.61094,1.18367 -1.37459,1.7755 -2.29096,1.7755 -0.42003,0 -0.89731,-0.17182 -1.43186,-0.51547 -0.53457,-0.30546 -0.85912,-0.45819 -0.97366,-0.45819 -0.11456,0 -0.21002,0.0382 -0.28637004,0.11455"
-           id="path4372"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-size:57.274189px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;line-height:125%;letter-spacing:-4.96393061px;word-spacing:0px;fill:#00b1dc;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans Bold"
-           d="m -0.09433694,205.37686 c -1e-5,-0.30668 -0.11456,-0.70543 -0.34364,-1.19625 -0.22911,-0.49071 -0.34366,-1.19619 -0.34365,-2.11644 l 0,-0.27606 c -10e-6,-1.65629 0.63001,-2.48446 1.89005004,-2.48451 0.30545,5e-5 0.97365,0.12275 2.0046,0.36808 1.0691,0.18409 1.89003,0.30677 2.46279,0.36807 l 2.74916,0.55212 -0.2291,4.50893 c -0.0764,1.77909 -0.57276,5.09178 -1.48913,9.93808 -0.9164,4.78503 -1.60369,9.23262 -2.06187,13.34279 -0.26729,2.33117 -0.85912,3.49675 -1.7755,3.49673 -0.4582,2e-5 -0.82094,-0.24537 -1.08821,-0.73615 -0.26729,-0.49075 -0.47729,-1.3496 -0.63001,-2.57654 -0.15275004,-1.28824 -0.26729004,-2.57651 -0.34365004,-3.86482 -0.0764,-1.28823 -0.19092,-3.18995 -0.34364,-5.70519 -0.11456,-2.57649 -0.2482,-4.90765 -0.40092,-6.99345 -0.11456,-1.10419 -0.17184,-2.36179 -0.17182,-3.7728 -2e-5,-0.30667 0.0191,-0.79744 0.0573,-1.47229 0.0382,-0.67476 0.0573,-1.13487 0.0573,-1.3803"
-           id="path4361"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-size:92.30457306px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#00b1dc;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold Italic"
-       x="-95.813148"
-       y="780.5498"
-       id="text4348"
-       sodipodi:linespacing="125%"><tspan
-         sodipodi:role="line"
-         id="tspan4350"
-         x="-95.813148"
-         y="780.5498"
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;letter-spacing:-8px;word-spacing:0px;fill:#00b1dc;fill-opacity:1;font-family:Purisa;-inkscape-font-specification:Sans Bold">HAHA!</tspan></text>
-    <g
-       inkscape:label="#g4014"
-       transform="matrix(1.5390979,0,0,1.5390979,-3.3166987,762.20953)"
-       id="0points_board">
-      <use
-         x="0"
-         y="0"
-         xlink:href="#g4451"
-         id="use4456"
-         transform="translate(98.089549,0)"
-         width="980.68469"
-         height="1141.1479" />
-      <g
-         id="g4451">
-        <path
-           sodipodi:nodetypes="zzzzzzzzzz"
-           inkscape:connector-curvature="0"
-           id="rect3654"
-           d="m 408.16446,-486.74235 c -4.73727,0.0939 -5.88617,3.29871 -5.80627,8.60446 0.0799,5.30575 1.06677,8.1429 5.81545,8.14631 4.74868,0.004 5.96139,-3.37372 5.96139,-8.45296 0,-5.07924 -1.23331,-8.39168 -5.97057,-8.29781 z m -0.1095,3.41332 c 3.01553,-0.0733 2.72845,2.92134 2.77261,5.09076 0.0442,2.16943 0.16832,4.74484 -2.48786,4.96296 -2.65618,0.21813 -3.03546,-2.49651 -2.75985,-4.86258 0.27561,-2.36607 -0.54043,-5.11782 2.4751,-5.19114 z"
-           style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#656565;fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1.0387578;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
-        <rect
-           ry="1.934427"
-           rx="1.740097"
-           y="-476.65585"
-           x="406.34903"
-           height="16.240841"
-           width="3.4801941"
-           id="rect3679"
-           style="fill:#656565;fill-opacity:1;stroke:#000000;stroke-width:1.0387578;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:#656565;fill-opacity:1;stroke:#000000;stroke-width:1.0387578;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect4449"
-           width="3.4801941"
-           height="16.240841"
-           x="406.34903"
-           y="-495.9902"
-           rx="1.740097"
-           ry="1.934427" />
-      </g>
-      <path
-         style="fill:#946804;fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m 399.884,-464.65899 115.63147,0 -1.09403,6.19387 2.42047,8.47821 -5.73074,8.92139 5.6826,9.60696 -4.02746,2.82964 5.06168,18.48778 -2.31252,11.31366 -115.63147,0 2.80556,-9.04928 -8.03985,-15.50207 7.14592,-14.34822 -5.4942,-11.96763 3.61248,-11.16513 z"
-         id="path3595"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cccccccccccccccc" />
-      <g
-         style="font-size:24.51045799px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="text3625"
-         transform="translate(-1.0311648,0)">
-        <path
-           style="font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-           d="m 424.90625,-459.15625 c -3.87096,-0.0789 -8.05242,0.73331 -9.5625,4.875 -1.26618,3.10099 3.27549,3.91777 1.97277,7.15404 1.03921,4.22927 -1.17367,10.70081 3.02723,13.34596 5.23515,0.76327 4.4013,-6.16683 4,-9.40625 6.23167,-0.5692 12.85947,-8.8004 7.84375,-14.40625 -2.04332,-1.49991 -4.83369,-1.69201 -7.28125,-1.5625 z M 426,-452.625 c 3.4089,-0.11415 -2.74232,5.53836 -2.34375,1.71875 -0.58076,-2.05812 0.97266,-1.41361 2.34375,-1.71875 z"
-           id="path3630"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-           d="m 443.6875,-453.25 c -7.23855,-0.40153 -14.76412,8.7974 -9.4375,15.3125 4.64425,6.18613 15.2167,2.34545 16.15625,-5 1.91833,-5.1426 -0.41727,-11.17152 -6.71875,-10.3125 z m 0.96875,6.28125 c 1.0763,2.59934 -2.91617,8.615 -5.5,4.84375 -0.79654,-2.90732 2.87819,-5.2181 5.5,-4.84375 z"
-           id="path3632"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-           d="m 453.75,-460.0625 c -4.29565,0.41697 -2.36489,6.10033 -0.71875,6.65625 -4.44074,2.22975 -1.30345,8.68708 -1.9375,12.5 -1.1396,3.74807 2.93634,7.28404 6.03125,4.3125 1.03344,-5.13064 0.59931,-10.84221 -0.71875,-15.90625 -3.02979,-1.04123 2.87766,-2.61495 0.90625,-5.46875 -0.54012,-1.32361 -2.14345,-2.2382 -3.5625,-2.09375 z"
-           id="path3634"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-           d="m 460.84375,-453.3125 c -4.43912,2.66784 -0.38994,9.10535 -1.15625,13.1875 -1.28163,3.47109 3.78937,8.63278 5.71875,4 0.29466,-2.92478 1.06863,-6.21173 2.8125,-8.5 0.49927,3.07379 -1.76306,9.93338 3.46875,9.4375 4.47698,-2.0639 1.63449,-8.46197 2.1875,-12.3125 0.14295,-4.14029 -4.95209,-7.83062 -8.0625,-4.0625 -1.96742,3.62826 -1.24142,-3.41859 -4.96875,-1.75 z"
-           id="path3636"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-           d="m 480.75,-462.4375 c -3.90426,0.64015 -2.58081,5.49787 -2.5625,7.875 -3.57652,-0.60612 -7.08644,4.58501 -2.8125,6.1875 1.93199,0.44159 4.39838,-1.0728 3.5,2.5 1.1234,3.53534 -1.05002,11.5308 4.90625,11.28125 5.07097,-1.57308 1.05657,-7.89738 1.53125,-11.5 -1.54322,-3.80162 1.59473,-3.57099 3.59375,-5.53125 1.68815,-2.68743 -1.80203,-5.13331 -4.34375,-4.21875 -0.36934,-2.54108 0.0953,-7.07901 -3.8125,-6.59375 z"
-           id="path3638"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;font-family:Purisa;-inkscape-font-specification:Purisa Bold"
-           d="m 495.1875,-452.25 c -4.7155,0.37494 -9.56699,7.4093 -4.125,10.34375 -4.66125,1.9479 -0.71164,8.48553 3.46875,7.84375 6.42614,1.87226 10.80899,-9.1282 3.84375,-11.15625 -1.96751,-0.24021 -3.23211,-1.62241 -0.8125,-1.28125 2.54053,2.86905 6.95,-1.14989 4.0625,-3.84375 -1.3767,-2.27569 -4.02195,-2.44162 -6.4375,-1.90625 z m -0.75,11.78125 c 3.31776,0.9458 -0.30301,0.89139 0,0 z"
-           id="path3640"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         sodipodi:type="arc"
-         style="fill:#656565;fill-opacity:1;stroke:#000000;stroke-width:0.3328259;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="path3597"
-         sodipodi:cx="163.77448"
-         sodipodi:cy="-304.87988"
-         sodipodi:rx="0.63125068"
-         sodipodi:ry="0.63125068"
-         d="m 164.40573,-304.87988 c 0,0.34863 -0.28262,0.63125 -0.63125,0.63125 -0.34864,0 -0.63126,-0.28262 -0.63126,-0.63125 0,-0.34863 0.28262,-0.63125 0.63126,-0.63125 0.34863,0 0.63125,0.28262 0.63125,0.63125 z"
-         transform="matrix(2.9282484,0,0,2.9282484,-71.370987,435.47177)" />
-      <text
-         xml:space="preserve"
-         style="font-size:24.51045799px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans"
-         x="414.92822"
-         y="-437.32382"
-         id="text3613"
-         sodipodi:linespacing="125%"><tspan
-           sodipodi:role="line"
-           id="tspan3615"
-           x="414.92822"
-           y="-437.32382"
-           style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#ffffff;fill-opacity:1;font-family:Purisa;-inkscape-font-specification:Purisa Bold">Points</tspan></text>
-      <path
-         transform="matrix(2.9282484,0,0,2.9282484,26.545435,435.47177)"
-         d="m 164.40573,-304.87988 c 0,0.34863 -0.28262,0.63125 -0.63125,0.63125 -0.34864,0 -0.63126,-0.28262 -0.63126,-0.63125 0,-0.34863 0.28262,-0.63125 0.63126,-0.63125 0.34863,0 0.63125,0.28262 0.63125,0.63125 z"
-         sodipodi:ry="0.63125068"
-         sodipodi:rx="0.63125068"
-         sodipodi:cy="-304.87988"
-         sodipodi:cx="163.77448"
-         id="path4404"
-         style="fill:#656565;fill-opacity:1;stroke:#000000;stroke-width:0.3328259;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         sodipodi:type="arc" />
-    </g>
-    <g
-       transform="matrix(1.5390979,0,0,1.5390979,-73.333552,763.95712)"
-       id="g4451-9">
-      <path
-         sodipodi:nodetypes="zzzzzzzzzz"
-         inkscape:connector-curvature="0"
-         id="rect3654-4"
-         d="m 408.16446,-486.74235 c -4.73727,0.0939 -5.88617,3.29871 -5.80627,8.60446 0.0799,5.30575 1.06677,8.1429 5.81545,8.14631 4.74868,0.004 5.96139,-3.37372 5.96139,-8.45296 0,-5.07924 -1.23331,-8.39168 -5.97057,-8.29781 z m -0.1095,3.41332 c 3.01553,-0.0733 2.72845,2.92134 2.77261,5.09076 0.0442,2.16943 0.16832,4.74484 -2.48786,4.96296 -2.65618,0.21813 -3.03546,-2.49651 -2.75985,-4.86258 0.27561,-2.36607 -0.54043,-5.11782 2.4751,-5.19114 z"
-         style="font-size:medium;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;text-indent:0;text-align:start;text-decoration:none;line-height:normal;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;text-anchor:start;baseline-shift:baseline;color:#000000;fill:#656565;fill-opacity:1;fill-rule:nonzero;stroke:none;stroke-width:1.11597741;marker:none;visibility:visible;display:inline;overflow:visible;enable-background:accumulate;font-family:Sans;-inkscape-font-specification:Sans" />
-      <rect
-         ry="1.934427"
-         rx="1.740097"
-         y="-476.65585"
-         x="406.34903"
-         height="16.240841"
-         width="3.4801941"
-         id="rect3679-6"
-         style="fill:#656565;fill-opacity:1;stroke:none" />
-      <rect
-         style="fill:#656565;fill-opacity:1;stroke:none"
-         id="rect4449-4"
-         width="3.4801941"
-         height="16.240841"
-         x="406.34903"
-         y="-495.9902"
-         rx="1.740097"
-         ry="1.934427" />
-    </g>
-    <g
-       id="0penalty_hundred"
-       inkscape:label="#g3699"
-       transform="translate(358.67635,410.79084)">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3683"
-         d="m -444.21875,112.78125 c -8.98393,1.56901 -9.81141,12.44745 -16.21875,17.3125 -4.39812,3.4715 -7.3924,11.44783 -1.3125,14.90625 3.93644,2.42662 8.76368,-0.0281 11.5,-3.125 0.52421,11.47645 -1.99129,24.12263 3.4375,34.6875 4.71708,5.49284 14.52367,-0.0675 12.4324,-7.03124 -0.366,-17.34882 0.44072,-35.07246 -2.8699,-52.12501 -1.16514,-2.69918 -3.87608,-4.97661 -6.96875,-4.625 z"
-         style="font-size:92.30457306px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold Italic" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3685"
-         d="m -401.9375,113.125 c -9.79389,2.25388 -19.29345,8.76848 -23.96875,17.625 -2.97853,11.30793 -12.88016,22.01337 -9.6875,34.3125 2.6319,9.20029 12.35716,17.00074 22.15625,13.78125 16.44059,-3.8936 24.61197,-21.31692 27.96875,-36.4375 2.45032,-11.33357 -2.0523,-26.44815 -14.5625,-29.21875 -0.63014,-0.0852 -1.27133,-0.12762 -1.90625,-0.0625 z m 0.1875,17.5 c 3.06508,1.90625 0.57292,7.00193 0.65625,10 -2.67344,8.58822 -6.07949,19.38067 -15.4375,22.59375 -4.80383,0.0557 -2.91872,-6.88586 -1.71875,-9.53125 3.77269,-8.29017 6.83768,-18.72688 15.6875,-22.96875 0.27125,-0.0214 0.53963,-0.0967 0.8125,-0.0937 z"
-         style="font-size:92.30457306px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold Italic" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3687"
-         d="m -360.59375,113.125 c -9.7926,2.26662 -19.38425,8.75913 -24,17.625 -2.95812,11.30495 -12.87547,22.00577 -9.6875,34.3125 2.69427,9.59929 12.97471,17.19101 22.96875,13.625 16.11463,-4.44079 24.00372,-21.67745 27.25,-36.6875 2.30471,-11.56522 -2.73975,-28.14362 -16.53125,-28.875 z m 0.1875,17.5 c 2.92329,1.49719 0.53309,6.29809 0.84375,8.90625 -2.44938,9.06912 -5.98445,20.09822 -15.625,23.6875 -4.78852,0.0618 -3.02572,-6.82697 -1.71875,-9.5 3.81021,-8.2925 6.73665,-18.76285 15.65625,-23 0.27171,-0.0802 0.54284,-0.0311 0.84375,-0.0937 z"
-         style="font-size:92.30457306px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold Italic" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3689"
-         d="m -476.74375,146.93542 c -8.42783,1.02425 -18.62189,-1.86984 -25.4375,4.21875 -2.499,4.07488 -1.22799,9.1675 -2.28125,13.625 15.77012,-1.71922 32.32599,1.14706 47.5625,-3.71875 6.1366,-4.1746 1.24404,-14.39988 -5.6875,-13.65625 -4.70087,-0.49536 -9.43408,-0.53669 -14.15625,-0.46875 z"
-         style="font-size:68.20104218px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:-5.91095638px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3650"
-         d="m -443.84375,114.75 c -7.30117,1.07407 -8.23952,10.23909 -13.16595,14.60155 -3.04357,3.40632 -9.20017,8.51177 -4.64655,13.27345 5.01066,4.17802 10.44421,-2.16391 13.15625,-6 1.10075,12.46882 -1.63587,25.82791 2.5625,37.71875 2.58636,4.80654 10.63625,1.86982 9.5625,-3.5625 -0.0534,-17.00328 -0.0929,-34.21524 -2.1875,-51.0625 -0.61844,-2.50221 -2.45078,-5.06359 -5.28125,-4.96875 z"
-         style="font-size:92.30457306px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold Italic" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3652"
-         d="m -402.3125,115.15625 c -8.48405,2.24715 -16.3157,8.02286 -21.40625,15.09375 -2.64617,10.82022 -10.91232,20.35467 -10.65625,31.78125 1.87859,8.38263 8.90748,17.0329 18.34375,15.21875 15.7712,-1.95836 24.10128,-18.29752 27.875,-32.09375 3.01721,-10.54649 0.95971,-24.70923 -10.15625,-29.46875 -1.28393,-0.47818 -2.62991,-0.68112 -4,-0.53125 z m 0.5,13.46875 c 5.15731,0.35409 3.02547,7.85128 2.9375,11.15625 -1.27362,6.76238 -4.64745,13.19986 -8.03125,19.09375 -3.28737,2.86585 -8.9334,9.18835 -13.46875,4.96875 -3.26772,-4.62008 0.58608,-10.91244 2.03125,-15.53125 3.8551,-7.05054 7.08654,-16.47712 15.1875,-19.53125 0.44404,-0.0837 0.89338,-0.13524 1.34375,-0.15625 z"
-         style="font-size:92.30457306px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold Italic" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3654"
-         d="m -360.99004,115.15625 c -8.48054,2.23327 -16.30167,8.02655 -21.40625,15.09375 -2.61223,10.76196 -10.9103,20.39743 -10.65625,31.78125 1.84472,8.35158 8.90029,17.01764 18.34375,15.21875 15.50165,-1.86593 23.82959,-17.8519 27.70222,-31.37058 3.22628,-10.66782 1.44219,-25.27032 -9.95222,-30.19192 -1.30052,-0.46747 -2.64741,-0.68868 -4.03125,-0.53125 z m 0.53125,13.46875 c 5.07267,0.35053 3.01007,7.78649 2.90625,11.09375 -1.30202,6.84763 -4.59463,13.34078 -8.03125,19.15625 -3.32421,2.9331 -9.0046,9.17889 -13.46875,4.96875 -3.26607,-4.62518 0.57449,-10.88045 2.0625,-15.5625 3.84098,-7.01651 7.03955,-16.45142 15.15625,-19.5 0.45605,-0.0741 0.91307,-0.14347 1.375,-0.15625 z"
-         style="font-size:92.30457306px;font-style:italic;font-weight:bold;line-height:125%;letter-spacing:0px;word-spacing:-5px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Sans;-inkscape-font-specification:Sans Bold Italic" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3887-0"
-         d="m -481.77962,148.98513 c -6.09084,0.66548 -13.38171,-0.80452 -18.5625,3 -2.0587,3.11201 -1.25775,7.07563 -1.8125,10.625 14.21964,-1.06827 28.89619,0.45563 42.84375,-2.65625 5.7506,-1.68641 3.05607,-10.26878 -2.21875,-10.375 -6.67993,-0.93657 -13.51628,-0.61146 -20.25,-0.59375 z"
-         style="font-size:68.20104218px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:125%;letter-spacing:-5.91095638px;word-spacing:0px;fill:#d40000;fill-opacity:1;stroke:none;font-family:Purisa;-inkscape-font-specification:Sans" />
-    </g>
-  </g>
-</svg>
diff --git a/contrib/crazy_moles/art/icon.svg b/contrib/crazy_moles/art/icon.svg
deleted file mode 100644 (file)
index 992f5a5..0000000
+++ /dev/null
@@ -1,135 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="200"
-   height="200"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="icon.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.89108819"
-     inkscape:cx="559.09851"
-     inkscape:cy="79.285781"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1838"
-     inkscape:window-height="1274"
-     inkscape:window-x="2783"
-     inkscape:window-y="1201"
-     inkscape:window-maximized="0"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     showguides="true"
-     inkscape:guide-bbox="true" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(13.939675,106.02819)">
-    <g
-       id="0up"
-       inkscape:label="#g4948"
-       transform="translate(155.98905,1.1222234)">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4533"
-         d="m -127.26814,-98.063473 c -5.95186,1.40398 -0.2481,8.635395 0.83368,11.991316 2.24081,5.979379 7.51684,11.886198 8.3357,17.847385 -2.62353,2.574653 -3.85637,8.944892 1.49003,6.877037 7.90915,-3.992679 17.380548,-7.629391 25.750679,-2.559786 14.710026,7.405353 15.841258,31.458759 1.031556,39.199112 -11.072405,7.261846 -26.161435,9.565391 -37.670885,2.139523 -6.17665,-0.315109 -4.38976,8.690863 -5.66148,12.7164549 -0.94084,12.8917246 -4.49017,25.4374211 -8.62747,37.4859171 -0.18176,4.437309 5.04449,3.411524 7.56474,1.833876 -2.83088,2.430046 -3.70633,8.312205 1.49002,6.877038 2.63273,-1.267918 6.95152,-3.715862 7.71757,0.878732 4.75803,7.151288 9.39205,15.415322 17.30721,19.484939 4.29992,-3.203098 0.74888,-9.710755 5.08136,-13.180988 3.140909,-6.068884 10.191174,-8.427262 13.868696,-13.830486 -1.972725,-8.564326 -14.939736,-11.666071 -13.104576,-21.8154903 2.146821,-10.5535319 8.866365,-20.4278567 19.141087,-24.3370707 12.082813,-7.168232 31.492135,-6.969318 38.167556,7.2973006 3.843194,8.609366 1.612626,18.5334504 -2.712609,26.5147994 -2.783605,10.343211 8.396661,16.781267 13.295605,24.222453 1.906107,3.450684 5.739154,8.743875 9.818881,4.775721 5.096515,-3.360738 9.891148,-12.368924 16.9463895,-7.853504 4.8812293,4.089998 0.6420891,-5.684198 2.2711095,-5.671336 2.90321,1.707265 8.7438625,2.162091 6.4185681,-2.597992 C -3.0975928,23.888062 1.8254978,15.835082 0.37730995,8.6834277 -0.42578129,-4.2660885 -2.732688,-17.734836 -8.3718097,-29.369512 c -7.4160253,-3.251487 -14.9369123,3.717525 -22.3503713,4.355457 -15.75635,2.980893 -31.017553,-13.460617 -26.05633,-29.074585 3.216828,-12.382812 19.26194,-12.789614 29.416176,-9.903814 3.432063,0.871495 5.427186,-4.069299 9.133439,-4.805405 6.972875,-4.441368 17.94322288,-7.074191 20.5546998,-15.970008 -1.75343051,-5.640296 -9.2846238,-0.481955 -13.1045768,-0.420264 -6.880265,1.299852 -14.363154,5.152008 -21.089581,4.50828 -4.987141,-2.981198 -7.175629,-11.254574 -13.715868,-10.506584 -0.870688,2.601292 1.61029,6.458094 1.26079,8.137827 -6.070547,-1.486822 -10.619918,-7.335727 -16.886947,-7.832181 -2.431158,1.306637 -0.259836,5.412968 -3.018255,2.445168 -6.150003,-3.794229 -10.120077,6.368345 -16.581301,3.400313 -3.524846,-1.473446 -10.120175,-1.56256 -8.710914,3.858782 -1.754714,1.269067 -5.624231,-3.783287 -7.802204,-4.521679 -2.640293,-3.207585 -7.332647,-1.249763 -5.684427,2.917037 1.28382,2.439435 -0.43856,6.28516 -2.55979,2.483375 -6.81601,-5.755573 -11.84574,-17.051947 -21.70087,-17.76568 z"
-         style="fill:#a05a2c;fill-opacity:1;stroke:none" />
-      <path
-         id="path27595"
-         d="m -128.64355,-98.330913 c -4.51196,0.135817 2.29544,10.340448 8.40527,24.451688 5.59286,5.388846 -2.37336,14.95552 -8.67271,20.325466 -10.46414,8.364898 -3.24552,25.819515 -1.60464,30.220758 -2.36354,7.471054 -4.22953,37.686653 -12.95176,53.984742 -0.78364,2.15 10.54536,-2.411181 9.32221,-1.872082 -4.38782,1.933884 -6.95345,11.003259 -6.95345,11.003259 0,0 10.61434,-1.323447 11.80558,-4.928543 4.59647,7.445967 7.6174,10.826646 22.43665,22.246699 14.819256,11.420053 28.232432,8.236664 28.232432,8.236664 0,0 -5.925174,11.48578 -1.572358,26.2479 6.717727,0.940035 13.917942,1.889673 26.368641,1.763554 0.600515,-22.15641 -11.297765,-27.555328 -6.068618,-28.228135 20.231162,-2.603038 28.821563,-9.249977 30.689622,-16.88659 7.237856,-1.192729 11.541247,-9.47793 19.3830524,-11.202364 9.30368386,10.662306 7.9403433,2.249617 4.1644281,-4.164428 12.4187556,5.06073 7.7349981,0.373952 5.11957215,-7.411918 C 1.1734202,19.967625 0.04773787,11.342659 -0.15757072,7.0405799 -0.6866319,3.8952982 -0.45067311,0.36168692 -1.0363033,-3.3131817 -1.6219334,-6.9880381 -3.0312431,-11.050209 -3.5578836,-14.698499 -4.084524,-18.346801 -7.2911551,-29.39878 -10.129275,-29.675158 c -3.071217,-0.299081 -2.54992,0.485941 2.8654325,-9.322206 2.9583852,-5.358147 3.1762498,-12.077703 -7.8321815,-22.159342 -22.769277,-8.114232 2.009868,-3.652006 17.077976,-21.127787 6.8775752,-13.316499 -23.42907,2.522815 -31.901812,1.107967 -6.301456,1.936403 -21.16774,-24.636974 -13.945103,-2.52158 -0.356909,1.438456 -1.160013,1.876716 -2.215934,1.719259 2.665368,1.063649 4.703942,1.358634 3.935193,-0.649498 -7.85497,-20.518965 7.643292,5.366571 11.117877,3.9734 12.109332,-1.303532 26.8548245,-8.14756 32.2838695,-7.297301 -1.40701127,11.206967 -29.9253575,16.94837 -26.2473585,21.127787 -11.853653,-4.574031 -30.936423,-3.263579 -33.582866,11.232494 -3.292994,13.921202 5.799109,26.450014 17.345417,29.380231 13.730356,5.188 26.006057,-8.034164 32.1692516,-3.935193 6.639538,17.444152 9.98526249,35.9448613 6.6478027,54.252182 10.8172311,17.765142 -13.3910283,-7.980713 -1.6428478,14.594602 -11.9651765,-17.53021 -21.2021805,15.848031 -26.9732685,2.330551 -5.02904,-9.322401 -21.273824,-17.286561 -13.104576,-29.036379 6.819954,-12.4953264 3.013047,-30.465813 -11.652758,-35.07289 -12.760407,-5.364578 -27.197857,1.753491 -38.358585,9.704263 -6.141234,9.0486654 -14.650084,20.6160621 -5.23419,30.717433 4.023256,3.431245 9.27164,7.45285 9.054766,10.124527 -0.203744,2.509954 -5.184247,3.161347 -7.985005,6.456774 -2.106125,2.478118 -4.701045,5.001887 -6.494975,7.832182 -1.79394,2.830295 -2.82959,5.957825 -1.9867,9.704263 -1.40702,5.845005 -12.55493,-10.625151 -15.66437,-14.250749 -3.55558,-5.371987 0.37795,-10.417825 -15.20589,-2.101317 18.23377,-24.24188 -12.28037,6.274792 0.26744,-17.001564 2.48369,-8.538738 3.41974,-14.8286165 4.43187,-18.6444124 1.96387,-7.4038367 0.78006,-26.7642916 6.15113,-22.3503706 12.23027,9.621702 33.989775,3.003461 43.860212,-7.297301 12.885049,-15.422095 1.969388,-40.799341 -19.293912,-39.886816 -7.60565,-0.603431 -24.04382,13.81304 -13.52484,-0.764115 -2.75252,-6.593398 -13.88397,-23.602542 -12.64611,-28.004824 13.11205,-1.020822 25.64394,31.958111 27.62277,15.855391 -6.32012,-17.095618 16.101388,14.302184 12.493285,-3.629547 4.402465,0.100863 11.998101,3.346164 15.129482,0.229234 9.565977,-9.521805 10.21336,3.02718 13.945103,1.375408 -2.352619,-4.889335 -2.64412,-6.687757 -1.52823,-6.76242 1.115877,-0.0747 3.633802,1.593027 6.877037,3.705959 1.049442,0.683706 2.848989,1.698279 4.699309,2.636197 -5.596649,-3.767455 -13.37566,-12.743767 -12.837136,-3.51493 -9.705658,-7.653268 -10.034129,7.714006 -17.994914,-3.056461 -0.942906,0.835832 3.779118,4.531827 2.25414,5.195984 -1.524979,0.664169 -9.308795,-1.715677 -11.194289,-1.413613 -1.885506,0.302076 0.763675,5.713895 -1.26079,5.463424 -2.024465,-0.250459 -8.71754,-6.15103 -10.659407,-7.144478 -6.06574,-5.591954 2.636784,20.835063 -7.06807,4.393663 -6.60225,-7.513698 -11.59768,-10.995643 -15.62615,-13.219194 -2.39453,-1.114642 -4.04014,-1.635977 -5.08137,-1.604642 z m 82.562653,16.352066 c -0.978557,-0.390493 -2.021042,-0.889992 -3.056461,-1.413613 1.134851,0.759665 2.192962,1.284863 3.056461,1.413613 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="sccccscczcccscccccsssscccccscccccccccccccsssccccscccccccsccscccssscccsccc" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27591"
-         d="m -101.14264,-66.616866 c 1.08956,-0.06211 2.349344,-0.01284 4.049812,0.191029 15.178422,1.81956 19.678572,21.379309 15.244099,34.041334 -7.637607,10.370927 -21.372961,16.160439 -34.155951,15.014865 -14.42653,-3.613739 -22.37215,-19.145293 -13.56305,-33.468248 4.65885,-6.004625 14.62694,-12.54742 15.58796,-12.378667 l 7.83218,-2.597992 c 1.86724,-0.31259 3.18903,-0.698756 5.00495,-0.802321 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27589"
-         d="m -39.402127,-65.547105 c 11.331927,0.0037 24.842329,2.223319 30.1825529,13.639458 6.8810351,13.571286 -6.8435019,25.677805 -19.4467329,27.04968 -12.991634,1.600375 -31.124419,-7.354335 -28.195853,-22.732429 0.417708,-8.648684 5.241708,-18.456403 15.244099,-17.918503 0.733074,-0.01736 1.460475,-0.03839 2.215934,-0.03814 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-      <path
-         sodipodi:nodetypes="csccccccc"
-         inkscape:connector-curvature="0"
-         id="path27587"
-         d="m -127.04615,-46.2914 c -1.63223,3.339183 -1.0304,2.873733 -1.60464,6.380362 -0.57425,3.506641 2.15583,11.898558 3.74417,12.569696 9.02869,12.618281 24.70027,7.352219 37.976525,-4.011605 7.07435,-7.018111 0.429408,-32.404147 -11.2707,-31.366931 3.831139,16.637393 -3.102965,14.062899 -8.431845,17.856432 -4.81437,-4.438544 -11.45355,-10.741138 4.62952,-17.338093 -3.87571,-0.265252 -6.49544,-0.498766 -10.17642,1.564981 -7.3582,3.534211 -11.1141,6.675275 -14.86661,14.345158 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-      <path
-         sodipodi:nodetypes="cccccc"
-         inkscape:connector-curvature="0"
-         id="path27585"
-         d="m -31.653142,-57.675874 c -13.419869,-2.764691 -22.654281,18.225029 -9.513235,24.337071 14.629152,7.32531 33.781144,-9.885732 13.372017,-12.416873 3.757197,-6.208663 10.42406,-11.125005 -2.712609,-11.881992 -0.384197,-0.02482 -0.767698,-0.04878 -1.146173,-0.03815 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27583"
-         d="m -64.923576,-21.037391 c 12.763084,0.824719 23.977081,15.349877 20.745729,28.0812352 -6.404851,10.7986238 -5.329172,20.0435128 3.782371,28.2340588 4.449302,4.029956 9.593118,7.396696 7.488329,16.963358 -1.009207,7.559276 -25.865044,14.088684 -35.684182,8.137828 -6.989967,0.58173 -15.353178,5.610256 -27.011474,2.25414 -18.017297,-5.901501 -9.782597,-20.518769 2.597992,-28.883557 13.865843,-5.640234 -12.279769,-16.270092 -8.634499,-26.4001817 1.06419,-11.5718102 10.157924,-20.2881283 21.013166,-24.4134823 4.940243,-2.118299 10.260894,-3.973301 15.702568,-3.973399 z"
-         style="fill:#9e6947;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27581"
-         d="m -73.214226,-11.868008 c -10.678896,0.329914 -19.960219,4.5031204 -14.059721,18.7590292 1.88871,7.2271368 9.521524,26.5881668 19.714174,21.0131698 7.164796,-4.092614 9.832048,-15.50127 13.486634,-24.1460424 4.784608,-14.1316326 -6.05606,-15.5407106 -14.747425,-15.5115396 -0.718684,-0.07727 -1.485733,-0.10392 -2.25414,-0.114556 -0.720383,-0.0098 -1.427599,-0.02201 -2.139522,0 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27579"
-         d="m -72.335494,-9.7284855 c 7.958768,-0.2558747 16.263209,2.0212743 17.230799,6.1893335 -0.184879,8.2852711 -8.202502,31.322038 -16.237449,30.56461 -10.59466,-0.998717 -14.693423,-21.6710787 -16.122832,-27.89020662 -0.451635,-5.82404978 7.170715,-8.60786218 15.129482,-8.86373688 z"
-         style="fill:#ff8598;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27577"
-         d="m -77.378654,0.1286012 c -4.310307,0.20257001 1.107429,13.2332778 2.063111,1.9484939 l 0.191029,-0.3438519 -0.573087,-1.18437861 C -76.367345,0.25398946 -76.932766,0.1076461 -77.378654,0.1286012 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27575"
-         d="m -66.222572,0.58707035 c -1.237659,-0.15226066 -2.571131,12.36680765 0.72591,6.03651045 l 0.191029,-2.25414 c -0.22866,-2.7164969 -0.570397,-3.73973893 -0.916939,-3.78237045 z"
-         style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path27569"
-         d="m -71.800613,64.505311 c -0.801294,2.2526 2.871472,18.93952 2.024905,26.705828 -17.735677,5.519162 -11.677368,-27.253008 -2.024905,-26.705828 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3168"
-         d="m -67.597979,64.543456 c 8.774916,0.198914 10.934917,20.727952 11.53814,27.546354 -2.895337,1.482005 -9.274158,1.422869 -11.881992,-0.878732 -0.279165,-7.145297 -4.652643,-27.012012 0.343852,-26.667622 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.22258437;stroke-opacity:1" />
-    </g>
-  </g>
-</svg>
diff --git a/contrib/crazy_moles/org.nitlanguage.moles_android.txt b/contrib/crazy_moles/org.nitlanguage.moles_android.txt
deleted file mode 100644 (file)
index d160073..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Categories:Nit,Games
-License:Apache2
-Web Site:http://nitlanguage.org
-Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/examples/mnit_moles
-Issue Tracker:https://github.com/nitlang/nit/issues
-
-Summary:Wack-a-Mole game
-Description:
-Tap on cute groundhogs that infest the lawn, but avoid the cactuses.
-.
diff --git a/contrib/crazy_moles/package.ini b/contrib/crazy_moles/package.ini
deleted file mode 100644 (file)
index 719752f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[package]
-name=crazy_moles
-tags=game
-maintainer=Alexis Laferrière <alexis.laf@xymus.net>
-license=Apache-2.0
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/contrib/crazy_moles/
-git=https://github.com/nitlang/nit.git
-git.directory=contrib/crazy_moles/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
-apk=http://nitlanguage.org/fdroid/apk/moles_android.apk
diff --git a/contrib/crazy_moles/src/effects.nit b/contrib/crazy_moles/src/effects.nit
deleted file mode 100644 (file)
index a34a864..0000000
+++ /dev/null
@@ -1,339 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Graphical effects
-module effects
-
-intrude import geometry::points_and_lines
-import mnit::opengles1
-
-import moles
-
-# Position, or vector
-class Pos
-       super Point[Float]
-
-       # Addition of `self` and `other`
-       fun +(other: Pos): Pos do return new Pos(other.x + x, other.y + y)
-end
-
-redef class PointerEvent
-       # Convert to `Pos`
-       fun to_pos: Pos do return new Pos(x, y)
-end
-
-redef class Float
-       # Pretty alias to `pow`
-       private fun ^(other: Float): Float do return self.pow(other)
-end
-
-# Graphical effect
-abstract class Effect
-       # Time of creation since (appropriate) app lauch
-       var created_at: Float = app.clock.total.to_f
-
-       # Is this effect dead?
-       var dead = false
-
-       # Time to live of this effect, in seconds
-       var ttl: Float = ttl_base + ttl_rand.rand is lazy
-
-       # Time to live base value
-       private var ttl_base: Float
-
-       # Variation range to add to `ttl_base`
-       private var ttl_rand: Float
-
-       private fun update_and_draw(display: Display, t: Float) do end
-end
-
-# Full screen flash
-class Flash
-       super Effect
-
-       # Red value
-       var r: Float
-
-       # Green value
-       var g: Float
-
-       # Blue value
-       var b: Float
-
-       # Start alpha value
-       var a: Float
-
-       # Reduction in alpha value per seconds
-       var da: Float
-
-       redef fun update_and_draw(display, t)
-       do
-               var dt = t - created_at
-               var a = a - da * dt
-               if a <= 0.0 then
-                       dead = true
-                       return
-               end
-
-               native_flash(r, g, b, a, display.width.to_f, display.height.to_f)
-       end
-
-       private fun native_flash(r, g, b, a, w, h: Float) `{
-               GLfloat colors[] =
-               {
-                   r, g, b, a,
-                   r, g, b, a,
-                   r, g, b, a,
-                   r, g, b, a,
-               };
-               GLfloat coords[] =
-               {
-                   0.0, 0.0, 0.0,
-                   0.0, h, 0.0,
-                   w, 0.0, 0.0,
-                   w, h, 0.0,
-               };
-
-               glLoadIdentity();
-
-               glEnableClientState(GL_VERTEX_ARRAY);
-               glEnableClientState(GL_COLOR_ARRAY);
-
-               glEnable(GL_BLEND);
-               glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-
-               glDisable(GL_DEPTH_TEST);
-               glDisable(GL_TEXTURE_2D);
-
-               glVertexPointer(3, GL_FLOAT, 0, coords);
-               glColorPointer(4, GL_FLOAT, 0, colors);
-               glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-
-               glDisableClientState(GL_VERTEX_ARRAY);
-               glDisableClientState(GL_COLOR_ARRAY);
-               glDisable(GL_BLEND);
-
-               if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
-                       fprintf(stderr, "Error drawing: %i\n", mnit_opengles_error_code);
-               }
-       `}
-end
-
-# Visible particle
-abstract class Particle
-       super Effect
-
-       # Effect image
-       var img: Image
-end
-
-# Particle moving along a cubic Bézier curve
-class CubicBezierParticle
-       super Particle
-
-       # Points on this curve, from the start to the end with the handles in the middle
-       #
-       # Require: `points.length == 4`
-       var points: Array[Pos]
-
-       redef fun update_and_draw(display, t)
-       do
-               assert points.length == 4
-
-               var dt = t - created_at
-               var p = dt / ttl
-
-               var i = 1.0-p
-               var bx = i*i*i * points[0].x + 3.0*i*i*p * points[1].x +
-                        3.0*i*p*p * points[2].x + p*p*p*points[3].x
-               var by = i*i*i * points[0].y + 3.0*i*i*p * points[1].y +
-                        3.0*i*p*p * points[2].y + p*p*p*points[3].y
-
-               img.scale = display_scale
-               if display isa Opengles1Display then display.color(1.0, 1.0, 1.0, p)
-               display.blit_centered(img, bx, by)
-               if display isa Opengles1Display then display.reset_color
-
-               if dt > ttl then dead = true
-       end
-end
-
-# Particle falling like a feather
-class FeatheryParticle
-       super Particle
-
-       # Origin of effect
-       var from: Pos
-
-       # Randomized variation so this particle is unique
-       var ddt: Float = pi.rand
-
-       # Direction: `-1.0` for left, `1.0` for right
-       var dir: Float = if 2.rand == 0 then -1.0 else 1.0
-
-       # Randomized variation on X
-       var ddx: Float = (4.0 - 8.0.rand)^2.0
-
-       # Randomized variation on Y
-       var ddy: Float = (12.0 - 24.0.rand)^2.0
-
-       redef fun update_and_draw(display, t)
-       do
-               var dt = t - created_at
-
-               var dx = ddx + 30.0*(dt+ddt).sin
-               dx *= dir
-               var dy = ddy + 20.0*dt + 16.0*(dt*2.0+ddt*2.0).cos
-               var pos = from + new Pos(dx, dy)
-
-               if display isa Opengles1Display then display.color(1.0, 1.0, 1.0, 5.0-5.0*dt/ttl)
-               display.blit_centered(img, pos.x, pos.y)
-               if display isa Opengles1Display then display.reset_color
-
-               if dt > ttl then dead = true
-       end
-end
-
-# Particles that start small then grow bigger and fade out
-private class BlowUpParticle
-       super Particle
-
-       # Origin/center of effect
-       var from: Pos
-
-       redef fun update_and_draw(display, t)
-       do
-               var dt = t - created_at
-               var p = dt/ttl
-
-               if display isa Opengles1Display then display.color(1.0, 1.0, 1.0, 2.0-p*2.0)
-
-               img.scale = p*4.0*display_scale
-               display.blit_centered(img, from.x, from.y)
-
-               if display isa Opengles1Display then display.reset_color
-
-               if dt > ttl then dead = true
-       end
-end
-
-redef class Screen
-       private var particles = new Array[Particle]
-       private var flashes = new Array[Flash]
-
-       redef fun draw_hud(display)
-       do
-               var t = app.clock.total.to_f
-
-               # Particles
-               for particle in particles do particle.update_and_draw(display, t)
-               for particle in particles.reverse_iterator do if particle.dead then
-                       particles.remove particle
-               end
-
-               # Flashes
-               for flash in flashes do flash.update_and_draw(display, t)
-               for flash in flashes.reverse_iterator do if flash.dead then
-                       flashes.remove flash
-               end
-
-               super
-       end
-
-       private var score_center = new Pos(48.0*display_scale, 32.0*display_scale) is lazy
-       private var score_entry = new Pos(48.0*display_scale, 256.0*display_scale) is lazy
-
-       private var score_history = new List[Int]
-       private var score_history_max_length = 60
-
-       redef fun draw_score(display, score)
-       do
-               # Use an history to smooth the score
-               score_history.add game.points
-               if score_history.length > score_history_max_length then score_history.shift
-               var sum = 0
-               for h in score_history do sum += h
-               var avg = sum.to_f/score_history.length.to_f
-               var d = game.points.to_f - avg
-
-               # Color the score according to positive or negative changes
-               var r = 1.0
-               var g = 1.0
-               var b = 1.0
-               if d > 0.0 then
-                       r = 1.0-d.to_f/2.0
-                       b = r
-                       g = 1.0-d.to_f/10.0
-               else if d < 0.0 then
-                       g = 1.0+d.to_f/5.0
-                       b = g
-               end
-
-               if display isa Opengles1Display then display.color(r, g, b, 1.0)
-
-               # Draw the score itself
-               super(display, avg.to_i)
-
-               if display isa Opengles1Display then display.reset_color
-       end
-end
-
-redef class HoleContent
-       # Add a `CubicBezierParticle` from `event` to the score box with `img`
-       private fun bezier_to_score(img: Image, event: PointerEvent)
-       do
-               app.screen.particles.add new CubicBezierParticle(2.0, 0.0, img,
-                       [event.to_pos, event.to_pos + new Pos(0.0, -128.0),
-                        app.screen.score_entry, app.screen.score_center])
-       end
-end
-
-redef class Mole
-
-       # Number of hair particles
-       private var n_hair_on_hit = 20
-
-       redef fun hit(game, hole, event)
-       do
-               super
-
-               app.assets.hair.scale = display_scale
-               for i in n_hair_on_hit.times do
-                       app.screen.particles.add new FeatheryParticle(2.0, 2.0, app.assets.hair, event.to_pos)
-               end
-
-               bezier_to_score(app.assets.point, event)
-               app.screen.particles.add new BlowUpParticle(0.5, 0.0, app.assets.point, event.to_pos)
-       end
-end
-
-redef class Trap
-       # Image for `CubicBezierParticle` effect towards the score board
-       protected fun penalty_img: Image do return app.assets.penalty_ten
-
-       # `Flash` effects on hit
-       protected fun flashes: Array[Flash] do
-               return [new Flash(0.5, 0.0, 1.0, 0.0, 0.0, 0.5, 2.0)]
-       end
-
-       redef fun hit(game, hole, event)
-       do
-               super
-
-               bezier_to_score(penalty_img, event)
-               app.screen.particles.add new BlowUpParticle(0.5, 0.0, penalty_img, event.to_pos)
-
-               app.screen.flashes.add_all flashes
-       end
-end
diff --git a/contrib/crazy_moles/src/moles.nit b/contrib/crazy_moles/src/moles.nit
deleted file mode 100644 (file)
index 514b71f..0000000
+++ /dev/null
@@ -1,344 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Copyright 2012-2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#       http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Classic moles game
-#
-# This is a minimal practical example of the mnit framework.
-module moles is
-       app_version(1, 0, git_revision)
-       app_name("Crazy Groundhogs")
-end
-
-import mnit
-import realtime
-
-import drawing
-
-# A hole with a possible mole, or a trap in it
-class Hole
-       var game: Game
-
-       # Horizontal center of the hole
-       var x: Int
-
-       # Vertical center of the hole
-       var y: Int
-
-       # Half width of the hit box
-       var dx = 200.0
-
-       # Height of the hit box
-       var dy = 800.0
-
-       # Content (and state) of this hole
-       var content: nullable HoleContent = null
-
-       # Time at witch this hole can act again
-       var timeout_until: Float = app.clock.total.to_f is lazy
-
-       # Timeout for 1/2 sec or less with a higher score
-       private fun reset_timeout do
-               timeout_until = app.clock.total.to_f +
-                               0.5 - 0.4 * (game.points.to_f / 1000.0).min(1.0)
-       end
-
-       fun do_turn
-       do
-               if timeout_until > app.clock.total.to_f then return
-
-               var content = content
-               if content != null then
-                       if content == game.down then
-                               if (20.0*game.speed_modifier).to_i.rand == 0 then
-                                       # dead / hide
-                                       self.content = null
-                                       reset_timeout
-                               end
-                       else if (80.0*game.speed_modifier).to_i.rand == 0 then
-                               # hide
-                               self.content = null
-                               reset_timeout
-                       end
-               else if (100.0*game.speed_modifier).to_i.rand == 0 then
-                       self.content = to_pop
-                       reset_timeout
-               end
-       end
-
-       # Get next `HoleContent` to pop
-       fun to_pop: HoleContent
-       do
-               # show traps only at 10 points and up
-               if game.points > 10 then
-
-                       # After 50 points we have more and more traps until point 1000
-                       var d = 1250-(game.points - 50)
-                       if d < 200 then d = 200
-
-                       if d.rand < 100 then return game.trap
-               end
-
-               return game.up
-       end
-
-       # Does this hole intercepts `event`?
-       fun intercepts(event: PointerEvent): Bool
-       do
-               if content == null then return false
-
-               var dx = (dx*display_scale).to_i
-               var dy = (dy*display_scale).to_i
-               var ex = event.x.to_i - display_offset_x
-               var ey = event.y.to_i - display_offset_y
-               return ex > x - dx and ex < x + dx and
-                       ey > y - dy and ey < y
-       end
-
-       # Draw this hole and content to `display`
-       fun draw(display: Display)
-       do
-               # The hole itself
-               var img = app.assets.empty
-               var dx = 300.0*display_scale
-               var dy = 256.0*display_scale
-               img.scale = display_scale
-               display.blit(img, x-dx.to_i+display_offset_x, y-dy.to_i+display_offset_y)
-
-               # The mole in the hole, or other content
-               var content = self.content
-               if content != null then
-                       content.draw(display, x, y)
-               end
-       end
-end
-
-# Content of a `Hole`
-class HoleContent
-       # Image
-       var img: Image
-
-       # Offset of the horizontal center of the hole
-       var dx: Float
-
-       # Offset of the vertical center of the hole
-       var dy: Float
-
-       # Hit this hole content
-       fun hit(game: Game, hole: Hole, event: PointerEvent) do end
-
-       # Draw this content to `display`
-       fun draw(display: Display, x, y: Int)
-       do
-               img.scale = display_scale
-               display.blit(img,
-                       x-dx.to_i+display_offset_x,
-                       y-dy.to_i+display_offset_y)
-       end
-end
-
-# A mole in a hole
-class Mole
-       super HoleContent
-
-       # Points value when hit
-       var value: Int
-
-       redef fun hit(game, hole, event)
-       do
-               game.points += value
-               hole.content = game.down
-       end
-end
-
-# A trap held out of a hole
-class Trap
-       super HoleContent
-
-       # Points penalty when hit
-       var penalty: Int
-
-       redef fun hit(game, hole, event)
-       do
-               game.points -= penalty
-               if game.points < 0 then game.points = 0
-               hole.content = null
-       end
-end
-
-class Game
-       # All holes, filled or not
-       var holes = new Array[Hole]
-
-       # rule / const
-       var modifier_half_life = 1000.0
-
-       # Row count
-       fun rows: Int do return 4
-
-       # Columns count
-       fun columns: Int do return 5
-
-       # Score
-       var points = 0
-
-       # Acceleration
-       var speed_modifier = 1.0
-
-       # Vertical offset between rows
-       var dist_between_rows = 448
-
-       # Horizontal offset between columns
-       var dist_between_columns = 600
-
-       # Global accumulation control, applied to `speed_modifier`
-       fun global_speed_modifier: Float do return 2.0
-
-       # A mole, in a hole
-       var up = new Mole(app.assets.up, 212.0*display_scale, 820.0*display_scale, 1) is lazy
-
-       # A mole that was hit
-       var down = new HoleContent(app.assets.hit, 250.0*display_scale, 512.0*display_scale) is lazy
-
-       # A trap out of the hole
-       var trap = new Trap(app.assets.trap, 212.0*display_scale, 830.0*display_scale, 10) is lazy
-
-       init
-       do
-               var dx = (dist_between_columns.to_f*display_scale).to_i
-               var dy = (dist_between_rows.to_f*display_scale).to_i
-               for x in [0 .. columns[ do
-                       for y in [0 .. rows[ do
-                               holes.add(new Hole(self, x*dx, y*dy))
-                       end
-               end
-       end
-
-       fun do_turn
-       do
-               for hole in holes do hole.do_turn
-
-               speed_modifier = modifier_half_life / (modifier_half_life+points.to_f) * global_speed_modifier
-       end
-end
-
-# Where all the UI stuff is done
-class Screen
-       # The running game
-       var game = new Game is lazy
-
-       fun do_frame(display: Display)
-       do
-               display.clear(0.0, 0.45, 0.0)
-
-               app.assets.sign_warning.scale = display_scale
-               display.blit(app.assets.sign_warning, (380.0*display_scale).to_i, (256.0*display_scale).to_i)
-
-               app.assets.sign_cute.scale = display_scale
-               display.blit(app.assets.sign_cute, (1024.0*display_scale).to_i, (64.0*display_scale).to_i)
-
-               for hole in game.holes do
-                       hole.draw display
-               end
-
-               draw_hud display
-       end
-
-       fun input(event: InputEvent): Bool
-       do
-               if event isa PointerEvent then
-                       for hole in game.holes.reverse_iterator do
-                               if hole.intercepts(event) then
-                                       var hole_content = hole.content
-                                       if hole_content != null then hole_content.hit(game, hole, event)
-                                       return true
-                               end
-                       end
-               end
-
-               return false
-       end
-
-       # Draw the HUD as the topmost layer of the screen
-       fun draw_hud(display: Display)
-       do
-               var board = app.assets.points_board
-               board.scale = display_scale
-               display.blit(board, (32.0*display_scale).to_i, -10)
-
-               draw_score(display)
-       end
-
-       # Draw the score
-       fun draw_score(display: Display, score: nullable Int)
-       do
-               if score == null then score = game.points
-
-               # Draw the score itself
-               for img in app.numbers.imgs do img.scale = display_scale
-               display.blit_number(app.numbers, score,
-                       (92.0*display_scale).to_i,
-                       (172.0*display_scale).to_i)
-       end
-end
-
-redef class App
-
-       # Main play screen
-       var screen = new Screen
-
-       # Image set generate by inkscape_tools
-       var assets = new DrawingImages
-
-       # Numbers to display the score
-       var numbers = new NumberImages(assets.n)
-
-       # Elapsed time since program launch
-       var clock = new Clock
-
-       redef fun on_create
-       do
-               super
-
-               assets.load_all self
-               maximum_fps = 50.0
-       end
-
-       redef fun frame_core(display)
-       do
-               screen.game.do_turn
-               screen.do_frame(display)
-       end
-
-       redef fun input(ie)
-       do
-               if ie isa QuitEvent or
-                       (ie isa KeyEvent and ie.to_c == 'q') then
-                       quit = true
-                       return true
-               end
-
-               return screen.input(ie)
-       end
-end
-
-# Main zoom
-fun display_scale: Float do return 1.0
-
-# Depends on the hole center in the uo image
-fun display_offset_x: Int do return (512.0*display_scale).to_i
-
-# Depends on the width of the holes
-fun display_offset_y: Int do return (1000.0*display_scale).to_i
diff --git a/contrib/crazy_moles/src/moles_android.nit b/contrib/crazy_moles/src/moles_android.nit
deleted file mode 100644 (file)
index c2c7f58..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2012-2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-module moles_android
-
-import mnit::android
-import android::portrait
-
-import moles
-import effects
-import more_traps
-
-redef class Game
-       redef fun columns do return 3
-       redef fun rows do return 5
-end
-
-redef class App
-       redef fun on_create
-       do
-               # We use as a reference the Moto X
-               var tw = 720
-               var th = 1184
-
-               # Calculate the scale to fit a Moto X screen in this device screen
-               var xs = display.width.to_f/tw.to_f*0.4
-               var ys = display.height.to_f/th.to_f*0.4
-
-               # Use the smaller scale so everything fits
-               display_scale_container.item = xs.min(ys)
-
-               super
-       end
-end
-
-fun display_scale_container: Ref[Float] do return once new Ref[Float](0.1)
-redef fun display_scale do return display_scale_container.item
-redef fun display_offset_x: Int do return (300.0*display_scale).to_i
diff --git a/contrib/crazy_moles/src/more_traps.nit b/contrib/crazy_moles/src/more_traps.nit
deleted file mode 100644 (file)
index cf64cc5..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Add more traps
-module more_traps
-
-import moles
-import effects
-
-# Nuclear trap
-class Nuke
-       super Trap
-
-       redef fun penalty_img do return app.assets.penalty_hundred
-
-       redef fun flashes do return [
-               new Flash(5.0, 0.0, 1.0, 0.0, 0.0, 1.25, 2.0),
-               new Flash(0.2, 0.0, 1.0, 1.0, 1.0, 1.0, 2.0)]
-end
-
-# Large cactus trap
-class BigTrap
-       super Trap
-
-       redef fun penalty_img do return app.assets.penalty_twenty
-end
-
-redef class Game
-
-       # Nuclear trap
-       var nuke = new Nuke(app.assets.nuke, 180.0*display_scale, 780.0*display_scale, 100) is lazy
-
-       # Large cactus trap
-       var big_cactus = new BigTrap(app.assets.big_cactus, 242.0*display_scale, 820.0*display_scale, 20) is lazy
-end
-
-redef class Hole
-       redef fun to_pop
-       do
-               if game.points > 25 then
-                       if 25.rand == 0 then return game.big_cactus
-                       if game.points > 50 and 100.rand == 0 then return game.nuke
-               end
-
-               return super
-       end
-end
diff --git a/contrib/friendz/.gitignore b/contrib/friendz/.gitignore
deleted file mode 100644 (file)
index 1e1503b..0000000
+++ /dev/null
@@ -1 +0,0 @@
-android/
diff --git a/contrib/friendz/Makefile b/contrib/friendz/Makefile
deleted file mode 100644 (file)
index 7b7d953..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-default: linux
-
-linux:
-       mkdir -p bin
-       nitc -o bin/friendz src/friendz_linux.nit
-
-android: android/res/drawable-hdpi/icon.png
-       mkdir -p bin
-       nitc -o bin/friendz.apk src/friendz_android.nit
-
-android-release: android/res/drawable-hdpi/icon.png
-       mkdir -p bin
-       nitc -o bin/friendz.apk src/friendz_android.nit --release
-
-android/res/drawable-hdpi/icon.png: art/icon.svg
-       mkdir -p android/res
-       ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out android/res/
-
-doc:
-       mkdir -p doc
-       nitdoc -d doc/ src/friendz.nit src/friendz_linux.nit
-
-clean:
-       rm -rf bin/ doc/ android/
diff --git a/contrib/friendz/README.md b/contrib/friendz/README.md
deleted file mode 100644 (file)
index b30803b..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-Chainz of Friendz, a multi-platform puzzle game
-
-# Objectives
-
-Place monsters to create big chains of friends. You cannot add or
-remove monsters on a metal block. Monsters cannot have more that two
-direct friends. You must build one chain for each type of monster.
-
-# Controls
-
-Select a monster in the right pane and click on the board to add or
-remove the monster. Keep the mouse button down on the map to place
-multiple monsters. Click on a monster on a metal block to automatically
-select the monster.
-
-Keyboard shortcuts:
-
-* 1 to 9 : select a monster
-* 0 : eraser
-* q : metal block (editor only)
-
-# Editor
-
-Once the editor is unlocked you can create your own levels.
-
-# Challenge levels
-
-In challenge level you have to place as much as monster as possible.
-
-# Misc
-
-This game was originally developed for the [Casual Gameplay Design Competition
-\#9](http://jayisgames.com/cgdc9).
-
-# Artwork
-
-The artwork was created by Sam Hocevar <sam@zoy.org> for the Monsterz arcade
-puzzle game http://sam.zoy.org/monsterz/
diff --git a/contrib/friendz/android/res/raw/music.ogg b/contrib/friendz/android/res/raw/music.ogg
deleted file mode 100644 (file)
index 8dcfa3b..0000000
Binary files a/contrib/friendz/android/res/raw/music.ogg and /dev/null differ
diff --git a/contrib/friendz/art/icon.svg b/contrib/friendz/art/icon.svg
deleted file mode 100644 (file)
index 3584b06..0000000
+++ /dev/null
@@ -1,327 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="256"
-   height="256"
-   id="svg4386"
-   version="1.1"
-   inkscape:version="0.48.5 r10040"
-   sodipodi:docname="icon.svg">
-  <defs
-     id="defs4388">
-    <radialGradient
-       r="7.7875042"
-       fy="141.32838"
-       fx="106.50102"
-       cy="141.3284"
-       cx="106.50099"
-       gradientTransform="scale(1.02976,0.9711)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient8339"
-       xlink:href="#linearGradient5606"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient5606">
-      <stop
-         id="stop5608"
-         offset="0.0000000"
-         style="stop-color:#000000;stop-opacity:1.0000000;" />
-      <stop
-         id="stop5614"
-         offset="0.20000000"
-         style="stop-color:#000000;stop-opacity:1.0000000;" />
-      <stop
-         id="stop5616"
-         offset="0.30000001"
-         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
-      <stop
-         id="stop5610"
-         offset="1.0000000"
-         style="stop-color:#ffffff;stop-opacity:1.0000000;" />
-    </linearGradient>
-    <filter
-       inkscape:label="Desaturate"
-       x="0"
-       y="0"
-       width="1"
-       height="1"
-       inkscape:menu="Color"
-       inkscape:menu-tooltip="Render in shades of gray by reducing saturation to zero"
-       color-interpolation-filters="sRGB"
-       id="filter3078">
-      <feColorMatrix
-         type="saturate"
-         values="0"
-         id="feColorMatrix3080" />
-    </filter>
-    <filter
-       inkscape:label="Desaturate"
-       x="0"
-       y="0"
-       width="1"
-       height="1"
-       inkscape:menu="Color"
-       inkscape:menu-tooltip="Render in shades of gray by reducing saturation to zero"
-       color-interpolation-filters="sRGB"
-       id="filter3082">
-      <feColorMatrix
-         type="saturate"
-         values="0"
-         id="feColorMatrix3084" />
-    </filter>
-    <filter
-       inkscape:label="Desaturate"
-       x="0"
-       y="0"
-       width="1"
-       height="1"
-       inkscape:menu="Color"
-       inkscape:menu-tooltip="Render in shades of gray by reducing saturation to zero"
-       color-interpolation-filters="sRGB"
-       id="filter3086">
-      <feColorMatrix
-         type="saturate"
-         values="0"
-         id="feColorMatrix3088" />
-    </filter>
-    <filter
-       inkscape:label="Desaturate"
-       x="0"
-       y="0"
-       width="1"
-       height="1"
-       inkscape:menu="Color"
-       inkscape:menu-tooltip="Render in shades of gray by reducing saturation to zero"
-       color-interpolation-filters="sRGB"
-       id="filter3090">
-      <feColorMatrix
-         type="saturate"
-         values="0.71980676328502413"
-         id="feColorMatrix3092" />
-    </filter>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.98994949"
-     inkscape:cx="76.110583"
-     inkscape:cy="101.8389"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1279"
-     inkscape:window-height="1377"
-     inkscape:window-x="1279"
-     inkscape:window-y="29"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata4391">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(0,-796.36218)">
-    <g
-       inkscape:export-ydpi="72.000000"
-       inkscape:export-xdpi="72.000000"
-       inkscape:export-filename="/home/sam/monsterz/monsterz/tiles.png"
-       transform="matrix(4.2708842,0,0,4.1991018,0.37397342,-2109.743)"
-       id="g8300"
-       style="filter:url(#filter3090)">
-      <g
-         style="stroke:none"
-         inkscape:export-ydpi="72.000000"
-         inkscape:export-xdpi="72.000000"
-         inkscape:export-filename="/home/sam/monsterz/monsterz/test.png"
-         transform="matrix(0.823543,0,0,0.832736,-337.8784,464.3823)"
-         id="g8288">
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc"
-           id="path8290"
-           d="M 427.22149,306.26985 C 400,308.61218 417.5,276.66759 427.5,286.11218"
-           style="fill:#01ff03;fill-opacity:1;fill-rule:evenodd" />
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc"
-           id="path8292"
-           d="m 467.5,283.61218 c 18.75,-6.25 17.5,28.75 -2.5,18.75"
-           style="fill:#01ff03;fill-opacity:1;fill-rule:evenodd" />
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ccc"
-           id="path8294"
-           d="M 428.58387,304.20437 C 406.97719,274.86218 485,259.86218 465,302.36218 c 53.75,37.5 -81.25,70 -36.41613,1.84219 z"
-           style="fill:#01ff03;fill-opacity:1;fill-rule:evenodd" />
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc"
-           id="path8296"
-           d="m 420,292.36218 c -1.95031,4.4858 0,6.25 1.25,7.5"
-           style="fill:none" />
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc"
-           id="path8298"
-           d="m 473.75,289.34798 c 0.60933,3.0142 1.25,4.2642 -1.25,7.44624"
-           style="fill:none" />
-      </g>
-      <path
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccc"
-         id="path8275"
-         d="m 20,747.36218 c 23.207741,2.5 36.25,-13.75 31.25,-20 -1.25,10 -18.03209,20.56008 -31.25,20 z"
-         style="fill:#000000;fill-opacity:0.1372549;fill-rule:evenodd;stroke:none" />
-      <g
-         id="g8283">
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ccc"
-           id="path8277"
-           d="M 14.300999,703.00709 C 5.5600809,697.36218 -4.2738645,716.11218 7.5,718.61218 c -5,-5.67209 -2.5,-13.75 6.800999,-15.60509 z"
-           style="fill:#ffffff;fill-opacity:0.41176471;fill-rule:evenodd;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ccc"
-           id="path8279"
-           d="m 45,698.61218 c -13.75,-11.25 -42.5,-0.73064 -28.75,20 -3.75,-12.5 11.25,-25 28.75,-20 z"
-           style="fill:#ffffff;fill-opacity:0.41176471;fill-rule:evenodd;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ccc"
-           id="path8281"
-           d="m 57.5,708.61218 c 1.25,-9.4761 -12.5,-11.25 -10,-4.41905 5.560081,-1.83095 7.321465,0.72043 10,4.41905 z"
-           style="fill:#ffffff;fill-opacity:0.41176471;fill-rule:evenodd;stroke:none" />
-      </g>
-      <g
-         style="fill:none"
-         inkscape:export-ydpi="72.000000"
-         inkscape:export-xdpi="72.000000"
-         inkscape:export-filename="/home/sam/monsterz/monsterz/test.png"
-         transform="matrix(0.823543,0,0,0.832736,-337.8784,464.3823)"
-         id="g7882">
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc"
-           id="path7659"
-           d="M 427.22149,306.26985 C 400,308.61218 417.5,276.66759 427.5,286.11218"
-           style="stroke:#000000;stroke-width:3.11108565;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc"
-           id="path7661"
-           d="m 467.5,283.61218 c 18.75,-6.25 17.5,28.75 -2.5,18.75"
-           style="stroke:#000000;stroke-width:3.11108565;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ccc"
-           id="path7657"
-           d="M 428.58387,304.20437 C 406.97719,274.86218 485,259.86218 465,302.36218 c 53.75,37.5 -81.25,70 -36.41613,1.84219 z"
-           style="stroke:#000000;stroke-width:3.11108565;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc"
-           id="path7663"
-           d="m 420,292.36218 c -1.95031,4.4858 0,6.25 1.25,7.5"
-           style="stroke:#000000;stroke-width:3.11108565;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cc"
-           id="path7665"
-           d="m 473.75,289.34798 c 0.60933,3.0142 1.25,4.2642 -1.25,7.44624"
-           style="stroke:#000000;stroke-width:3.11108565;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
-      </g>
-    </g>
-    <g
-       inkscape:export-ydpi="72.000000"
-       inkscape:export-xdpi="72.000000"
-       inkscape:export-filename="/home/sam/monsterz/monsterz/tiles.png"
-       transform="matrix(4.3642738,0,0,-0.17844664,-531.2477,940.61654)"
-       id="g8323"
-       style="filter:url(#filter3090)">
-      <path
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc"
-         id="path8325"
-         d="M 150.47232,132.96909 150,134.86218"
-         style="fill:none;stroke:#000000;stroke-width:12.36332512;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
-      <path
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="cc"
-         id="path8327"
-         d="m 153.75,132.96909 0.47232,1.89309"
-         style="fill:none;stroke:#000000;stroke-width:12.36332512;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
-    </g>
-    <g
-       inkscape:export-ydpi="72.000000"
-       inkscape:export-xdpi="72.000000"
-       inkscape:export-filename="/home/sam/monsterz/monsterz/tiles.png"
-       transform="matrix(4.3642695,0,0,4.3642084,-733.54667,664.62487)"
-       id="g8329"
-       style="filter:url(#filter3090)">
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="72.000000"
-         inkscape:export-xdpi="72.000000"
-         inkscape:export-filename="/home/sam/monsterz/monsterz/test.png"
-         sodipodi:nodetypes="cc"
-         id="path8331"
-         d="m 191.8115,62.362183 c 2.83835,1.82034 7.56893,1.99609 11.3534,0"
-         style="fill:none;stroke:#ffffff;stroke-width:2.49998164;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.41176471" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="72.000000"
-         inkscape:export-xdpi="72.000000"
-         inkscape:export-filename="/home/sam/monsterz/monsterz/test.png"
-         sodipodi:nodetypes="cc"
-         id="path8333"
-         d="m 193.0615,64.152194 c 2.83835,1.82034 7.56893,1.99609 11.3534,0"
-         style="fill:none;stroke:#000000;stroke-width:2.49998164;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:0.1372549" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="72.000000"
-         inkscape:export-xdpi="72.000000"
-         inkscape:export-filename="/home/sam/monsterz/monsterz/test.png"
-         sodipodi:nodetypes="cc"
-         id="path8335"
-         d="m 192.5,63.430263 c 2.83835,1.82034 7.56893,1.99609 11.3534,0"
-         style="fill:none;stroke:#000000;stroke-width:2.49998164;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1" />
-    </g>
-    <path
-       inkscape:export-ydpi="72.000000"
-       inkscape:export-xdpi="72.000000"
-       inkscape:export-filename="/home/sam/monsterz/monsterz/tiles.png"
-       transform="matrix(4.2024883,1.3865396,-2.0345896,3.8609453,-52.336063,179.80496)"
-       d="m 115.86819,137.36218 a 6.1977272,6.1227274 0 1 1 -12.39545,0 6.1977272,6.1227274 0 1 1 12.39545,0 z"
-       sodipodi:ry="6.1227274"
-       sodipodi:rx="6.1977272"
-       sodipodi:cy="137.36218"
-       sodipodi:cx="109.67046"
-       id="path8337"
-       style="fill:url(#radialGradient8339);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:2.49998115999999992;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;filter:url(#filter3090)"
-       sodipodi:type="arc" />
-  </g>
-</svg>
diff --git a/contrib/friendz/assets/background.png b/contrib/friendz/assets/background.png
deleted file mode 100644 (file)
index a21aab4..0000000
Binary files a/contrib/friendz/assets/background.png and /dev/null differ
diff --git a/contrib/friendz/assets/bing.wav b/contrib/friendz/assets/bing.wav
deleted file mode 100644 (file)
index c7cae5b..0000000
Binary files a/contrib/friendz/assets/bing.wav and /dev/null differ
diff --git a/contrib/friendz/assets/click.wav b/contrib/friendz/assets/click.wav
deleted file mode 100644 (file)
index 3d07b83..0000000
Binary files a/contrib/friendz/assets/click.wav and /dev/null differ
diff --git a/contrib/friendz/assets/deltaforce_font.png b/contrib/friendz/assets/deltaforce_font.png
deleted file mode 100644 (file)
index fb6cc4b..0000000
Binary files a/contrib/friendz/assets/deltaforce_font.png and /dev/null differ
diff --git a/contrib/friendz/assets/duh.wav b/contrib/friendz/assets/duh.wav
deleted file mode 100644 (file)
index 054e1fe..0000000
Binary files a/contrib/friendz/assets/duh.wav and /dev/null differ
diff --git a/contrib/friendz/assets/hitbox.png b/contrib/friendz/assets/hitbox.png
deleted file mode 100644 (file)
index bb48006..0000000
Binary files a/contrib/friendz/assets/hitbox.png and /dev/null differ
diff --git a/contrib/friendz/assets/level.wav b/contrib/friendz/assets/level.wav
deleted file mode 100644 (file)
index 2d30b6e..0000000
Binary files a/contrib/friendz/assets/level.wav and /dev/null differ
diff --git a/contrib/friendz/assets/logo.png b/contrib/friendz/assets/logo.png
deleted file mode 100644 (file)
index 6370e2a..0000000
Binary files a/contrib/friendz/assets/logo.png and /dev/null differ
diff --git a/contrib/friendz/assets/music.ogg b/contrib/friendz/assets/music.ogg
deleted file mode 100644 (file)
index 8dcfa3b..0000000
Binary files a/contrib/friendz/assets/music.ogg and /dev/null differ
diff --git a/contrib/friendz/assets/tiles2.png b/contrib/friendz/assets/tiles2.png
deleted file mode 100644 (file)
index 24038a9..0000000
Binary files a/contrib/friendz/assets/tiles2.png and /dev/null differ
diff --git a/contrib/friendz/assets/whip.wav b/contrib/friendz/assets/whip.wav
deleted file mode 100644 (file)
index b907832..0000000
Binary files a/contrib/friendz/assets/whip.wav and /dev/null differ
diff --git a/contrib/friendz/org.nitlanguage.friendz_android.txt b/contrib/friendz/org.nitlanguage.friendz_android.txt
deleted file mode 100644 (file)
index 904dcc5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Categories:Nit,Games
-License:WTFPL
-Web Site:http://nitlanguage.org
-Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/contrib/friendz
-Issue Tracker:https://github.com/nitlang/nit/issues
-
-Summary:Puzzle game
-Description:
-Connect colored monsters to from bit continuous chains of friends.
-.
diff --git a/contrib/friendz/package.ini b/contrib/friendz/package.ini
deleted file mode 100644 (file)
index 7ef0618..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[package]
-name=friendz
-tags=game
-maintainer=Jean Privat <jean@pryen.org>
-license=Apache-2.0
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/contrib/friendz/
-git=https://github.com/nitlang/nit.git
-git.directory=contrib/friendz/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
-apk=http://nitlanguage.org/fdroid/apk/friendz_android.apk
diff --git a/contrib/friendz/src/friendz.nit b/contrib/friendz/src/friendz.nit
deleted file mode 100644 (file)
index 762eb1d..0000000
+++ /dev/null
@@ -1,1669 +0,0 @@
-# Monsterz - Chains of Friends
-#
-# 2010-2014 (c) Jean Privat <jean@pryen.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the Do What The Fuck You Want To
-# Public License, Version 2, as published by Sam Hocevar. See
-# http://sam.zoy.org/projects/COPYING.WTFPL for more details.
-
-# Full UI for the game
-module friendz is
-       app_name("ChainZ of FriendZ")
-       app_version(0, 1, git_revision)
-end
-
-import app::audio
-import mnit
-import realtime
-import solver
-import mnit::tileset
-import app::data_store
-
-intrude import grid
-intrude import level
-
-redef class Grid
-       # Zoom level in %
-       # higher means more dense grid
-       var ratio = 100
-
-       # Various grid sizes from large to small (16x16, 12x12, 8x8, 6x6)
-       var ratios: Array[Int] = [200, 150, 100, 75]
-
-       redef fun resize(w,h)
-       do
-               super
-               for r in ratios do
-                       if w*100/r <= 8 and h*100/r <= 8 then self.ratio = r
-               end
-       end
-end
-
-#   * ENTITIES ****************************************************************
-
-# A game entity is something that is displayed and may interact with the player.
-abstract class Entity
-       # The associated game
-       var game: Game
-
-       # X left coordinate (in pixel).
-       var x: Int
-
-       # Y top coordinate (in pixel).
-       var y: Int
-
-       # X right coordinate (in pixel).
-       fun x2: Int do return x + width
-
-       # Y bottom coordinate (in pixel).
-       fun y2: Int do return y + height
-
-       # Width
-       var width: Int
-
-       # Height
-       var height: Int
-
-       # Tool tip text (if any)
-       var over: nullable String = null
-
-       # can the entity intercepts drag ang drop events?
-       var draggable = false
-
-       # Draw function. To implement
-       fun draw(ctx: Display) do end
-
-       # Update function. Called each loop. To implement
-       fun update do end
-
-       # Enter function. Called when the cursor enter in the element. To implement
-       fun enter(ev: Event) do end
-
-       # Click function. Called when the player click in the element.
-       # (or activate it with a shortcut).
-       fun click(ev: Event) do end
-
-       # keyboard shortcut do activate the entity, if any
-       var shortcut: nullable String = null
-
-       # Are events received?
-       var enabled = true
-
-       fun bw: Int do return game.bw
-       fun bh: Int do return game.bh
-
-       # Should the entity be redrawn
-       var dirty = true
-end
-
-# TEXT BUTTONS ***********************************************************/
-
-# Button entity displayed as a simple text.
-# if `over1` is null, then the button is a simple pasive label
-# if `over1` is set but `over2` is null, then the button is a normal button
-# if both `over1` and `over2` arew set, then the button is a toggleable button with two states
-class TextButton
-       super Entity
-       var str: String
-       init(game: Game, str: String, x,y: Int, color: nullable String, over, over2: nullable String)
-       do
-               var w = 10 # TODO
-               super(game, x,y,w,24)
-               self.str = str
-               self.color = color or else "purple"
-               self.over = over
-               self.over1 = over
-               self.over2 = over2
-               self.textx = x
-               if self.toggleable then
-                       self.x -= bw/2 + 4
-               end
-       end
-
-       var color: String
-
-       # The description of the button action
-       var over1: nullable String
-       # The description of the state2 button action
-       var over2: nullable String
-
-       # is the button a two-state button
-       fun toggleable: Bool do return over2 != null
-
-       # is the toggleable button in its second state?
-       var toggled = false
-
-       # ttl for highlighting
-       var ttl = 0
-
-       # position of the start of the text
-       # in a toggleable button, there is space for the mark between `x` and `textx`
-       var textx: Int
-
-       redef fun draw(ctx) do
-               if self.toggleable then
-                       var w
-                       if self.toggled or not self.enabled then w = 6 else w = 7
-                       ctx.blit(game.img2[w,0], self.x, self.y)
-               end
-               var c
-               if self.enabled then c = self.color else c = "gray"
-               var c2= null
-               if self.ttl > 0 then c2 = "rgba(255,255,255,{self.ttl/10})"
-               ctx.textx(self.str, self.textx, self.y, self.height, c, c2)
-               self.width = ctx.measureText(self.str, self.height)
-               if self.toggleable then self.width += bw/2 + 4
-       end
-
-       redef fun update
-       do
-               if game.statusbar.over_what != self and self.ttl > 0 then
-                       self.ttl-=1
-                       self.dirty = true
-               end
-       end
-
-       redef fun enter(ev)
-       do
-               if over1 == null then return
-               if not self.enabled then return
-               game.snd_click.play
-               self.ttl = 10
-               self.dirty = true
-               self.enter2
-       end
-
-       # Called by `enter` do perform additionnal work if the button is active
-       # Specific button should implement this instead of `enter`
-       fun enter2 do end
-
-       redef fun click(ev)
-       do
-               if not self.enabled then
-                       game.snd_bing.play
-               else
-                       if self.toggleable then
-                               self.toggled = not self.toggled
-                               if self.toggled then self.over = self.over2 else self.over = self.over1
-                               game.statusbar.over_txt = self.over
-                       end
-                       game.snd_whip.play
-               end
-               self.click2(ev)
-       end
-
-       # Called by `click` do perform additionnal work if the button is active
-       # Specific button should implement this instead of `click`
-       fun click2(ev: Event) do end
-
-end
-
-# LEVEL BUTTONS ***********************************************************/
-
-# button to play a level in the menu screen
-class LevelButton
-       super Entity
-
-       # The associated level to play
-       var level: Level
-
-       init(l: Level)
-       do
-               self.level = l
-               var i = l.number
-               super(l.game, (i%5)*56 + 54, (i/5)*56 + 55, l.game.bw, l.game.bh)
-
-               self.over = self.level.fullname
-               if self.level.get_state >= l.l_won then
-                       if game.levels[9].get_state >= l.l_won then self.over += " --- {self.level.score}/{self.level.gold}"
-               else if self.level.get_state >= l.l_open then
-                       if game.levels[9].get_state >= l.l_open then self.over +=  " --- ?/{self.level.gold}"
-               end
-               self.enabled = l.get_state >= l.l_open or game.cheated
-       end
-
-       redef fun draw(ctx)
-       do
-               var l = level
-               var s = self.level.get_state
-               var ix = 5 + l.number % 2
-               var iy = 0
-               if s == l.l_disabled then
-                       ix = 3
-                       iy = 3
-               else if s == l.l_open then
-                       ix = 1
-                       iy = 1
-                       ctx.blit(game.img[ix,iy], self.x, self.y)
-                       ix = 0
-                       iy = 0
-               end
-               ctx.blit(game.img[ix,iy], self.x, self.y)
-
-               if s == l.l_gold then
-                       ctx.blit(game.img2[7,0], self.x + bw*5/8, self.y-bh*1/8)
-               end
-               ctx.textx(self.level.name, self.x+5, self.y+5, 24, null, null)
-       end
-
-       redef fun click(ev)
-       do
-               if self.enabled then
-                       game.snd_whip.play
-                       game.play(self.level)
-               else
-                       game.snd_bing.play
-                       game.statusbar.set_tmp("Locked level", "red")
-               end
-       end
-
-end
-
-# ACHIEVEMENTS ************************************************************/
-
-# Achievement (monster-like) button in the menu screen
-class Achievement
-       super Button
-
-       # The number of the achievement (0 is first)
-       var number: Int
-
-       # The name of the achievement
-       var name: String
-
-       init(game: Game, i: Int, name: String)
-       do
-               super(game, 5*56 + 54, i*56 + 55, game.bw, game.bh)
-               self.over = name
-               self.number = i
-               self.name = name
-               var l =  game.levels[number*5+4]
-               enabled = l.get_state >= l.l_won
-               if self.enabled then self.over = name + " (unlocked)" else self.over = name + " (locked)"
-       end
-
-       redef fun draw(ctx)
-       do
-               var w
-               if self.enabled then w = 5 else w = 3
-               ctx.blit(game.img[w,self.number+5], self.x, self.y)
-       end
-
-       redef fun click(ev)
-       do
-               if not self.enabled then
-                       game.snd_bing.play
-                       game.statusbar.set_tmp("Locked achievement!", "red")
-               else
-                       game.snd_whip.play
-                       self.click2(ev)
-               end
-       end
-
-       fun click2(ev: Event) do
-               # TODO
-       end
-end
-
-
-# BOARD (THE GRID) *******************************************************/
-
-# The board game element.
-class Board
-       super Entity
-       init(game: Game)
-       do
-               super(game, game.xpad, game.ypad, 8*game.bw, 8*game.bh)
-               draggable = true
-       end
-
-       redef fun draw(ctx)
-       do
-               var grid = game.grid
-               var bwr = bw*100/grid.ratio
-               var bhr = bh*100/grid.ratio
-               var w = grid.width
-               var h = grid.height
-               if game.selected_button == game.button_size then
-                       bwr = bw/2
-                       bhr = bh/2
-                       w = game.gw
-                       h = game.gh
-               end
-               self.x = game.xpad+(48*8/2)-w*bwr/2
-               self.y = game.ypad+(48*8/2)-h*bhr/2
-               self.width = w*bwr
-               self.height = h*bhr
-               for i in [0..w[ do
-                       for j in [0..h[ do
-                               var t = grid.grid[i][j]
-                               var dx = i * bwr + self.x
-                               var dy = j * bhr + self.y
-                               if (i+j)%2 == 0 then
-                                       ctx.blit_scaled(game.img[5,0], dx, dy, bwr, bhr)
-                               else
-                                       ctx.blit_scaled(game.img[6,0], dx, dy, bwr, bhr)
-                               end
-                               if t.fixed then
-                                       if t.shape != null and not game.editing then
-                                               #ctx.drawImage(game.img, t.shape.x*bw, (2+t.shape.y)*bh, bw, bh, i * bwr + self.x, j * bhr + self.y, bwr, bhr)
-                                               ctx.blit_scaled(game.img[3,3], dx, dy, bwr, bhr)
-                                       else
-                                               ctx.blit_scaled(game.img[3,3], dx, dy, bwr, bhr)
-                                       end
-                               end
-                               if t.kind>0 then
-                                       var m = grid.monsters[t.kind]
-                                       var s = 0
-                                       if t.blink > 0 then s = 1
-                                       if t.nexts > 2 then s = 3
-                                       if t.nexts == 0 then s = 6
-                                       if m.chain then s = 5
-                                       if t.shocked>0 then s = 2
-                                       ctx.blit_scaled(game.img[s,(4+t.kind)], dx, dy, bwr, bhr)
-                               end
-                               #ctx.textx(t.chain_mark.to_s, dx, dy, 20, "", null)
-                       end
-               end
-               if game.selected_button == game.button_size then
-                       var x0 = self.x
-                       var x1 = (grid.width) * bwr - bwr/2 + self.x
-                       var y0 = self.y
-                       var y1 = (grid.height) * bhr - bhr/2 + self.y
-                       ctx.blit_scaled(game.img2[0,0], x0, y0, bwr/2, bhr/2)
-                       ctx.blit_scaled(game.img2[1,0], x1, y0, bwr/2, bhr/2)
-                       ctx.blit_scaled(game.img2[1,1], x1, y1, bwr/2, bhr/2)
-                       ctx.blit_scaled(game.img2[0,1], x0, y1, bwr/2, bhr/2)
-                       ctx.textx("{grid.width}x{grid.height}",self.x + grid.width*bwr/2,self.y+grid.height*bhr/2,20,"orange",null)
-               end
-       end
-
-       redef fun update
-       do
-               var grid = game.grid
-               for i in [0..grid.width[ do
-                       for j in [0..grid.height[ do
-                               var t = grid.grid[i][j]
-                               if t.kind == 0 then continue
-                               if t.blink > 0 then
-                                       t.blink-=1
-                                       self.dirty=true
-                               end
-                               if t.shocked > 0 then
-                                       t.shocked-=1
-                                       self.dirty=true
-                               else if 100.rand == 0 then
-                                       t.blink = 5
-                                       self.dirty=true
-                               end
-                       end
-               end
-       end
-
-       # Last clicked tile
-       # Uded to filter drag events
-       private var last: nullable Tile = null
-
-       redef fun click(ev)
-       do
-               var grid = game.grid
-               var r = grid.ratio
-               if game.selected_button == game.button_size then r = 200
-               var x = ev.game_x * r / bw / 100
-               var y = ev.game_y * r / bh / 100
-               var t = grid.grid[x][y]
-
-               if ev.drag and last == t then return
-               last = t
-
-               if game.selected_button != game.button_size and (x>=grid.width or y>=grid.height) then return
-
-               # print "{ev.game_x},{ev.game_y},{ev.drag} -> {x},{y}:{t}"
-
-               if game.selected_button != null then
-                       game.selected_button.click_board(ev, t)
-               end
-       end
-end
-
-# BUTTONS *****************************************************************/
-
-# A in-game selectable button for monsters or tools
-class Button
-       super Entity
-
-       # The x tile
-       var imgx: Int = 0
-
-       # The y tile
-       var imgy: Int = 0
-
-       # The associated monster tile
-       # >0 for monsters, <=0 for tools
-       var kind = 0
-
-       redef fun draw(ctx)
-       do
-               ctx.blit(game.img[self.imgx, self.imgy], self.x, self.y)
-               if game.selected_button == self then ctx.blit(game.img[0, 0], self.x, self.y)
-       end
-
-       redef fun click(ev)
-       do
-               var sel = game.selected_button
-               if game.selected_button == game.button_size then game.board.dirty=true
-               if sel != null then sel.dirty=true
-               game.selected_button = self
-               game.snd_click.play
-       end
-
-       # Current inputed chain
-       # Used for drag
-       private var chain = new Array[Tile]
-
-       # Board click. Called when the player click on the board with the button selected.
-       fun click_board(ev: Event, t: Tile)
-       do
-               game.score.dirty = true
-               if ev.drag and self.kind>0 and not chain.is_empty then
-                       if self.chain.length >= 2 and self.chain[1] == t then
-                               var t2 = self.chain.shift
-                               game.snd_click.play
-                               if t2.fixed and not game.editing then return
-                               t2.update(0)
-                               return
-                       end
-                       if t.fixed and t.kind == self.kind then
-                               self.chain.unshift(t)
-                               game.snd_click.play
-                               return
-                       end
-                       if (self.chain[0].x - t.x).abs + (self.chain[0].y - t.y).abs != 1 then return
-                       if t.fixed and not game.editing then
-                               game.snd_bing.play
-                               return
-                       end
-                       if t.kind != 0 and t.kind != self.kind then
-                               t.shocked = 5
-                               game.snd_duh.play
-                               return
-                       end
-                       self.chain.unshift(t)
-                       if t.kind == self.kind then return
-                       game.snd_click.play
-                       t.update(self.kind)
-                       return
-               end
-
-               if t.fixed and not game.editing then
-                       if t.kind == 0 then
-                               game.snd_bing.play
-                               return
-                       end
-                       if t.kind != self.kind and not ev.drag then
-                               game.buttons[t.kind].click(ev)
-                               game.buttons[t.kind].chain = [t]
-                       else
-                               self.chain = [t]
-                               game.snd_bing.play
-                       end
-                       return
-               end
-               if t.fixed and game.editing and self == game.button_erase and t.kind == 0 then
-                       t.fixed = false
-                       game.snd_click.play
-                       return
-               end
-
-               var nkind = 0 # the new kind
-               if ev.drag then
-                       # Here we clean
-                       if t.kind == 0 then return
-                       if self.kind != 0 and t.kind != self.kind then
-                               t.shocked = 5
-                               game.snd_duh.play
-                               return
-                       end
-                       nkind = 0
-               else if t.kind != self.kind then
-                       nkind = self.kind
-                       self.chain = [t]
-               else if t.kind != 0 then
-                       nkind = 0
-                       self.chain.clear
-               end
-               if nkind == t.kind then return
-               game.snd_click.play
-               t.update(nkind)
-       end
-end
-
-# A monster button
-class MonsterButton
-       super Button
-
-       # TTL for the monster being angry
-       var angries = 0
-       # TTL for the monster being happy
-       var happy = 0
-       # TTL for the monster being shocked
-       var shocked = 0
-       # TTL for the monster blinking
-       var blink = 0
-
-       init(game: Game, i: Int)
-       do
-               self.game = game
-               var x = 440 + 58 * ((i-1).abs%3)
-               var y = 150 + (bh+5) * ((i-1)/3)
-               super(game, x, y, game.bw, game.bh)
-               if i == 0 then return
-               kind = i
-               imgx = 0
-               imgy = (4+i)
-               over = game.colors[i] + " monster ({i})"
-               shortcut = i.to_s # code for 1 trough 9
-       end
-
-       redef fun click(ev)
-       do
-               super
-               self.shocked = 5
-       end
-
-       redef fun update
-       do
-               if self.happy > 0 then
-                       self.happy-=1
-                       self.dirty=true
-               end
-               if self.shocked > 0 then
-                       self.shocked-=1
-                       self.dirty=true
-               end
-               if self.blink > 0 then
-                       self.blink-=1
-                       self.dirty=true
-               else if 100.rand == 0 then
-                       self.blink = 5
-                       self.dirty=true
-               end
-       end
-
-       redef fun draw(ctx)
-       do
-               var s = self.imgx
-               if self.angries>0 then
-                       s += 3
-               else if self.happy > 5 then
-                       s += 5
-               else if self.shocked > 0 then
-                       s += 5
-               else if self.blink > 0 then
-                       s += 1
-               end
-               ctx.blit(game.img[s, self.imgy], self.x, self.y)
-               if game.selected_button == self then ctx.blit(game.img[0, 0], self.x, self.y)
-       end
-end
-
-# Erase button.
-class EraseButton
-       super Button
-       init(game: Game) do
-               super(game, 440, 92, game.bh, 22+game.bh)
-               imgx = 4
-               imgy = 13
-               kind = 0
-               over = "Eraser (0)"
-               shortcut = "0"
-       end
-end
-
-# Metal (fixed) button.
-class MetalButton
-       super Button
-       init(game: Game)
-       do
-               super(game, 498, 92, game.bh, 20+game.bh)
-               imgx = 3
-               imgy = 3
-               kind = -1
-               over = "Metal block (q)"
-               shortcut = "q"
-       end
-
-       private var fixed = false
-
-       redef fun click_board(ev,t)
-       do
-               if not ev.drag then self.fixed = not t.fixed
-               if t.fixed == self.fixed then return
-               t.fixed = self.fixed
-               game.snd_click.play
-       end
-end
-
-# Resize button.
-class ResizeButton
-       super Button
-
-       init(game: Game)
-       do
-               super(game,556, 92, game.bh, 20+game.bh)
-               kind = -2
-               over = "Resize the grid"
-       end
-
-       redef fun draw(ctx)
-       do
-               for i in [0..3[ do
-                       for j in [0..3[ do
-                               var x = self.x + i*bw/3
-                               var y = self.y + j*bh/3
-                               ctx.blit_scaled(game.img[5+(i+j)%2,0], x, y, bw/3, bh/3)
-                       end
-               end
-               if game.selected_button == self then ctx.blit(game.img[0, 0], self.x, self.y)
-       end
-
-       redef fun click(ev)
-       do
-               if game.selected_button != game.button_size then
-                       super
-               else
-                       game.selected_button = null
-                       game.board.dirty=true
-               end
-       end
-
-       redef fun click_board(evt, t)
-       do
-               var grid = t.grid
-               var w = t.x+1
-               var h = t.y+1
-               if w < 3 or h < 3 then
-                       game.snd_bing.play
-                       game.statusbar.set_tmp("Too small!", "red")
-                       return
-               end
-               var aborts = false
-               for i in [0..grid.width[ do
-                       for j in [0..grid.height[ do
-                               if i>=w or j>=h then
-                                       var t2 = grid.grid[i][j]
-                                       if t2.kind > 0 then
-                                               aborts = true
-                                               t2.shocked = 5
-                                       end
-                               end
-                       end
-               end
-               if aborts then
-                       game.snd_duh.play
-                       game.statusbar.set_tmp("Monsters on the way!", "red")
-                       return
-               end
-               game.snd_click.play
-               grid.resize(w,h)
-       end
-end
-
-# Inactive area used to display the score
-class Score
-       super Entity
-       init(game: Game)
-       do
-               super(game,440,310,199,62)
-       end
-       redef fun draw(ctx)
-       do
-               ctx.textx("MONSTERS: {game.grid.number}",self.x,self.y+1,21,"cyan",null)
-               var level = game.level
-               if level == null then return
-               if level.get_state >= level.l_won then
-                       ctx.textx("BEST: {level.score}",self.x,self.y+22,21,"pink", null)
-               else
-                       ctx.textx("BEST: -",self.x,self.y+22,21,"pink", null)
-               end
-               if game.levels[9].get_state >= level.l_won then
-                       if level.is_challenge then
-                               ctx.textx("GOAL: {level.gold}",self.x,self.y+44,21,"yellow",null)
-                       else
-                               ctx.textx("GOLD: {level.gold}",self.x,self.y+44,21,"yellow",null)
-                       end
-               end
-       end
-end
-
-# Status bar element.
-class StatusBar
-       super Entity
-       init(game: Game)
-       do
-               super(game,24, 440, 418-24, 30)
-       end
-
-       # Permanant text, if any
-       var main_txt: nullable String = null
-
-       # Text to display when the cursor if over an entity (`over_what`), if any
-       var over_txt: nullable String = null
-
-       # What is the entity for `over_txt`
-       var over_what: nullable Entity
-
-       # Text to temporally display, for some game event, if any
-       var tmp_txt: nullable String = null
-
-       # time-to-live for the `tmp_txt`
-       var tmp_txt_ttl = 0
-
-       # Color used to display `tmp_txt`
-       var tmp_txt_color: nullable String = null
-
-       # reset the status
-       fun clear do
-               self.main_txt = null
-               self.over_txt = null
-               self.tmp_txt = null
-               self.over = null
-       end
-
-       # set a temporary text
-       fun set_tmp(txt, color: String)
-       do
-               print "***STATUS** {txt}"
-               self.tmp_txt = txt
-               self.tmp_txt_ttl = 60
-               self.tmp_txt_color = color
-       end
-
-       redef fun draw(ctx)
-       do
-               var tmp_txt = self.tmp_txt
-               var over_txt = self.over_txt
-               var main_txt = self.main_txt
-               if tmp_txt != null and self.tmp_txt_ttl>0 then
-                       ctx.textx(tmp_txt,24,442,24,self.tmp_txt_color,null)
-               else if over_txt != null then
-                       ctx.textx(over_txt,24,442,24,"yellow",null)
-               else if main_txt != null then
-                       ctx.textx(main_txt,24,442,24,"white",null)
-               end
-       end
-
-       redef fun update
-       do
-               if self.tmp_txt_ttl>0 then
-                       self.tmp_txt_ttl-=1
-                       self.dirty=true
-               end
-       end
-end
-
-# ************************************************************************/
-
-redef class Display
-       # Display a text
-       fun textx(str: String, x, y, height: Int, color, color2: nullable String)
-       do
-               #var w = measureText(str, height)
-               #rect(x,y,w,height)
-               text(str.to_upper, app.game.font, x, y)
-       end
-
-       # give the width for a giver text
-       fun measureText(str: String, height: Int): Int
-       do
-               var font = app.game.font
-               return str.length * (font.width + font.hspace.to_i)
-       end
-
-       # displays a debug rectangle
-       fun rect(x,y,w,h:Int)
-       do
-               var image = once app.load_image("hitbox.png")
-               blit_scaled(image, x, y, w, h)
-       end
-end
-
-# Simple basic class for event
-class Event
-       # Is a drag event?
-       var drag = false
-       # screen x
-       var offset_x: Int
-       # screen y
-       var offset_y: Int
-       # entity x
-       var game_x = 0
-       # entity y
-       var game_y = 0
-       # key pressed
-       var char_code: String
-end
-
-redef class Game
-       # width of a tile, used for most width reference in the game
-       var bw = 48
-       # height a tile, used for most width reference in the game
-       var bh = 48
-       # x-coordinate of the board (padding)
-       var xpad = 24
-       # y-coordinate of the board (padding)
-       var ypad = 24
-
-       # Load tiles
-
-       # Basic tileset
-       var img = new TileSet(app.load_image("tiles2.png"),48,48)
-
-       # Sub tileset (for marks or other)
-       var img2 = new TileSet(app.load_image("tiles2.png"),24,24)
-
-       # background image
-       var back: Image = app.load_image("background.png")
-
-       # Logo image
-       var logo: Image = app.load_image("logo.png")
-
-       # Font
-       var font = new TileSetFont(app.load_image("deltaforce_font.png"), 16, 17, "ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789.:;!?\"'() -,/")
-
-       # DISPLAY *****************************************************************
-
-       # Is the game in editing mode
-       var editing = false
-
-       # The selected button, if any
-       var selected_button: nullable Button = null
-
-       # SOUND
-
-       # Is the music muted?
-       var music_muted: Bool = app.data_store["music_muted"] == true
-
-       # Is the sound effects muted?
-       var sfx_muted: Bool = app.data_store["sfx_muted"] == true
-
-       # The background music resource. */
-       var music = new Music("music.ogg")
-
-       # Click sound
-       var snd_click = new Sound("click.wav")
-
-       # Wining soulf
-       var snd_win = new Sound("level.wav")
-
-       # Shocked sound
-       var snd_duh = new Sound("duh.wav")
-
-       # metal sound
-       var snd_bing = new Sound("bing.wav")
-
-       # transition sound
-       var snd_whip = new Sound("whip.wav")
-
-
-       # INPUT ******************************************************************
-
-       # Current grid edited (if any).
-       var grid_edit: nullable Grid = null
-
-       # Sequence of current entities
-       var entities = new Array[Entity]
-
-       # The current statusbar
-       var statusbar = new StatusBar(self)
-
-       # The grid board
-       var board = new Board(self)
-
-       # The current score board
-       var score = new Score(self)
-
-       # Monster button game elements.
-       var buttons = new Array[MonsterButton]
-
-       # MetalButton
-       var button_wall = new MetalButton(self)
-
-       # EraseButton
-       var button_erase = new EraseButton(self)
-
-       # ResizeButton
-       var button_size = new ResizeButton(self)
-
-       # Cheat mode enabled?
-       var cheated = false
-
-       init
-       do
-               init_buttons
-               entities.clear
-               title
-
-               if not music_muted then music.play
-       end
-
-       # fill `buttons`
-       fun init_buttons
-       do
-               for i in [0..9] do
-                       buttons[i] = new MonsterButton(self, i)
-               end
-       end
-
-       # Play a level in player mode.
-       fun play(l: Level)
-       do
-               save # save the previous level grid
-               level = l
-               grid.load(level.saved_str or else level.str)
-               init_play_menu(false)
-               if level.status != "" then
-                       statusbar.main_txt = level.status
-               else
-                       statusbar.main_txt = level.fullname
-               end
-               var t = new NextLevelButton(self)
-               entities.push(t)
-               run
-       end
-
-       # Play the next level.
-       fun play_next
-       do
-               play(levels[level.number+1])
-       end
-
-
-       # Helper function to initialize all states.
-       # Set up buttons for music and SFX.
-       fun init_game
-       do
-               editing = false
-               solver = null
-               entities.clear
-               entities.push(new MusicButton(self))
-               entities.push(new SFXButton(self))
-               entities.push(new MenuButton(self))
-               statusbar.clear
-               entities.push(statusbar)
-       end
-
-       # Helper function to initialize monster menu entries.
-       fun init_play_menu(full: Bool)
-       do
-               init_game
-               entities.push(board)
-               entities.push(new ResetButton(self))
-               entities.push(button_erase)
-               # Push monster buttons and determine the selected one
-               var sel: nullable Button = null
-               for i in [1..monsters] do
-                       if grid.monsters[i].number > 0 or full then
-                               if selected_button == buttons[i] or sel == null then
-                                       sel = buttons[i]
-                               end
-                               entities.push(buttons[i])
-                       end
-               end
-               selected_button = sel
-               entities.push(score)
-       end
-
-       # Play a arbitrary grid in try mode.
-       fun play_grid(g: Grid)
-       do
-               grid = g
-               init_play_menu(false)
-               statusbar.main_txt = "User level"
-               if grid_edit != null then
-                       entities.push(new EditButton(self))
-               end
-               entities.push(new WonButton(self))
-               run
-       end
-
-       # Launch the editor starting with a grid.
-       fun edit_grid(g: Grid)
-       do
-               grid = g
-               init_play_menu(true)
-               editing = true
-               statusbar.main_txt = "Level editor"
-               if level != null then statusbar.main_txt += ": level "+level.name
-               entities.push(button_wall)
-               entities.push(button_size)
-               entities.push(new TestButton(self))
-               entities.push(new SaveButton(self))
-               entities.push(new LoadButton(self))
-               run
-       end
-
-       # Launch the title screen
-       fun title
-       do
-               init_menu
-               entities.push(new Splash(self))
-               run
-       end
-
-       # Helper function to initialize the menu (and tile) screen
-       fun init_menu
-       do
-               save # save the previous level grid
-               init_game
-               level = null
-               var i = levels.first
-               for l in levels do
-                       i = l
-                       if l.get_state == l.l_open then break
-               end
-               entities.push(new StartButton(self, i))
-       end
-
-       # Launch the menu.
-       fun menu
-       do
-               init_menu
-               var t
-               t = new TextButton(self,"LEVEL SELECT", 120, ypad, "white", null, null)
-               entities.push(t)
-               for i in [0..levels.length[ do
-                       var b = new LevelButton(levels[i])
-                       entities.push(b)
-               end
-               t = new Achievement(self, 0, "Training")
-               entities.push(t)
-               t = new Achievement(self, 1, "Gold")
-               entities.push(t)
-               t = new Achievement(self, 2, "Editor")
-               entities.push(t)
-               t = new Achievement(self, 3, "Challenge")
-               entities.push(t)
-               t = new Achievement(self, 4, "Congraturation")
-               entities.push(t)
-               t = new Achievement(self, 5, "Awesome")
-               entities.push(t)
-               run
-       end
-
-       # Last function called when the lauch state is ready
-       fun run do
-               dirty_all = true
-       end
-
-       # Should all entity redrawn?
-       var dirty_all = true
-
-       # Draw all game entities.
-       fun draw(display: Display) do
-               dirty_all = true
-               if dirty_all then display.blit(back, 0, 0)
-               for g in entities do
-                       if g.dirty or dirty_all then
-                               g.dirty = false
-                               #if g.x2-g.x>0 and g.y2-g.y>0 then ctx.drawImage(back, g.x, g.y, g.x2-g.x, g.y2-g.y, g.x, g.y, g.x2-g.x, g.y2-g.y)
-                               g.draw(display)
-                               #ctx.rect(g.x, g.y, g.width, g.height)
-                       end
-               end
-               var ev = lastev
-               if ev isa Event then
-                       # Cursor, kept for debugging
-                       #display.blit(img[4,0],ev.offset_x-42,ev.offset_y-6)
-               end
-               dirty_all = false
-       end
-
-       # Update all game entities.
-       fun step do
-               if solver != null and not solver_pause then
-                       if solver.run_steps(solver_steps) != null then solver_pause = true
-                       print solver.to_s
-                       if not solver.is_running then solver = null
-               end
-               for g in entities do
-                       g.update
-               end
-       end
-
-       # Return the game entity located at a mouse event.
-       fun get_game_element(ev: Event): nullable Entity
-       do
-               var x = ev.offset_x
-               var y = ev.offset_y
-               for g in entities do
-                       if x>=g.x and x<g.x2 and y>g.y and y<g.y2 then
-                               ev.game_x = x-g.x
-                               ev.game_y = y-g.y
-                               #print "get {g}"
-                               return g
-                       end
-               end
-               return null
-       end
-
-       # The game entlty the mouse went down on
-       var drag: nullable Entity = null
-
-       # Last mouse event. Used to dray the cursor
-       var lastev: nullable Event = null
-
-       # Callback when the mouse is pressed
-       fun onMouseDown(ev: Event) do
-               lastev = ev
-               var g = get_game_element(ev)
-               if g != null then
-                       g.click(ev)
-                       g.dirty = true
-               end
-               drag = g
-       end
-
-       # Callback when the mouse is releassed
-       fun onMouseUp(ev: Event) do
-               drag = null
-       end
-
-       # Callback when the mouse if moved while pressed
-       fun onMouseMove(ev: Event) do
-               lastev = ev
-               var g = get_game_element(ev)
-               if g == null then
-                       statusbar.dirty = true
-                       statusbar.over_txt = null
-                       statusbar.over_what = null
-                       return
-               end
-               if statusbar.over_what != g then
-                       statusbar.dirty = true
-                       var go = g.over
-                       statusbar.over_txt = go
-                       statusbar.over_what = g
-                       g.enter(ev)
-                       if go != null then print "***OVER*** {go}"
-               end
-               # We moved abode a element that accepts drag event
-               if drag == g and g.draggable then
-                       # print "DRAG {g}"
-                       ev.drag = true
-                       g.click(ev)
-                       g.dirty = true
-               end
-       end
-
-       # Current solver, if any
-       var solver: nullable BacktrackSolver[Grid, Action] = null
-
-       # Is the solver paused?
-       var solver_pause = false
-
-       # Number of solver steps played in a single game `update`
-       var solver_steps = 20000
-
-       # Callback when a keyboard event is recieved
-       fun onKeyDown(ev: Event) do
-               var kc = ev.char_code
-               if kc == "e" then
-                       set_tmp("RUN EDITOR")
-                       grid_edit = grid.copy(true)
-                       edit_grid(grid)
-               else if kc == "c" then
-                       if cheated then
-                               set_tmp("CHEAT: OFF")
-                               snd_duh.play
-                               cheated = false
-                       else
-                               set_tmp("CHEAT: ON")
-                               snd_win.play
-                               cheated = true
-                       end
-               else if kc == "s" then
-                       if solver == null then
-                               solver = (new FriendzProblem(grid)).solve
-                               solver_pause = false
-                       else
-                               solver_pause = not solver_pause
-                       end
-                       if solver_pause then
-                               set_tmp("SOLVER: PAUSED")
-                       else
-                               set_tmp("SOLVER: ON")
-                       end
-                       #solver.step
-               else if kc == "d" then
-                       if solver == null then
-                               solver = (new FriendzProblem(grid)).solve
-                               solver_pause = true
-                               set_tmp("SOLVER: ON")
-                       else
-                               solver_pause = true
-                               solver.run_steps(1)
-                               set_tmp("SOLVER: ONE STEP")
-                       end
-               else if kc == "+" then
-                       solver_steps += 100
-                       set_tmp("SOLVER: {solver_steps} STEPS")
-               else if kc == "-" then
-                       solver_steps -= 100
-                       set_tmp("SOLVER: {solver_steps} STEPS")
-               else for g in entities do
-                       if kc == g.shortcut then
-                               g.click(ev)
-                               g.dirty = true
-                       end
-               end
-       end
-
-       fun set_tmp(s: String)
-       do
-               statusbar.set_tmp(s, "cyan")
-       end
-
-       redef fun load_levels
-       do
-               super
-
-               for level in levels do
-                       var score = app.data_store["s{level.str}"]
-                       if score isa Int then
-                               level.score = score
-                       end
-                       var saved_str = app.data_store["g{level.str}"]
-                       if saved_str isa String then
-                               print "LOAD {level.name}: {saved_str}"
-                               level.saved_str = saved_str
-                       end
-               end
-       end
-
-       fun save
-       do
-               var l = level
-               if l != null then
-                       l.save
-               end
-       end
-end
-
-# The spash title image
-class Splash
-       super Entity
-       init(game: Game)
-       do
-               super(game,game.xpad,game.ypad,380,350)
-       end
-       redef fun draw(ctx)
-       do
-               ctx.blit(game.logo, game.xpad, game.ypad)
-       end
-       redef fun click(ev)
-       do
-               game.snd_whip.play
-               game.menu
-       end
-end
-
-class NextLevelButton
-       super TextButton
-       init(game: Game)
-       do
-               super(game, "NEXT LEVEL", 440, 24, "cyan", "Play next level", null)
-               enabled = false
-       end
-
-       redef fun update
-       do
-               var w = game.level.check_won(game.grid)
-               if self.enabled != w then
-                       self.dirty = true
-                       self.enabled = w
-                       if w then
-                               game.snd_win.play
-                               game.statusbar.set_tmp("Level solved!", "cyan")
-                       end
-               end
-       end
-
-       redef fun click(ev)
-       do
-               if not self.enabled then
-                       game.snd_duh.play
-                       var grid = game.grid
-                       var monsters = grid.monsters
-                       var angry = new Array[Tile]
-                       var lonely = new Array[Tile]
-                       var edges = new Array[Tile]
-                       for i in [0..grid.width[ do
-                               for j in [0..grid.height[ do
-                                       var t = grid.grid[i][j]
-                                       if t.kind == 0 then continue
-                                       if t.nexts == 0 then lonely.push(t)
-                                       if t.nexts == 1 and not monsters[t.kind].chain then edges.push(t)
-                                       if t.nexts > 2 then angry.push(t)
-                               end
-                       end
-
-                       var l
-                       if angry.length>0 then
-                               l = angry
-                       else if lonely.length>0 then
-                               l = lonely
-                       else
-                               l = edges
-                       end
-                       for i in l do i.shocked=5
-
-                       if angry.length>0 then
-                               game.statusbar.set_tmp("Angry monsters!", "red")
-                       else if lonely.length>0 then
-                               game.statusbar.set_tmp("Lonely monsters!", "red")
-                       else if not grid.won then
-                               game.statusbar.set_tmp("Unconnected monsters!", "red")
-                       else
-                               game.statusbar.set_tmp("Not enough monsters!", "red")
-                       end
-                       return
-               end
-
-               game.snd_whip.play
-               game.play_next
-       end
-end
-
-class MusicButton
-       super TextButton
-       init(game: Game)
-       do
-               super(game, "MUSIC", 470, 412, "purple", "Mute the music", "Unmute the music")
-               toggled = game.music_muted
-       end
-       redef fun click2(ev)
-       do
-               game.music_muted = self.toggled
-               if game.music_muted then game.music.pause else game.music.play
-               app.data_store["music_muted"] = game.music_muted
-       end
-end
-
-class SFXButton
-       super TextButton
-       init(game: Game)
-       do
-               super(game, "SOUND FX", 470, 382, "purple", "Mute the sound effects", "Unmute the sound effects")
-               toggled = game.sfx_muted
-       end
-
-       redef fun click2(ev)
-       do
-               game.sfx_muted = self.toggled
-               if not game.sfx_muted then game.snd_whip.play # Because the automatic one was muted
-               app.data_store["sfx_muted"] = game.sfx_muted
-       end
-end
-
-class MenuButton
-       super TextButton
-       init(game: Game)
-       do
-               super(game, "MENU", 470, 442, "purple", "Exit to the main menu", null)
-               shortcut = "back"
-       end
-
-       redef fun click2(ev)
-       do
-               game.menu
-       end
-end
-
-class ResetButton
-       super TextButton
-       init(game: Game)
-       do
-               super(game,"RESET", 440, 61, "purple", "Clear the grid",null)
-       end
-
-       var count = 0
-
-       redef fun click2(ev)
-       do
-               self.count += 1
-               if self.count==1 then
-                       game.statusbar.set_tmp("Click again to reset","white")
-               else if self.count==2 then
-                       game.grid.reset(false)
-                       if game.editing then
-                               game.statusbar.set_tmp("Click again to clear all","white")
-                       end
-               else if game.editing then
-                       game.grid.reset(true)
-               end
-               game.dirty_all = true
-       end
-
-       redef fun enter2
-       do
-               self.count = 0
-       end
-end
-
-class EditButton
-       super TextButton
-       init(game: Game)
-       do
-               super(game,"EDIT", 540, 24, "purple", "Return to the editor",null)
-       end
-
-       redef fun click2(ev)
-       do
-               var ge = game.grid_edit
-               assert ge != null
-               game.edit_grid(ge)
-       end
-end
-
-class WonButton
-       super TextButton
-       init(game: Game)
-       do
-               super(game,"WON", 440, 24, "cyan", "", null)
-               enabled = false
-       end
-       redef fun click2(ev)
-       do
-               var ge = game.grid_edit
-               if not self.enabled then
-                       game.statusbar.set_tmp("Solve the level first!", "red")
-               else if ge != null then
-                       game.snd_whip.play
-                       game.edit_grid(ge)
-               else
-                       game.snd_whip.play
-                       game.menu
-               end
-       end
-
-       redef fun update
-       do
-               var w = game.grid.won
-               if self.enabled != w then
-                       self.dirty = true
-                       self.enabled = w
-                       if w then
-                               game.snd_win.play
-                               game.statusbar.set_tmp("Level solved!", "cyan")
-                       end
-               end
-       end
-end
-
-class TestButton
-       super TextButton
-       init(game: Game)
-       do
-               super(game,"TEST", 440, 24, "cyan", "Try to play the level", null)
-       end
-
-       redef fun click2(ev)
-       do
-               game.grid_edit = game.grid
-               game.play_grid(game.grid.copy(false))
-       end
-end
-
-class SaveButton
-       super TextButton
-       init(game: Game)
-       do
-               super(game, "SAVE", 540, 24, "purple", "Save the level", null)
-       end
-
-       redef fun click2(ev)
-       do
-               var res = game.grid.save
-               print "SAVE: {res}"
-       end
-end
-
-class LoadButton
-       super TextButton
-       init(game: Game)
-       do
-               super(game,"LOAD", 540, 61, "purple", "Load an user level", null)
-       end
-
-       redef fun click2(ev)
-       do
-               var grid2 = new Grid(game.gw,game.gh,game.monsters)
-               if grid2.load("") then
-                       game.grid = grid2
-               end
-               game.dirty_all = true
-       end
-end
-
-class ContinueButton
-       super TextButton
-       init(game: Game)
-       do
-               super(game,"CONTINUE", 440, 24, "purple", "Continue playing", null)
-       end
-
-       redef fun click2(ev)
-       do
-               game.play_next
-       end
-end
-
-class StartButton
-       super TextButton
-       var level: Level
-       init(game: Game, level: Level)
-       do
-               self.level = level
-               if level.number == 0 then
-                       super(game,"START", 440, 24, "purple", "Play the first level", null)
-               else
-                       super(game,"CONTINUE", 440, 24, "purple", "Continue from level "+level.name, null)
-               end
-       end
-
-       redef fun click2(ev)
-       do
-               game.play(level)
-       end
-end
-
-#
-
-redef class App
-
-       # The game
-       var game: Game
-
-       # Wanted screen width
-       var screen_width = 640
-
-       # Wanted screen height
-       var screen_height = 480
-
-       redef fun on_create
-       do
-               super
-               game = new Game
-               game.font.hspace = -2
-               if args.length > 0 then
-                       game.play(game.levels[args.first.to_i])
-               end
-               # img loading?
-       end
-
-       redef fun on_pause
-       do
-               super
-               game.save
-       end
-
-       redef fun frame_core(display)
-       do
-               game.step
-               game.draw(display)
-       end
-
-       redef fun input(input_event)
-       do
-               #print input_event
-               if input_event isa QuitEvent then # close window button
-                       quit = true # orders system to quit
-               else if input_event isa PointerEvent then
-                       var ev = new Event(input_event.x.to_i, input_event.y.to_i, "")
-                       if input_event.is_motion then
-                               game.onMouseMove(ev)
-                       else if input_event.pressed then
-                               game.onMouseDown(ev)
-                       else
-                               game.onMouseUp(ev)
-                       end
-                       return true
-               else if input_event isa KeyEvent and input_event.is_down then
-                       var ev = new Event(0, 0, input_event.key_name)
-                       game.onKeyDown(ev)
-                       return true
-               end
-
-               return false
-       end
-end
-
-redef class PointerEvent
-       fun is_motion: Bool do return false
-end
-
-redef class KeyEvent
-       fun key_name: String
-       do
-               var c = to_c
-               if c != null then return c.to_s
-               return "unknown"
-       end
-end
-
-redef class Level
-       # Save the score and grid of the level
-       fun save
-       do
-               app.data_store["s{str}"] = if score > 0 then score else null
-               var saved = game.grid.save
-               saved_str = saved
-               app.data_store["g{str}"] = saved
-               print "SAVE: {name}: {saved}"
-       end
-
-       # The saved player grid (to continue games)
-       var saved_str: nullable String = null
-end
diff --git a/contrib/friendz/src/friendz_android.nit b/contrib/friendz/src/friendz_android.nit
deleted file mode 100644 (file)
index 4f40ca7..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-# Monsterz - Chains of Friends
-#
-# 2010-2014 (c) Jean Privat <jean@pryen.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the Do What The Fuck You Want To
-# Public License, Version 2, as published by Sam Hocevar. See
-# http://sam.zoy.org/projects/COPYING.WTFPL for more details.
-
-# android version of the game
-module friendz_android
-
-import friendz
-import mnit::android
-import android::landscape
-
-redef class App
-       # Zoom applied for the device display from the game logic coordinates
-       var zoom = 1.0
-
-       redef fun on_create
-       do
-               super
-               var h = screen_height
-               display.set_viewport(0,0,h*display.width/display.height,h)
-
-               zoom = display.height.to_f / h.to_f
-               default_mediaplayer.looping = true
-       end
-
-       redef fun input(input_event)
-       do
-               if input_event isa KeyEvent then
-                       return false
-               else
-                       return super
-               end
-       end
-end
-
-redef class AndroidPointerEvent
-       redef fun is_motion do return is_move
-
-       redef fun x do return super / app.zoom
-       redef fun y do return super / app.zoom
-end
diff --git a/contrib/friendz/src/friendz_linux.nit b/contrib/friendz/src/friendz_linux.nit
deleted file mode 100644 (file)
index e8ada20..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-# Monsterz - Chains of Friends
-#
-# 2010-2014 (c) Jean Privat <jean@pryen.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the Do What The Fuck You Want To
-# Public License, Version 2, as published by Sam Hocevar. See
-# http://sam.zoy.org/projects/COPYING.WTFPL for more details.
-
-# Linux (SDL) version of the game
-module friendz_linux
-
-import friendz
-import mnit::linux
-
-redef class Display
-       redef fun wanted_width do return app.screen_width
-       redef fun wanted_height do return app.screen_height
-end
-
-redef class SDLDisplay
-       redef fun enable_mouse_motion_events do return true
-end
-
-redef class SDLMouseMotionEvent
-       redef fun is_motion do return true
-end
diff --git a/contrib/friendz/src/grid.nit b/contrib/friendz/src/grid.nit
deleted file mode 100644 (file)
index 6f1c883..0000000
+++ /dev/null
@@ -1,571 +0,0 @@
-# Monsterz - Chains of Friends
-#
-# 2010-2014 (c) Jean Privat <jean@pryen.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the Do What The Fuck You Want To
-# Public License, Version 2, as published by Sam Hocevar. See
-# http://sam.zoy.org/projects/COPYING.WTFPL for more details.
-
-# Game login on the grid of monsters
-module grid
-
-# Grid of monsters.
-class Grid
-       # width of the current grid
-       var width: Int is noinit
-
-       # maximum width of the grid
-       var max_width: Int
-
-       # height of the current grid
-       var height: Int is noinit
-
-       # maximum height of the grid
-       var max_height: Int
-
-       # nm is the number of monster + 1 for the empty tile
-       var nb_monsters: Int
-
-       # the data grid
-       private var grid = new Array[Array[Tile]]
-
-       init do clear
-
-       # Reinitialize the grid with new empty tiles and monsters info
-       fun clear
-       do
-               self.number = 0
-               self.error = 0
-               self.won = false
-               for i in [0..max_width[ do
-                       self.grid[i] = new Array[Tile]
-                       for j in [0..max_height[ do
-                               var t = new Tile(self, i, j)
-                               self.grid[i][j] = t
-                       end
-               end
-               self.monsters = new Array[MonsterInfo]
-               for i in [0..nb_monsters] do
-                       self.monsters[i] = new MonsterInfo
-               end
-               self.resize(max_width,max_height)
-       end
-
-       # Clear all monsters
-       # if `fixed` is false, fixed monsters remains
-       fun reset(fixed: Bool): Bool
-       do
-               var r = false
-               for i in [0..width[ do
-                       for j in [0..height[ do
-                               var t = self.grid[i][j]
-                               if fixed then t.fixed = false
-                               if not t.fixed and t.kind>0 then
-                                       t.update(0)
-                                       r = true
-                               end
-                       end
-               end
-               return r
-       end
-
-       # Total number of monsters in the grid
-       var number = 0
-
-       # Number of monsters alone or with >=3 next
-       var error = 0
-
-       # information about each kind of monsters
-       var monsters = new Array[MonsterInfo]
-
-       # Last result of win.
-       var won = false
-
-       # Check that the monster of `kind` form a complete chain.
-       # if not null, `t` is used as a starting tile to check the chain
-       fun check_chain(kind: Int, t: nullable Tile): Bool
-       do
-               var m = monsters[kind]
-               if m.angry > 0 or m.lonely > 0 or m.single > 2 then
-                       # easy case for no chain
-                       # print "easy {kind} chain: false"
-                       m.chain = false
-                       return false
-               else
-                       if t == null then
-                               # Search for a starting
-                               for x in [0..width[ do for y in [0..height[ do
-                                       var t2 = get(x,y)
-                                       if t2 == null or t2.kind != kind then continue
-                                       t = t2
-                                       break label found
-                               end label found
-                               if t == null then
-                                       assert m.number == 0
-                                       m.chain = true
-                                       return m.chain
-                               end
-                               # print "get neighbor {t}"
-                       end
-                       assert t.kind == kind
-                       var c = count_chain(t, 1000.rand)
-                       # print "old {kind} chain? {c} / {m.number}"
-                       m.chain = c == m.number
-                       return m.chain
-               end
-       end
-
-       # The total number of monsters connected to the chain of `t`
-       # `mark` is a uniq number used to mark tiles
-       fun count_chain(t: Tile, mark: Int): Int
-       do
-               t.chain_mark = mark
-               var res = 1
-               for i in [-1..1] do
-                       for j in [-1..1] do
-                               if (i==0 and j==0) or (i!=0 and j!=0) then continue
-                               var t2 = get(t.x+i,t.y+j)
-                               if t2 == null then continue
-                               if t2.chain_mark == mark or t2.kind != t.kind then continue
-                               res += count_chain(t2, mark)
-                       end
-               end
-               return res
-       end
-
-       # Resize the grid. Do not touch the content.
-       fun resize(w,h: Int)
-       do
-               self.width = w
-               self.height = h
-       end
-
-       # Try to get the tila at `x`,`y`.
-       # Returns null if the position is out of bound.
-       fun get(x,y: Int): nullable Tile
-       do
-               if x<0 or x>=self.width or y<0 or y>=self.height then return null
-               return self.grid[x][y]
-       end
-
-
-       var fixed_shaped = """[
-       [{x:1,y:0},{x:2,y:0},{x:1,y:1},{x:2,y:1}],
-       [{x:0,y:0},{x:0,y:1},{x:0,y:2}],
-       [{x:1,y:2},{x:2,y:2},{x:3,y:2}],
-       [{x:4,y:1},{x:4,y:2}],
-       [{x:3,y:0},{x:4,y:0}],
-       [{x:3,y:1}]
-       ]"""
-
-       # Set shapes for the fixed blocks.
-       fun metalize
-       do
-               for i in [0..width[ do
-                       for j in [0..height[ do
-                               var t = self.grid[i][j]
-                               if t.fixed then t.shape = null
-                       end
-               end
-               for shape in fixed_shaped.split(",") do
-                       for i in [0..width[ do
-                               for j in [0..height[ do
-                                       var ts = new Array[Tile]
-                                       for l in [0..shape.length[ do
-                                               #var t = self.get(i+shape[l].x-shape[0].x,j+shape[l].y-shape[0].y)
-                                               var t = self.get(i,j)
-                                               if t != null and t.fixed and t.shape == null then ts.push(t)
-                                       end
-                                       if ts.length == shape.length then
-                                               for l in [0..shape.length[ do
-                                                       ts[l].shape = shape[l]
-                                               end
-                                       end
-                               end
-                       end
-               end
-       end
-
-       # Return the serialization of the fixed tiles. */
-       fun save: String
-       do
-               var res = ""
-               var str = ".abcdefghi#ABCDEFGHI"
-               for y in [0..height[ do
-                       var rle = 0
-                       var last: nullable Int = null
-                       for x in [0..width[ do
-                               var t = self.grid[x][y]
-                               var tk = t.kind
-                               if t.fixed then tk += 10
-                               if tk == last and rle<9 then
-                                       rle += 1
-                               else
-                                       if last != null then
-                                               if rle>1 then res += rle.to_s
-                                               res += str.chars[last].to_s
-                                       end
-                                       rle = 1
-                                       last = tk
-                               end
-                       end
-                       if last != null then
-                               if rle>1 then res += rle.to_s
-                               res += str.chars[last].to_s
-                       end
-                       res += "|"
-               end
-               return res
-       end
-
-       # Load a new grid from a seialization.
-       fun load(str: String): Bool
-       do
-               self.clear
-               var l = str.length
-               var x = 0
-               var y = 0
-               var mx = 1
-               var my = 1
-               var rle = 1
-               for i in [0..l[ do
-                       var z = rle
-                       while z > 0 do
-                               z -= 1
-                               rle = 1
-                               var c = str.chars[i]
-                               if c == '|' then
-                                       if x > mx then mx = x
-                                       x = 0
-                                       y += 1
-                               else if c == '.' then
-                                       x += 1
-                               else if c == '#' then
-                                       var t = self.get(x,y)
-                                       assert t != null
-                                       t.fixed = true
-                                       x += 1
-                               else if c >= 'A' and c <= 'I' then
-                                       var t = self.get(x,y)
-                                       assert t != null
-                                       t.update(c.code_point-'A'.code_point+1)
-                                       t.fixed = true
-                                       x += 1
-                               else if c >= 'a' and c <= 'i' then
-                                       var t = self.get(x,y)
-                                       assert t != null
-                                       t.update(c.code_point-'a'.code_point+1)
-                                       x += 1
-                               else if c >= '1' and c <= '9' then
-                                       rle = c.to_i
-                               else
-                                       abort
-                               end
-                       end
-               end
-               if x>0 then y += 1
-               if x > mx then mx = x
-               if y > my then my = y
-               if mx<3 or my<3 or mx>max_width or my>max_height then
-                       return false
-               end
-               self.resize(mx,my)
-               self.metalize
-               return true
-       end
-
-       # A ASCII version of the grid.
-       redef fun to_s: String
-       do
-               var ansicols = once ["37;1","31","36;1","32;1","35;1","33;1","33","34;1","31;1","37"]
-               var b = new FlatBuffer
-               b.append("{width}x{height}\n")
-               for j in [0..height[ do
-                       for i in [0..width[ do
-                               var t = grid[i][j]
-                               var k = t.kind
-                               var c = ' '
-                               if k == 0 then
-                                       if t.fixed then c = '#'
-                               else
-                                       b.add(0x1b.code_point)
-                                       b.add('[')
-                                       b.append ansicols[k]
-                                       c = (k + 'a'.code_point - 1).code_point
-                                       if t.fixed then c = c.to_upper
-                                       b.append("m")
-                               end
-                               b.add(c)
-                               if k != 0 then
-                                       b.add(0x1b.code_point)
-                                       b.append("[0m")
-
-                               end
-                       end
-                       b.append "|\n"
-               end
-               return b.to_s
-       end
-
-       # Return a copy of the current grid.
-       # if (!no_fixed) copy only the fixed tiles.
-       fun copy(no_fixed: Bool): Grid
-       do
-               var g = new Grid(self.max_width, self.max_height, self.nb_monsters)
-               g.resize(width, height)
-               for y in [0..height[ do
-                       for x in [0..width[ do
-                               var t = self.grid[x][y]
-                               if no_fixed or t.fixed then
-                                       var t2 = g.grid[x][y]
-                                       t2.update(t.kind)
-                                       t2.fixed = t.fixed
-                               end
-                       end
-               end
-               g.metalize
-               return g
-       end
-
-       # Internal check of the validity of tile and monster informations
-       fun check_grid
-       do
-               var m2 = new Array[MonsterInfo]
-               for m in [0..nb_monsters] do
-                       m2[m] = new MonsterInfo
-               end
-               for x in [0..width[ do
-                       for y in [0..height[ do
-                               var n = 0
-                               var f = 0
-                               var t = get(x,y)
-                               assert t != null
-                               assert t.x == x
-                               assert t.y == y
-                               var k = t.kind
-                               if k == 0 then continue
-
-                               for i in [-1..1] do
-                                       for j in [-1..1] do
-                                               if i == j or (i != 0 and j != 0) then continue
-                                               var t2 = get(x+i, y+j)
-                                               if t2 == null then continue
-                                               if t2.kind == k then
-                                                       n += 1
-                                               else if t2.kind == 0 and not t2.fixed then
-                                                       f += 1
-                                               end
-                                       end
-                               end
-                               assert n == t.nexts else
-                                       print self
-                                       print "{t} says {t.nexts} nexts, found {n}"
-                               end
-                               #assert f == t.frees else
-
-                               var m = m2[k]
-                               m.number += 1
-                               if n == 0 then
-                                       m.lonely += 1
-                               else if n == 1 then
-                                       m.single += 1
-                               else if n > 2 then
-                                       m.angry += 1
-                               end
-                       end
-               end
-               for m in [1..nb_monsters] do
-                       assert m2[m].number == monsters[m].number
-                       assert m2[m].lonely == monsters[m].lonely
-                       assert m2[m].single == monsters[m].single
-                       assert m2[m].angry == monsters[m].angry
-               end
-       end
-end
-
-# Information about each kind of monsters
-class MonsterInfo
-       # number of monsters of this kind on board
-       var number = 0
-       # number of monsters of this kind to place, -1 if no limit
-       var remains: Int = -1
-       # number of monsters that have exactly 1 next
-       var single = 0
-       # number of monsters that have exactly 0 next
-       var lonely = 0
-       # number of monsters that have 3 or more next
-       var angry = 0
-       # Are all monsters form a wining chain?
-       var chain = false
-end
-
-# A localized tile of a grid, can contain a monster and be fixed.
-class Tile
-       # The grid of the tile.
-       var grid: Grid
-
-       # The x coordinate in the grid (starting from 0).
-       var x: Int
-
-       # The y coordinate in the grid (starting from 0).
-       var y: Int
-
-       # The kind of monster in the grid. 0 means empty.
-       var kind = 0
-
-       # blink time to live (0 means no blinking).
-       var blink = 0
-
-       # shocked time to live (0 means not shocked)
-       var shocked = 0
-
-       # number of neighbors of the same kind.
-       var nexts = 0
-
-       # number of free non fixed next tiles
-       var frees = 0
-
-       # is the tile editable (metal block)
-       var fixed = false
-
-       redef fun to_s
-       do
-               var s
-               if fixed then
-                       s = "#ABCDEFGHI"
-               else
-                       s = ".abcdefghi"
-               end
-               return "\{{x},{y}:{s.chars[kind]}\}"
-       end
-
-       # Shape for metal block
-       var shape: nullable Object = null
-
-       # Flag for `count_chain` computation.
-       private var chain_mark = 0
-
-       # Set a new kind of monster on tile
-       # Return true is the move made the grid unsolvable (bad move)
-       fun update(nkind: Int): Bool
-       do
-               var t = self
-               var g = self.grid
-               var res = false
-               var okind = t.kind
-               if okind == nkind then return false
-
-
-               # First, remove it and update info.
-               if okind > 0 then
-                       var m = g.monsters[okind]
-                       var n = t.nexts
-                       if n > 2 then
-                               g.error -= 1
-                               m.angry -= 1
-                       else if n == 1 then
-                               m.single -= 1
-                       else if n == 0 then
-                               g.error -= 1
-                               m.lonely -= 1
-                       end
-                       m.number -= 1
-                       g.number -= 1
-               end
-               t.nexts = 0
-               t.blink = 5
-               t.frees = 0
-
-               var a_neigbor: nullable Tile = null
-               # update neighbors
-               for i in [-1..1] do
-                       for j in [-1..1] do
-                               if (i==0 and j==0) or (i!=0 and j!=0) then continue
-                               var t2 = g.get(t.x+i,t.y+j)
-                               if t2 == null then continue
-                               if t2.kind == 0 then
-                                       if not t2.fixed then t.frees += 1
-                                       continue
-                               end
-                               var m = g.monsters[t2.kind]
-
-                               if t2.kind == okind then
-                                       if a_neigbor == null then a_neigbor = t2
-                                       # same than old, thus dec neighbors
-                                       t2.nexts -=1
-                                       var n = t2.nexts
-                                       if n == 2 then
-                                               g.error -= 1
-                                               m.angry -= 1
-                                       else if n == 1 then
-                                               m.single += 1
-                                               g.error += 1
-                                       else if n == 0 then
-                                               m.single -= 1
-                                               m.lonely += 1
-                                       end
-                                       # print "+ {t} one less next: {t2} ; +({i}x{j})"
-                               end
-
-                               if t2.kind == nkind then
-                                       # Same than new, thus inc neighbors
-                                       t2.nexts += 1
-                                       t.nexts += 1
-                                       var n = t2.nexts
-                                       if n > 3 then
-                                               res = true
-                                       else if n == 3 then
-                                               g.error += 1
-                                               m.angry += 1
-                                               res = true
-                                       else if n == 2 then
-                                               m.single -= 1
-                                               g.error -= 1
-                                       else if n == 1 then
-                                               m.single += 1
-                                               m.lonely -= 1
-                                       end
-                                       # print "+ {t} one more next: {t2}"
-                               end
-                       end
-               end
-
-               # Add and update neighbors info
-               t.kind = nkind
-               if nkind > 0 then
-                       var m = g.monsters[nkind]
-                       var n = t.nexts
-                       if n > 2 then
-                               g.error += 1
-                               m.angry += 1
-                       else if n == 1 then
-                               m.single += 1
-                               g.error += 1
-                       else if n == 0 then
-                               g.error += 1
-                               m.lonely += 1
-                       end
-                       m.number+=1
-                       g.number+=1
-
-                       g.check_chain(nkind, t)
-               end
-
-               # check if the old kind broke, or create a chain
-               if okind > 0 then
-                       g.check_chain(okind, a_neigbor)
-               end
-
-               # update win status
-               g.won = true
-               for m in g.monsters do
-                       if m.number > 0 and not m.chain then g.won = false
-               end
-
-               #grid.check_grid
-
-               return res
-       end
-end
-
diff --git a/contrib/friendz/src/level.nit b/contrib/friendz/src/level.nit
deleted file mode 100644 (file)
index b09f1f2..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-# Monsterz - Chains of Friends
-#
-# 2010-2014 (c) Jean Privat <jean@pryen.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the Do What The Fuck You Want To
-# Public License, Version 2, as published by Sam Hocevar. See
-# http://sam.zoy.org/projects/COPYING.WTFPL for more details.
-
-# Level managment
-module level
-
-import grid
-
-# A level in the game
-class Level
-       # The associated game
-       var game: Game
-
-       init(game: Game, i: Int, code: String)
-       do
-               self.game = game
-               var ls = code.split(";")
-               self.number = i
-               self.str = ls[0]
-               self.gold = ls[1].to_i
-               if ls.length >= 3 then
-                       self.status = ls[2]
-               end
-               self.is_tutorial = i<=4
-               self.is_challenge = i>=25
-               if self.is_tutorial then
-                       self.name = "T{i+1}"
-                       self.fullname = "Tutorial level {i+1}"
-               else if not self.is_challenge then
-                       self.name = (i-4).to_s
-                       self.fullname = "Level {i-4}"
-               else
-                       self.name = "C{i-24}"
-                       self.fullname = "Challenge level {i-24}"
-               end
-       end
-
-       # number the level (0 for first)
-       var number: Int
-
-       # initial grid position
-       var str: String
-
-       # top score to get gold
-       var gold: Int
-
-       # Help message if any
-       var status: String = ""
-
-       # Is the level a tutorial level?
-       var is_tutorial: Bool
-
-       # Is the level a challenge level?
-       var is_challenge: Bool
-
-       # The short name of the level (eg. "T1")
-       var name: String
-
-       # The long name of the level (eg. "Tutorial level 1")
-       var fullname: String
-
-       # The player best wining score.
-       # 0 it not yet won
-       var score = 0
-
-       var l_disabled = 1
-       var l_open = 2
-       var l_won = 3
-       var l_gold = 4
-
-       fun get_state: Int
-       do
-               if self.score == 0 then
-                       if self.number == 0 or game.levels[self.number-1].score > 0 then return l_open
-                       if self.number == 25 and game.levels[19].score > 0 then return l_open else return l_disabled
-               else if self.score < self.gold or not game.levels[9].score > 0 then
-                       return l_won
-               else return l_gold
-       end
-
-       # Returns true if g is a wining condition for the level.
-       fun check_won(g: Grid): Bool
-       do
-               var w = g.won and (not self.is_challenge or g.number >= self.gold)
-               if not w then return false
-               if g.number > self.score then
-                       self.score = g.number
-               end
-               return true
-       end
-end
-
-# main game object
-class Game
-       # Game version
-       var version = "1.99"
-
-       # Names of kind of monsters @constant
-       var colors: Array[nullable String] = [null, "Red", "Cyan", "Green", "Purple", "Yellow", "Orange", "Blue", "Pink", "White"]
-
-       # max grid width
-       var gw = 16
-
-       # max grid height
-       var gh = 16
-
-       # Number of monster kinds (+1 for empty) @constant
-       var monsters = 9
-
-       # The grid to play on
-       var grid = new Grid(gw, gh, monsters)
-
-       # LEVELS ******************************************************************
-
-       # Raw level description
-       var levels_code: Array[String] = [
-       ".3#|A2.A|3#.|;6;Connect two monsters",
-       ".#.|A.#|#.A|;5;Diagonals do not count",
-       "2.A|A#.|2.A|;8;Connect all monsters",
-       "3A.|3.A|2.A.|;10;Only 1 or 2 neighbors",
-       "2.A.|.B.B|2.A.|;12;Build two chains",
-
-       "A.A#|4.|#.#.|A3.|;11",
-       "A2.#A|5.|2.A2.|4.#|4.A|;17",
-       "A2.B2.|.B2.A.|6.|.AB2.B|6.|6.|;36",
-       "A5.|B5.|#.A3.|6.|2.A.B.|.A4.|;26",
-       "8.|BA2.B.A.|2.C.C.B.|6.#.|;29",
-
-       ".B3.B|6.|.#3.#|.C3.B|.#4.|6.|.C3.C|;30",
-       ".A.#4.|.C3.A.E|.A6.|6.C.|8.|2.6#|6.E#|5.C2#|;54",
-       ".A5.A|.A.#3.A|2.#A.#.#|.#.#4.|2.A3.#.|8.|4.A2.A|2.A2.A.#|;37",
-       "AB3.C|2.AC2.|6.|.B.CB.|6.|;30",
-       "AC5#CA|2.#3.#2.|4.#4.|7.#.|5.#.#.|9.|2.G6.|6.2#.|9.|H#F#G#F#H|;72",
-
-       "AG3.C|2.AC2.|6.|.G2.G.|2.C3.|6.|;32",
-       "7.#2.|3.#.#4.|.#8.|7.D2.|2.#.3#3.|2.#3.2#FC|9..|2.2#3.FCD|9..|;71",
-       "2.#A4.|6.B.|.C6.|.A.A.AC.|#7.|5.B2.|8.|#A5.C|;56",
-       "9.3.|8.#3.|2.B.#3.BA2.|2.AC4.DC2.|2.EA8.|8.#3.|.2#3.#5.|7.#4.|2#3.#B5.|5.CD5.|.2#9.|3.E8.|;119",
-       "9.7.|.2#B8#E2#.|.E8.#3.#.|.#3.4#.#.#.#.|.#.#.#4.#.#.#.|.C.#3.2#.#.#.#.|.#.#.4#3.#.#.|.D8.3#.#.|.#.#.4#5.A.|.A5.#2.#.3#.|.3#.#.2#.#2.2#.|.D3.#4.2#2.#.|.#.3#.#.4#.#.|.#5.#6.#.|.3#C6#B3#.|9.7.|;130",
-
-       "8.|.#C2.C#.|.#E2.E#.|8.|8.|.B#2.#A.|.#C2.C#.|8.|8.|.BF2.FA.|.2#2.2#.|8.|8.|.2#2.2#.|.A#2.B#.|8.|;92",
-       ".A9..|D9.F.|7.CA3.|3.E8.|9.2.H|9.2.#|7.G4.|4.BG2.F3.|2.B6.E2.|9.G2.|.H8.C.|8.D3.|;140",
-       "2.F9..|2.C9..|9..C2.|8.AG3.|9.4.|4.2#5.F.|7.E4.#|3.A9.|.G.CF4.C.#.|9.2.E.|;125",
-       "9.HCB|.DH9.|.GC9.|9.3.|4.G7.|3.#8.|9.3.|3.B4.D3.|.G9..|8.#3.|2.C2.2#5.|9.3.|;135",
-       "9.6.A|6.C9.|2.A.B4.E3.#I.|9.I.#4.|9.7.|2.E3.C9.|7.B8.|5.G6.G3.|6.C6.G2.|9..H3.B.|.CH.#5.#2.C2.|4.H3.#3.H3.|.B3.F5.F4.|.D.D4.D5.D.|9.7.|6.C9.|;244",
-
-       "E6.|7.|.F.E.F.|.F.#.E.|.F.E.E.|7.|6.F|;48",
-       "3.2#3.|2.A2.A2.|.C4.C.|8.|3.2#3.|2.A2.A2.|.C4.C.|8.|;56",
-       "3.#3.A4.|5.#6.|3.#5.#2.|.#4.#4.#|4.#7.|#6.#4.|8.#3.|.#9..|.#3.#4.#.|3.2#3.#3.|;74",
-       "2.A7.|2.D7.|2.A4.A2.|2.G4.G2.|2.A4.D2.|2.D7.|2.A7.|2.G7.|2.D7.|2.G7.|;95",
-       "E9.6.|9.H4.#.|9.E2.#3.|9.F2.#2.#|9.3.H2.#|HEF9.3.#|9.7.|6.#9.|6.#2.H3.HEF|.6#2.E6.|9.F6.|5#9.2.|4.#9.#.|.F#3.7#.#.|9.5.#.|9.7.|;225"
-       ]
-
-       # The loaded levels
-       var levels = new Array[Level]
-
-       # Load levels
-       # used duting `init`
-       fun load_levels
-       do
-               # Transform level strings into level objects. */
-               for i in [0..levels_code.length[ do
-                       var l = new Level(self,i, levels_code[i])
-                       levels[i] = l
-               end
-       end
-
-       # The current played level (if any)
-       var level: nullable Level = null
-
-       init
-       do
-               load_levels
-       end
-end
-
diff --git a/contrib/friendz/src/solver.nit b/contrib/friendz/src/solver.nit
deleted file mode 100644 (file)
index 18a8ade..0000000
+++ /dev/null
@@ -1,176 +0,0 @@
-# Monsterz - Chains of Friends
-#
-# 2010-2014 (c) Jean Privat <jean@pryen.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the Do What The Fuck You Want To
-# Public License, Version 2, as published by Sam Hocevar. See
-# http://sam.zoy.org/projects/COPYING.WTFPL for more details.
-
-# Basic game solver
-module solver
-
-intrude import grid
-import ai::backtrack
-
-# The modelization of the friendzs problem.
-class FriendzProblem
-       super BacktrackProblem[Grid, Action]
-
-       redef var initial_state
-
-       redef fun actions(state, node)
-       do
-               var last_action = node.action
-               if state.won then return null
-               if last_action != null then
-                       var res = state.frees(last_action.tile)
-                       if not res.is_empty or last_action.tile.nexts != 2 then
-                               var a = new Array[Action]
-                               for t in res do a.add t.to_action(last_action.kind)
-                               return a
-                       end
-               end
-               return state.look_start
-       end
-
-       redef fun apply_action(state, action)
-       do
-               action.tile.update(action.kind)
-       end
-
-       redef fun backtrack(state, action)
-       do
-               action.tile.update(0)
-       end
-
-       redef fun is_goal(state)
-       do
-               return state.won
-       end
-end
-
-redef class Grid
-       # Return true if grid accepts kind at tile t.
-       # Accepts means that
-       # * the tile is playble (free and not fixed)
-       # * the new monster will not be angry
-       # * the new monster will not make neighbor angry
-       fun accepts(t: Tile, kind: Int): Bool
-       do
-               var grid = t.grid
-               if t.kind != 0 or t.fixed then return false
-               #if t.x<0 or t.x>=grid.width or t.y<0 or t.y>=grid.height then return false
-               var cpt = 0
-               for i in [-1..1] do
-                       for j in [-1..1] do
-                               if i==0 and j==0 or i!=0 and j!=0 then continue
-                               var x2 = t.x+i
-                               var y2 = t.y+j
-                               if x2<0 or x2>=grid.width or y2<0 or y2>=grid.height then continue
-                               var t2 = grid.grid[x2][y2]
-                               if t2.kind == kind then
-                                       if t2.nexts >= 2 then return false
-                                       cpt += 1
-                                       if cpt>=3 then return false
-                               end
-                       end
-               end
-               return true
-       end
-
-       # Return the list of accepting neighbors of t
-       # see `accepts`
-       fun frees(t: Tile): Array[Tile]
-       do
-               var grid = t.grid
-               var res = new Array[Tile]
-               for i in [-1..1] do
-                       for j in [-1..1] do
-                               if i==0 and j==0 or i!=0 and j!=0 then continue
-                               var x2 = t.x+i
-                               var y2 = t.y+j
-                               if x2<0 or x2>=grid.width or y2<0 or y2>=grid.height then continue
-                               var t2 = grid.grid[x2][y2]
-                               if accepts(t2, t.kind) then res.push(t2)
-                       end
-               end
-               return res
-       end
-
-       # Search free tiles next to lonely monsters
-       fun look_start: Array[Action]
-       do
-               var grid = self
-               var start = new Array[Tile]
-               var min = 1
-               var kind = 0
-
-               for x in [0..grid.width[ do
-                       for y in [0..grid.height[ do
-                               var t = grid.grid[x][y]
-                               var k = t.kind
-                               if k == 0 or grid.monsters[k].chain then continue
-                               var n = t.nexts
-
-                               if n > min then continue
-
-                               var fs = frees(t)
-                               var l = fs.length
-                               if l == 0 then continue
-
-                               if n == 0 then
-                                       if min == 1 or start.length > l then
-                                               start = fs
-                                               kind = k
-                                       end
-                               else if kind == 0 or kind == k then
-                                       start.add_all fs
-                                       kind = k
-                               end
-
-                               min = n
-                       end
-               end
-               var res = new Array[Action]
-               for t in start do
-                       res.add t.to_action(kind)
-               end
-               #print "-------------"
-               #print grid
-               #dump
-               #print "START: {tile} -> {start.join(",")}"
-               #print "-------------"
-               return res
-       end
-
-       # compute and print some metrics about the problem
-       fun size_problem
-       do
-               var grid = self
-               var free = 0
-               for x in [0..grid.width[ do
-                       for y in [0..grid.height[ do
-                               var t = grid.grid[x][y]
-                               if t.kind == 0 and not t.fixed then free += 1
-                       end
-               end
-               print "FREE: {free}"
-               var ms = 0
-               for m in grid.monsters do
-                       if m.number > 0 then ms += 1
-               end
-               print "KINDS: {ms}"
-               print "SIZE: {(ms+1).to_f.pow(free.to_f)}"
-       end
-end
-
-class Action
-       var tile: Tile
-       var kind: Int
-       redef fun to_s do return "{tile}->{kind}"
-end
-
-redef class Tile
-       fun to_action(kind_to_play: Int): Action do return new Action(self, kind_to_play)
-end
diff --git a/contrib/friendz/src/solver_cmd.nit b/contrib/friendz/src/solver_cmd.nit
deleted file mode 100644 (file)
index 5a28c8b..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-# Monsterz - Chains of Friends
-#
-# 2010-2014 (c) Jean Privat <jean@pryen.org>
-#
-# This program is free software; you can redistribute it and/or
-# modify it under the terms of the Do What The Fuck You Want To
-# Public License, Version 2, as published by Sam Hocevar. See
-# http://sam.zoy.org/projects/COPYING.WTFPL for more details.
-
-# Solver of levels on the command-line
-module solver_cmd
-
-import solver
-import level
-
-
-if args.is_empty then
-       print "Usage: solver_cmd levelnumber"
-       exit 0
-end
-var l = args.first.to_i
-var game = new Game
-var g = game.grid
-
-g.load(game.levels[l].str)
-g.size_problem
-
-var p = new FriendzProblem(g)
-var s = p.solve
-while s.is_running do
-       var r = s.run_steps(500000)
-       if r != null then
-               print "WON"
-               break
-       else if s.is_running then
-               print s
-               print g
-       end
-end
-print s
-printn g
index db40075..9ca428b 100644 (file)
@@ -2,13 +2,4 @@ all:
        mkdir -p bin
        nitc --dir bin src/svg_to_png_and_nit.nit src/svg_to_icons.nit
 
-check: test-tinks test-app
-
-test-app: bin/svg_to_png_and_nit
-       make -C tests/app
-
-test-tinks: bin/svg_to_png_and_nit
-       mkdir -p tests/tinks/images
-       bin/svg_to_png_and_nit --assets tests/tinks/ --src tests/tinks/ ../tinks/art/drawing.svg
-
 .PHONY: bin/svg_to_png_and_nit
index 62b9623..b279d0f 100644 (file)
@@ -40,9 +40,3 @@ It produces two files:
 4. Execute `bin/svg_to_png_and_nit drawing.svg`
 5. From your code, import the generated source file at `src/drawing.nit`.
 6. Use the class `DrawingImages` and its attributes.
-
-## Examples
-
-The minimal test in `tests/app/` shows the basic usage of this tool.
-
-The Dino example `../../../../examples/mnit_dino` also uses this tool and is a more complete and practical example.
index 7b7530b..f660a31 100644 (file)
@@ -92,71 +92,6 @@ abstract class ImageSetSrc
        var images: Array[Image]
 end
 
-# Nit module targeting the MNit framework
-class MnitImageSetSrc
-       super ImageSetSrc
-
-       redef fun rendering
-       do
-               # Known array of images
-               var arrays_of_images = new Array[String]
-
-               # Attributes of the generated class
-               var attributes = new Array[String]
-
-               # Statements for the generated `load_all` method
-               var load_exprs = new Array[String]
-
-               # Add images to Nit source file
-               for image in images do
-                       # Adapt coordinates to new top left and scale
-                       var coordinates = document.coordinates(image)
-
-                       var nit_name = image.name
-                       var last_char = nit_name.chars.last
-                       if last_char.to_s.is_numeric then
-                               # Array of images
-                               # TODO support more than 10 images in an array
-
-                               nit_name = nit_name.substring(0, nit_name.length-1)
-                               if not arrays_of_images.has(nit_name) then
-                                       # Create class attribute to store Array
-                                       arrays_of_images.add(nit_name)
-                                       attributes.add "\tvar {nit_name} = new Array[Image]\n"
-                               end
-                               load_exprs.add "\t\t{nit_name}.add(main_image.subimage({coordinates}))\n"
-                       else
-                               # Single image
-                               attributes.add "\tvar {nit_name}: Image is noinit\n"
-                               load_exprs.add "\t\t{nit_name} = main_image.subimage({coordinates})\n"
-                       end
-               end
-
-               add """
-# File generated by svg_to_png_and_nit, do not modify, redef instead
-
-import mnit::image_set
-
-class {{{document.nit_class_name}}}
-       super ImageSet
-
-       private var main_image: Image is noinit
-"""
-               add_all attributes
-               add """
-
-       redef fun load_all(app: App)
-       do
-               main_image = app.load_image(\"images/{{{document.drawing_name}}}.png\")
-"""
-               add_all load_exprs
-               add """
-       end
-end
-"""
-       end
-end
-
 # Nit module targeting the Gamnit framework
 #
 # Gamnit's `Texture` already manage the lazy loading, no need to do it here.
@@ -256,7 +191,7 @@ end
 var opt_out_src = new OptionString("Path to output source file (folder or file)", "--src", "-s")
 var opt_assets = new OptionString("Path to assert dir where to put PNG files", "--assets", "-a")
 var opt_scale = new OptionFloat("Apply scaling to exported images (default at 1.0)", 1.0, "--scale", "-x")
-var opt_gamnit = new OptionBool("Target the Gamnit framework (by default it targets Mnit)", "--gamnit", "-g")
+var opt_gamnit = new OptionBool("Target the Gamnit framework (the default, kept for compatibility)", "--gamnit", "-g")
 var opt_pow2 = new OptionBool("Round the image size to the next power of 2", "--pow2")
 var opt_help = new OptionBool("Print this help message", "--help", "-h")
 
@@ -398,12 +333,7 @@ for drawing in drawings do
        var document = new Document(drawing_name, scale, min_x, max_x, min_y, max_y)
 
        # Nit class
-       var nit_src: ImageSetSrc
-       if opt_gamnit.value then
-               nit_src = new GamnitImageSetSrc(document, images)
-       else
-               nit_src = new MnitImageSetSrc(document, images)
-       end
+       var nit_src = new GamnitImageSetSrc(document, images)
 
        if not src_path.file_extension == "nit" then
                src_path = src_path/drawing_name+".nit"
diff --git a/contrib/inkscape_tools/tests/app/Makefile b/contrib/inkscape_tools/tests/app/Makefile
deleted file mode 100644 (file)
index b42c5f4..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-all: images icons linux
-
-linux:
-       mkdir -p bin
-       ../../../../bin/nitc -o bin/s2pn src/s2pn_linux.nit
-
-android:
-       mkdir -p bin
-       ../../../../bin/nitc -o bin/s2pn.apk src/s2pn_android.nit
-
-images:
-       mkdir -p assets/images
-       ../../bin/svg_to_png_and_nit art/drawing.svg --assets assets --src src
-
-icons:
-       mkdir -p res1 res2 res3
-       #../../bin/svg_to_icons art/icon.svg --large --out res1
-       ../../bin/svg_to_icons art/drawing.svg --large --out res2 --id 0circle
-       #../../bin/svg_to_icons art/icon.svg --android --out res3
diff --git a/contrib/inkscape_tools/tests/app/art/drawing.svg b/contrib/inkscape_tools/tests/app/art/drawing.svg
deleted file mode 100644 (file)
index bbcb7a2..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="744.09448819"
-   height="1052.3622047"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="drawing.svg">
-  <defs
-     id="defs4" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.7"
-     inkscape:cx="121.41831"
-     inkscape:cy="436.77983"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1962"
-     inkscape:window-height="1240"
-     inkscape:window-x="2718"
-     inkscape:window-y="1285"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1">
-    <rect
-       style="fill:#0caf0c;fill-opacity:1;stroke:#3b3b3b;stroke-width:1.58335221;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       id="0square"
-       width="98.416649"
-       height="98.416649"
-       x="83.827385"
-       y="181.54672"
-       inkscape:label="#rect2985" />
-    <path
-       sodipodi:type="arc"
-       style="fill:#ff7900;fill-opacity:1;stroke:#3b3b3b;stroke-width:2.50000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       id="0circle"
-       sodipodi:cx="556.42859"
-       sodipodi:cy="290.21933"
-       sodipodi:rx="85"
-       sodipodi:ry="85"
-       d="m 641.42859,290.21933 a 85,85 0 1 1 -170,0 85,85 0 1 1 170,0 z"
-       transform="translate(-124.28571,-85.714286)"
-       inkscape:label="#path2987" />
-    <path
-       transform="translate(-405.71428,218.57143)"
-       d="m 641.42859,290.21933 a 85,85 0 1 1 -170,0 85,85 0 1 1 170,0 z"
-       sodipodi:ry="85"
-       sodipodi:rx="85"
-       sodipodi:cy="290.21933"
-       sodipodi:cx="556.42859"
-       id="0circles0"
-       style="fill:#0095ff;fill-opacity:1;stroke:#3b3b3b;stroke-width:2.50000000000000000;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       sodipodi:type="arc"
-       inkscape:label="#path2989" />
-    <path
-       sodipodi:type="arc"
-       style="fill:#0095ff;fill-opacity:1;stroke:#3b3b3b;stroke-width:3.33612041999999986;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;opacity:0.71604937999999996"
-       id="0circles1"
-       sodipodi:cx="556.42859"
-       sodipodi:cy="290.21933"
-       sodipodi:rx="85"
-       sodipodi:ry="85"
-       d="m 641.42859,290.21933 a 85,85 0 1 1 -170,0 85,85 0 1 1 170,0 z"
-       transform="matrix(0.74937343,0,0,0.74937343,-104.82992,291.3081)"
-       inkscape:label="#path2991" />
-    <path
-       transform="matrix(0.39849624,0,0,0.39849624,214.6939,393.13944)"
-       d="m 641.42859,290.21933 a 85,85 0 1 1 -170,0 85,85 0 1 1 170,0 z"
-       sodipodi:ry="85"
-       sodipodi:rx="85"
-       sodipodi:cy="290.21933"
-       sodipodi:cx="556.42859"
-       id="0circles2"
-       style="fill:#0095ff;fill-opacity:1;stroke:#3b3b3b;stroke-width:6.27358492000000023;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0;opacity:0.28806584000000002"
-       sodipodi:type="arc"
-       inkscape:label="#path2993" />
-    <g
-       id="g3767">
-      <text
-         sodipodi:linespacing="125%"
-         id="text3763"
-         y="912.59924"
-         x="83.155045"
-         style="font-size:54.63201141px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="912.59924"
-           x="83.155045"
-           id="tspan3765"
-           sodipodi:role="line">Not to extract</tspan></text>
-    </g>
-  </g>
-</svg>
diff --git a/contrib/inkscape_tools/tests/app/src/s2pn.nit b/contrib/inkscape_tools/tests/app/src/s2pn.nit
deleted file mode 100644 (file)
index c2162ff..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import drawing
-
-redef class App
-
-       var img_set: DrawingImages is noinit
-
-       init do super
-
-       redef fun on_create
-       do
-               super
-
-               img_set = new DrawingImages
-               img_set.load_all(self)
-       end
-
-       redef fun frame_core( display )
-       do
-               display.clear(0.2, 0.2, 0.2)
-
-               display.blit(img_set.square, 0, 0)
-               display.blit(img_set.circle, 100, 100)
-               display.blit(img_set.circles[0], 0, 100)
-               display.blit(img_set.circles[1], 0, 200)
-               display.blit(img_set.circles[2], 0, 300)
-       end
-
-       redef fun input( ie )
-       do
-               if ie isa QuitEvent then
-                       quit = true
-                       return true
-               end
-
-               return false
-       end
-end
diff --git a/contrib/inkscape_tools/tests/app/src/s2pn_android.nit b/contrib/inkscape_tools/tests/app/src/s2pn_android.nit
deleted file mode 100644 (file)
index 350a5b2..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-import s2pn
-import mnit::android
diff --git a/contrib/inkscape_tools/tests/packages.ini b/contrib/inkscape_tools/tests/packages.ini
deleted file mode 100644 (file)
index e69de29..0000000
index a06bf95..f313c40 100644 (file)
@@ -12,7 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import java_api
+import java_api is example
 
 # Get a Java string
 var str = java_lang_integer_to_string_int(5678)
index 882a4d4..c963dc2 100644 (file)
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module user_test is example
+
 import queue
 
 var queue = new JavaQueue
diff --git a/contrib/memory/.gitignore b/contrib/memory/.gitignore
deleted file mode 100644 (file)
index 248a1b2..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-assets/images/
-android/
-src/drawing.nit
diff --git a/contrib/memory/Makefile b/contrib/memory/Makefile
deleted file mode 100644 (file)
index 5163888..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-all: bin/memory
-
-pre-build: assets/images/drawing.png
-
-bin/memory: assets/images/drawing.png src/*.nit
-       mkdir -p bin
-       nitc -o bin/memory src/memory.nit -m ../../lib/mnit/linux/linux.nit
-
-assets/images/drawing.png: art/drawing.svg
-       mkdir -p assets/images/
-       ../inkscape_tools/bin/svg_to_png_and_nit art/drawing.svg -a assets/ -s src/ -x 4
-
-android/res/: art/icon.svg
-       mkdir -p android/res/
-       ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out android/res/
-
-android: bin/memory.apk
-bin/memory.apk: assets/images/drawing.png src/*.nit android/res/
-       mkdir -p bin
-       nitc -o bin/memory.apk src/memory.nit -m ../../lib/mnit/android/android.nit -m ../../lib/android/landscape.nit
-
-android-release: assets/images/drawing.png src/*.nit android/res/
-       mkdir -p bin
-       nitc -o bin/memory.apk src/memory.nit -m ../../lib/mnit/android/android.nit -m ../../lib/android/landscape.nit  --release
diff --git a/contrib/memory/README.md b/contrib/memory/README.md
deleted file mode 100644 (file)
index ffbcdae..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-# Memorize Shapes and Colors
-
-A memory-based game where figures are cliqued in sequence by the computer and should be replayed by the player in the same order.
-As the player progresses, more figures are added and the sequences to remember become longer.
-
-The player can make up to 2 errors to solve a single level.
-At the 3rd error, the level has to be replayed.
-
-The game use a very simple user interface and features big figures with bright colors and simple distinguishable shapes; that makes it suitable for young children.
-
-The game offers three modes (difficulty level)
-
-Easy (for young children):
-
-* Start with 2 figures, 1 to remember
-* Figures are easily distinguishable
-* Figures remain on place
-* After 3 errors, the same level is replayed
-
-Medium (for normal player):
-
-* Like easy but:
-* Start with 3 figures, 3 to remember
-* Figures are moved after the sequence played by the computer
-* After 3 errors, a new level is produced
-
-Hard (for hypermnesic players)
-
-* Like medium but:
-* Figures use overlapping combinations of colors and shapes
-* Figures are shuffled completely
diff --git a/contrib/memory/art/drawing.svg b/contrib/memory/art/drawing.svg
deleted file mode 100644 (file)
index 7a4cd1c..0000000
+++ /dev/null
@@ -1,368 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="509.0834"
-   height="324.85132"
-   viewBox="0 0 509.08342 324.85131"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="drawing.svg"
-   inkscape:export-filename="/home/privat/prog/nit/contrib/memory/art/drawing.png"
-   inkscape:export-xdpi="900"
-   inkscape:export-ydpi="900">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.4"
-     inkscape:cx="326.44213"
-     inkscape:cy="188.58838"
-     inkscape:document-units="pt"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1600"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:snap-text-baseline="false"
-     units="pt" />
-  <defs
-     id="defs4" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     transform="translate(-112.50514,-37.583924)"
-     id="layer1"
-     inkscape:groupmode="layer"
-     inkscape:label="Calque 1">
-    <path
-       transform="matrix(1.0790955,0,0,1.1325291,-9.0916016,-22.007078)"
-       inkscape:label="#path3338"
-       inkscape:transform-center-y="-3.9327809"
-       inkscape:transform-center-x="1.3947101"
-       d="m 180.81731,133.12338 -25.13223,-13.03035 -24.98194,13.31622 4.62632,-27.92877 -20.38433,-19.644302 27.99145,-4.230572 12.38374,-25.457066 12.67335,25.314133 28.03789,3.910967 -20.15889,19.87557 z"
-       inkscape:randomized="0"
-       inkscape:rounded="0"
-       inkscape:flatsided="false"
-       sodipodi:arg2="1.5650921"
-       sodipodi:arg1="0.9367736"
-       sodipodi:r2="21.315176"
-       sodipodi:r1="42.630352"
-       sodipodi:cy="98.778198"
-       sodipodi:cx="155.56349"
-       sodipodi:sides="5"
-       id="0star"
-       style="fill:#ffffff;fill-opacity:1;stroke:#808080;stroke-width:4.52288342;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       sodipodi:type="star" />
-    <ellipse
-       inkscape:label="#path3342"
-       ry="43.75"
-       rx="43.750004"
-       cy="87.475639"
-       cx="256.61908"
-       id="0circle"
-       style="fill:#ffffff;stroke:#808080;stroke-width:5.00000048;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    <rect
-       inkscape:label="#rect3346"
-       y="44.975639"
-       x="319.36441"
-       height="81.250008"
-       width="81.250008"
-       id="0rect"
-       style="fill:#ffffff;stroke:#808080;stroke-width:5.00000048;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    <path
-       transform="matrix(1.138458,0.01858784,-0.01944847,1.1911688,-113.46281,-38.903848)"
-       inkscape:label="#path3348"
-       inkscape:transform-center-y="-4.0794014"
-       inkscape:transform-center-x="0.47783259"
-       d="m 536.391,131.10309 -47.49475,0.72114 -15.36253,-44.947336 38.00017,-28.500132 38.84794,27.33329 z"
-       inkscape:randomized="0"
-       inkscape:rounded="0"
-       inkscape:flatsided="true"
-       sodipodi:arg2="1.5556138"
-       sodipodi:arg1="0.92729522"
-       sodipodi:r2="32.545895"
-       sodipodi:r1="40.406101"
-       sodipodi:cy="98.778206"
-       sodipodi:cx="512.14734"
-       sodipodi:sides="5"
-       id="0penta"
-       style="fill:#ffffff;stroke:#808080;stroke-width:4.2930603;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       sodipodi:type="star" />
-    <path
-       transform="matrix(0.9848695,-0.0389352,0.04401556,1.1133778,-29.129711,11.863574)"
-       inkscape:label="#path3350"
-       inkscape:transform-center-y="-5.2078962"
-       inkscape:transform-center-x="-1.6611955"
-       d="m 652.55851,129.08278 -88.77492,-3.29401 47.24016,-75.23433 z"
-       inkscape:randomized="0"
-       inkscape:rounded="0"
-       inkscape:flatsided="true"
-       sodipodi:arg2="1.6078845"
-       sodipodi:arg1="0.56068699"
-       sodipodi:r2="34.010933"
-       sodipodi:r1="51.289494"
-       sodipodi:cy="101.80866"
-       sodipodi:cx="609.12195"
-       sodipodi:sides="3"
-       id="0triangle"
-       style="fill:#ffffff;stroke:#808080;stroke-width:4.77111959;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       sodipodi:type="star" />
-    <g
-       transform="translate(-7.1428071,-28.263269)"
-       style="fill:#ffffff;stroke:#808080;stroke-width:5.00000048;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       inkscape:label="#g3356"
-       id="0cross">
-      <path
-         style="fill:#ffffff;stroke:#808080;stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m 42.5625,125.5 0,31.25 -31.25,0 0,25 31.25,0 0,31.25 25,0 0,-31.25 31.25,0 0,-25 -31.25,0 0,-31.25 -25,0 z"
-         transform="translate(114.94512,48.417475)"
-         id="rect3352"
-         inkscape:connector-curvature="0" />
-    </g>
-    <rect
-       inkscape:label="#rect3341"
-       transform="matrix(0.68019493,0.73303128,-0.73365707,0.67951991,0,0)"
-       ry="0"
-       y="-93.236977"
-       x="286.09988"
-       height="61.163219"
-       width="62.66906"
-       id="0diamond"
-       style="fill:#ffffff;stroke:#808080;stroke-width:5.00000143;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    <path
-       inkscape:label="#path3350"
-       inkscape:connector-curvature="0"
-       id="0moon"
-       d="m 368.00103,142.79236 a 50.857007,43.749388 0 0 0 -50.85758,43.75075 50.857007,43.749388 0 0 0 50.85758,43.74925 50.857007,43.749388 0 0 0 36.5966,-13.44214 37.525559,30.468323 0 0 1 -3.51512,0.16013 37.525559,30.468323 0 0 1 -37.52646,-30.46724 37.525559,30.468323 0 0 1 37.52646,-30.46873 37.525559,30.468323 0 0 1 3.56094,0.14501 50.857007,43.749388 0 0 0 -36.64242,-13.42703 z"
-       style="fill:#ffffff;stroke:#808080;stroke-width:5.00000048;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    <path
-       inkscape:label="#path3356"
-       inkscape:connector-curvature="0"
-       id="0spiral"
-       d="m 467.10669,144.22922 c -20.15895,-0.32141 -38.9065,16.76425 -41.19858,37.60291 -3.86937,23.35281 16.7358,47.48676 39.64103,45.31644 12.20102,-0.76865 23.76919,-8.45705 29.03604,-20.00332 6.61043,-13.59525 3.19101,-31.78746 -8.72849,-41.00231 -11.91023,-9.84408 -31.5447,-7.79332 -40.34686,5.46911 -8.25602,11.53909 -5.3078,30.58816 7.47626,37.21364 10.28179,6.05468 25.63854,1.15001 29.0991,-11.11553 3.04684,-9.25632 -2.65279,-21.09349 -12.45674,-22.21563 -7.74971,-1.31975 -16.07358,6.63167 -13.65087,14.90034 1.37551,7.39459 14.12722,8.17257 14.08847,-0.22482 -0.0955,-2.72794 -2.63922,-5.69968 -5.32908,-4.79848 4.38499,-3.96292 10.36557,1.52768 9.81632,6.69218 0.19607,6.907 -6.58875,11.92951 -12.86343,10.71083 -8.21344,-0.99562 -14.24185,-9.85518 -12.49382,-18.25737 1.54211,-10.78621 12.75113,-18.38943 22.89359,-15.65962 11.86257,2.42582 20.00065,15.79672 17.20605,27.99309 -2.41584,13.54418 -15.7679,23.59081 -28.91368,21.59767 -14.20193,-1.45306 -26.32571,-14.644 -26.46485,-29.59643 -0.8484,-17.59211 12.58621,-34.40757 29.59974,-35.87494 17.64776,-2.34404 36.43269,10.56977 40.14043,28.9258 3.86993,15.99133 -2.31691,34.4508 -15.45688,44.18203 -0.10231,3.94543 4.80831,7.62163 7.87431,4.41178 19.69304,-16.79994 22.96064,-50.96148 5.42672,-70.6373 -8.57029,-10.04432 -21.48622,-15.8896 -34.39478,-15.63007 z"
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:#808080;stroke-width:5.00000048;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:accumulate" />
-    <g
-       id="0heart"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:113.93434906px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#808080;stroke-width:4.7127285;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       transform="matrix(1.0677772,0,0,1.0541795,-59.938025,-33.284976)">
-      <path
-         inkscape:connector-curvature="0"
-         id="path2998"
-         d="m 572.55695,170.41572 c 7.52883,8e-5 13.44436,4.35792 17.74661,13.07352 1.55765,3.44925 2.37358,6.0825 2.44781,7.89974 l 0.1669,0 c 1.29802,-6.00819 3.65311,-10.99652 7.06526,-14.96501 4.00544,-4.00542 8.51163,-6.00817 13.51858,-6.00825 7.75131,8e-5 13.96355,4.15393 18.63672,12.46157 1.18672,3.07837 1.78013,5.97123 1.78022,8.67859 -9e-5,9.27205 -3.85724,18.11753 -11.57145,26.53647 l -29.42933,35.32632 -0.3338,0 -31.26518,-38.33045 c -6.2308,-7.603 -9.34619,-15.4471 -9.34618,-23.53234 -10e-6,-7.8255 3.69024,-14.03773 11.07077,-18.63672 3.11537,-1.66888 6.28639,-2.50336 9.51307,-2.50344"
-         style="stroke:#808080;stroke-width:4.7127285;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
-    </g>
-    <path
-       style="fill:#000000;fill-opacity:0.57983195;fill-rule:nonzero;stroke:#000000;stroke-width:2.50000024;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 261.37374,293.86379 c -21.42857,-42.85714 -21.42857,-42.85714 -21.42857,-42.85714 l 40.71428,25 z"
-       id="0cursor"
-       inkscape:connector-curvature="0"
-       inkscape:label="#path3043" />
-    <g
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:40px;line-height:125%;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="0hard0"
-       inkscape:label="#text5595"
-       transform="matrix(0.7,0,0,0.7,64.765671,18.829203)">
-      <g
-         style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="text5638">
-        <path
-           d="m 361.89825,341.57028 q -1.58203,0 -2.63671,1.11328 -1.03516,1.11328 -1.19141,3.4961 l 7.59766,0 q -0.0195,-0.9961 -0.25391,-1.83594 -0.23438,-0.83984 -0.70313,-1.44531 -0.46875,-0.625 -1.17187,-0.97657 -0.70313,-0.35156 -1.64063,-0.35156 z m 0.76172,18.39844 q -2.34375,0 -4.3164,-0.68359 -1.97266,-0.6836 -3.39844,-2.05079 -1.42578,-1.38671 -2.22656,-3.47656 -0.78125,-2.10937 -0.78125,-4.9414 0,-2.8711 0.72265,-5.01954 0.72266,-2.14843 2.01172,-3.57421 1.3086,-1.44532 3.125,-2.16797 1.83594,-0.72266 4.0625,-0.72266 2.16797,0 3.90625,0.66406 1.75781,0.64453 2.96875,1.91407 1.23047,1.26953 1.875,3.125 0.66406,1.83593 0.66406,4.21875 l 0,2.89062 -13.32031,0 q 0.0391,1.25 0.39063,2.26563 0.37109,0.99609 1.01562,1.69921 0.66406,0.6836 1.58203,1.05469 0.9375,0.3711 2.12891,0.3711 0.99609,0 1.875,-0.0977 0.89844,-0.11719 1.73828,-0.33203 0.83984,-0.21485 1.66016,-0.52735 0.82031,-0.33203 1.67968,-0.76171 l 0,4.60937 q -0.78125,0.41016 -1.58203,0.70313 -0.78125,0.27343 -1.66015,0.46875 -0.87891,0.19531 -1.89453,0.27343 -1.01563,0.0977 -2.22657,0.0977 z"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           id="path5643"
-           inkscape:connector-curvature="0" />
-        <path
-           d="m 389.02716,359.57809 -1.15234,-2.96875 -0.17578,0 q -0.64454,0.87891 -1.28907,1.52344 -0.64453,0.625 -1.40625,1.03516 -0.76172,0.41015 -1.71875,0.60547 -0.9375,0.19531 -2.1875,0.19531 -1.32812,0 -2.46093,-0.41016 -1.13282,-0.42968 -1.97266,-1.26953 -0.82031,-0.85937 -1.28906,-2.14844 -0.46875,-1.30859 -0.46875,-3.08593 0,-3.47657 2.22656,-5.11719 2.22656,-1.66016 6.66016,-1.83594 l 3.47656,-0.11719 0,-1.64062 q 0,-1.34766 -0.78125,-1.99219 -0.78125,-0.64453 -2.1875,-0.64453 -1.40625,0 -2.75391,0.41016 -1.32812,0.41015 -2.67578,1.09375 l -1.93359,-3.94532 q 1.64062,-0.91796 3.63281,-1.44531 1.99219,-0.52734 4.17969,-0.52734 4.08203,0 6.25,1.91406 2.1875,1.91406 2.1875,5.82031 l 0,14.55078 -4.16016,0 z m -1.75781,-10.11718 -1.97266,0.0781 q -1.1914,0.0391 -2.01172,0.3125 -0.82031,0.27344 -1.32812,0.74219 -0.48828,0.44922 -0.72266,1.09375 -0.21484,0.625 -0.21484,1.40625 0,1.36719 0.66406,1.95312 0.66406,0.56641 1.73828,0.56641 0.82031,0 1.52344,-0.27344 0.70312,-0.29297 1.21094,-0.83984 0.52734,-0.56641 0.82031,-1.36719 0.29297,-0.82031 0.29297,-1.875 l 0,-1.79687 z"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           id="path5645"
-           inkscape:connector-curvature="0" />
-        <path
-           d="m 413.87091,353.09372 q 0,1.71875 -0.625,3.00781 -0.625,1.28906 -1.77734,2.14844 -1.15235,0.85937 -2.79297,1.28906 -1.64063,0.42969 -3.67188,0.42969 -1.07422,0 -1.99218,-0.0781 -0.91797,-0.0586 -1.73829,-0.21484 -0.82031,-0.15625 -1.58203,-0.39062 -0.76172,-0.23438 -1.54297,-0.58594 l 0,-4.92188 q 0.82032,0.41016 1.71875,0.74219 0.91797,0.33203 1.81641,0.58594 0.89844,0.23437 1.73828,0.37109 0.85938,0.13672 1.58203,0.13672 0.80078,0 1.36719,-0.13672 0.56641,-0.15625 0.91797,-0.41015 0.37109,-0.27344 0.52734,-0.625 0.17578,-0.3711 0.17578,-0.78125 0,-0.41016 -0.13671,-0.72266 -0.11719,-0.33203 -0.56641,-0.68359 -0.44922,-0.3711 -1.32813,-0.82032 -0.85937,-0.46875 -2.32421,-1.13281 -1.42579,-0.64453 -2.48047,-1.26953 -1.03516,-0.64453 -1.71875,-1.42578 -0.66407,-0.78125 -0.9961,-1.77735 -0.33203,-1.01562 -0.33203,-2.40234 0,-1.52344 0.58594,-2.65625 0.58594,-1.15234 1.66016,-1.91406 1.07421,-0.76172 2.57812,-1.13281 1.52344,-0.39063 3.37891,-0.39063 1.95312,0 3.71093,0.44922 1.75782,0.44922 3.61329,1.34766 l -1.79688,4.21875 q -1.48437,-0.70313 -2.83203,-1.15235 -1.34766,-0.44922 -2.69531,-0.44922 -1.21094,0 -1.75782,0.42969 -0.52734,0.42969 -0.52734,1.17188 0,0.39062 0.13672,0.70312 0.13672,0.29297 0.54687,0.625 0.41016,0.3125 1.15235,0.70313 0.74219,0.37109 1.93359,0.91796 1.38672,0.60547 2.5,1.21094 1.11328,0.58594 1.91406,1.34766 0.80079,0.76172 1.23047,1.77734 0.42969,1.01563 0.42969,2.46094 z"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           id="path5647"
-           inkscape:connector-curvature="0" />
-        <path
-           d="m 415.41388,337.74216 6.52344,0 3.51562,12.28515 q 0.3125,1.01563 0.44922,2.16797 0.15625,1.15235 0.19531,2.07031 l 0.11719,0 q 0.0391,-0.44921 0.0977,-0.99609 0.0781,-0.54687 0.17578,-1.11328 0.0977,-0.56641 0.21484,-1.11328 0.13672,-0.56641 0.27344,-1.01563 l 3.4375,-12.28515 6.5625,0 -8.63281,24.6289 q -1.21094,3.45703 -3.30078,5.13672 -2.08985,1.67969 -5.23438,1.67969 -1.01562,0 -1.75781,-0.11719 -0.74219,-0.0977 -1.26953,-0.21484 l 0,-4.72656 q 0.41015,0.0977 1.03515,0.17578 0.625,0.0781 1.3086,0.0781 0.9375,0 1.60156,-0.2539 0.66406,-0.25391 1.13281,-0.72266 0.48828,-0.44922 0.82031,-1.09375 0.35157,-0.64453 0.60547,-1.44531 l 0.3711,-1.09375 -8.24219,-22.03125 z"
-           style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-           id="path5649"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <g
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="0hard1"
-       inkscape:label="#text5599"
-       transform="matrix(0.7,0,0,0.7,55.673321,14.516296)">
-      <path
-         d="m 372.53442,411.00665 -5.95703,0 0,-12.7539 q 0,-2.36328 -0.70312,-3.53516 -0.70313,-1.19141 -2.20703,-1.19141 -1.13282,0 -1.89453,0.46875 -0.74219,0.46875 -1.19141,1.38672 -0.44922,0.91797 -0.64453,2.26563 -0.19531,1.34765 -0.19531,3.08594 l 0,10.27343 -5.95704,0 0,-21.83593 4.55079,0 0.80078,2.79296 0.33203,0 q 0.46875,-0.83984 1.11328,-1.44531 0.66406,-0.60547 1.44531,-0.99609 0.78125,-0.39063 1.66016,-0.56641 0.8789,-0.19531 1.77734,-0.19531 2.2461,0 3.8086,0.78125 1.58203,0.76172 2.42187,2.42187 l 0.48828,0 q 0.46875,-0.83984 1.13281,-1.44531 0.66407,-0.60547 1.46485,-0.99609 0.80078,-0.39063 1.67969,-0.56641 0.89843,-0.19531 1.79687,-0.19531 3.51563,0 5.29297,1.91406 1.79687,1.89453 1.79687,6.09375 l 0,14.23828 -5.97656,0 0,-12.7539 q 0,-2.36328 -0.70312,-3.53516 -0.70313,-1.19141 -2.20703,-1.19141 -2.12891,0 -3.02735,1.69922 -0.89844,1.67969 -0.89844,4.82422 l 0,10.95703 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path5626"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 400.2688,392.99884 q -1.58203,0 -2.63672,1.11328 -1.03516,1.11328 -1.19141,3.4961 l 7.59766,0 q -0.0195,-0.9961 -0.25391,-1.83594 -0.23437,-0.83985 -0.70312,-1.44531 -0.46875,-0.625 -1.17188,-0.97657 -0.70312,-0.35156 -1.64062,-0.35156 z m 0.76172,18.39844 q -2.34375,0 -4.31641,-0.6836 -1.97265,-0.68359 -3.39844,-2.05078 -1.42578,-1.38672 -2.22656,-3.47656 -0.78125,-2.10937 -0.78125,-4.94141 0,-2.87109 0.72266,-5.01953 0.72265,-2.14843 2.01172,-3.57422 1.30859,-1.44531 3.125,-2.16796 1.83593,-0.72266 4.0625,-0.72266 2.16797,0 3.90625,0.66406 1.75781,0.64453 2.96875,1.91406 1.23047,1.26954 1.875,3.125 0.66406,1.83594 0.66406,4.21875 l 0,2.89063 -13.32031,0 q 0.0391,1.25 0.39062,2.26562 0.3711,0.9961 1.01563,1.69922 0.66406,0.6836 1.58203,1.05469 0.9375,0.37109 2.1289,0.37109 0.9961,0 1.875,-0.0976 0.89844,-0.11719 1.73829,-0.33203 0.83984,-0.21485 1.66015,-0.52735 0.82031,-0.33203 1.67969,-0.76172 l 0,4.60938 q -0.78125,0.41016 -1.58203,0.70312 -0.78125,0.27344 -1.66016,0.46875 -0.8789,0.19532 -1.89453,0.27344 -1.01562,0.0977 -2.22656,0.0977 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path5628"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 421.14771,411.39728 q -1.67969,0 -3.06641,-0.72266 -1.38672,-0.72265 -2.38281,-2.1289 -0.9961,-1.42579 -1.5625,-3.53516 -0.54688,-2.10938 -0.54688,-4.88281 0,-2.8125 0.54688,-4.92188 0.5664,-2.1289 1.58203,-3.55469 1.03515,-1.44531 2.46094,-2.16796 1.42578,-0.72266 3.14453,-0.72266 1.05468,0 1.93359,0.25391 0.87891,0.23437 1.58203,0.68359 0.70313,0.42969 1.25,1.01562 0.56641,0.56641 0.9961,1.25 l 0.19531,0 q -0.11719,-0.76171 -0.21485,-1.54296 -0.0976,-0.66407 -0.17578,-1.40625 -0.0586,-0.76172 -0.0586,-1.40625 l 0,-6.99219 5.95703,0 0,30.39062 -4.55078,0 -1.15234,-2.83203 -0.25391,0 q -0.41016,0.66406 -0.9375,1.26953 -0.52734,0.58594 -1.23047,1.01563 -0.68359,0.42969 -1.5625,0.68359 -0.85937,0.25391 -1.95312,0.25391 z m 2.16796,-4.7461 q 1.05469,0 1.79688,-0.35156 0.74219,-0.37109 1.19141,-1.09375 0.46875,-0.74219 0.68359,-1.83594 0.23437,-1.09375 0.25391,-2.55859 l 0,-0.64453 q 0,-1.58203 -0.19532,-2.8125 -0.19531,-1.23047 -0.64453,-2.05078 -0.44922,-0.83985 -1.21094,-1.26953 -0.76171,-0.42969 -1.91406,-0.42969 -1.875,0 -2.7539,1.69922 -0.87891,1.67969 -0.87891,4.90234 0,3.22266 0.87891,4.84375 0.89843,1.60156 2.79296,1.60156 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path5630"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 438.76489,383.52618 q 0,-0.83984 0.25391,-1.38671 0.25391,-0.56641 0.68359,-0.89844 0.44922,-0.35156 1.03516,-0.48828 0.60547,-0.13672 1.26953,-0.13672 0.66406,0 1.25,0.13672 0.58594,0.13672 1.01563,0.48828 0.44921,0.33203 0.70312,0.89844 0.27344,0.54687 0.27344,1.38671 0,0.82032 -0.27344,1.38672 -0.25391,0.56641 -0.70312,0.91797 -0.42969,0.33203 -1.01563,0.48828 -0.58594,0.13672 -1.25,0.13672 -0.66406,0 -1.26953,-0.13672 -0.58594,-0.15625 -1.03516,-0.48828 -0.42968,-0.35156 -0.68359,-0.91797 -0.25391,-0.5664 -0.25391,-1.38672 z m 6.21094,27.48047 -5.95703,0 0,-21.83593 5.95703,0 0,21.83593 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path5632"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 465.48364,411.00665 -0.80078,-2.79297 -0.3125,0 q -0.48828,0.83985 -1.17187,1.44532 -0.66407,0.58593 -1.46485,0.97656 -0.80078,0.39062 -1.69922,0.56641 -0.89843,0.19531 -1.83593,0.19531 -1.60157,0 -2.91016,-0.44922 -1.30859,-0.46875 -2.24609,-1.44531 -0.9375,-0.97657 -1.44532,-2.48047 -0.50781,-1.50391 -0.50781,-3.61328 l 0,-14.23828 5.95703,0 0,12.7539 q 0,2.36328 0.70313,3.55469 0.72265,1.17187 2.28515,1.17187 1.17188,0 1.95313,-0.46875 0.78125,-0.46875 1.23047,-1.38671 0.46875,-0.91797 0.66406,-2.26563 0.19531,-1.34766 0.19531,-3.08594 l 0,-10.27343 5.95703,0 0,21.83593 -4.55078,0 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path5634"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 495.03442,411.00665 -5.95703,0 0,-12.7539 q 0,-2.36328 -0.70312,-3.53516 -0.70313,-1.19141 -2.20703,-1.19141 -1.13282,0 -1.89453,0.46875 -0.74219,0.46875 -1.19141,1.38672 -0.44922,0.91797 -0.64453,2.26563 -0.19531,1.34765 -0.19531,3.08594 l 0,10.27343 -5.95704,0 0,-21.83593 4.55079,0 0.80078,2.79296 0.33203,0 q 0.46875,-0.83984 1.11328,-1.44531 0.66406,-0.60547 1.44531,-0.99609 0.78125,-0.39063 1.66016,-0.56641 0.8789,-0.19531 1.77734,-0.19531 2.2461,0 3.8086,0.78125 1.58203,0.76172 2.42187,2.42187 l 0.48828,0 q 0.46875,-0.83984 1.13281,-1.44531 0.66407,-0.60547 1.46485,-0.99609 0.80078,-0.39063 1.67969,-0.56641 0.89843,-0.19531 1.79687,-0.19531 3.51563,0 5.29297,1.91406 1.79687,1.89453 1.79687,6.09375 l 0,14.23828 -5.97656,0 0,-12.7539 q 0,-2.36328 -0.70312,-3.53516 -0.70313,-1.19141 -2.20703,-1.19141 -2.12891,0 -3.02735,1.69922 -0.89844,1.67969 -0.89844,4.82422 l 0,10.95703 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path5636"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:40px;line-height:125%;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       id="0hard2"
-       inkscape:label="#text5603"
-       transform="matrix(0.7,0,0,0.7,55.939641,18.659146)">
-      <path
-         d="m 375.58685,458.14954 -5.95703,0 0,-12.75391 q 0,-2.36328 -0.74219,-3.53516 -0.72265,-1.1914 -2.24609,-1.1914 -1.15234,0 -1.93359,0.46875 -0.78125,0.46875 -1.25,1.38672 -0.46875,0.91796 -0.66407,2.26562 -0.19531,1.34766 -0.19531,3.08594 l 0,10.27344 -5.95703,0 0,-30.39063 5.95703,0 0,6.19141 q 0,0.82031 -0.0391,1.73828 -0.0391,0.89844 -0.0977,1.66015 -0.0781,0.89844 -0.13672,1.75782 l 0.3125,0 q 0.95704,-1.69922 2.44141,-2.44141 1.48438,-0.76172 3.35938,-0.76172 1.62109,0 2.92968,0.46875 1.32813,0.44922 2.26563,1.42578 0.9375,0.97657 1.44531,2.5 0.50781,1.50391 0.50781,3.61328 l 0,14.23829 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path5652"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 394.39545,458.14954 -1.15235,-2.96875 -0.17578,0 q -0.64453,0.8789 -1.28906,1.52343 -0.64453,0.625 -1.40625,1.03516 -0.76172,0.41016 -1.71875,0.60547 -0.9375,0.19531 -2.1875,0.19531 -1.32813,0 -2.46094,-0.41016 -1.13281,-0.42968 -1.97265,-1.26953 -0.82032,-0.85937 -1.28907,-2.14843 -0.46875,-1.3086 -0.46875,-3.08594 0,-3.47656 2.22657,-5.11719 2.22656,-1.66016 6.66015,-1.83594 l 3.47656,-0.11718 0,-1.64063 q 0,-1.34766 -0.78125,-1.99219 -0.78125,-0.64453 -2.1875,-0.64453 -1.40625,0 -2.7539,0.41016 -1.32813,0.41015 -2.67578,1.09375 l -1.9336,-3.94531 q 1.64063,-0.91797 3.63282,-1.44532 1.99218,-0.52734 4.17968,-0.52734 4.08203,0 6.25,1.91406 2.1875,1.91406 2.1875,5.82031 l 0,14.55079 -4.16015,0 z m -1.75782,-10.11719 -1.97265,0.0781 q -1.19141,0.0391 -2.01172,0.3125 -0.82031,0.27344 -1.32813,0.74219 -0.48828,0.44922 -0.72265,1.09375 -0.21485,0.625 -0.21485,1.40625 0,1.36719 0.66407,1.95313 0.66406,0.5664 1.73828,0.5664 0.82031,0 1.52344,-0.27344 0.70312,-0.29296 1.21093,-0.83984 0.52735,-0.56641 0.82032,-1.36719 0.29296,-0.82031 0.29296,-1.875 l 0,-1.79687 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path5654"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 416.07513,435.90344 q 0.23438,0 0.50782,0.0195 0.29297,0 0.54687,0.0391 0.27344,0.0195 0.48828,0.0586 0.23438,0.0195 0.35157,0.0586 l 0,5.58594 q -0.15625,-0.0391 -0.42969,-0.0781 -0.27344,-0.0391 -0.58594,-0.0586 -0.29297,-0.0391 -0.58594,-0.0391 -0.29297,-0.0195 -0.48828,-0.0195 -1.15234,0 -2.1289,0.29297 -0.95704,0.29297 -1.66016,0.95703 -0.68359,0.64453 -1.07422,1.71875 -0.37109,1.05469 -0.37109,2.59765 l 0,11.11329 -5.95703,0 0,-21.83594 4.51171,0 0.87891,3.28125 0.29297,0 q 0.46875,-0.83985 1.01562,-1.52344 0.54688,-0.68359 1.21094,-1.15234 0.6836,-0.48828 1.52344,-0.74219 0.85937,-0.27344 1.95312,-0.27344 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path5656"
-         inkscape:connector-curvature="0" />
-      <path
-         d="m 428.45795,458.54016 q -1.67969,0 -3.06641,-0.72266 -1.38672,-0.72265 -2.38281,-2.1289 -0.9961,-1.42578 -1.5625,-3.53516 -0.54688,-2.10937 -0.54688,-4.88281 0,-2.8125 0.54688,-4.92188 0.5664,-2.1289 1.58203,-3.55468 1.03516,-1.44532 2.46094,-2.16797 1.42578,-0.72266 3.14453,-0.72266 1.05469,0 1.93359,0.25391 0.87891,0.23437 1.58203,0.68359 0.70313,0.42969 1.25,1.01563 0.56641,0.5664 0.9961,1.25 l 0.19531,0 q -0.11719,-0.76172 -0.21484,-1.54297 -0.0977,-0.66406 -0.17579,-1.40625 -0.0586,-0.76172 -0.0586,-1.40625 l 0,-6.99219 5.95703,0 0,30.39063 -4.55078,0 -1.15234,-2.83204 -0.25391,0 q -0.41016,0.66407 -0.9375,1.26954 -0.52734,0.58593 -1.23047,1.01562 -0.68359,0.42969 -1.5625,0.68359 -0.85937,0.25391 -1.95312,0.25391 z m 2.16797,-4.74609 q 1.05468,0 1.79687,-0.35157 0.74219,-0.37109 1.19141,-1.09375 0.46875,-0.74218 0.68359,-1.83593 0.23438,-1.09375 0.25391,-2.5586 l 0,-0.64453 q 0,-1.58203 -0.19532,-2.8125 -0.19531,-1.23047 -0.64453,-2.05078 -0.44922,-0.83984 -1.21093,-1.26953 -0.76172,-0.42969 -1.91407,-0.42969 -1.875,0 -2.7539,1.69922 -0.87891,1.67969 -0.87891,4.90234 0,3.22266 0.87891,4.84375 0.89843,1.60157 2.79297,1.60157 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         id="path5658"
-         inkscape:connector-curvature="0" />
-    </g>
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:151.59999084px;line-height:125%;font-family:'Droid Sans';-inkscape-font-specification:'Droid Sans, Normal';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ff0000;fill-opacity:1;stroke:#550000;stroke-width:2.50000022;stroke-linecap:butt;stroke-linejoin:round;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none;"
-       x="105.09922"
-       y="363.60458"
-       id="0error"
-       sodipodi:linespacing="125%"
-       transform="scale(1.0032264,0.99678398)"
-       inkscape:label="#text3394"><tspan
-         sodipodi:role="line"
-         id="tspan3396"
-         x="105.09922"
-         y="363.60458">✘</tspan></text>
-    <path
-       inkscape:connector-curvature="0"
-       id="0n0"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.75000016;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 404.02266,260.24844 q 0,-3.75976 -0.71167,-5.29052 -0.69825,-1.54419 -2.36328,-1.54419 -1.66504,0 -2.37671,1.54419 -0.71167,1.53076 -0.71167,5.29052 0,3.80005 0.71167,5.35767 0.71167,1.55762 2.37671,1.55762 1.65161,0 2.36328,-1.55762 0.71167,-1.55762 0.71167,-5.35767 z m 5.16967,0.0403 q 0,4.98169 -2.14843,7.69409 -2.14844,2.69897 -6.09619,2.69897 -3.96119,0 -6.10962,-2.69897 -2.14844,-2.7124 -2.14844,-7.69409 0,-4.99512 2.14844,-7.69409 2.14843,-2.71241 6.10962,-2.71241 3.94775,0 6.09619,2.71241 2.14843,2.69897 2.14843,7.69409 z"
-       inkscape:label="#path4209" />
-    <path
-       inkscape:connector-curvature="0"
-       id="0n1"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.75000016;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 415.63426,266.72061 4.56543,0 0,-12.95776 -4.68628,0.96679 0,-3.51806 4.65942,-0.9668 4.91456,0 0,16.47583 4.56543,0 0,3.57178 -14.01856,0 0,-3.57178 z"
-       inkscape:label="#path4211" />
-    <path
-       inkscape:connector-curvature="0"
-       id="0n2"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.75000016;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 442.68776,266.49234 8.82202,0 0,3.80005 -14.56909,0 0,-3.80005 7.31812,-6.45874 q 0.98022,-0.88623 1.45019,-1.73218 0.46997,-0.84595 0.46997,-1.75903 0,-1.40991 -0.95337,-2.26929 -0.93994,-0.85937 -2.51098,-0.85937 -1.2085,0 -2.64527,0.52368 -1.43676,0.51025 -3.07495,1.53076 l 0,-4.4043 q 1.74561,-0.57739 3.45093,-0.8728 1.70532,-0.30884 3.34351,-0.30884 3.59863,0 5.58593,1.58448 2.00074,1.58447 2.00074,4.41772 0,1.63818 -0.84595,3.06152 -0.84595,1.40992 -3.55835,3.78662 l -4.28345,3.75977 z"
-       inkscape:label="#path4213" />
-    <path
-       inkscape:connector-curvature="0"
-       id="0n3"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.75000016;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 469.28474,259.48306 q 2.02759,0.52368 3.07495,1.82617 1.06079,1.28907 1.06079,3.2898 0,2.98096 -2.28271,4.53857 -2.28272,1.54419 -6.66016,1.54419 -1.54419,0 -3.10181,-0.25512 -1.54418,-0.2417 -3.06152,-0.73853 l 0,-3.98804 q 1.4502,0.7251 2.87354,1.10108 1.43676,0.36255 2.81982,0.36255 2.05444,0 3.14209,-0.71167 1.10107,-0.71167 1.10107,-2.04102 0,-1.36963 -1.12792,-2.06787 -1.11451,-0.71167 -3.30323,-0.71167 l -2.06787,0 0,-3.33008 2.17529,0 q 1.94703,0 2.90039,-0.60425 0.95337,-0.61767 0.95337,-1.86645 0,-1.15479 -0.92651,-1.78589 -0.92651,-0.6311 -2.61841,-0.6311 -1.24878,0 -2.52441,0.28198 -1.27564,0.28198 -2.53784,0.83252 l 0,-3.78662 q 1.53076,-0.42969 3.03466,-0.64453 1.50391,-0.21485 2.95411,-0.21485 3.90747,0 5.84106,1.28907 1.94702,1.27563 1.94702,3.85375 0,1.75904 -0.92651,2.88697 -0.92652,1.1145 -2.73926,1.57104 z"
-       inkscape:label="#path4215" />
-    <path
-       inkscape:connector-curvature="0"
-       id="0n4"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.75000016;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 488.08015,254.50137 -5.66651,8.39234 5.66651,0 0,-8.39234 z m -0.85938,-4.25659 5.74707,0 0,12.64893 2.86011,0 0,3.74634 -2.86011,0 0,3.65234 -4.88769,0 0,-3.65234 -8.88916,0 0,-4.43116 8.02978,-11.96411 z"
-       inkscape:label="#path4217" />
-    <path
-       inkscape:connector-curvature="0"
-       id="0n5"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.75000016;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 502.39748,250.24478 12.85034,0 0,3.80005 -8.72803,0 0,3.10181 q 0.59082,-0.16114 1.18164,-0.2417 0.60425,-0.094 1.24878,-0.094 3.66577,0 5.70679,1.8396 2.04101,1.82618 2.04101,5.10254 0,3.24951 -2.229,5.08911 -2.21558,1.8396 -6.16333,1.8396 -1.70532,0 -3.38379,-0.33569 -1.66504,-0.32227 -3.31665,-0.99365 l 0,-4.06861 q 1.63818,0.93995 3.10181,1.40992 1.47705,0.46997 2.77954,0.46997 1.87988,0 2.9541,-0.91309 1.08765,-0.92651 1.08765,-2.49756 0,-1.58447 -1.08765,-2.49756 -1.07422,-0.91308 -2.9541,-0.91308 -1.1145,0 -2.37671,0.29541 -1.26221,0.28198 -2.7124,0.88623 l 0,-11.2793 z"
-       inkscape:label="#path4219" />
-    <path
-       inkscape:connector-curvature="0"
-       id="0n6"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.75000016;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 531.06232,260.39615 q -1.3562,0 -2.04101,0.88623 -0.67139,0.8728 -0.67139,2.63184 0,1.75903 0.67139,2.64526 0.68481,0.8728 2.04101,0.8728 1.36963,0 2.04102,-0.8728 0.68481,-0.88623 0.68481,-2.64526 0,-1.75904 -0.68481,-2.63184 -0.67139,-0.88623 -2.04102,-0.88623 z m 6.39161,-9.62769 0,3.70606 q -1.27564,-0.60425 -2.40357,-0.88623 -1.12793,-0.29541 -2.20215,-0.29541 -2.30957,0 -3.59863,1.28906 -1.28906,1.27563 -1.50391,3.80005 0.88623,-0.65796 1.92017,-0.98023 1.03394,-0.33569 2.25586,-0.33569 3.07495,0 4.95483,1.79932 1.89331,1.79931 1.89331,4.71313 0,3.22266 -2.10815,5.16968 -2.10815,1.93359 -5.65308,1.93359 -3.90747,0 -6.0559,-2.63183 -2.13501,-2.64527 -2.13501,-7.49268 0,-4.96826 2.49755,-7.80151 2.51099,-2.84668 6.875,-2.84668 1.38306,0 2.68555,0.21484 1.30249,0.21485 2.57813,0.64453 z"
-       inkscape:label="#path4221" />
-    <path
-       inkscape:connector-curvature="0"
-       id="0n7"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.75000016;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 544.88277,250.24478 15.1062,0 0,2.91382 -7.81494,17.13379 -5.0354,0 7.39868,-16.24756 -9.65454,0 0,-3.80005 z"
-       inkscape:label="#path4223" />
-    <path
-       inkscape:connector-curvature="0"
-       id="0n8"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.75000016;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 574.0981,261.32266 q -1.4502,0 -2.22901,0.79224 -0.77881,0.79224 -0.77881,2.26929 0,1.47705 0.77881,2.26928 0.77881,0.77881 2.22901,0.77881 1.43676,0 2.20214,-0.77881 0.76538,-0.79223 0.76538,-2.26928 0,-1.49048 -0.76538,-2.26929 -0.76538,-0.79224 -2.20214,-0.79224 z m -3.7732,-1.70532 q -1.82617,-0.55054 -2.75268,-1.69189 -0.92652,-1.14136 -0.92652,-2.84668 0,-2.53785 1.89331,-3.86719 1.89331,-1.32935 5.55909,-1.32935 3.63891,0 5.53222,1.32935 1.89331,1.31592 1.89331,3.86719 0,1.70532 -0.93994,2.84668 -0.92651,1.14135 -2.75268,1.69189 2.04101,0.56396 3.07495,1.8396 1.04736,1.26221 1.04736,3.1958 0,2.98096 -1.9873,4.51172 -1.97388,1.51733 -5.86792,1.51733 -3.90748,0 -5.90821,-1.51733 -1.9873,-1.53076 -1.9873,-4.51172 0,-1.93359 1.03393,-3.1958 1.04737,-1.27564 3.08838,-1.8396 z m 1.2085,-4.01489 q 0,1.19507 0.65796,1.8396 0.67138,0.64453 1.90674,0.64453 1.20849,0 1.86645,-0.64453 0.65796,-0.64453 0.65796,-1.8396 0,-1.19507 -0.65796,-1.82617 -0.65796,-0.64454 -1.86645,-0.64454 -1.23536,0 -1.90674,0.64454 -0.65796,0.64453 -0.65796,1.82617 z"
-       inkscape:label="#path4225" />
-    <path
-       inkscape:connector-curvature="0"
-       id="0n9"
-       style="font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;font-size:27.5px;line-height:125%;font-family:Sans;-inkscape-font-specification:'Sans, Bold';text-align:start;letter-spacing:0px;word-spacing:0px;writing-mode:lr-tb;text-anchor:start;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.75000016;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       d="m 589.0734,269.84927 0,-3.70605 q 1.23535,0.57739 2.36328,0.8728 1.12793,0.28198 2.229,0.28198 2.30958,0 3.59864,-1.27563 1.28906,-1.28906 1.51733,-3.81348 -0.91308,0.67139 -1.94702,1.00708 -1.03394,0.3357 -2.24243,0.3357 -3.07495,0 -4.96826,-1.78589 -1.87989,-1.79932 -1.87989,-4.72656 0,-3.23609 2.09473,-5.18311 2.10815,-1.94702 5.63965,-1.94702 3.9209,0 6.06934,2.64526 2.14843,2.64527 2.14843,7.47925 0,4.96826 -2.51098,7.81494 -2.51099,2.83325 -6.88843,2.83325 -1.40991,0 -2.69898,-0.21484 -1.28906,-0.20142 -2.52441,-0.61768 z m 6.37817,-9.65454 q 1.3562,0 2.04102,-0.8728 0.68481,-0.88623 0.68481,-2.64526 0,-1.74561 -0.68481,-2.63184 -0.68482,-0.88623 -2.04102,-0.88623 -1.3562,0 -2.04101,0.88623 -0.68482,0.88623 -0.68482,2.63184 0,1.75903 0.68482,2.64526 0.68481,0.8728 2.04101,0.8728 z"
-       inkscape:label="#path4227" />
-    <text
-       xml:space="preserve"
-       style="font-style:normal;font-weight:normal;font-size:31.96330261px;line-height:125%;font-family:Sans;letter-spacing:0px;word-spacing:0px;fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.75000012;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       x="274.35486"
-       y="-433.2915"
-       id="0reload"
-       sodipodi:linespacing="125%"
-       inkscape:label="#text4239"
-       transform="matrix(-0.00170809,1.0146722,-0.98553716,-0.00165905,0,0)"><tspan
-         sodipodi:role="line"
-         id="tspan4241"
-         x="274.35486"
-         y="-433.2915"
-         style="stroke-width:1.75000012;stroke-miterlimit:4;stroke-dasharray:none">↻</tspan></text>
-  </g>
-</svg>
diff --git a/contrib/memory/art/icon.svg b/contrib/memory/art/icon.svg
deleted file mode 100644 (file)
index 8a5990d..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="43.642509mm"
-   height="44.651615mm"
-   viewBox="0 0 154.63881 158.21438"
-   id="svg6343"
-   version="1.1"
-   inkscape:version="0.91 r13725"
-   sodipodi:docname="icon.svg">
-  <defs
-     id="defs6345" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="2.1542002"
-     inkscape:cx="-80.961712"
-     inkscape:cy="22.846199"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1920"
-     inkscape:window-height="1136"
-     inkscape:window-x="1600"
-     inkscape:window-y="27"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata6348">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title></dc:title>
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Calque 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-113.70362,-86.112208)">
-    <g
-       transform="translate(9.99238,-85.305267)"
-       style="fill:#ff41ff;fill-opacity:1;stroke:#803980;stroke-width:5.00000048;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       inkscape:label="#g3356"
-       id="0cross">
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#ff41ff;fill-opacity:1;stroke:#803980;stroke-width:5;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-         d="m 42.5625,125.5 0,31.25 -31.25,0 0,25 31.25,0 0,31.25 25,0 0,-31.25 31.25,0 0,-25 -31.25,0 0,-31.25 -25,0 z"
-         transform="translate(114.94512,48.417475)"
-         id="rect3352" />
-    </g>
-    <path
-       transform="matrix(1.138458,0.01858784,-0.01944847,1.1911688,-359.02128,61.200173)"
-       inkscape:label="#path3348"
-       inkscape:transform-center-y="-4.0794014"
-       inkscape:transform-center-x="0.47783259"
-       d="m 536.391,131.10309 -47.49475,0.72114 -15.36253,-44.947336 38.00017,-28.500132 38.84794,27.33329 z"
-       inkscape:randomized="0"
-       inkscape:rounded="0"
-       inkscape:flatsided="true"
-       sodipodi:arg2="1.5556138"
-       sodipodi:arg1="0.92729522"
-       sodipodi:r2="32.545895"
-       sodipodi:r1="40.406101"
-       sodipodi:cy="98.778206"
-       sodipodi:cx="512.14734"
-       sodipodi:sides="5"
-       id="0penta"
-       style="fill:#00ffff;fill-opacity:1;stroke:#3a8080;stroke-width:4.2930603;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
-       sodipodi:type="star" />
-    <path
-       inkscape:label="#path3356"
-       inkscape:connector-curvature="0"
-       id="0spiral"
-       d="m 157.88015,154.33473 c -20.15895,-0.32141 -38.9065,16.76425 -41.19858,37.60291 -3.86937,23.35281 16.7358,47.48676 39.64103,45.31644 12.20102,-0.76865 23.76919,-8.45705 29.03604,-20.00332 6.61043,-13.59525 3.19101,-31.78746 -8.72849,-41.00231 -11.91023,-9.84408 -31.5447,-7.79332 -40.34686,5.46911 -8.25602,11.53909 -5.3078,30.58816 7.47626,37.21364 10.28179,6.05468 25.63854,1.15001 29.0991,-11.11553 3.04684,-9.25632 -2.65279,-21.09349 -12.45674,-22.21563 -7.74971,-1.31975 -16.07358,6.63167 -13.65087,14.90034 1.37551,7.39459 14.12722,8.17257 14.08847,-0.22482 -0.0955,-2.72794 -2.63922,-5.69968 -5.32908,-4.79848 4.38499,-3.96292 10.36557,1.52768 9.81632,6.69218 0.19607,6.907 -6.58875,11.92951 -12.86343,10.71083 -8.21344,-0.99562 -14.24185,-9.85518 -12.49382,-18.25737 1.54211,-10.78621 12.75113,-18.38943 22.89359,-15.65962 11.86257,2.42582 20.00065,15.79672 17.20605,27.99309 -2.41584,13.54418 -15.7679,23.59081 -28.91368,21.59767 -14.20193,-1.45306 -26.32571,-14.644 -26.46485,-29.59643 -0.8484,-17.59211 12.58621,-34.40757 29.59974,-35.87494 17.64776,-2.34404 36.43269,10.56977 40.14043,28.9258 3.86993,15.99133 -2.31691,34.4508 -15.45688,44.18203 -0.10231,3.94543 4.80831,7.62163 7.87431,4.41178 19.69304,-16.79994 22.96064,-50.96148 5.42672,-70.6373 -8.57029,-10.04432 -21.48622,-15.8896 -34.39478,-15.63007 z"
-       style="color:#000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:medium;line-height:normal;font-family:sans-serif;text-indent:0;text-align:start;text-decoration:none;text-decoration-line:none;letter-spacing:normal;word-spacing:normal;text-transform:none;direction:ltr;block-progression:tb;writing-mode:lr-tb;baseline-shift:baseline;text-anchor:start;display:inline;overflow:visible;visibility:visible;fill:#ffff00;fill-opacity:1;fill-rule:evenodd;stroke:#808036;stroke-width:5.00000048;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;enable-background:accumulate" />
-  </g>
-</svg>
diff --git a/contrib/memory/assets/bing.wav b/contrib/memory/assets/bing.wav
deleted file mode 100644 (file)
index c7cae5b..0000000
Binary files a/contrib/memory/assets/bing.wav and /dev/null differ
diff --git a/contrib/memory/assets/boing.wav b/contrib/memory/assets/boing.wav
deleted file mode 100644 (file)
index 70c529f..0000000
Binary files a/contrib/memory/assets/boing.wav and /dev/null differ
diff --git a/contrib/memory/assets/click.wav b/contrib/memory/assets/click.wav
deleted file mode 100644 (file)
index 3d07b83..0000000
Binary files a/contrib/memory/assets/click.wav and /dev/null differ
diff --git a/contrib/memory/assets/cymbal.wav b/contrib/memory/assets/cymbal.wav
deleted file mode 100644 (file)
index b55bac4..0000000
Binary files a/contrib/memory/assets/cymbal.wav and /dev/null differ
diff --git a/contrib/memory/assets/dart.wav b/contrib/memory/assets/dart.wav
deleted file mode 100644 (file)
index 422e2c2..0000000
Binary files a/contrib/memory/assets/dart.wav and /dev/null differ
diff --git a/contrib/memory/assets/duh.wav b/contrib/memory/assets/duh.wav
deleted file mode 100644 (file)
index 054e1fe..0000000
Binary files a/contrib/memory/assets/duh.wav and /dev/null differ
diff --git a/contrib/memory/assets/grunt.wav b/contrib/memory/assets/grunt.wav
deleted file mode 100644 (file)
index f0d8350..0000000
Binary files a/contrib/memory/assets/grunt.wav and /dev/null differ
diff --git a/contrib/memory/assets/honkhonk.wav b/contrib/memory/assets/honkhonk.wav
deleted file mode 100644 (file)
index b107329..0000000
Binary files a/contrib/memory/assets/honkhonk.wav and /dev/null differ
diff --git a/contrib/memory/assets/level.wav b/contrib/memory/assets/level.wav
deleted file mode 100644 (file)
index 2d30b6e..0000000
Binary files a/contrib/memory/assets/level.wav and /dev/null differ
diff --git a/contrib/memory/assets/line_end.wav b/contrib/memory/assets/line_end.wav
deleted file mode 100644 (file)
index aead13e..0000000
Binary files a/contrib/memory/assets/line_end.wav and /dev/null differ
diff --git a/contrib/memory/assets/penalty.wav b/contrib/memory/assets/penalty.wav
deleted file mode 100644 (file)
index 2ad3af0..0000000
Binary files a/contrib/memory/assets/penalty.wav and /dev/null differ
diff --git a/contrib/memory/assets/squishy-hit.wav b/contrib/memory/assets/squishy-hit.wav
deleted file mode 100644 (file)
index dbd958b..0000000
Binary files a/contrib/memory/assets/squishy-hit.wav and /dev/null differ
diff --git a/contrib/memory/assets/whip.wav b/contrib/memory/assets/whip.wav
deleted file mode 100644 (file)
index b907832..0000000
Binary files a/contrib/memory/assets/whip.wav and /dev/null differ
diff --git a/contrib/memory/assets/woodthunk.wav b/contrib/memory/assets/woodthunk.wav
deleted file mode 100644 (file)
index 2001e38..0000000
Binary files a/contrib/memory/assets/woodthunk.wav and /dev/null differ
diff --git a/contrib/memory/org.nitlanguage.memory.txt b/contrib/memory/org.nitlanguage.memory.txt
deleted file mode 100644 (file)
index 77756da..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-Categories:Nit,Games
-License:Apache2
-Web Site:http://nitlanguage.org
-Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/contrib/memory
-Issue Tracker:https://github.com/nitlang/nit/issues
-
-Summary:memory-based game using shapes and colors
-Description:
-A memory-based game where figures are cliqued in sequence by the computer and should be replayed by the player in the same order.
-As the player progresses, more figures are added and the sequences to remember become longer.
-
-The player can make up to 2 errors to solve a single level.
-At the 3rd error, the level has to be replayed.
-
-The game use a very simple user interface and features big figures with bright colors and simple distinguishable shapes; that makes it suitable for young children.
-.
diff --git a/contrib/memory/package.ini b/contrib/memory/package.ini
deleted file mode 100644 (file)
index 9a79f36..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[package]
-name=memory
-tags=game
-maintainer=Jean Privat <jean@pryen.org>
-license=Apache-2.0
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/contrib/memory/
-git=https://github.com/nitlang/nit.git
-git.directory=contrib/memory/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
-apk=http://nitlanguage.org/fdroid/apk/memory.apk
diff --git a/contrib/memory/src/memory.nit b/contrib/memory/src/memory.nit
deleted file mode 100644 (file)
index 44ca86b..0000000
+++ /dev/null
@@ -1,1045 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# A game of memory using shapes and colors
-#
-# # Features and TODO
-#
-# * [X] Various shapes, colors and sounds
-# * [X] 3 difficulty modes
-# * [X] Saved high scores
-# * [ ] Level selection
-#
-# The remaining issues are
-#
-# * Crappy event system
-# * Crappy UI element placement
-module memory is
-       app_name("Memorize Shapes and Colors")
-       app_namespace "org.nitlanguage.memory"
-       app_version(0, 2, git_revision)
-end
-
-import mnit
-import app::audio
-import mnit::opengles1
-import app::data_store
-
-import drawing
-
-# A figure to click on
-class Button
-       # The place, starting from 0.
-       # Will be used to derive the display place.
-       var place: Int
-
-       # The color of the figure
-       var color: Color
-
-       # The shape of the figure
-       var shape: Image
-
-       # The sound of the figure
-       var sound: Sound
-
-       # x-coordinate on the display
-       var x: Float = 0.0
-       # y-coordinate on the display
-       var y: Float = 0.0
-       # width on the display
-       var w: Float = 0.0
-       # height the display
-       var h: Float = 0.0
-
-       # Event time to live (from 1.0 downto 0.0)
-       var ttl: Float = 0.0
-
-       # Is there a big error on the button?
-       var error = false
-
-       # The initial position (according to shuffle)
-       var from: Pos is noinit
-
-       # The current path if shuffling
-       var path: nullable BPath = null
-
-       # The second path if hard shuffling
-       var path2: nullable BPath = null
-
-       # Is there an hard shuffling?
-       var hard = false
-
-       # The optional text on the button (in the menu)
-       var text: nullable Image = null
-
-       # The color of the text
-       var text_color: nullable Color = null
-
-       # The high score on the menu button
-       var text_max: Int = 0
-
-       # Draw on the display
-       fun blit_on(display: Display)
-       do
-               if ttl > 0.0 then
-                       ttl -= 0.1
-                       if ttl <= 0.0 then
-                               ttl = 0.0
-                               path = path2
-                               path2 = null
-                               if path != null then ttl = path.duration
-                               error = false
-                       end
-               end
-
-               var x = self.x
-               var y = self.y
-               var p = 0.0
-               if ttl > 0.0 then
-                       if path != null then
-                               var pos = to_pos
-                               path.update(pos, ttl)
-                               x = pos.x
-                               y = pos.y
-                               if hard then
-                                       p = ttl/5.0
-                                       if path2 != null then
-                                               p = 1.0 - p
-                                       end
-                               end
-                       else if error then
-                               # nothing
-                       else
-                               y -= ttl * h / 10.0
-                       end
-               end
-
-               if not app.player then
-                       p = 0.2.lerp(p, 1.0)
-               end
-
-               color.set(display, p)
-               display.blit_centered(shape, x, y)
-               var text = self.text
-               if text != null then
-                       text.scale = shape.scale
-                       text_color.set(display, p)
-                       display.blit_centered(text, x, y - h/8.0)
-                       if text_max > 0 then
-                               app.blit_number(text_max, app.scale, x, y + h/8.0, true)
-                       end
-               end
-               if display isa Opengles1Display then
-                       display.reset_color
-               end
-               if error then
-                       app.drawing.error.scale = app.scale
-                       display.blit_centered(app.drawing.error, x, y)
-               end
-       end
-
-       redef fun to_s do
-               return "{place},{color},{shape},{sound}"
-       end
-
-       # Check collision
-       fun has(x,y: Float): Bool
-       do
-               return (self.x - x).abs*2.0 <= w and (self.y - y).abs*2.0 <= h
-       end
-
-       # Return a new pos centered on the button
-       fun to_pos: Pos do return new Pos(x, y)
-end
-
-# A flying number to display rank of clicked button
-class Number
-       # The value to use
-       var value: Int
-
-       # The original position
-       var pos: Pos
-
-       # The color of the number
-       var color: Color
-
-       # Time to live (downto 0.0)
-       var ttl = 5.0
-
-       # Draw on the display
-       fun blit_on(display: Display)
-       do
-               ttl -= 0.1
-
-               if ttl < 0.0 then return
-
-               var p = 1.0 - (ttl / 5.0)
-
-               var y = pos.y - (p * 40.0) * app.scale
-
-               color.set(display, p)
-               app.blit_number(value, app.scale * 2.0 * (1.0 + p), pos.x, y, true)
-               if display isa Opengles1Display then
-                       display.reset_color
-               end
-       end
-end
-
-# A rbg color
-class Color
-       # red (from 0.0 to 1.0)
-       var r: Float
-       # green (from 0.0 to 1.0)
-       var g: Float
-       # blue (from 0.0 to 1.0)
-       var b: Float
-
-       # Globally change the color of the display.
-       # The color will be used for the next blit operations.
-       # The color of the display has to be reseted manually (see `Opengles1Display::reset_color`).
-       fun set(display: Display, p: Float)
-       do
-               if display isa Opengles1Display then
-                       display.color(p.lerp(r,1.0),p.lerp(g,1.0),p.lerp(b,1.0),p.lerp(1.0,0.0))
-               end
-       end
-end
-
-# A point in the display coordinates
-class Pos
-       # x coordinate
-       var x: Float
-       # y coordinate
-       var y: Float
-       redef fun to_s do return "({x},{y})"
-end
-
-# A cubic Bézier path between two points with two handles.
-class BPath
-       # The origin point
-       var from: Pos
-       # The handle of the origin point
-       var from_handle: Pos
-       # The handle of the destination point
-       var to_handle: Pos
-       # The destination point
-       var to: Pos
-       # The duration on the path
-       var duration: Float
-
-       # Update the coordinates of `cursor` for an absolute time to destination `ttd`
-       fun update(cursor: Pos, ttd: Float)
-       do
-               var p = 1.0 - ttd / duration
-               if p <= 0.0 then
-                       cursor.x = from.x
-                       cursor.y = from.y
-                       return
-               end
-               if p >= 1.1 then
-                       cursor.x = to.x
-                       cursor.y = to.y
-               end
-               var bx = p.cerp(from.x, from_handle.x, to_handle.x, to.x)
-               var by = p.cerp(from.y, from_handle.y, to_handle.y, to.y)
-               cursor.x = bx
-               cursor.y = by
-       end
-end
-
-redef class App
-
-       # # Assets and resources
-
-       # All the images assets
-       var drawing = new DrawingImages
-
-       # Array of all available colors for the figures
-       var colors = new Array[Color]
-
-       # Array of all available shapes for the figures
-       var shapes = new Array[Image]
-
-       # Array of all available sounds for the figures
-       var sounds = new Array[Sound]
-
-       # The sound to play on error (error)
-       var snd_penalty: Sound is noautoinit
-
-       # The sound of other ui element
-       var snd_click: Sound is noautoinit
-
-       redef fun on_create
-       do
-               colors.clear
-               colors.add new Color(0.9, 0.6, 0.0)
-               colors.add new Color(0.6, 0.0, 0.9)
-               colors.add new Color(0.6, 0.5, 0.4)
-               colors.add new Color(1.0, 0.0, 0.0)
-               colors.add new Color(1.0, 1.0, 0.0)
-               colors.add new Color(1.0, 0.0, 1.0)
-               colors.add new Color(0.0, 1.0, 0.0)
-               colors.add new Color(0.0, 1.0, 1.0)
-               colors.add new Color(0.0, 0.0, 1.0)
-
-               drawing.load_all(self)
-               shapes.clear
-               shapes.add drawing.circle
-               shapes.add drawing.rect
-               shapes.add drawing.cross
-               shapes.add drawing.penta
-               shapes.add drawing.star
-               shapes.add drawing.triangle
-               shapes.add drawing.heart
-               shapes.add drawing.diamond
-               shapes.add drawing.moon
-               shapes.add drawing.spiral
-
-               number_images = new NumberImages(drawing.n)
-
-               sounds.clear
-               sounds.add new Sound("bing.wav")
-               sounds.add new Sound("boing.wav")
-               sounds.add new Sound("cymbal.wav")
-               sounds.add new Sound("dart.wav")
-               sounds.add new Sound("duh.wav")
-               sounds.add new Sound("grunt.wav")
-               sounds.add new Sound("honkhonk.wav")
-               sounds.add new Sound("line_end.wav")
-               sounds.add new Sound("squishy-hit.wav")
-               sounds.add new Sound("woodthunk.wav")
-               sounds.add new Sound("whip.wav")
-
-               snd_penalty = new Sound("penalty.wav")
-               snd_click = new Sound("click.wav")
-
-               # Force load the sounds. Required because bug #1728
-               for s in sounds do s.load
-               snd_penalty.load
-
-               is_menu = data_store["game"] != true
-               mode = data_int("mode") or else 0
-               current_level = data_int("level") or else 0
-
-               max_levels[0] = data_int("max_0") or else 0
-               max_levels[1] = data_int("max_1") or else 0
-               max_levels[2] = data_int("max_2") or else 0
-
-               print "max_levels: {max_levels}"
-
-               reload = new Button(-1, new Color(1.0,1.0,1.0), drawing.reload, snd_click)
-
-               if is_menu then
-                       new_menu
-               else
-                       new_game
-               end
-       end
-
-       # Get a positive numeric value from the store
-       fun data_int(name: String): nullable Int
-       do
-               var x = data_store[name]
-               if x isa Int then return x else return null
-       end
-
-       # # Level information
-
-       # Number of buttons for the next game
-       var size = 5
-
-       # Length of the memory sequence for the next game
-       var length = 5
-
-       # Do a hard deal?
-       var hard_deal = false
-
-       # No shuffle (0), easy shuffle (1), or hard shuffle (2)?
-       var shuffling = 0
-
-       # Is a new deal make on replay?
-       # If true, a new set of figures and a new sequence is produced
-       # If false, the same is reused.
-       var deal_on_replay = true
-
-       # Current buttons in the game
-       var buttons = new Array[Button]
-
-       # The sequence of the buttons to memorize
-       var level = new Array[Button]
-
-       # The number of errors (crosses) in the current level. (in [0..3])
-       var error = 0
-
-       # Is the player playing?
-       # If false it means that the game is showing the sequence to memorize
-       var player = false
-
-       # Next button on the level (to show or guess according to `player`)
-       var cpt = 0
-
-       # Time to live before the next event
-       var ttl = 0.0
-
-       # Are we in the menu?
-       var is_menu = true
-
-       # In the end of game, is this a win of a lose?
-       var is_win = false
-
-       # Reset everything and create a menu
-       fun new_menu
-       do
-               is_menu = true
-               size = 3
-               length = 0
-               shuffling = 0
-
-               data_store["game"] = false
-
-               colors.shuffle
-               shapes.shuffle
-               sounds.shuffle
-
-               buttons.clear
-               for i in [0..size[ do
-                       var b = new Button(i, colors[i], shapes[i], sounds[i])
-                       buttons.add b
-                       b.text = drawing.hard[i]
-                       b.text_color = colors[3+i]
-                       b.text_max = max_levels[i]
-               end
-
-               # Start the scene
-               start_scene
-       end
-
-       # The current mode: easy (0), medium (1), hard (2)
-       var mode = 0
-
-       # The current level (from 0)
-       var current_level = 0
-
-       # Hight scores of each mode
-       var max_levels: Array[Int] = [0, 0, 0]
-
-       # Reset everything and create a new game using `mode` and `level`
-       fun new_game
-       do
-               print "Next game: mode={mode} level={current_level}"
-               data_store["game"] = true
-               data_store["mode"] = mode
-               data_store["level"] = current_level
-               if max_levels[mode] < current_level then
-                       max_levels[mode] = current_level
-                       data_store["max_{mode}"] = current_level
-               end
-
-               if mode == 0 then
-                       hard_deal = false
-                       shuffling = 0
-                       deal_on_replay = false
-                       size = 2
-                       length = 1
-               else if mode == 1 then
-                       hard_deal = false
-                       shuffling = 1
-                       deal_on_replay = true
-                       size = 3
-                       length = 3
-               else
-                       hard_deal = true
-                       shuffling = 2
-                       deal_on_replay = true
-                       size = 3
-                       length = 3
-               end
-               for i in [0..current_level[ do
-                       length += 1
-                       if length > size + 2 then
-                               size += 1
-                               length -= 1
-                       end
-                       if size > 16 then size = 16
-               end
-
-               deal_game
-       end
-
-       # Reset the buttons and deal a new game using `size` and `length`
-       fun deal_game
-       do
-               is_menu = false
-
-               # Randomize the deal
-               colors.shuffle
-               shapes.shuffle
-               sounds.shuffle
-
-               # Setup the figure
-               buttons.clear
-               if not hard_deal then
-                       # With the easy deal, each button is easily distinguishable
-                       for i in [0..size[ do
-                               var b = new Button(i, colors[i%colors.length], shapes[i%shapes.length], sounds[i%sounds.length])
-                               buttons.add b
-                       end
-               else
-                       # With the hard deal, use overlapping combinations of colors and shapes
-                       var sqrt = size.to_f.sqrt
-                       var ncol = sqrt.floor.to_i
-                       var nsha = sqrt.ceil.to_i
-                       while ncol*nsha < size do ncol += 1
-
-                       # Randomly swap the numbers of colors/shapes
-                       if 2.rand == 0 then
-                               var t = ncol
-                               ncol = nsha
-                               nsha = t
-                       end
-
-                       # Deal combinations (up to `size`)
-                       for i in [0..ncol[ do
-                               for j in [0..nsha[ do
-                                       if buttons.length >= size then break
-                                       var b = new Button(buttons.length, colors[i], shapes[j], sounds.rand)
-                                       buttons.add b
-                               end
-                       end
-
-                       # A last shuffle to break the colors/shapes grid
-                       buttons.shuffle
-               end
-
-               # Deal the level (i.e. sequence to memorize)
-               # To increase distribution, determinate a maximum number of repetition
-               # of a single button
-               var rep = (length.to_f / size.to_f).ceil.to_i
-               var pool = buttons * rep
-               pool.shuffle
-
-               level.clear
-               for i in [0..length[ do
-                       level.add pool[i]
-               end
-
-               print "newgame size={size} length={length}"
-
-               # Start the scene
-               start_scene
-       end
-
-       # Cause a replay on the same level
-       # On easy mode, the same level is replayed exactly
-       # On other modes, a new deal is made
-       fun replay_game
-       do
-               if deal_on_replay then
-                       deal_game
-               else
-                       start_scene
-               end
-       end
-
-       # Reset the state of the scene and start with `fly_in`
-       fun start_scene
-       do
-               player = false
-               cpt = -1
-               path = null
-               error = 0
-               numbers.clear
-
-               # Ask for a redraw
-               first_frame = true
-       end
-
-       # # Placement and moves
-
-       # Locations used to place buttons on the screen
-       private var locations: Array[Array[Float]] = [
-               [0.0, 1.0],
-               [0.0, 1.0, 0.5],
-               [0.0, 1.0, 0.0, 1.0],
-               [0.0, 1.0, 2.0, 0.5, 1.5],
-               [0.0, 1.0, 2.0, 0.0, 1.0, 2.0],
-               [0.5, 1.5, 0.0, 1.0, 2.0, 0.5, 1.5],
-               [0.0, 1.0, 2.0, 0.0, 2.0, 0.0, 1.0, 2.0],
-               [0.0, 1.0, 2.0, 0.0, 1.0, 2.0, 0.0, 1.0, 2.0],
-               [0.5, 1.5, 2.5, 0.0, 1.0, 2.0, 3.0, 0.5, 1.5, 2.5],
-               [0.0, 1.0, 2.0, 3.0, 0.0, 1.5, 3.0, 0.0, 1.0, 2.0, 3.0],
-               [0.0, 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 3.0],
-               [0.5, 1.5, 2.5, 0.0, 1.5, 3.0, 0.0, 1.0, 2.0, 3.0, 0.5, 1.5, 2.5],
-               [0.5, 1.5, 2.5, 0.0, 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 3.0, 0.5, 1.5, 2.5],
-               [0.5, 1.5, 2.5, 0.0, 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 3.0],
-               [0.0, 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 3.0, 0.0, 1.0, 2.0, 3.0]]
-
-
-       # The scale of the figures.
-       # According to the screen dimensions and the number of figures
-       var scale = 0.0
-
-       # The scale of the UI
-       # According to the screen dimensions
-       var ui_scale = 0.0
-
-       # Compute then location on the display for each button
-       #
-       # The method can be called when there is a change in the buttons (or the display).
-       fun locate(display: Display)
-       do
-               # The locations depend of the number of buttons (from 2 to 9)
-               var n = buttons.length
-               var locs = locations[n-2]
-               var columns = if n <= 4 then 2 else if n <= 9 then 3 else 4
-               var rows = if n <= 2 then 1 else if n <= 6 then 2 else if n <= 12 then 3 else 4
-
-               # Compute basic dimensions according to the screen
-               var slotw = display.width / columns
-               var sloth = display.height / rows
-               var subw = slotw - slotw/5
-               var subh = sloth - sloth/5
-
-               # Compute the figure scale
-               var img = drawing.circle
-               var xs = subw.to_f / img.width.to_f
-               var ys = subh.to_f / img.height.to_f
-               scale = xs.min(ys)
-
-               # Compute the UI scale
-               xs = display.width.to_f / img.width.to_f
-               ys = display.height.to_f / img.height.to_f
-               ui_scale = xs.min(ys) / 4.0
-
-               var last = -1.0
-               var row = 0.0
-               var cpt = 0
-               for b in buttons do
-                       b.place = cpt
-                       var col = locs[cpt]
-                       if col <= last then
-                               row += 1.0
-                       end
-                       last = col
-
-                       b.x = (col + 0.5) * slotw.to_f
-                       b.y = (row + 0.5) * sloth.to_f
-                       img = b.shape
-                       img.scale = scale
-                       b.w = (img.width.to_f * scale)
-                       b.h = (img.height.to_f * scale)
-
-                       cpt += 1
-               end
-
-               left.x = -150.0 * scale
-               left.y = (display.height / 2).to_f
-               right.x = display.width.to_f + 150.0 * scale
-               right.y = left.y
-
-               # Other UI elements
-
-               if not is_menu then
-                       var reload = self.reload
-                       drawing.reload.scale = ui_scale
-                       reload.x = display.width.to_f - (drawing.reload.width.to_f / 2.0 * 1.2 ) * ui_scale
-                       reload.y = drawing.reload.height.to_f / 2.0 * 1.2 * ui_scale
-                       reload.w = drawing.reload.width.to_f * ui_scale
-                       reload.h = drawing.reload.height.to_f * ui_scale
-               end
-       end
-
-       # The origin point of the cursor on the left
-       var left = new Pos(0.0, 0.0)
-
-       # The destination point of the cursor on the right
-       var right = new Pos(0.0, 0.0)
-
-       # The current cursor position
-       var cursor = new Pos(0.0, 0.0)
-
-       # The current cursor path
-       var path: nullable BPath = null
-
-       # The current flying numbers
-       var numbers = new Array[Number]
-
-       # The reload button
-       var reload: Button is noautoinit
-
-       # Safe point for a cursor on the i-th button of the level
-       fun path_pos(i: Int): Pos
-       do
-               if i < 0 then return left
-               if i >= level.length then return right
-               return level[i].to_pos
-       end
-
-       # A random point outside of the screen
-       fun far_away(display: Display): Pos
-       do
-               var a = (2.0*pi).rand
-               var w = display.width.to_f / 2.0
-               var h = display.height.to_f / 2.0
-               var x = w + a.cos * w * 1.8
-               var y = h + a.sin * h * 1.8
-               return new Pos(x, y)
-       end
-
-       # Create a BPath between two point with some nice handle values
-       fun new_path(from, to: Pos, ttl: Float): BPath
-       do
-               var a = atan2(to.y-from.y, to.x-from.x)
-               a += pi * (2.0.rand - 1.0)
-               var radius = 300.0 * scale
-               var fh = new Pos(from.x + a.cos*radius, from.y + a.sin*radius)
-               #var th = new Pos(to.x - a.cos*radius, to.y - a.sin*radius)
-               var path = new BPath(from, fh, to, to, ttl)
-               return path
-       end
-
-       # Initial placement of buttons
-       fun fly_in(display: Display)
-       do
-               for b in buttons do
-                       var from = far_away(display)
-                       var to = b.to_pos
-                       var path = new_path(from, to, 5.0)
-                       b.path = path
-                       b.ttl = 5.0
-               end
-               ttl = 6.0
-       end
-
-       # Final leaving of buttons
-       fun fly_out(display: Display)
-       do
-               for b in buttons do
-                       var from = b.to_pos
-                       var to = far_away(display)
-                       b.x = to.x
-                       b.y = to.y
-                       var path = new_path(from, to, 5.0)
-                       b.path = path
-                       b.ttl = 5.0
-                       b.hard = false
-               end
-               ttl = 6.0
-       end
-
-       # Randomly permute the content of `buttons` such that no element appears in its original position.
-       fun derangement
-       do
-               # The simplest algorithm is to shuffle until no buttons is at the same place
-               # This is also quite efficient and converges extremely quickly
-               var redo = true
-               while redo do
-                       redo = false
-                       buttons.shuffle
-                       for i in [0..size[ do
-                               if i == buttons[i].place then
-                                       redo = true
-                                       break
-                               end
-                       end
-               end
-       end
-
-       # Shuffling the place of each button on the screen
-       fun shuffle(display: Display)
-       do
-               for b in buttons do
-                       b.from = b.to_pos
-               end
-
-               derangement
-
-               locate(display)
-               for b in buttons do
-                       var from = b.from
-                       var to = b.to_pos
-                       #print "shuffle move {b.place}: {from} -> {to}"
-                       b.path = new_path(from, to, 5.0)
-                       b.ttl = 5.0
-               end
-               ttl = 5.0
-       end
-
-       # Shuffle the place of each button in a hard way
-       fun hard_shuffle(display: Display)
-       do
-               for b in buttons do
-                       b.from = b.to_pos
-                       b.hard = true
-               end
-
-               derangement
-
-               locate(display)
-               for b in buttons do
-                       var from = b.from
-                       var to = b.to_pos
-                       var midx = display.width.to_f / 2.0
-                       var midy = display.height.to_f / 2.0
-                       var mid = new Pos(midx, midy)
-                       #print "shuffle move {b.place}: {from} -> {to}"
-                       b.path = new_path(from, mid, 5.0)
-                       b.path2 = new_path(mid, to, 5.0)
-                       b.ttl = 5.0
-               end
-               ttl = 5.0
-       end
-
-       # Setup the next cursor path
-       fun setpath
-       do
-               if is_menu then return
-               var from = path_pos(cpt-1)
-               var to = path_pos(cpt)
-               #print "cursor {cpt-1}->{cpt}: {from} -> {to}"
-               path = new_path(from, to, 4.0)
-               cursor.x = from.x
-               cursor.y = from.y
-               ttl = 5.0
-       end
-
-       # Main loop, drawing and inputs
-
-       # Flag used to ask for a (re-)computation of the display layout
-       private var first_frame = true
-
-       redef fun frame_core(display)
-       do
-               if first_frame then
-                       locate(display)
-                       if cpt == -1 then
-                               fly_in(display)
-                       end
-                       first_frame = false
-               end
-
-               # Clear the screen
-               display.clear(1.0, 1.0, 1.0)
-
-               # Manage events
-               # This is a crappy ad hoc organic implementation
-               if not player then
-                       ttl -= 0.1
-                       if path != null then path.update(cursor, ttl)
-                       if ttl <= 0.0 then
-                               ttl = 0.0
-                               if is_menu then
-                                       # Menu animation is over
-                                       player = true
-                               else if cpt < 0 then
-                                       # Level place animation is over
-                                       cpt += 1
-                                       setpath
-                               else if cpt < level.length then
-                                       # The cursor is playing
-                                       var b = level[cpt]
-                                       b.ttl = 1.0
-                                       b.sound.play
-                                       numbers.add new Number(cpt+1, b.to_pos, b.color)
-                                       cpt += 1
-                                       setpath
-                               else if cpt == level.length then
-                                       # The cursor is out, run the shuffle
-                                       path = null
-                                       if shuffling == 1 then
-                                               shuffle(display)
-                                       else if shuffling > 1 then
-                                               hard_shuffle(display)
-                                       end
-                                       cpt += 1
-                               else
-                                       # The shuffling is over, start playing
-                                       player = true
-                                       cpt = 0
-                               end
-                       end
-               else if ttl > 0.0 then
-                       ttl -= 0.1
-                       if ttl <= 0.0 then
-                               ttl = 0.0
-                               if cpt == level.length then
-                                       fly_out(display)
-                                       cpt += 1
-                               else
-                                       if is_menu then
-                                               new_game
-                                       else if is_win then
-                                               current_level += 1
-                                               new_game
-                                       else
-                                               replay_game
-                                       end
-                               end
-                       end
-               end
-
-               # Display each button
-               for b in buttons do
-                       b.blit_on(display)
-               end
-
-               # Display flying numbers
-               for b in numbers do
-                       b.blit_on(display)
-               end
-
-               # Display the cursor
-               if path != null then
-                       drawing.cursor.scale = scale
-                       display.blit(drawing.cursor, cursor.x, cursor.y)
-               end
-
-               if not is_menu then
-                       blit_number(current_level, ui_scale, 10.0 * scale, 10.0 * scale)
-                       reload.blit_on(display)
-               end
-       end
-
-       # Blit a number somewhere
-       fun blit_number(number: Int, scale: Float, x, y: Float, centered: nullable Bool)
-       do
-               for img in number_images.imgs do img.scale = scale
-               display.blit_number(number_images, number, x.to_i, y.to_i, centered)
-       end
-
-       # Images with the numbers
-       private var number_images: NumberImages is noautoinit
-
-       # A player click on a button
-       fun action(b: Button)
-       do
-               if is_menu then
-                       b.sound.play
-                       mode = b.place
-                       current_level = 0
-                       ttl = 0.1
-                       cpt = level.length
-                       is_win = true
-                       return
-               end
-               if cpt >= level.length then return
-               if b == level[cpt] then
-                       b.sound.play
-                       b.ttl = 1.0
-                       numbers.add new Number(cpt+1, b.to_pos, b.color)
-
-                       cpt += 1
-                       if cpt >= level.length then
-                               is_win = true
-                               print "Won!"
-                               ttl = 2.0
-                       end
-               else
-                       error += 1
-                       print "Err {error}"
-                       b.error = true
-                       b.ttl = 3.0
-                       snd_penalty.play
-                       if error > 2 then
-                               is_win = false
-                               print "Lose!"
-                               for b2 in buttons do
-                                       b2.error = true
-                                       b2.ttl = 3.0
-                               end
-                               ttl = 3.0
-                               cpt = level.length
-                       end
-               end
-       end
-
-       redef fun input(ie)
-       do
-               # Quit?
-               if ie isa QuitEvent then
-                       quit = true
-                       return true
-               end
-
-               # On click (or tap)
-               if ie isa PointerEvent and ie.depressed then
-                       if player then
-                               for b in buttons do
-                                       if b.has(ie.x, ie.y) then
-                                               action(b)
-                                               return true
-                                       end
-                               end
-                       end
-
-                       if not is_menu then
-                               if reload.has(ie.x, ie.y) then
-                                       reload.sound.play
-                                       reload.ttl = 1.0
-                                       replay_game
-                                       return true
-                               end
-                       end
-               end
-
-               # Special commands
-               if ie isa KeyEvent and ie.is_down then
-                       var c = ie.name
-
-                       if c == "4" or c == "escape" then
-                               # 4 is *back* on android
-                               if is_menu then
-                                       # quit = true # broken
-                                       new_menu
-                               else
-                                       new_menu
-                               end
-                               return true
-                       end
-
-                       if is_menu then
-                               return false
-                       end
-
-                       if c == "[+]" or c == "=" then
-                               # [+] is keypad `+`
-                               size += 1
-                               deal_game
-                               return true
-                       else if c == "[-]" or c == "-" then
-                               size -= 1
-                               deal_game
-                               return true
-                       else if c == "[*]" or c == "]" then
-                               length += 1
-                               deal_game
-                               return true
-                       else if c == "[/]" or c == "[" then
-                               length -= 1
-                               deal_game
-                               return true
-                       else if c == "space" or c == "82" then
-                               # 82 is *menu* on android
-                               reload.sound.play
-                               reload.ttl = 1.0
-                               replay_game
-                               return true
-                       end
-
-                       print "got keydown: `{c}`"
-               end
-
-               return false
-       end
-end
diff --git a/contrib/mnit_test/Makefile b/contrib/mnit_test/Makefile
deleted file mode 100644 (file)
index 73bff6b..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-default: linux
-
-linux:
-       mkdir -p bin
-       nitc -o bin/simple src/simple_linux.nit
-
-android:
-       mkdir -p bin
-       nitc -o bin/complete.apk src/complete_simple_android.nit --semi-global
-       nitc -o bin/minimal.apk src/simple_android.nit --semi-global
-
-android-release:
-       mkdir -p bin
-       nitc -o bin/complete.apk src/complete_simple_android.nit --semi-global --release
-       nitc -o bin/minimal.apk src/simple_android.nit --semi-global --release
-
-clean:
-       rm -rf bin
diff --git a/contrib/mnit_test/android/res/drawable-hdpi/icon.png b/contrib/mnit_test/android/res/drawable-hdpi/icon.png
deleted file mode 100644 (file)
index bad7e3d..0000000
Binary files a/contrib/mnit_test/android/res/drawable-hdpi/icon.png and /dev/null differ
diff --git a/contrib/mnit_test/android/res/drawable-ldpi/icon.png b/contrib/mnit_test/android/res/drawable-ldpi/icon.png
deleted file mode 100644 (file)
index a3b27f8..0000000
Binary files a/contrib/mnit_test/android/res/drawable-ldpi/icon.png and /dev/null differ
diff --git a/contrib/mnit_test/android/res/drawable-mdpi/icon.png b/contrib/mnit_test/android/res/drawable-mdpi/icon.png
deleted file mode 100644 (file)
index fbe3f94..0000000
Binary files a/contrib/mnit_test/android/res/drawable-mdpi/icon.png and /dev/null differ
diff --git a/contrib/mnit_test/android/res/drawable-xhdpi/icon.png b/contrib/mnit_test/android/res/drawable-xhdpi/icon.png
deleted file mode 100644 (file)
index 06ea6ff..0000000
Binary files a/contrib/mnit_test/android/res/drawable-xhdpi/icon.png and /dev/null differ
diff --git a/contrib/mnit_test/android/res/drawable-xxhdpi/icon.png b/contrib/mnit_test/android/res/drawable-xxhdpi/icon.png
deleted file mode 100644 (file)
index eedddef..0000000
Binary files a/contrib/mnit_test/android/res/drawable-xxhdpi/icon.png and /dev/null differ
diff --git a/contrib/mnit_test/android/res/drawable-xxxhdpi/icon.png b/contrib/mnit_test/android/res/drawable-xxxhdpi/icon.png
deleted file mode 100644 (file)
index 08287da..0000000
Binary files a/contrib/mnit_test/android/res/drawable-xxxhdpi/icon.png and /dev/null differ
diff --git a/contrib/mnit_test/android/res/drawable/fighter.png b/contrib/mnit_test/android/res/drawable/fighter.png
deleted file mode 100644 (file)
index de25557..0000000
Binary files a/contrib/mnit_test/android/res/drawable/fighter.png and /dev/null differ
diff --git a/contrib/mnit_test/android/res/raw/testsound.ogg b/contrib/mnit_test/android/res/raw/testsound.ogg
deleted file mode 100644 (file)
index 60c707e..0000000
Binary files a/contrib/mnit_test/android/res/raw/testsound.ogg and /dev/null differ
diff --git a/contrib/mnit_test/android/res/raw/xylofon.ogg b/contrib/mnit_test/android/res/raw/xylofon.ogg
deleted file mode 100644 (file)
index c4bf4fd..0000000
Binary files a/contrib/mnit_test/android/res/raw/xylofon.ogg and /dev/null differ
diff --git a/contrib/mnit_test/android/res/values/bools.xml b/contrib/mnit_test/android/res/values/bools.xml
deleted file mode 100644 (file)
index 2b1f0d6..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <bool name="test_bool">true</bool>
-</resources>
\ No newline at end of file
diff --git a/contrib/mnit_test/android/res/values/dimens.xml b/contrib/mnit_test/android/res/values/dimens.xml
deleted file mode 100644 (file)
index fa1d020..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<resources>
-    <dimen name="test_dimen_1">25px</dimen>
-    <dimen name="test_dimen_2">150px</dimen>
-</resources>
diff --git a/contrib/mnit_test/assets/fighter.png b/contrib/mnit_test/assets/fighter.png
deleted file mode 100644 (file)
index de25557..0000000
Binary files a/contrib/mnit_test/assets/fighter.png and /dev/null differ
diff --git a/contrib/mnit_test/assets/hello.txt b/contrib/mnit_test/assets/hello.txt
deleted file mode 100644 (file)
index 7214097..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-hello world
-
-Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a diam lectus. Sed sit amet ipsum mauris. Maecenas congue ligula ac quam viverra nec consectetur ante hendrerit. Donec et mollis dolor. Praesent et diam eget libero egestas mattis sit amet vitae augue. Nam tincidunt congue enim, ut porta lorem lacinia consectetur. Donec ut libero sed arcu vehicula ultricies a non tortor. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenean ut gravida lorem. Ut turpis felis, pulvinar a semper sed, adipiscing id dolor. Pellentesque auctor nisi id magna consequat sagittis. Curabitur dapibus enim sit amet elit pharetra tincidunt feugiat nisl imperdiet. Ut convallis libero in urna ultrices accumsan. Donec sed odio eros. Donec viverra mi quis quam pulvinar at malesuada arcu rhoncus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. In rutrum accumsan ultricies. Mauris vitae nisi at sem facilisis semper ac in est.
diff --git a/contrib/mnit_test/assets/testsound.ogg b/contrib/mnit_test/assets/testsound.ogg
deleted file mode 100644 (file)
index 60c707e..0000000
Binary files a/contrib/mnit_test/assets/testsound.ogg and /dev/null differ
diff --git a/contrib/mnit_test/assets/xylofon.ogg b/contrib/mnit_test/assets/xylofon.ogg
deleted file mode 100644 (file)
index c4bf4fd..0000000
Binary files a/contrib/mnit_test/assets/xylofon.ogg and /dev/null differ
diff --git a/contrib/mnit_test/org.nitlanguage.test_all.txt b/contrib/mnit_test/org.nitlanguage.test_all.txt
deleted file mode 100644 (file)
index d6be0fd..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Categories:Nit
-License:Apache2
-Web Site:http://nitlanguage.org
-Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/contrib/mnit_test
-Issue Tracker:https://github.com/nitlang/nit/issues
-
-Summary:Simple Demo for MNit
-Description:
-A useless application that test various API usage of the mnit framework on Android.
-.
diff --git a/contrib/mnit_test/org.nitlanguage.test_minimal.txt b/contrib/mnit_test/org.nitlanguage.test_minimal.txt
deleted file mode 100644 (file)
index 9f3bb3c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Categories:Nit
-License:Apache2
-Web Site:http://nitlanguage.org
-Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/contrib/mnit_test
-Issue Tracker:https://github.com/nitlang/nit/issues
-
-Summary:Minimal Demo for MNit
-Description:
-A useless application that test various basic API usage of the mnit framework on Android.
-.
diff --git a/contrib/mnit_test/package.ini b/contrib/mnit_test/package.ini
deleted file mode 100644 (file)
index 5247640..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[package]
-name=mnit_test
-tags=testing
-maintainer=Alexis Laferrière <alexis.laf@xymus.net>
-license=Apache-2.0
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/examples/mnit_simple/
-git=https://github.com/nitlang/nit.git
-git.directory=examples/mnit_simple/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
-apk=http://nitlanguage.org/fdroid/apk/test_all.apk
diff --git a/contrib/mnit_test/src/complete_simple_android.nit b/contrib/mnit_test/src/complete_simple_android.nit
deleted file mode 100644 (file)
index b2d9975..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014 Frédéric Vachon <fredvac@gmail.com>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Entrypoint of an app with all the mnit tests for Android
-module complete_simple_android is
-       app_name "mnit Complete"
-       app_namespace "org.nitlanguage.test_all"
-       android_api_target 19
-end
-
-import test_bundle
-import test_audio
-import test_shared_preferences
-import test_assets_and_resources
-import test_target_api
-import test_data_store
-import test_intent
diff --git a/contrib/mnit_test/src/simple.nit b/contrib/mnit_test/src/simple.nit
deleted file mode 100644 (file)
index 07dd3a3..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Very simple application
-module simple is
-       app_name "mnit Minimal"
-       app_version(0, 2, git_revision)
-end
-
-import mnit
-
-redef class App
-
-       var img : nullable I = null
-
-       redef fun on_create
-       do
-               super
-
-               var txt = load_asset( "hello.txt" )
-               if txt isa String then
-                       print txt.length
-                       print txt
-               end
-
-               img = load_image( "fighter.png" )
-       end
-
-       var r = 0.0 is writable
-       var g = 0.0 is writable
-       var b = 0.0 is writable
-       redef fun frame_core( display )
-       do
-               b = b + 0.01
-               if b > 1.0 then b = 0.0
-
-               display.clear( r, g, b )
-
-               var img = self.img
-               if img != null then
-                       display.blit( img, 100, 100 )
-               end
-       end
-
-       redef fun input( ie )
-       do
-               if ie isa QuitEvent then
-                       quit = true
-                       return true
-               else if ie isa PointerEvent then
-                       r = ie.x/display.width.to_f
-                       g = ie.y/display.height.to_f
-                       return true
-               else
-                       print "unknown input: {ie}"
-                       return false
-               end
-       end
-end
diff --git a/contrib/mnit_test/src/simple_android.nit b/contrib/mnit_test/src/simple_android.nit
deleted file mode 100644 (file)
index 6e237d6..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2012-2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-module simple_android is
-       app_namespace "org.nitlanguage.test_minimal"
-       android_manifest """<uses-permission android:name="android.permission.VIBRATE" />"""
-end
-
-import mnit::android
-import android::portrait
-import serialization
-
-import simple
-
-in "Java" `{
-       import android.content.Context;
-       import android.widget.Toast;
-`}
-
-redef class App
-       redef fun input( ie )
-       do
-               if ie isa PointerEvent and ie.depressed then
-                       test_java_ffi
-               end
-               return super
-       end
-
-       fun test_java_ffi import native_activity in "Java" `{
-               // + Log (no context needed)
-               android.util.Log.d("mnit_simple", "Java within NIT!!!");
-
-               // - Context needed from now on
-               final android.app.Activity context = App_native_activity(self);
-
-               // Vibration
-               android.os.Vibrator v = (android.os.Vibrator)
-                       context.getSystemService(android.content.Context.VIBRATOR_SERVICE);
-               v.vibrate(500);
-
-               // - UI thread needed from now on
-               context.runOnUiThread(new Runnable() {
-                       @Override
-                       public void run()  {
-                               // + Toast
-                               CharSequence text = "Java within Nit!";
-                               int duration = Toast.LENGTH_SHORT;
-                               Toast toast = Toast.makeText(context, text, duration);
-                               toast.show();
-                       }
-               });
-       `}
-end
-
-class Point
-       auto_serializable
-
-       var x: Int
-       var y: Int
-
-       init(x, y: Int)
-       do
-               self.x = x
-               self.y = y
-       end
-
-       redef fun to_s do return "({x}, {y})"
-end
diff --git a/contrib/mnit_test/src/test_assets_and_resources.nit b/contrib/mnit_test/src/test_assets_and_resources.nit
deleted file mode 100644 (file)
index 5e7cbd7..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014 Romain Chanoir <romain.chanoir@viacesi.fr>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test for the asserts_and_resources module of App.nit framework
-module test_assets_and_resources
-
-import simple_android
-intrude import android::assets_and_resources
-
-redef class App
-       redef fun input( ie )
-       do
-               if ie isa PointerEvent and ie.depressed then
-                       test_assets
-                       test_resources
-               end
-               return super
-       end
-
-       # Testing the assets manager
-       fun test_assets
-       do
-               assert not asset_manager.open_fd("testsound.ogg").is_java_null
-       end
-
-       # Testing the resources manager
-       fun test_resources do
-               # FIXME test deactivated to use app_name which is incompatible
-               # with a custom res/values/strings.xml
-               #assert resource_manager.string("string_test") == "string test"
-
-               assert resource_manager.boolean("test_bool") == true
-               assert resource_manager.dimension("test_dimen_1") == 25
-               assert resource_manager.dimension("test_dimen_2") == 150
-       end
-end
diff --git a/contrib/mnit_test/src/test_audio.nit b/contrib/mnit_test/src/test_audio.nit
deleted file mode 100644 (file)
index ae94e70..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014 Romain Chanoir <romain.chanoir@viacesi.fr>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test for the audio module of App.nit framework
-module test_audio
-
-import simple_android
-import android::audio
-
-redef class App
-       # Sound
-       var soundsp: Sound is noinit
-
-       # Music
-       var soundmp: Music is noinit
-
-       # Sound
-       var easy_soundsp = new Sound("testsound")
-
-       # Music
-       var easy_soundmp = new Music("xylofon")
-
-       # Read sounds from the assets folder?
-       var test_assets = false
-
-       # Read sounds from the resources folder?
-       var test_ressources = true
-
-       # Test the automatic way with `PlayableAudio::load`?
-       var test_easy_sounds = false
-
-       redef fun on_create
-       do
-               super
-               default_mediaplayer.looping = true
-               if test_assets then
-                       soundsp = new Sound("testsound.og")
-                       soundmp = new Music("xylofon.og")
-                       soundmp.play
-               end
-               if test_ressources then
-                       soundsp = load_sound_from_res("testsound")
-                       soundmp = load_music_from_res("xylofon")
-                       soundmp.play
-               end
-               if test_easy_sounds then
-                       easy_soundsp.load
-                       easy_soundmp.load
-                       easy_soundmp.play
-               end
-       end
-
-       redef fun input( ie )
-       do
-               if ie isa PointerEvent and ie.depressed then
-                       if test_assets or test_ressources then
-                               soundsp.play
-                       else if test_easy_sounds then
-                               easy_soundsp.play
-                       end
-               end
-               return super
-       end
-end
diff --git a/contrib/mnit_test/src/test_bundle.nit b/contrib/mnit_test/src/test_bundle.nit
deleted file mode 100644 (file)
index a821dce..0000000
+++ /dev/null
@@ -1,110 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014 Frédéric Vachon <fredvac@gmail.com>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test for the bundle module of App.nit framework
-module test_bundle
-
-import simple_android
-import android::bundle
-
-redef class App
-       redef fun input ( ie )
-       do
-               if ie isa PointerEvent and ie.depressed then
-                       test_bundle
-               end
-               return super
-       end
-
-       fun test_bundle
-       do
-               var bundle = new Bundle
-
-               bundle["anInt"] = 1
-               bundle["aFloat"] = 1.1
-               bundle["aString"] = "A string"
-               bundle["aBool"] = true
-
-               var int_array = new Array[Int]
-               var bool_array = new Array[Bool]
-
-               var value = true
-
-               for i in [0..5] do
-                       int_array.add(i)
-                       bool_array.add(value)
-                       value = not value
-               end
-
-               bundle["anArrayOfInt"] = int_array
-               bundle["anArrayOfBool"] = bool_array
-
-               assert bundle.int("anInt", 0) == 1
-               assert bundle.int("wrongInt", 0) == 0
-               assert bundle.float("aFloat", 0.0) == 1.1
-               assert bundle.float("wrongFloat", 0.0) == 0.0
-               assert bundle.string("aString") == "A string"
-               assert bundle.string("wrongString") == null
-               assert bundle.bool("aBool", false)
-               assert bundle.bool("wrongBool", false) == false
-
-               var int_array_test = bundle.array_of_int("anArrayOfInt")
-               var bool_array_test = bundle.array_of_bool("anArrayOfBool")
-
-               value = true
-
-               for i in [0..5] do
-                       assert int_array_test[i] == i
-                       assert bool_array_test[i] == value
-                       value = not value
-               end
-
-               assert bundle.size == 6
-               assert bundle.has("aBool")
-               assert not bundle.is_empty
-
-               bundle.remove("aString")
-               bundle.remove("anArrayOfBool")
-
-               assert bundle.string("aString") == null
-               assert bundle.array_of_bool("anArrayOfBool") == null
-
-               # Serializable tests
-               var p1 = new Point(10, 10)
-               bundle["aPoint"] = p1
-               var p2 = bundle.deserialize("aPoint")
-
-               assert p1.to_s == p2.to_s
-
-               var point_array = new Array[Point]
-
-               for i in [0..5] do point_array.add(new Point(i, i))
-
-               bundle["anArrayOfPoint"] = point_array
-
-               var deserialized_point_array = bundle.deserialize_array("anArrayOfPoint")
-
-               for i in [0..5] do
-                       var point = new Point(i, i)
-                       assert deserialized_point_array[i].to_s == point.to_s
-               end
-
-               bundle.clear
-
-               assert bundle.keys.is_empty
-               assert bundle.is_empty
-       end
-end
diff --git a/contrib/mnit_test/src/test_data_store.nit b/contrib/mnit_test/src/test_data_store.nit
deleted file mode 100644 (file)
index 03b2eef..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test for the shared_preferences module of App.nit framework
-module test_data_store
-
-import simple
-import app::data_store
-
-redef class App
-       redef fun on_create
-       do
-               super
-
-               # load colors from data store
-               var r = data_store["r"]
-               if r isa Float then
-                       self.r = r
-                       print "r {r}"
-               else assert r == null
-
-               var g = data_store["g"]
-               if g isa Float then
-                       self.g = g
-                       print "g {g}"
-               else assert g == null
-       end
-
-       redef fun input(ie)
-       do
-               if ie isa PointerEvent then
-                       # save color for next execution
-                       data_store["r"] = r
-                       data_store["g"] = g
-               end
-
-               return super
-       end
-end
diff --git a/contrib/mnit_test/src/test_intent.nit b/contrib/mnit_test/src/test_intent.nit
deleted file mode 100644 (file)
index 90af8a2..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014 Frédéric Vachon <fredvac@gmail.com>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test for the intent module of App.nit framework
-module test_intent
-
-import simple_android
-import android::intent::intent_api19
-
-redef class App
-       var intent: Intent
-       redef fun input( ie )
-       do
-               if ie isa PointerEvent and ie.depressed then
-                       test_intent
-               end
-               return super
-       end
-
-       fun test_intent
-       do
-               intent = new Intent
-               intent.action = intent_action.view.to_s
-               intent.data   = "content://contacts/people/"
-
-               start_activity intent
-               intent.destroy
-
-               intent = new Intent
-               var p1 = new Point(10, 20)
-               intent["a_point"] = p1
-               var p2 = intent["a_point"]
-               assert p1.to_s == p2.to_s
-
-               intent.action = intent_action.main.to_s
-               assert intent.action == intent_action.main.to_s
-
-               intent.add_flags intent_flag.activity_brought_to_front
-               assert intent.flags == intent_flag.activity_brought_to_front
-
-               var bool_array = new Array[Bool]
-               for i in [0..5] do bool_array.add( i % 2 == 0 )
-
-               intent.add_extra_array_of_bool("bools", bool_array)
-               var bool_array2 = intent.extra_bool_array("bools")
-               for i in [0..5] do assert bool_array2[i] == (i%2 ==0)
-
-               var string_array = ["foo", "bar", "baz"]
-               intent.add_extra_array_of_string("strings", string_array)
-               var string_array2 = intent.extra_string_array("strings")
-               for i in [0..string_array2.length[ do assert string_array[i] == string_array2[i]
-
-               intent.add_extra_array_list_of_string("strings", string_array)
-               string_array2 = intent.extra_string_array_list("strings")
-               for i in [0..string_array2.length[ do assert string_array[i] == string_array2[i]
-
-               intent.add_category intent_category.home.to_s
-               var categories = intent.categories
-               assert categories.first == intent_category.home.to_s
-               assert intent.has_category(intent_category.home.to_s)
-
-               intent.destroy
-       end
-end
diff --git a/contrib/mnit_test/src/test_shared_preferences.nit b/contrib/mnit_test/src/test_shared_preferences.nit
deleted file mode 100644 (file)
index ec0b607..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014 Frédéric Vachon <fredvac@gmail.com>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test for the shared_preferences module of App.nit framework
-module test_shared_preferences
-
-import simple_android
-import android::shared_preferences
-
-redef class App
-       redef fun input ( ie )
-       do
-               if ie isa PointerEvent and ie.depressed then
-                       test_shared_preferences
-               end
-               return super
-       end
-
-       fun test_shared_preferences
-       do
-               # Private mode tests
-               var sp = new SharedPreferences.privately(self, "test")
-               sp.add_bool("a_boolean",  true)
-               sp.add_float("a_float", 66.6)
-               sp.add_int("an_int", 666)
-               sp.add_int("a_second_int", 666777)
-               sp.add_long("a_long", 6666666666)
-               sp.add_string("a_string", "A string")
-               sp["another_int"] = 85
-               sp["yet_another_string"] = "Another string"
-               sp.remove("a_second_int")
-
-               # Serialized object test
-               var my_point = new Point(10, 10)
-               sp["a_point"] = my_point
-               var my_deserialized_point = sp["a_point"]
-               assert my_point.to_s == my_deserialized_point.to_s
-
-               assert sp.bool("a_boolean", false) == true
-               assert sp.bool("wrong_boolean", false) == false
-               assert sp.float("a_float", 0.0) != 0.0
-               assert sp.float("wrong_float", 0.0) == 0.0
-               assert sp.int("an_int", 0) == 666
-               assert sp.int("a_second_int", 0) == 0
-
-               # FIXME getting long from Java on Android is broken
-               # The C FFI (underlying the Java FFI) version of Int is a `long` which is on 32 bits on Android.
-               #assert sp.long("a_long", 0) == 6666666666
-
-               assert sp.long("wrong_long", 0) == 0
-               assert sp.string("a_string", "ERROR!") == "A string"
-               assert sp.string("wrong_string", "ERROR!") == "ERROR!"
-               assert sp["another_int"] == 85
-               assert sp["yet_another_string"] == "Another string"
-               assert sp.has("an_int") == true
-               assert sp.has("a_second_int") == false
-
-               sp.clear
-               assert sp.all == null
-
-               sp.destroy
-       end
-end
diff --git a/contrib/mnit_test/src/test_target_api.nit b/contrib/mnit_test/src/test_target_api.nit
deleted file mode 100644 (file)
index f092da3..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014 Frédéric Vachon <fredvac@gmail.com>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Test for the API level related annotations
-module test_target_api is
-       android_api_min 10
-       android_api_max 19
-end
-
-import simple_android
-#FIXME: Double quad to access lib/foo/goo/bar.nit is evil
-import android::shared_preferences::shared_preferences_api11
-
-redef class App
-       redef fun input( ie )
-       do
-               if ie isa PointerEvent and ie.depressed then
-                       test_target_api
-               end
-               return super
-       end
-
-       fun test_target_api
-       do
-               var hash_set = new HashSet[JavaString]
-               hash_set.add "foo".to_java_string
-               hash_set.add "bar".to_java_string
-
-               shared_preferences.add_string_set("test", hash_set)
-
-               var hash_set2 = shared_preferences.string_set("test")
-
-               var tab = ["foo", "bar"]
-               var i = 0
-
-               for entry in hash_set2 do
-                       assert entry == tab[i].to_java_string
-                       i+=1
-               end
-
-       end
-end
index de05fa9..d64fbaa 100644 (file)
@@ -13,10 +13,10 @@ check: bin/model_viewer
 # Android
 
 android: bin/model_viewer.apk
-bin/model_viewer.apk: $(shell ${NITLS} -M src/model_viewer.nit android) android/res/
+bin/model_viewer.apk: $(shell ${NITLS} -M src/model_viewer.nit -m android) android/res/
        ${NITC} src/model_viewer.nit -m android -o $@
 
-android-release: $(shell ${NITLS} -M src/model_viewer.nit android) android/res/
+android-release: $(shell ${NITLS} -M src/model_viewer.nit -m android) android/res/
        ${NITC} src/model_viewer.nit -m android -o bin/model_viewer.apk --release
 
 android/res/: art/icon.png
@@ -37,3 +37,10 @@ android/libs/cardboard.jar:
        mkdir -p android/libs
        curl --progress-bar -o android/libs/cardboard.jar \
        https://raw.githubusercontent.com/googlevr/gvr-android-sdk/e226f15c/CardboardSample/libs/cardboard.jar
+
+# ---
+# iOS
+
+ios: bin/model_viewer.app
+bin/model_viewer.app: $(shell ${NITLS} -M src/model_viewer.nit -m ios)
+       ${NITC} src/model_viewer.nit -m ios -o $@ --compile-dir nit_compile
index b93bea4..a38de32 100644 (file)
@@ -17,12 +17,10 @@ module model_viewer is
        app_name "Model Viewer"
        app_namespace "org.nitlanguage.model_viewer"
        app_version(1, 0, git_revision)
-
-       android_manifest_activity """android:screenOrientation="landscape""""
-       android_api_target 10
 end
 
 import gamnit::depth
+import gamnit::landscape
 
 import globe
 
index d444f2c..924fab4 100644 (file)
@@ -14,7 +14,7 @@
 
 # Example of a calculation used nitcc
 # see `calc.sablecc` for the grammar
-module calc
+module calc is example
 
 # Reuse the test program to simplify the code
 import calc_test_parser
index 29ea62e..3d587b3 100644 (file)
@@ -1,3 +1,5 @@
+module minilang is example
+
 import minilang_test_parser
 
 # An naive recursive stack-based interpreter of the minilang language.
index 3248e17..bec0f07 100644 (file)
@@ -367,6 +367,7 @@ class Automaton
                # Keep only the good stuff
                states.clear
                states.add_all(goods)
+               states.add(start)
        end
 
        # Generate a minimal DFA
@@ -385,10 +386,9 @@ class Automaton
 
                # split accept states.
                # An accept state is distinct with a non accept state.
-               for s1 in states do
+               for s1 in accept do
                        for s2 in states do
                                if distincts[s1].has(s2) then continue
-                               if not accept.has(s1) then continue
                                if not accept.has(s2) then
                                        distincts[s1].add(s2)
                                        distincts[s2].add(s1)
@@ -526,7 +526,7 @@ class Automaton
                                                f.append("s{names[s]}->s{names[s2]} [label=\"{labe.escape_to_dot}\"];\n")
                                        end
                                end
-                               if merge_transitions == null or merge_transitions == true then
+                               if merge_transitions or else true then
                                        f.append("s{names[s]}->s{names[s2]} [label=\"{labe.escape_to_c}\"];\n")
                                end
                        end
@@ -626,6 +626,58 @@ class Automaton
                return dfa
        end
 
+       # Transform a NFA to a epsilonless NFA.
+       fun to_nfa_noe: Automaton
+       do
+               assert_valid
+
+               trim
+
+               var dfa = new Automaton.empty
+               var n2d = new ArrayMap[Set[State], State]
+               var seen = new ArraySet[Set[State]]
+               var st = eclosure([start])
+               var todo = [st]
+               n2d[st] = dfa.start
+               seen.add(st)
+               while not todo.is_empty do
+                       var nfa_states = todo.pop
+                       #print "* work on {nfa_states.inspect}={nfa_states} (remains {todo.length}/{seen.length})"
+                       var dfa_state = n2d[nfa_states]
+                       for s in nfa_states do
+                               for t in s.outs do
+                                       if t.symbol == null then continue
+                                       var nfa_dest = eclosure([t.to])
+                                       #print "{nfa_states} -> {sym} -> {nfa_dest}"
+                                       var dfa_dest
+                                       if seen.has(nfa_dest) then
+                                               #print "* reuse {nfa_dest.inspect}={nfa_dest}"
+                                               dfa_dest = n2d[nfa_dest]
+                                       else
+                                               #print "* new {nfa_dest.inspect}={nfa_dest}"
+                                               dfa_dest = new State
+                                               dfa.states.add(dfa_dest)
+                                               n2d[nfa_dest] = dfa_dest
+                                               todo.add(nfa_dest)
+                                               seen.add(nfa_dest)
+                                       end
+                                       dfa_state.add_trans(dfa_dest, t.symbol)
+                               end
+
+                               # Mark accept and tags
+                               if accept.has(s) then
+                                       if tags.has_key(s) then
+                                               for t in tags[s] do
+                                                       dfa.add_tag(dfa_state, t)
+                                               end
+                                       end
+                                       dfa.accept.add(dfa_state)
+                               end
+                       end
+               end
+               return dfa
+       end
+
        # Epsilon-closure on a state of states.
        # Used by `to_dfa`.
        private fun eclosure(states: Collection[State]): Set[State]
index 3456690..a54044b 100644 (file)
@@ -112,8 +112,15 @@ f.close
 var nfa = v2.nfa
 print "NFA automaton: {nfa.states.length} states (see {name}.nfa.dot)"
 nfa.to_dot.write_to_file("{name}.nfa.dot")
+var nfanoe = nfa.to_nfa_noe
+nfanoe.to_dot.write_to_file("{name}.nfanoe.dot")
+print "NFA automaton without epsilon: {nfanoe.states.length} states (see {name}.nfanoe.dot)"
 
-var dfa = nfa.to_dfa.to_minimal_dfa
+var dfa = nfa.to_dfa
+dfa.to_dot.write_to_file("{name}.dfanomin.dot")
+print "DFA automaton (non minimal): {dfa.states.length} states (see {name}.dfanomin.dot)"
+
+dfa = dfa.to_minimal_dfa
 
 dfa.solve_token_inclusion
 
index 5cfad2a..9b9648c 100644 (file)
@@ -12,11 +12,11 @@ This tool is outside src/ because:
 * use importation/refinement to handle incremental execution (so basically everything works out of the box)
 * maintain an interpreter and live objects (the model grows but the interpreter and runtime data are reused)
 * runtime errors/aborts return to the interactive loop
+* top-level variables are preserved but are only visible at the top level
+* Basic FFI
 
-Main missing features
+Main missing feature
 
-* top-level variables are local
-* FFI is strange
 * No model/object inspection
 
 ## Examples
@@ -30,19 +30,26 @@ The rest is the output.
 $ nitin
 --> print 5+2
 7
+--> var a = 5
+--> print a + 3
+8
 ~~~
 
 ### Complex and control statements
 
 ~~~raw
+-->var sum=0
 -->for i in [0..5[ do
 ...print i
+...sum += i
 ...end
 0
 1
 2
 3
 4
+-->print sum
+10
 ~~~
 
 You can use `do` blocks to delay the execution and control the scope of variables.
@@ -93,8 +100,15 @@ bye
 
 ### Class refinement
 
-Already instantiated objects gain the new methods, attributes and specializations.
-However, the new attributes are left uninitialized (default values or init are not recomputed on existing objects)
+Class refinement is available
+
+~~~raw
+-->redef class String
+...fun foo: String do return self + "foo"
+...end
+-->print "hello".foo
+hellofoo
+~~~
 
 Top-level methods automatically refine Sys.
 
@@ -110,15 +124,40 @@ Top-level methods automatically refine Sys.
 I'm sys
 ~~~
 
-You can store global variables as attributes of Sys
+Already instantiated objects gain the new methods, attributes and specializations.
 
 ~~~raw
--->redef class Sys
-...var my_int: Int is writable
+-->class A
 ...end
--->my_int = 5
--->print my_int
-5
+-->var a = new A
+-->print a
+--><A:#561daea16660>
+-->redef class A
+...redef fun to_s do return "A"
+...end
+-->print a
+A
+~~~
+
+However, the new attributes are left uninitialized (default values or init are not recomputed on existing objects)
+
+~~~raw
+-->redef class A
+...var v = "foo"
+...redef fun to_s do return "A:{v}"
+...end
+--->print a
+Runtime error: Uninitialized attribute _v
+       redef fun to_s do return "A:{v}"
+                                    ^
+,---- Stack trace -- - -  -
+| input-6$A$to_s (13,30)
+| file$Sys$print (lib/core/file.nit:1694,19--29)
+| input-7$Sys$main (15,1--7)
+`------------------- - -  -
+-->a.v = "bar"
+-->print a
+A:bar
 ~~~
 
 ### Dynamic importation
@@ -132,3 +171,15 @@ You can store global variables as attributes of Sys
 -->print([0..10[.to_a.to_json)
 [0,1,2,3,4,5,6,7,8,9]
 ~~~
+
+### FFI
+
+The FFI is handled as with the non-interactive interpreter.
+
+~~~raw
+-->fun hello `{
+...puts("Hello, world");
+...`}
+-->hello
+Hello, world
+~~~
index 9e75b28..2497411 100644 (file)
@@ -22,15 +22,19 @@ module nitin
 import nitc::interpreter
 import nitc::frontend
 import nitc::parser_util
+intrude import nitc::scope
 
 redef class ToolContext
 
        # --no-prompt
        var opt_no_prompt = new OptionBool("Disable writing a prompt.", "--no-prompt")
 
+       # --source-name
+       var opt_source_name = new OptionString("Set a name for the input source.", "--source-name")
+
        redef init do
                super
-               option_context.add_option(opt_no_prompt)
+               option_context.add_option(opt_no_prompt, opt_source_name)
        end
 
        # Parse a full module given as a string
@@ -38,7 +42,9 @@ redef class ToolContext
        # Return a AModule or a AError
        fun p_module(string: String): ANode
        do
-               var source = new SourceFile.from_string("", string)
+               var source_name = opt_source_name.value or else ""
+               string = "\n" * last_line + string
+               var source = new SourceFile.from_string(source_name, string)
                var lexer = new Lexer(source)
                var parser = new Parser(lexer)
                var tree = parser.parse
@@ -65,6 +71,9 @@ redef class ToolContext
        # With the default implementation, the history is dropped
        fun readline_add_history(text: String) do end
 
+       # The last line number read by `i_parse`
+       var last_line = 0
+
        # Parse the input of the user as a module
        fun i_parse(prompt: String): nullable ANode
        do
@@ -79,7 +88,14 @@ redef class ToolContext
                                s = readline(prompt)
                        end
                        if s == null then return null
-                       if s == "" then continue
+                       if s == "" then
+                               if oldtext != "" then
+                                       oldtext += "\n"
+                               else
+                                       last_line += 1
+                               end
+                               continue
+                       end
 
                        if s.chars.first == ':' then
                                var res = new TString
@@ -91,19 +107,76 @@ redef class ToolContext
                        oldtext = ""
                        var n = p_module(text)
 
-                       if n isa AParserError and (n.token isa EOF) then
+                       if n isa AParserError and (n.token isa EOF or n.token isa TBadTString or n.token isa TBadExtern) then
                                # Unexpected end of file, thus continuing
                                if oldtext == "" then prompt = "." * prompt.length
                                oldtext = text
                                continue
                        end
 
+                       last_line = n.location.file.line_starts.length - 1
                        readline_add_history(text.chomp)
                        return n
                end
        end
 end
 
+redef class AMethPropdef
+       var injected_variables: nullable Map[Variable, Instance] = null is writable
+       var new_variables: nullable Array[Variable] = null
+
+       redef fun accept_scope_visitor(v)
+       do
+               var injected_variables = self.injected_variables
+               if injected_variables == null then
+                       super
+                       return
+               end
+
+               # Inject main variables in the initial scope
+               var scope = v.scopes.first
+               for variable in injected_variables.keys do
+                       scope.variables[variable.name] = variable
+               end
+
+               super
+
+               # Gather new top-level variables as main variables
+               scope = v.scopes.first
+               var new_variables = new Array[Variable]
+               for variable in scope.variables.values do
+                       if not injected_variables.has_key(variable) then
+                               new_variables.add(variable)
+                       end
+               end
+               self.new_variables = new_variables
+       end
+
+       redef fun call_commons(v, m, a, f)
+       do
+               var injected_variables = self.injected_variables
+               if injected_variables == null then return super
+
+               # Inject main variables in the frame
+               assert f isa InterpreterFrame
+               for variable, i in injected_variables do
+                       f.map[variable] = i
+               end
+
+               var res = super
+
+               # Update the values of the variables
+               for variable in injected_variables.keys do
+                       injected_variables[variable] = f.map[variable]
+               end
+               # Retrieve the values of the new main variables
+               for variable in new_variables.as(not null) do
+                       injected_variables[variable] = f.map[variable]
+               end
+
+               return res
+       end
+end
 
 # Create a tool context to handle options and paths
 var toolcontext = new ToolContext
@@ -139,6 +212,8 @@ var sys_type = mainobj.mtype.as(MClassType)
 var mainprop = mainmodule.try_get_primitive_method("main", sys_type.mclass)
 assert mainprop != null
 
+var main_variables = new Map[Variable, Instance]
+
 var l = 0
 loop
        # Next piece of Nit code
@@ -160,7 +235,8 @@ loop
 
        # An error
        if n isa AError then
-               print "{n.location.colored_line("0;31")}: {n.message}"
+               modelbuilder.error(n, n.message)
+               toolcontext.check_errors
                continue
        end
 
@@ -173,6 +249,14 @@ loop
        l += 1
        var newmodule = modelbuilder.load_rt_module(mainmodule, amodule, "input-{l}")
        if newmodule == null then continue
+
+       var main_method = null
+       if amodule.n_classdefs.not_empty and amodule.n_classdefs.last isa AMainClassdef then
+               main_method = amodule.n_classdefs.last.n_propdefs.first
+               assert main_method isa AMethPropdef
+               main_method.injected_variables = main_variables
+       end
+
        modelbuilder.run_phases
        if not toolcontext.check_errors then
                toolcontext.error_count = 0
@@ -183,7 +267,7 @@ loop
        interpreter.mainmodule = mainmodule
 
        # Run the main if the AST contains a main
-       if amodule.n_classdefs.not_empty and amodule.n_classdefs.last isa AMainClassdef then
+       if main_method != null then
                do
                        interpreter.catch_count += 1
                        interpreter.send(mainprop, [mainobj])
index 15ae4d7..d82bcb6 100644 (file)
@@ -50,7 +50,7 @@ redef class Nitiwiki
        # Markdown processor used for inline element such as titles in TOC.
        private var inline_processor: MarkdownProcessor is lazy do
                var proc = new MarkdownProcessor
-               proc.emitter.decorator = new InlineDecorator
+               proc.decorator = new InlineDecorator
                return proc
        end
 
index 33dc61f..7d81633 100644 (file)
@@ -168,7 +168,7 @@ redef class WikiEntry
                var blocks = sidebar.blocks
                for i in [0..blocks.length[ do
                        blocks[i] = md_proc.process(blocks[i].to_s).write_to_string
-                       md_proc.emitter.decorator.headlines.clear
+                       md_proc.decorator.headlines.clear
                end
        end
 end
@@ -212,7 +212,7 @@ redef class WikiArticle
                super
                if not is_dirty and not wiki.force_render or not has_source then return
                content = md_proc.process(md.as(not null))
-               headlines.add_all(md_proc.emitter.decorator.headlines)
+               headlines.add_all(md_proc.decorator.headlines)
        end
 end
 
@@ -243,8 +243,7 @@ class NitiwikiMdProcessor
        var context: WikiEntry
 
        init do
-               emitter = new MarkdownEmitter(self)
-               emitter.decorator = new NitiwikiDecorator(wiki, context)
+               decorator = new NitiwikiDecorator(wiki, context)
        end
 end
 
@@ -259,7 +258,7 @@ class NitiwikiDecorator
        var context: WikiEntry
 
        redef fun add_wikilink(v, token) do
-               var wiki = v.processor.as(NitiwikiMdProcessor).wiki
+               var wiki = v.as(NitiwikiMdProcessor).wiki
                var target: nullable WikiEntry = null
                var anchor: nullable String = null
                var link = token.link
index a738c05..022543e 100644 (file)
@@ -274,6 +274,16 @@ redef class Text
                        var title = item[tool_config.as(not null).tag_title].first.as(XMLStartTag).data
                        var link = item[tool_config.as(not null).tag_link].first.as(XMLStartTag).data
 
+                       if title == null then
+                               print_error "RSS Parse Error: title is null"
+                               return elements
+                       end
+
+                       if link == null then
+                               print_error "RSS Parse Error: link is null"
+                               return elements
+                       end
+
                        elements.add new Element(title, link)
                end
 
index 24eecf5..6fc3169 100644 (file)
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # Example that uses `shibuqam` to authenticate users and count the number of time they reload.
-module reloadgame
+module reloadgame is example
 
 import popcorn
 import counter
index 326f0bf..ae971c3 100644 (file)
 # * no `client_id`: because we do not want to code a db of clients. The `redirect_uri` can be seen as a simple client_id. We have also no way to present the client to the user since we do not control the authorization page of shibboleth since is done by the reverse proxy.
 # * no `scope` and no `authorisation_code` since since there is nothing to access. We just get minimal information after the successful shibboleth login. Thus we have nothing more to authorise once the user is authenticated.
 # * no `client_secret`: the user information are already public. There is no need to make the code more complex to protect public information.
-module shibuqamoauth
+module shibuqamoauth is example
 
 import popcorn
 import popcorn::pop_json
index 467c3d3..337d1e3 100644 (file)
@@ -1,3 +1,2 @@
 src/*/*_serialize.nit
-src/client/drawing.nit
 config.json
index 43536cc..ab9f82f 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-all: bin/server bin/tinks bin/tinks3d
+all: bin/server bin/tinks3d
 
-pre-build: assets/images/drawing.png src/server/server_serialize.nit
+pre-build: src/server/server_serialize.nit
 
 # Client
-bin/tinks: assets/images/drawing.png src/client/client.nit $(shell nitls -M src/client/linux_client.nit)
-       nitserial -o src/client/client_serialize.nit src/client/client.nit
-       nitc -o bin/tinks src/client/linux_client.nit -m src/client/client_serialize.nit
-
 bin/tinks3d: $(shell nitls -M src/client/client3d.nit -m linux)
        nitserial -o src/client/client_serialize.nit src/client/client3d.nit
        nitc -o bin/tinks3d src/client/client3d.nit \
                -m src/client/client_serialize.nit -m linux
 
-assets/images/drawing.png: art/drawing.svg
-       ../inkscape_tools/bin/svg_to_png_and_nit art/drawing.svg -a assets/ -s src/client/ -x 2.0
-
 # Server
 bin/server: src/server/server_serialize.nit $(shell nitls -M src/server/dedicated.nit)
        nitc -o bin/server src/server/dedicated.nit -m src/server/server_serialize.nit
@@ -37,14 +30,5 @@ src/server/server_serialize.nit: $(shell nitls -M src/server/dedicated.nit)
        nitserial -o src/server/server_serialize.nit src/server/dedicated.nit
 
 # Android
-android: bin/tinks.apk
-bin/tinks.apk: assets/images/drawing.png android/res/ $(shell nitls -M src/client/android_client.nit)
-       nitserial -o src/client/client_serialize.nit src/client/client.nit
-       nitc -o bin/tinks.apk src/client/android_client.nit -m src/client/client_serialize.nit
-
-android-release: assets/images/drawing.png android/res/ $(shell nitls -M src/client/android_client.nit)
-       nitserial -o src/client/client_serialize.nit src/client/client.nit
-       nitc -o bin/tinks.apk src/client/android_client.nit -m src/client/client_serialize.nit --release
-
 android/res/: art/icon.svg
        ../inkscape_tools/bin/svg_to_icons art/icon.svg --android --out android/res/
index ef1d143..99e2ac1 100644 (file)
@@ -30,16 +30,10 @@ It should be easy to add features as refinements on both the client and the serv
 
 # Clients and server
 
-Tinks! has two distinct clients and one dedicated server.
+Tinks! has a client and a dedicated server.
 The whole project is modular, these software share mostly the same code.
 
-* The original 2D client at `bin/tinks` uses mnit and OpenGL ES 1.0 to display the world from above.
-
-  The Android variant at `bin/tinks.apk` uses the same view from above, with added on-screen controls.
-
-  ![Screenshot of the 2D client](doc/tinks.png)
-
-* The 3D client at `bin/tinks3d` uses gamnit and OpenGL ES 2.0 for an immersive world.
+* The 3D client at `bin/tinks3d` uses `gamnit` and OpenGL ES 2.0 for an immersive world.
 
   Despite the different graphics, both client are fully compatible for multiplayer.
 
diff --git a/contrib/tinks/doc/tinks.png b/contrib/tinks/doc/tinks.png
deleted file mode 100644 (file)
index 96ffd95..0000000
Binary files a/contrib/tinks/doc/tinks.png and /dev/null differ
diff --git a/contrib/tinks/src/client/android_client.nit b/contrib/tinks/src/client/android_client.nit
deleted file mode 100644 (file)
index 376d5a6..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Android client with a joystick
-module android_client is
-       app_name "Tinks!"
-       app_namespace "net.xymus.tinks"
-       android_manifest """<uses-permission android:name="android.permission.INTERNET" />"""
-       android_api_target 10
-end
-
-import mnit::android
-import android::audio
-import android::vibration
-import android::landscape
-
-intrude import client
-import controls
-
-redef class App
-
-       # Tank direction control
-       var joystick = new Joystick is lazy
-
-       redef var controls = new Array[Control].with_items(joystick) is lazy
-
-       redef fun input(event)
-       do
-               var local_player = context.local_player
-               var local_tank = local_tank
-               if local_player != null and local_tank != null and event isa ControlEvent then
-                       local_player.orders.add new TankDirectionOrder(local_tank, joystick.value_x, joystick.value_y)
-                       return true
-               end
-
-               if event isa AndroidKeyEvent then
-                       if event.is_back_key then
-                               quit = true
-                               native_activity.finish
-                               return false
-                       end
-               end
-
-               return super
-       end
-end
-
-redef class ExplosionEvent
-       redef fun client_react(display, turn)
-       do
-               super
-
-               var local_tank = app.local_tank
-               var d = 20
-               if local_tank != null then
-                       d = local_tank.pos.dist(pos).to_i
-                       d = 100 - d*5
-                       d = d.max(10)
-               end
-
-               app.vibrator.vibrate d
-       end
-end
-
-# On-demand joystick that popups up when tapping the left border of the screen
-class Joystick
-       super Control
-
-       # Current position of the joystick from its center on the X axis, in `[-1.0..1.0]`
-       var value_x = 0.0
-
-       # Current position of the joystick from its center on the Y axis, in `[-1.0..1.0]`
-       var value_y = 0.0
-
-       # Deadzone at the center of the joystick where the values are set at 0.0
-       var deadzone = 0.3
-
-       # Position of the center of the joystick, set at where the screen is first tapped
-       var center: nullable ScreenPos
-
-       # Position of the top of the joystick, the one that follows the finger
-       var handle: nullable ScreenPos
-
-       # Id of the pointer/finger that triggered the joystick
-       var captured_pointer: Int = -1
-
-       # Image of the left border
-       var img_zone: Image = app.assets.drawing.joystick_zone
-
-       # Image of the joystick base
-       var img_back: Image = app.assets.drawing.joystick_back
-
-       # Image of the top of the joystick
-       var img_handle: Image = app.assets.drawing.joystick_handle
-
-       # Radius where the top of the joystick can move around the center
-       var radius: Float = img_back.width.to_f / 2.0 - 4.0
-
-       # Width of the left border used to trigger the joystick
-       var capture_width = 400.0
-
-       redef fun draw(display)
-       do
-               display.blit_stretched(img_zone,
-                       0, -128,
-                       0, display.height+128,
-                       capture_width, display.height+128,
-                       capture_width, -128)
-
-               var center = center
-               var handle = handle
-               if center != null and handle != null then
-                       img_back.scale = 1.0
-                       img_handle.scale = 1.0
-                       display.blit_centered(img_back, center.x, center.y)
-                       display.blit_centered(img_handle, handle.x, handle.y)
-               end
-       end
-
-       redef fun input(event)
-       do
-               if event isa AndroidPointerEvent then
-                       var center = center
-                       if center == null then
-                               # New joystick?
-                               print "New joystick? {event.just_went_down} {event.x} < {capture_width}"
-                               if event.just_went_down and
-                                  event.x < capture_width then
-                                       # Capture it!
-                                       self.center = new ScreenPos(event.x, event.y)
-                                       self.captured_pointer = event.pointer_id
-                                       self.handle = center
-                                       return true
-                               end
-                       else
-                               # Already down
-
-                               # Is it the finger already on the joystick?
-                               if captured_pointer != event.pointer_id then return false
-
-                               if event.depressed then
-                                       self.center = null
-                                       self.handle = null
-                                       self.value_x = 0.0
-                                       self.value_y = 0.0
-                               else
-                                       # Update values
-                                       var dx = center.x - event.x
-                                       var dy = center.y - event.y # This is inverted, as is the input
-                                       var d = dx.hypot_with(dy)
-                                       if d < deadzone then
-                                               self.value_x = 0.0
-                                               self.value_y = 0.0
-                                               self.handle = center
-                                       else
-                                               var a = atan2(dx, dy)+pi/2.0
-                                               self.value_x = a.cos
-                                               self.value_y = a.sin
-
-                                               if d > radius then d = radius
-                                               self.handle = new ScreenPos(center.x+a.cos*d, center.y-a.sin*d)
-                                       end
-                               end
-
-                               app.input new ControlEvent(self)
-                               return true
-                       end
-               end
-
-               return false
-       end
-end
diff --git a/contrib/tinks/src/client/assets.nit b/contrib/tinks/src/client/assets.nit
deleted file mode 100644 (file)
index 1b4b25d..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Client `Assets` and client-only services on game elements
-module assets is no_warning("attr-in-refinement")
-
-import app::audio
-
-import game
-
-import drawing
-
-redef class App
-       redef fun load_image(path)
-       do
-               var img = super
-               img.scale = 0.5
-               return img
-       end
-end
-
-redef class FeatureRule
-       # Images of different alternatives
-       var images: Array[Image]
-end
-
-redef class TankRule
-       # Image of the base tank structure, at different health level
-       var base_images: Array[Image]
-
-       # Image of the turret
-       var turret_image: Image
-end
-
-redef class Feature
-       # Rotation angle of this feature
-       var angle: Float = pi.rand
-
-       # Index within `rule.images` of the image of this instance
-       var image_index: Int = rule.images.length.rand is lazy
-end
-
-# Collection of assets
-class Assets
-
-       # Images from the `art/drawing.svg` file
-       var drawing = new DrawingImages
-       init do drawing.load_all(app)
-
-       # Firing sound
-       var turret_fire = new Sound("sounds/turret_fire.wav")
-
-       # Turret is ready to fire sound
-       var turret_ready = new Sound("sounds/turret_ready.mp3")
-
-       # Associate images to the `story` rules
-       fun assign_images_to_story(story: Story)
-       do
-               story.tree.images = drawing.trees
-               story.rock.images = drawing.rock
-               story.debris.images = drawing.debris
-
-               for tank in story.tanks do
-                       tank.base_images = drawing.tank_hit
-                       tank.turret_image = drawing.turret
-               end
-
-               story.health.images = [drawing.health]
-       end
-end
diff --git a/contrib/tinks/src/client/client.nit b/contrib/tinks/src/client/client.nit
deleted file mode 100644 (file)
index bc434b7..0000000
+++ /dev/null
@@ -1,349 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Portable client
-module client
-
-import mnit
-import mnit::opengles1
-import performance_analysis
-
-import game
-import common
-
-import assets
-import base
-
-# A position within the screen
-class ScreenPos
-       super Point[Float]
-
-       # Convert to a game logic `Pos` by applying camera transformation
-       fun to_logic(camera: Camera): Pos do
-               return new Pos(x/camera.basic_zoom + camera.dx, y/camera.basic_zoom + camera.dy)
-       end
-end
-
-redef class Pos
-       # Convert to a `ScreenPos` by applying camera transformation
-       fun to_screen(camera: Camera): ScreenPos do
-               return new ScreenPos((x - camera.dx) * camera.basic_zoom, (y - camera.dy) * camera.basic_zoom)
-       end
-end
-
-# Camera managing the screen view on the world
-class Camera
-       # Offset of the top left corner of the screen, X part
-       var dx = 0.0
-
-       # Offset of the top left corner of the screen, Y part
-       var dy = 0.0
-
-       # Basic zoom, the distance between 2 features
-       #
-       # In the world logic, the distance is of 1.
-       # This value depends on the size of the graphical assets.
-       #
-       # TODO make it a full zoom by scaling images too, if needed.
-       var basic_zoom = 32.0
-
-       # Center of the `display` as world `Pos`
-       fun center(display: Display): Pos
-       do
-               return (new ScreenPos(display.width.to_f * 0.5, display.height.to_f * 0.5)).to_logic(self)
-       end
-
-       # Center the `display` on the world `pos`
-       fun center_on(display: Display, pos: Pos)
-       do
-               self.dx = pos.x - display.width.to_f * 0.5 / basic_zoom
-               self.dy = pos.y - display.height.to_f * 0.5 / basic_zoom
-       end
-end
-
-redef class App
-
-       # Collection of assets
-       var assets = new Assets is lazy
-
-       redef fun on_create
-       do
-               super
-               maximum_fps = 60.0
-               assets.assign_images_to_story context.game.story
-       end
-
-       # Camera managing transformation between world and screen positions
-       var camera = new Camera
-
-       # Square of the minimum distance from the tank for an object to be "far"
-       #
-       # This value influences which sounds are heard,
-       # the strength of vibrations and
-       # whether an arrow points to a far unit
-       private var far_dist2 = 2000.0
-
-       redef fun context
-       do
-               var s = super
-               if s isa RemoteGameContext then maximum_fps = 0.0
-               return s
-       end
-
-       # Tank tracks tracks on the ground
-       #
-       # TODO use particles or at least optimize drawing
-       var tracks = new List[Couple[Pos, Float]]
-
-       redef fun frame_core(display)
-       do
-               var clock = new Clock
-
-               var turn = context.do_turn
-               sys.perfs["do_turn"].add clock.lapse
-
-               # Draw
-
-               # Update camera
-               if down_keys.has("left") then camera.dx -= 1.0
-               if down_keys.has("right") then camera.dx += 1.0
-               if down_keys.has("up") then camera.dy -= 1.0
-               if down_keys.has("down") then camera.dy += 1.0
-
-               var local_tank = local_tank
-               if local_tank != null then
-                       var tank_speed = local_tank.direction_forwards*local_tank.rule.max_speed
-                       tank_speed = tank_speed.clamp(-0.5, 0.5)
-
-                       var prop_pos = local_tank.pos + local_tank.heading.to_vector(tank_speed * 16.0)
-                       var old_pos = camera.center(display)
-                       var half = old_pos.lerp(prop_pos, 0.02)
-
-                       camera.center_on(display, new Pos(half.x, half.y))
-               end
-
-               # Grass
-               display.clear(0.0, 0.45, 0.0)
-
-               # Past tank tracks
-               for track in tracks do
-                       var pos = track.first.to_screen(camera)
-                       display.blit_rotated(assets.drawing.track, pos.x, pos.y, track.second)
-               end
-
-               # Past blast sites
-               for blast in context.game.world.blast_sites do
-                       var pos = blast.to_screen(camera)
-                       display.blit_centered(assets.drawing.blast, pos.x, pos.y)
-               end
-
-               # Terrain features
-               var tl = (new ScreenPos(0.0, 0.0)).to_logic(camera)
-               var br = (new ScreenPos(display.width.to_f, display.height.to_f)).to_logic(camera)
-               for x in [tl.x.floor.to_i .. br.x.ceil.to_i] do
-                       for y in [tl.y.floor.to_i .. br.y.ceil.to_i] do
-                               var feature = context.game.world[x, y]
-                               if feature != null then
-                                       var pos = feature.pos.to_screen(camera)
-                                       var image = feature.rule.images[feature.image_index]
-                                       display.blit_rotated(image, pos.x, pos.y, feature.angle)
-                               end
-                       end
-               end
-
-               # Tanks
-               for tank in context.game.tanks do
-                       # Add random tracks
-                       if (tank.direction_heading != 0.0 and 40.rand == 0) or
-                          (tank.direction_forwards != 0.0 and 100.rand == 0) then
-
-                               tracks.add new Couple[Pos, Float](tank.pos, tank.heading)
-                               if tracks.length > 1000 then tracks.shift
-                       end
-
-                       # Get the player stencil
-                       var player = tank.player
-                       var stencil = null
-                       if player != null then stencil = assets.drawing.stencils[player.stencil_index]
-
-                       if camera.center(display).dist2(tank.pos) > far_dist2 then
-                               var hw = (display.width/2).to_f
-                               var hh = (display.height/2).to_f
-
-                               var angle = camera.center(display).atan2(tank.pos)
-                               var x = hw + angle.cos * (hw-128.0)
-                               var y = hh + angle.sin * (hh-128.0)
-
-                               var screen_pos = new ScreenPos(x, y)
-                               display.blit_rotated(assets.drawing.arrow, screen_pos.x, screen_pos.y, angle)
-                               if stencil != null then display.blit_rotated(stencil, screen_pos.x, screen_pos.y, angle)
-                               continue
-                       end
-
-                       var screen_pos = tank.pos.to_screen(camera)
-
-                       var damage = tank.rule.max_health - tank.health
-                       damage = damage.clamp(0, tank.rule.base_images.length)
-
-                       var base_image = tank.rule.base_images[damage]
-                       display.blit_rotated(base_image, screen_pos.x, screen_pos.y, tank.heading)
-                       if stencil != null then display.blit_rotated(stencil, screen_pos.x, screen_pos.y, tank.heading)
-                       display.blit_rotated(tank.rule.turret_image, screen_pos.x, screen_pos.y, tank.turret.heading)
-
-                       if debug then
-                               var corners = tank.corners_at(new Couple[Pos, Float](tank.pos, tank.heading))
-                               for c in corners do
-                                       var p = c.to_screen(camera)
-                                       display.blit_centered(assets.drawing.red_dot, p.x, p.y)
-                               end
-                       end
-               end
-
-               # Events
-               for event in turn.events do event.client_react(display, turn)
-
-               # Gather and show some performance stats!
-               sys.perfs["draw"].add clock.lapse
-               if context.game.tick % 300 == 5 then print sys.perfs
-       end
-
-       # Keys currently down
-       #
-       # TODO find a nice API and move up to mnit/gamnit
-       var down_keys = new HashSet[String]
-
-       redef fun input(ie)
-       do
-               var local_tank = local_tank
-               var local_player = context.local_player
-
-               # Quit?
-               if ie isa QuitEvent or
-                 (ie isa KeyEvent and ie.name == "escape") then
-
-                       quit = true
-                       return true
-               end
-
-               # Spawn a new tank?
-               if local_tank == null and local_player != null then
-                       if (ie isa KeyEvent and ie.name == "space") or
-                          (ie isa PointerEvent and ie.depressed) then
-
-                               local_player.orders.add new SpawnTankOrder(local_player)
-                               return true
-                       end
-               end
-
-               if ie isa KeyEvent then
-
-                       # Update `down_keys`
-                       var name = ie.name
-                       if ie.is_down then
-                               down_keys.add name
-                       else if down_keys.has(name) then
-                               down_keys.remove name
-                       end
-
-                       # wasd to move tank
-                       var direction_change = ["w", "a", "s", "d"].has(ie.name)
-                       if direction_change and local_tank != null and local_player != null then
-                               var forward = down_keys.has("w")
-                               var backward = down_keys.has("s")
-                               var left = down_keys.has("a")
-                               var right = down_keys.has("d")
-
-                               # Cancel contradictory commands
-                               if forward and backward then
-                                       forward = false
-                                       backward = false
-                               end
-
-                               if left and right then
-                                       left = false
-                                       right = false
-                               end
-
-                               # Set movement and direction
-                               var move = 0.0
-                               if forward then
-                                       move = 0.5
-                               else if backward then move = -0.5
-
-                               var ori = 0.0
-                               if left then
-                                       ori = -local_tank.rule.max_direction/2.0
-                               else if right then ori = local_tank.rule.max_direction/2.0
-
-                               # Activate to invert the orientation on reverse, (for at @R4p4Ss)
-                               #if backward then ori = -ori
-
-                               # Bonus when only moving or only turning
-                               if not forward and not backward then ori *= 2.0
-                               if not left and not right then move *= 2.0
-
-                               # Give order
-                               local_player.orders.add new TankDirectionOrder(local_tank, ori, move)
-                               return true
-                       end
-               end
-
-               # On click (or tap), aim and fire
-               if ie isa PointerEvent then
-
-                       if ie.pressed and local_tank != null and local_player != null then
-                               var target = (new ScreenPos(ie.x, ie.y)).to_logic(camera)
-                               local_player.orders.add new AimAndFireOrder(local_tank, target)
-                               return true
-                       end
-               end
-
-               return false
-       end
-end
-
-redef class TEvent
-       fun client_react(display: Display, turn: TTurn) do end
-end
-
-redef class ExplosionEvent
-       redef fun client_react(display, turn)
-       do
-               var pos = pos.to_screen(app.camera)
-               display.blit_centered(app.assets.drawing.explosion, pos.x, pos.y)
-       end
-end
-
-redef class OpenFireEvent
-       redef fun client_react(display, turn)
-       do
-               var screen_pos = tank.pos.to_screen(app.camera)
-               display.blit_rotated(app.assets.drawing.turret_firing, screen_pos.x, screen_pos.y, tank.turret.heading)
-
-               if tank.pos.dist2(app.camera.center(display)) < app.far_dist2 then
-                       # Within earshot
-                       app.assets.turret_fire.play
-               end
-       end
-end
-
-redef class TurretReadyEvent
-       redef fun client_react(display, turn)
-       do
-               if tank.pos.dist2(app.camera.center(display)) < app.far_dist2 then
-                       # Within earshot
-                       app.assets.turret_ready.play
-               end
-       end
-end
diff --git a/contrib/tinks/src/client/controls.nit b/contrib/tinks/src/client/controls.nit
deleted file mode 100644 (file)
index c3a186f..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# On-screen alternative controls
-module controls
-
-import client
-
-redef class App
-
-       # All active UI controls
-       fun controls: Array[Control] is abstract
-
-       redef fun frame_core(display)
-       do
-               super
-
-               for control in controls do control.draw(display)
-       end
-
-       redef fun input(event)
-       do
-               for control in controls do
-                       var hit = control.input(event)
-                       if hit then return true
-               end
-
-               return super
-       end
-end
-
-# An event raised by a `Control`
-class ControlEvent
-       super InputEvent
-
-       # Sender control
-       var sender: Control
-end
-
-# UI control
-abstract class Control
-
-       # Draw `self` to `display`
-       fun draw(display: Display) do end
-
-       # Intercept and act upon events concerving `self`
-       fun input(event: InputEvent): Bool do return false
-end
diff --git a/contrib/tinks/src/client/linux_client.nit b/contrib/tinks/src/client/linux_client.nit
deleted file mode 100644 (file)
index 5e7cca4..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# GNU/Linux client with config saved to `config.json`
-module linux_client
-
-import mnit::linux
-import linux::audio
-import json
-
-import client
-
-# Configuration of the client
-class ClientConfig
-       serialize
-
-       # Resolution width
-       var res_x = 1920 is lazy
-
-       # Resolution height
-       var res_y = 1080 is lazy
-
-       # Should the client play sounds?
-       var play_sounds = true is lazy
-end
-
-redef class App
-       private var config_path: String = sys.program_name.dirname / "../config.json"
-
-       private var config: ClientConfig do
-               if config_path.file_exists then
-                       var content = config_path.to_path.read_all
-                       var deser = new JsonDeserializer(content)
-                       var cc = deser.deserialize
-
-                       if cc == null then
-                               print_error "Client Error: Deserializing config file failed with {deser.errors.join(", ")}"
-                       else if not cc isa ClientConfig then
-                               print_error "Client Error: Deserializing config file failed, got '{cc}'"
-                               # TODO simplify the previous lines with ? or similar
-                       else return cc
-               end
-
-               # Save the default config to pretty Json
-               var cc = new ClientConfig
-               var json = cc.serialize_to_json(plain=true, pretty=true)
-               json.write_to_file config_path
-
-               return cc
-       end
-end
-
-redef class Display
-       redef fun wanted_width do return app.config.res_x
-       redef fun wanted_height do return app.config.res_y
-end
-
-redef class Sound
-       redef fun play do if app.config.play_sounds then super
-end
-
-redef class JsonDeserializer
-       # The only class we deserialize from pretty Json is ClientConfig
-       redef fun class_name_heuristic(object) do return "ClientConfig"
-end
index 470b2b0..2dd9152 100644 (file)
@@ -6,7 +6,7 @@ bin/tnitter_server: $(shell nitls -M src/tnitter.nit)
        mkdir -p bin/
        nitc -o bin/tnitter_server src/tnitter.nit -D tnitter_interface=$(SERVER)
 
-bin/tnitter: $(shell nitls -M src/tnitter_app.nit)
+bin/tnitter: $(shell nitls -M src/tnitter_app.nit -m linux)
        mkdir -p bin/
        nitc -o bin/tnitter src/tnitter_app.nit -m linux -D tnitter_server_uri=http://$(SERVER)
 
@@ -30,11 +30,11 @@ android/res/: art/icon.svg
 # iOS
 
 ios: bin/tnitter.app
-bin/tnitter.app: $(shell nitls -M src/tnitter_app.nit ios) ios/AppIcon.appiconset/Contents.json
+bin/tnitter.app: $(shell nitls -M src/tnitter_app.nit -m ios) ios/AppIcon.appiconset/Contents.json
        mkdir -p bin/
        nitc -o bin/tnitter.app src/tnitter_app.nit -m ios -D tnitter_server_uri=http://$(SERVER)
 
-ios-release: $(shell nitls -M src/tnitter_app.nit ios) ios/AppIcon.appiconset/Contents.json
+ios-release: $(shell nitls -M src/tnitter_app.nit -m ios) ios/AppIcon.appiconset/Contents.json
        mkdir -p bin/
        nitc -o bin/tnitter.app src/tnitter_app.nit -m ios -D tnitter_server_uri=http://tnitter.xymus.net
 
index b14ded6..399f4f6 100644 (file)
@@ -13,6 +13,9 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+
+module blink is example
+
 import wiringPi
 
 if args.length != 1 then
index 1ea366f..568b2fb 100644 (file)
@@ -13,6 +13,9 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+
+module read is example
+
 import wiringPi
 
 if args.length != 1 then
index 4038d28..abb474f 100644 (file)
@@ -13,6 +13,9 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
+
+module wiringPi is example
+
 import wiringPi
 
 if args.is_empty or args.length > 2 then
index d620cb8..c0a2154 100644 (file)
@@ -1,13 +1,13 @@
 NITC=../../bin/nitc
 NITLS=../../bin/nitls
 
-all: bin/calculator bin/test
+all: bin/calculator bin/scientific bin/test
 
-bin/calculator: $(shell ${NITLS} -M src/calculator.nit linux) ${NITC}
+bin/calculator: $(shell ${NITLS} -M src/calculator.nit -m linux) ${NITC}
        mkdir -p bin
        ${NITC} -o $@ src/calculator.nit -m linux
 
-bin/scientific: $(shell ${NITLS} -M scientific linux) ${NITC}
+bin/scientific: $(shell ${NITLS} -M scientific -m linux) ${NITC}
        mkdir -p bin
        ${NITC} -o $@ src/scientific -m linux
 
@@ -28,15 +28,15 @@ bin/calculator21.apk: $(shell ${NITLS} -M src/android21) ${NITC} android/res/dra
        mkdir -p bin
        ${NITC} -o $@ src/android21 -D debug
 
-bin/scientific14.apk: $(shell ${NITLS} -M src/scientific src/android14.nit) ${NITC} src/scientific/android/res/drawable-hdpi/icon.png
+bin/scientific14.apk: $(shell ${NITLS} -M src/scientific -m src/android14.nit) ${NITC} src/scientific/android/res/drawable-hdpi/icon.png
        mkdir -p bin
        ${NITC} -o $@ src/scientific -m src/android14.nit -D debug
 
-bin/scientific21.apk: $(shell ${NITLS} -M src/scientific src/android21) ${NITC} src/scientific/android/res/drawable-hdpi/icon.png
+bin/scientific21.apk: $(shell ${NITLS} -M src/scientific -m src/android21) ${NITC} src/scientific/android/res/drawable-hdpi/icon.png
        mkdir -p bin
        ${NITC} -o $@ src/scientific -m src/android21 -D debug
 
-android-release: $(shell ${NITLS} -M src/scientific src/android14.nit) ${NITC} android/res/drawable-hdpi/icon.png
+android-release: $(shell ${NITLS} -M src/scientific -m src/android14.nit) ${NITC} android/res/drawable-hdpi/icon.png
        mkdir -p bin
        ${NITC} -o bin/calculator14.apk src/android14.nit --release
        ${NITC} -o bin/calculator21.apk src/android21 --release
@@ -66,7 +66,7 @@ bin/calculator.app: $(shell ${NITLS} -M src/ios.nit) ${NITC} ios/AppIcon.appicon
        mkdir -p bin
        ${NITC} -o $@ src/ios.nit -D debug
 
-bin/scientific.app: $(shell ${NITLS} -M src/scientific src/ios.nit) ${NITC} src/scientific/ios/AppIcon.appiconset/Contents.json
+bin/scientific.app: $(shell ${NITLS} -M src/scientific -m src/ios.nit) ${NITC} src/scientific/ios/AppIcon.appiconset/Contents.json
        mkdir -p bin
        ${NITC} -o $@ src/scientific -m src/ios.nit -D debug
 
index 2d1df4a..41d2e05 100644 (file)
@@ -14,7 +14,7 @@
 
 # Example of an implementation of circular lists
 # This example shows the usage of generics and somewhat a specialisation of collections.
-module circular_list
+module circular_list is example
 
 # Sequences of elements implemented with a double-linked circular list
 class CircularList[E]
index 66cbfb0..50b93be 100644 (file)
@@ -15,7 +15,7 @@
 # limitations under the License.
 
 # Simple example of refinement where a method is added to the integer class.
-module fibonacci
+module fibonacci is example
 
 redef class Int
        # Calculate the self-th element of the fibonacci sequence.
index eb2d9b3..1de6752 100644 (file)
@@ -15,7 +15,7 @@
 # An example that defines and uses stacks of integers.
 # The implementation is done with a simple linked list.
 # It features: free constructors, nullable types and some adaptive typing.
-module int_stack
+module int_stack is example
 
 # A stack of integer implemented by a simple linked list.
 # Note that this is only a toy class since a real linked list will gain to use
diff --git a/examples/mnit_ballz/Makefile b/examples/mnit_ballz/Makefile
deleted file mode 100644 (file)
index f42e903..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-default: linux
-
-../../contrib/inkscape_tools/bin/svg_to_icons:
-       $(MAKE) -C ../../contrib/inkscape_tools
-
-android: icon
-       mkdir -p bin
-       ../../bin/nitc -o bin/ballz.apk src/ballz_android.nit
-
-android-release: icon
-       mkdir -p bin
-       ../../bin/nitc -o bin/ballz.apk src/ballz_android.nit --release
-
-linux:
-       mkdir -p bin
-       ../../bin/nitc -o bin/ballz src/ballz_linux.nit
-
-icon: ../../contrib/inkscape_tools/bin/svg_to_icons
-       mkdir -p android/res
-       ../../contrib/inkscape_tools/bin/svg_to_icons art/ball.svg --android --out android/res/
-
-clean:
-       rm -rf bin android
diff --git a/examples/mnit_ballz/art/ball.svg b/examples/mnit_ballz/art/ball.svg
deleted file mode 100644 (file)
index ada039c..0000000
+++ /dev/null
@@ -1,153 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="63.857143"
-   height="63.857143"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="ball.svg">
-  <defs
-     id="defs4">
-    <linearGradient
-       id="linearGradient3785">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:1;"
-         offset="0"
-         id="stop3787" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop3789" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3773">
-      <stop
-         id="stop3775"
-         offset="0"
-         style="stop-color:#ffffff;stop-opacity:0.85384613;" />
-      <stop
-         id="stop3777"
-         offset="1"
-         style="stop-color:#c2dbdb;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3763">
-      <stop
-         style="stop-color:#00d2a3;stop-opacity:1;"
-         offset="0"
-         id="stop3765" />
-      <stop
-         style="stop-color:#008080;stop-opacity:1;"
-         offset="1"
-         id="stop3767" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3763"
-       id="radialGradient3769"
-       cx="342.85715"
-       cy="596.64789"
-       fx="342.85715"
-       fy="596.64789"
-       r="31.428572"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3773"
-       id="radialGradient3779"
-       gradientUnits="userSpaceOnUse"
-       cx="321.13269"
-       cy="582.57141"
-       fx="321.13269"
-       fy="582.57141"
-       r="31.428572" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3785"
-       id="radialGradient3783"
-       gradientUnits="userSpaceOnUse"
-       cx="346.27521"
-       cy="596.22546"
-       fx="346.27521"
-       fy="596.22546"
-       r="31.428572" />
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="3.959798"
-     inkscape:cx="57.90803"
-     inkscape:cy="-22.550981"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     showgrid="false"
-     inkscape:window-width="1855"
-     inkscape:window-height="1056"
-     inkscape:window-x="1985"
-     inkscape:window-y="24"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-310.92858,-564.71932)">
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient3769);fill-opacity:1;stroke:#000000;stroke-opacity:1"
-       id="path2985"
-       sodipodi:cx="342.85715"
-       sodipodi:cy="596.64789"
-       sodipodi:rx="31.428572"
-       sodipodi:ry="31.428572"
-       d="m 374.28572,596.64789 c 0,17.35752 -14.07105,31.42857 -31.42857,31.42857 -17.35752,0 -31.42857,-14.07105 -31.42857,-31.42857 0,-17.35752 14.07105,-31.42857 31.42857,-31.42857 17.35752,0 31.42857,14.07105 31.42857,31.42857 z" />
-    <path
-       d="m 374.28572,596.64789 c 0,17.35752 -14.07105,31.42857 -31.42857,31.42857 -17.35752,0 -31.42857,-14.07105 -31.42857,-31.42857 0,-17.35752 14.07105,-31.42857 31.42857,-31.42857 17.35752,0 31.42857,14.07105 31.42857,31.42857 z"
-       sodipodi:ry="31.428572"
-       sodipodi:rx="31.428572"
-       sodipodi:cy="596.64789"
-       sodipodi:cx="342.85715"
-       id="path3771"
-       style="fill:url(#radialGradient3779);fill-opacity:1;stroke:#000000;stroke-opacity:1"
-       sodipodi:type="arc" />
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient3783);fill-opacity:1;stroke:none"
-       id="path3781"
-       sodipodi:cx="342.85715"
-       sodipodi:cy="596.64789"
-       sodipodi:rx="31.428572"
-       sodipodi:ry="31.428572"
-       d="m 374.28572,596.64789 c 0,17.35752 -14.07105,31.42857 -31.42857,31.42857 -17.35752,0 -31.42857,-14.07105 -31.42857,-31.42857 0,-17.35752 14.07105,-31.42857 31.42857,-31.42857 17.35752,0 31.42857,14.07105 31.42857,31.42857 z"
-       transform="matrix(0.08299773,0.05538714,-0.1829738,0.27418656,402.0601,399.46436)" />
-  </g>
-</svg>
diff --git a/examples/mnit_ballz/assets/images/ball.png b/examples/mnit_ballz/assets/images/ball.png
deleted file mode 100644 (file)
index 0f92733..0000000
Binary files a/examples/mnit_ballz/assets/images/ball.png and /dev/null differ
diff --git a/examples/mnit_ballz/assets/images/horizontal_wall.png b/examples/mnit_ballz/assets/images/horizontal_wall.png
deleted file mode 100644 (file)
index 7ba6c68..0000000
Binary files a/examples/mnit_ballz/assets/images/horizontal_wall.png and /dev/null differ
diff --git a/examples/mnit_ballz/assets/images/vertical_wall.png b/examples/mnit_ballz/assets/images/vertical_wall.png
deleted file mode 100644 (file)
index da42302..0000000
Binary files a/examples/mnit_ballz/assets/images/vertical_wall.png and /dev/null differ
diff --git a/examples/mnit_ballz/org.nitlanguage.ballz.txt b/examples/mnit_ballz/org.nitlanguage.ballz.txt
deleted file mode 100644 (file)
index c7a110a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Categories:Nit
-License:Apache2
-Web Site:http://nitlanguage.org
-Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/examples/mnit_ballz
-Issue Tracker:https://github.com/nitlang/nit/issues
-
-Summary:A Sensor Demo
-Description:
-Demonstration of the mnit+android sensor API.
-Control a ball with tap, tilt, obscur, etc.
-.
diff --git a/examples/mnit_ballz/package.ini b/examples/mnit_ballz/package.ini
deleted file mode 100644 (file)
index 9db4745..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[package]
-name=mnit_ballz
-tags=game
-maintainer=Romain Chanoir <romain.chanoir@viacesi.fr>
-license=Apache-2.0
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/examples/mnit_ballz/
-git=https://github.com/nitlang/nit.git
-git.directory=examples/mnit_ballz/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
-apk=http://nitlanguage.org/fdroid/apk/ballz.apk
diff --git a/examples/mnit_ballz/res/raw/bounce.ogg b/examples/mnit_ballz/res/raw/bounce.ogg
deleted file mode 100644 (file)
index bcd66dd..0000000
Binary files a/examples/mnit_ballz/res/raw/bounce.ogg and /dev/null differ
diff --git a/examples/mnit_ballz/res/raw/walld.wav b/examples/mnit_ballz/res/raw/walld.wav
deleted file mode 100644 (file)
index f61d065..0000000
Binary files a/examples/mnit_ballz/res/raw/walld.wav and /dev/null differ
diff --git a/examples/mnit_ballz/src/assets.nit b/examples/mnit_ballz/src/assets.nit
deleted file mode 100644 (file)
index e823284..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-# this file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-# All the assets needed by the appplication, regrouped in one class
-module assets
-
-import app::audio
-import mnit::assets
-
-
-# Contains all the assets
-class Assets
-
-       # Sound for the wall destruction
-       var wall_destruction = new Sound("walld.wav")
-
-       # Sound when the ball bounce
-       var bounce = new Sound("bounce.ogg")
-
-       # Image of the ball
-       var ball: Image is noinit
-
-       # Image for the horizontal walls
-       var horizontal_wall: Image is noinit
-
-       # Image for the vertical walls
-       var vertical_wall: Image is noinit
-
-       # Loads all the assets
-       fun load do
-               ball = app.load_image("images/ball.png")
-               horizontal_wall = app.load_image("images/horizontal_wall.png")
-               vertical_wall = app.load_image("images/vertical_wall.png")
-               wall_destruction.load
-               bounce.load
-       end
-end
diff --git a/examples/mnit_ballz/src/ballz_android.nit b/examples/mnit_ballz/src/ballz_android.nit
deleted file mode 100644 (file)
index ee41e9c..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-# this file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-
-# Android part of mnit_ballz
-module ballz_android is
-       app_version(0, 2, git_revision)
-       app_name("Ballz")
-       app_namespace "org.nitlanguage.ballz"
-       android_api_target 19
-end
-
-import android::portrait
-import android::sensors
-import display
-import mnit::android
-
-redef class App
-
-       # The game
-       var game: nullable Game is noautoinit
-
-       redef fun run do
-               accelerometer.enabled = true
-               accelerometer.event_rate = 10000
-               magnetic_field.enabled = true
-               gyroscope.enabled = true
-               light.enabled = true
-               proximity.enabled = true
-               maximum_fps = 50.0
-               sensors_support_enabled = true
-               super
-       end
-
-       redef fun on_create
-       do
-               super
-               var display = self.display.as(not null)
-               game = new Game(display.width.to_f, display.height.to_f)
-       end
-
-       redef fun frame_core(display)
-       do
-               var game = game
-               if game != null then
-                       game.do_turn
-                       game.draw(display, assets)
-               end
-       end
-
-       redef fun input(ie)
-       do
-               if paused then return false
-               if ie isa QuitEvent then
-                       quit = true
-                       return true
-               end
-               var game = game
-               if game != null then
-                       return game.input(ie)
-               end
-               return false
-       end
-end
-
-redef class Ball
-
-       redef fun intercepts(event)
-       do
-               if event isa ASensorAccelerometer then
-                       acceleration(event.x, event.y)
-               else if event isa ASensorMagneticField then
-                       #deal with Magnetic field sensor
-                       #print "ASensorMagneticField : x = " + event.x.to_s + " y = " + event.y.to_s + " z = " + event.z.to_s
-               else if event isa ASensorGyroscope then
-                       #deal with Gyroscope sensor
-                       #print "ASensorGyroscope : x = " + event.x.to_s + " y = " + event.y.to_s + " z = " + event.z.to_s
-               else if event isa ASensorLight then
-                       #deal with light sensor
-                       #print "ASensorLight : light = " + event.light.to_s
-               else if event isa ASensorProximity then
-                       #deal with proximity sensor
-                       #print "ASensorProximity : distance = " + event.distance.to_s
-               else if event isa MotionEvent then
-               end
-               return true
-       end
-end
-
-
-redef class Game
-
-       redef fun input(ie)
-       do
-               if ie isa ASensorAccelerometer or ie isa MotionEvent then
-                       ball.intercepts(ie)
-                       return true
-               end
-               return false
-       end
-end
diff --git a/examples/mnit_ballz/src/ballz_linux.nit b/examples/mnit_ballz/src/ballz_linux.nit
deleted file mode 100644 (file)
index f3a3db6..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-# this file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Linux part of mnit_ballz
-module ballz_linux
-
-import mnit::linux
-import display
-
-
-redef class App
-
-       private var up_arrow_down = false
-       private var down_arrow_down = false
-       private var left_arrow_down = false
-       private var right_arrow_down = false
-       private var game: nullable Game is noautoinit
-
-       redef fun run
-       do
-               maximum_fps = 50.0
-               super
-       end
-
-       redef fun on_create
-       do
-               super
-               var display = self.display.as(not null)
-               game = new Game(display.width.to_f, display.height.to_f)
-       end
-
-       redef fun frame_core(display)
-       do
-               if up_arrow_down then input(new SDLKeyEvent("up", true))
-               if down_arrow_down then input(new SDLKeyEvent("down", true))
-               if left_arrow_down then input(new SDLKeyEvent("left", true))
-               if right_arrow_down then input(new SDLKeyEvent("right", true))
-
-               var game = game
-               if game != null then
-                       game.do_turn
-                       game.draw(display, assets)
-               end
-       end
-
-       redef fun input(ie)
-       do
-               if ie isa QuitEvent then
-                       quit = true
-                       return true
-               end
-               var game = game
-               if game != null then
-                       return game.input(ie)
-               end
-               return false
-       end
-end
-
-redef class Ball
-
-       redef fun intercepts(event)
-       do
-               var value = 5.0
-               if event isa SDLKeyEvent then
-                       if event.is_arrow_left then
-                               acceleration(value, 0.0)
-                               app.left_arrow_down = event.is_down
-                       end
-                       if event.is_arrow_right then
-                               acceleration(-value, 0.0)
-                               app.right_arrow_down = event.is_down
-                       end
-                       if event.is_arrow_up then
-                               acceleration(0.0, -value)
-                               app.up_arrow_down = event.is_down
-                       end
-                       if event.is_arrow_down then
-                               acceleration(0.0, value)
-                               app.down_arrow_down = event.is_down
-                       end
-               end
-               return false
-       end
-end
-
-redef class Game
-
-       redef fun input(ie)
-       do
-               ball.intercepts(ie)
-               return false
-       end
-end
diff --git a/examples/mnit_ballz/src/collision.nit b/examples/mnit_ballz/src/collision.nit
deleted file mode 100644 (file)
index 825cedc..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Geometric computations around vectors and points for collision detection
-module collision
-
-import geometry
-
-# trigonometry
-
-# Get the distance between `p1` and `p2`
-fun distance(p1, p2: Point[Float]): Float
-do
-       var x = p1.x - p2.x
-       var y = p1.y - p2.y
-       return ( x * x + y * y ).sqrt
-end
-
-# Get the magnitude (length) of `vector`
-fun magnitude(vector: Point[Float]): Float do return ( vector.x * vector.x + vector.y * vector.y ).sqrt
-
-# Get the unit vector of `vector`
-fun unit_vector(vector: Point[Float]): Point[Float] do return new Point[Float](vector.x / magnitude(vector), vector.y / magnitude(vector))
-
-# Get the dot product of vectors `v1` and `v2`
-fun dot_product(v1, v2: Point[Float]): Float do return v1.x * v2.x + v1.y * v2.y
-
-# Get the vector between `start_point` and `end_point`
-fun vector_between(start_point, end_point: Point[Float]): Point[Float] do return new Point[Float](end_point.x - start_point.x, end_point.y - start_point.y)
-
-# Returns the point on a line with endpoints `l1` and `l2` closest to `center`
-fun point_closest_to_line(center, l1, l2: Point[Float]): Point[Float]
-do
-       var luvector = unit_vector(vector_between(l1, l2))
-       var l_to_ball = vector_between(l1, center)
-
-       var projection = dot_product(l_to_ball, luvector)
-
-       if projection <= 0.0 then return l1
-       if projection >= distance(l1, l2) then return l2
-       return new Point[Float](l1.x + luvector.x * projection, l1.y + luvector.y * projection)
-end
-
-# Is the ball with the `center` and `radius` intersecting the line with the endpoints `l1` and `l2`?
-fun is_intersecting(center, l1, l2: Point[Float], radius: Float): Bool
-do
-       var closest = point_closest_to_line(center, l1, l2)
-       var distance = distance(center, closest)
-       return distance < radius
-end
-
-# Bouncing function, returns the new point of the center of the ball
-fun bounce(center, l1, l2, offset: Point[Float]): Point[Float]
-do
-       var bln = bounce_line_normal(center, l1, l2)
-       var dot = dot_product(offset, bln)
-       return new Point[Float](offset.x - (2.0 * dot * bln.x), offset.y - (2.0 * dot * bln.y))
-end
-
-private fun bounce_line_normal(center, l1, l2: Point[Float]): Point[Float]
-do
-       var p = point_closest_to_line(center, l1, l2)
-       var v = vector_between(p, center)
-       return unit_vector(v)
-end
-
-# Rotate `p` around `center` through `angle`
-fun rotate_point(p, center: Point[Float], angle: Float): Point[Float]
-do
-       var s = angle.sin
-       var c = angle.cos
-
-       var nx = c * (p.x - center.x) - s * (p.y - center.y) + center.x
-       var ny = s * (p.x - center.x) + c * (p.y - center.y) + center.y
-       return new Point[Float](nx, ny)
-end
diff --git a/examples/mnit_ballz/src/display.nit b/examples/mnit_ballz/src/display.nit
deleted file mode 100644 (file)
index 1d63189..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-# this file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Handles the drawing of all the game
-module display
-
-import game_logic
-
-redef class Ball
-
-       # Draw `self` onto `display` with image from `assets`
-       fun draw(display: Display, assets: Assets)
-       do
-               display.blit_centered(assets.ball, center.x, center.y)
-       end
-end
-
-redef class Wall
-
-       # Draw `self` onto `display` with image from `assets`
-       fun draw(display: Display, assets: Assets)
-       do
-               display.blit_rotated(assets.vertical_wall, center.x, center.y, angle)
-       end
-end
-
-redef class Game
-
-       # Draw all the entities onto `display`
-       fun draw(display: Display, assets: Assets)
-       do
-               display.clear (0.0, 0.0, 0.0)
-               ball.draw(display, assets)
-               for wall in walls do wall.draw(display, assets)
-       end
-end
diff --git a/examples/mnit_ballz/src/game_logic.nit b/examples/mnit_ballz/src/game_logic.nit
deleted file mode 100644 (file)
index 38d7682..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-#this file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# All the logic of the game
-module game_logic
-
-import assets
-import objects
-import geometry::quadtree
-import collision
-
-redef class Ball
-
-       # Scale for drawing the image of `self`
-       var scale = 1.0
-
-       # ASensorProximity value for modifying `scale`
-       # Not used yet
-       var scale_proximity_modifier = 6.0
-
-       # Radius of `self`
-       var radius = 32.0
-
-       # Movement vector of `self`
-       var offset = new Point[Float](0.0, 0.0)
-
-       # Calculates the acceleration of `self`
-       fun acceleration(x,y: Float)
-       do
-               var max_offset = 10.0
-               var max_value = 9.80
-               var offset_x = offset.x - x/max_value
-               var offset_y = offset.y + y/max_value
-               if offset_x > max_offset then offset_x = max_offset
-               if offset_x < -max_offset then offset_x = -max_offset
-               if offset_y > max_offset then offset_y = max_offset
-               if offset_y < -max_offset then offset_y = -max_offset
-               offset = new Point[Float](offset_x, offset_y)
-       end
-
-       # Do the collision detection, then move `self`consequently
-       fun do_turn(game: Game)
-       do
-               offset = new Point[Float](offset.x * 0.98, offset.y * 0.98)
-               var np = collision(game.quadtree)
-               if np != null then
-                       offset = np
-                       center = new Point[Float](center.x + offset.x, center.y + offset.y)
-               else
-                       center = new Point[Float](center.x + offset.x, center.y + offset.y)
-               end
-       end
-
-       # Collision detection
-       fun collision(quadtree: SQuadTree[OrientedLine]): nullable Point[Float]
-       do
-
-               var nx = self.center.x + offset.x
-               var ny = self.center.y + offset.y
-               var new_center = new Point[Float](nx, ny)
-               var effective_radius = radius*scale
-               # Lines intersecting with the ball
-               var intersecting_lines = new Array[OrientedLine]
-
-               # Line intersecting closest to the ball
-               var intersecting_line: nullable OrientedLine = null
-
-               # closest point of the intersecting line
-               var closest_point: nullable Point[Float] = null
-
-               # get the intersecting lines with help of the quadtree
-               var lines = quadtree.items_overlapping(new_center.padded(effective_radius))
-               for l in lines do
-                       if is_intersecting(new_center, l.point_left, l.point_right, effective_radius) then
-                               intersecting_lines.add(l)
-                       end
-               end
-
-               # get the line closest to the ball from the intersecting lines, setting the closest point
-               var min_dist = 100.0
-               if intersecting_lines.length >= 2 then
-                       for l in intersecting_lines do
-                               var closest = point_closest_to_line(new_center, l.point_left, l.point_right)
-                               var distance = distance(closest, new_center)
-                               if distance < min_dist then
-                                       min_dist = distance
-                                       intersecting_line = l
-                                       closest_point = closest
-                               end
-                       end
-               else if intersecting_lines.length == 1 then
-                       intersecting_line = intersecting_lines[0]
-                       closest_point = point_closest_to_line(new_center, intersecting_line.point_left, intersecting_line.point_right)
-               end
-
-               if intersecting_line != null and closest_point != null then
-                       return bounce(center, intersecting_line.point_left, intersecting_line.point_right, offset)
-               end
-               return null
-       end
-
-       # Event interception
-       fun intercepts(event: InputEvent): Bool is abstract
-end
-
-# The core of the game
-class Game
-
-       # The Ball!
-       var ball: Ball is noinit
-
-       # List of walls in the level
-       var walls: Array[Wall] is noinit
-
-       # Width of the display
-       var width: Float
-
-       # Heightof the display
-       var height: Float
-
-       # Quadtree used for collision detection
-       var quadtree: SQuadTree[OrientedLine] is noinit
-
-       init
-       do
-               ball = new Ball(new Point[Float](width/2.0, height/2.0))
-               # Walls initialisation
-               var walla = new Wall(new Point[Float](width/4.0, height/4.0), pi/3.0, 1.0)
-               var wallb = new Wall(new Point[Float](width*0.75, height/4.0), 0.0, 1.0)
-               var wallc = new Wall(new Point[Float](width/4.0, height*0.75), 0.0, 1.0)
-               var walld = new Wall(new Point[Float](width*0.75, height*0.75), pi/3.0, 1.0)
-               walls = new Array[Wall].with_items(walla, wallb, wallc, walld)
-
-               # adding screen bordures
-               var i = new Point[Float](0.0,0.0)
-               var a = new Point[Float](0.0, height/2.0)
-               var b = new Point[Float](width/2.0, 0.0)
-               var c = new Point[Float](width, height/2.0)
-               var d = new Point[Float](width/2.0, height)
-
-               var l1 = new OrientedLine(i, i, pi/2.0, height, a)
-               var l2 = new OrientedLine(i, i, 0.0, width, b)
-               var l3 = new OrientedLine(i, i, pi/2.0, height, c)
-               var l4 = new OrientedLine(i, i, 0.0, width, d)
-
-               quadtree = new SQuadTree[OrientedLine](5, width, height)
-               for w in walls do for l in w.lines do
-                       quadtree.add(l)
-               end
-               quadtree.add(l1)
-               quadtree.add(l2)
-               quadtree.add(l3)
-               quadtree.add(l4)
-       end
-
-       # Only calls `do_turn` of the ball for the moment
-       fun do_turn do ball.do_turn(self)
-
-       # Input gestion
-       fun input(ie: InputEvent): Bool do return false
-end
-
-redef class App
-
-       # Assets used in all the app
-       var assets = new Assets
-
-       redef fun on_create do
-               super
-               assets.load
-       end
-end
diff --git a/examples/mnit_ballz/src/objects.nit b/examples/mnit_ballz/src/objects.nit
deleted file mode 100644 (file)
index d8e1686..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Module containing all objects of the game
-module objects
-
-import geometry
-import geometry::polygon
-import geometry::boxes
-import collision
-
-# The ball is the main character of the game!
-class Ball
-       # Center of the ball
-       var center: Point[Float] is writable
-end
-
-# Walls make the ball bounce on them
-class Wall
-       # Coordinates of the center of the wall
-       var center: Point[Float]
-
-       # Angle in radian
-       var angle: Float
-
-       # Scale for drawing `self`
-       var scale: Float
-
-       # Width of `self`
-       var width: Float is noautoinit
-
-       # Height of `self`
-       var height: Float is noautoinit
-
-       # Lines composing `self`
-       var lines: Array[OrientedLine] is noautoinit
-
-       # Initialize `self` with all its lines from `center` and `angle`
-       init do
-               self.height = 128.0
-               self.width = 32.0
-               var i = new Point[Float](0.0, 0.0)
-               var j = new Point[Float](0.0, 0.0)
-
-               var a = new Point[Float]((center.x - width/2.0), center.y)
-               var b = new Point[Float]((center.x), (center.y - height/2.0))
-               var c = new Point[Float]((center.x + width/2.0), center.y)
-               var d = new Point[Float]((center.x), (center.y + height/2.0))
-
-               var l1 = new OrientedLine(i, j, angle - pi/2.0, height * scale.to_f, rotate_point(a, center, angle))
-               var l2 = new OrientedLine(i, j, angle, width * scale.to_f, rotate_point(b, center, angle))
-               var l3 = new OrientedLine(i, j, angle - pi/2.0, height * scale.to_f, rotate_point(c, center, angle))
-               var l4 = new OrientedLine(i, j, angle, width * scale.to_f, rotate_point(d, center, angle))
-               lines = new Array[OrientedLine]
-               lines.add_all([l1, l2, l3, l4])
-       end
-end
-
-# A line represented with a center and an angle
-class OrientedLine
-       super Line[Float]
-       redef type P: Point[Float]
-
-       # Angle in radian
-       var angle: Float is writable
-
-       # Length
-       var length: Float
-
-       # Center
-       var center: Point[Float]
-
-       redef fun point_left
-       do
-               var luv = unit_vector(new Point[Float](angle.cos, angle.sin))
-               var offset_from_center = new Point[Float](luv.x * (length / 2.0), luv.y * (length / 2.0))
-               return new Point[Float](center.x + offset_from_center.x, center.y + offset_from_center.y)
-       end
-
-       redef fun point_right
-       do
-               var luv = unit_vector(new Point[Float](angle.cos, angle.sin))
-               var offset_from_center = new Point[Float](luv.x * length / 2.0, luv.y * length / 2.0)
-               return new Point[Float](center.x - offset_from_center.x, center.y - offset_from_center.y)
-       end
-
-       redef fun left do return point_left.x.min(point_right.x)
-       redef fun right do return point_left.x.max(point_right.x)
-end
diff --git a/examples/mnit_dino/Makefile b/examples/mnit_dino/Makefile
deleted file mode 100644 (file)
index dbc90b5..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-default: linux
-
-linux:
-       mkdir -p bin
-       ../../bin/nitc -o bin/dino src/dino_linux.nit
-
-android: android/res/
-       mkdir -p bin
-       ../../bin/nitc -o bin/dino.apk src/dino_android.nit
-
-android-release: android/res/
-       mkdir -p bin
-       ../../bin/nitc -o bin/dino.apk src/dino_android.nit --release
-
-../../contrib/inkscape_tools/bin/svg_to_icons:
-       $(MAKE) -C ../../contrib/inkscape_tools
-
-android/res/: ../../contrib/inkscape_tools/bin/svg_to_icons
-       mkdir -p android/res/
-       ../../contrib/inkscape_tools/bin/svg_to_icons art/icon.svg --android --out android/res/
-
-doc:
-       mkdir -p doc
-       ../../bin/nitdoc -d doc/ src/dino.nit src/dino_linux.nit
-
-pngs:
-       mkdir -p assets/images
-       tools/svg-to-pngs art/drawing.svg assets/images
-
-clean:
-       rm -rf bin/ doc/ res/
diff --git a/examples/mnit_dino/README.md b/examples/mnit_dino/README.md
deleted file mode 100644 (file)
index dc46a12..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Dino vs cavemen portable action game where the player plays the dino
-
-# Project Structure
-
-* `game_logic` defines, as its name implies, the full game logic and the basic entities.
-* `graphism` defines how the game is drawn on screen with fully portable code.
-* `dino` implements the the portable app structure.
-* `dino_android` and `dino_linux` adapt the portable game for specific platforms.
-* `fancy_dino` is an optional module which tweaks how the dino itself is drawn on screen
-  to create the flat rotation effect.
-* `splash` defines the splash screen used while the app loads.
diff --git a/examples/mnit_dino/art/drawing.svg b/examples/mnit_dino/art/drawing.svg
deleted file mode 100644 (file)
index 693b704..0000000
+++ /dev/null
@@ -1,3353 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="774.85315"
-   height="339.81699"
-   id="svg2"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="drawing.svg">
-  <defs
-     id="defs4">
-    <filter
-       inkscape:collect="always"
-       id="filter4348"
-       x="-0.042"
-       width="1.084"
-       y="-0.25200002"
-       height="1.504">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.7850001"
-         id="feGaussianBlur4350" />
-    </filter>
-  </defs>
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="1.9999999"
-     inkscape:cx="75.581286"
-     inkscape:cy="138.95275"
-     inkscape:document-units="px"
-     inkscape:current-layer="0dino"
-     showgrid="false"
-     inkscape:window-width="1855"
-     inkscape:window-height="1056"
-     inkscape:window-x="65"
-     inkscape:window-y="1048"
-     inkscape:window-maximized="1"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     showguides="true"
-     inkscape:guide-bbox="true" />
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-1216.2708,-585.16711)">
-    <g
-       id="0splash_text"
-       inkscape:label="#g4548">
-      <g
-         style="font-size:17.31080437px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#f4e3d7;fill-opacity:1;stroke:none;font-family:Sans"
-         id="text4642">
-        <g
-           id="g4864"
-           style="fill:#f4e3d7">
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4652"
-             d="m 1745.9688,638.6875 c 6.2058,3.04822 1.2461,13.63407 7.125,13.5 5.3352,-0.24581 0.8008,-10.45426 6.8124,-13.5 5.5485,-6.39346 -7.4797,-2.04669 -7.4987,-0.35888 -0.4476,-4.22732 -12.5043,-4.24745 -6.4387,0.35888 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4654"
-             d="m 1760.625,638.53125 c -8.3465,0.33825 -7.2049,15.23661 1.2812,13.875 8.2443,-0.5343 7.2587,-15.05052 -1.2812,-13.875 z m 0.4375,5.3125 c 2.2558,0.3029 -0.1236,5.39204 -0.5313,2.03125 0.014,-0.70613 -0.095,-1.63715 0.5313,-2.03125 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4656"
-             d="m 1766,640.71875 c -0.5628,4.16128 -0.6449,12.00422 5.4375,11.71875 4.7724,0.13555 8.0655,-0.36695 6.4687,-6.25 3.5815,-7.43731 -7.2986,-11.3205 -5.5312,-2.46875 1.0957,1.63146 -1.2605,5.52087 -0.8438,1.5 2.2516,-5.69509 -3.668,-9.74667 -5.5312,-4.5 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4658"
-             d="m 1777.1875,637.5625 c -3.2735,8.18088 8.2371,9.37228 5.4375,0.6875 2.2387,-3.89624 -6.864,-3.74193 -5.4375,-0.6875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4660"
-             d="m 1787.9375,638.53125 c -5.5706,-0.79599 -7.2178,1.57175 -6.0937,7.1875 -3.2295,8.14212 8.4731,8.99478 5.5624,0.46875 -0.9293,-3.31527 2.4534,-2.34553 4.0626,-0.90625 -0.2916,-3.31321 1.2215,-7.63899 -3.5313,-6.75 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4662"
-             d="m 1794,638.53125 c -8.0838,0.21378 -7.841,13.92443 0.2188,13.875 2.9884,0.13231 7.5552,-0.54328 6.1874,-4.5625 1.639,-3.81628 -1.0767,-10.16004 -6.4062,-9.3125 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4664"
-             d="m 1804.7812,637.03125 c 1.4103,4.64181 -3.1686,15.27284 3,15.15625 4.3013,1.34567 9.5731,-1.06863 9.4376,-6.0625 0.6257,-3.92071 -2.6176,-8.46388 -6.875,-7.53125 2.3424,-4.77529 -6.2825,-4.95884 -5.5626,-1.5625 z m 6.0313,6.78125 c 2.426,0.9295 -0.7664,5.77869 -0.4687,1.25 0.044,-0.4641 0.096,-1.00119 0.4687,-1.25 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4666"
-             d="m 1821.125,638.53125 c -8.0315,0.24248 -7.8288,13.92777 0.25,13.875 2.9839,0.13014 7.5537,-0.53884 6.1875,-4.5625 1.6247,-3.92786 -1.0914,-10.11753 -6.4375,-9.3125 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4668"
-             d="m 1826.4688,637.03125 c 0.581,4.80435 -1.2898,12.06053 1,15.15625 7.6803,2.0033 3.5649,-7.78917 4.5624,-12.46875 2.3572,-5.31561 -5.2272,-6.80605 -5.5624,-2.6875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4670"
-             d="m 1837.2188,638.53125 c -6.266,-1.18984 -6.7664,2.62383 -6,8.1875 -2.3459,8.63241 9.0903,6.36736 5.5624,-1.53125 -0.1277,-2.63111 1.9824,-0.34455 0.8126,1.53125 -2.3354,8.62982 9.0465,6.35711 5.5312,-1.53125 0.4668,-3.58754 -1.9257,-7.25391 -5.9062,-6.65625 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4672"
-             d="m 1846.875,638.53125 c -5.1226,0.45848 -6.6693,7.28758 -4.1562,11.09375 -1.1337,3.99838 1.01,6.56599 4.9687,6.15625 6.2525,0.52611 7.275,-7.17167 6.3437,-11.75 1.604,-5.64266 -2.1583,-5.48176 -6.4687,-5.53125 -0.2295,0.002 -0.4595,-0.0103 -0.6875,0.0312 z m 0.7812,5.28125 c 2.2967,0.37023 -0.3356,5.23846 -0.4687,1.78125 0.018,-0.62441 -0.055,-1.48929 0.4687,-1.78125 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4674"
-             d="m 1858.6875,637.03125 c 1.4103,4.64181 -3.1687,15.27284 3,15.15625 5.5221,1.65734 0.3867,-7.1933 3.3125,-8.28125 -1.2788,5.09501 1.0769,11.43477 5.625,7.28125 0.3353,-4.28335 1.1257,-12.84335 -5.375,-12.6875 0.1708,-2.35549 -5.7854,-6.57486 -6.5625,-1.46875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4676"
-             d="m 1869.5938,640.71875 c -0.5443,4.16282 -0.6445,12.00685 5.4374,11.71875 4.7712,0.13508 8.0661,-0.36532 6.4688,-6.25 3.5814,-7.43731 -7.2986,-11.3205 -5.5312,-2.46875 1.0909,1.63421 -1.2513,5.53015 -0.8438,1.5 2.2516,-5.69509 -3.668,-9.74667 -5.5312,-4.5 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4678"
-             d="m 1886.6875,638.53125 c -6.2659,-1.18984 -6.7663,2.62383 -6,8.1875 -2.3458,8.63241 9.0903,6.36736 5.5625,-1.53125 0.2922,-3.31217 1.6612,1.09551 0.8125,2.53125 -1.1136,8.58694 9.1145,3.83287 5.5313,-3.25 0.2677,-3.42942 -2.363,-6.45523 -5.9063,-5.9375 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4680"
-             d="m 1891.6875,638.03125 c -3.061,2.62576 0.6421,6.16407 0.062,10.03125 -0.186,4.54021 7.2443,5.25556 8.7188,3.125 -1.5232,-6.40968 -4.2596,-4.79951 0,-10.25 -0.3238,-1.75585 -7.736,-8.787 -8.7813,-2.90625 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4682"
-             d="m 1903.8438,638.53125 c -8.0226,0.19826 -7.8694,13.92373 0.2187,13.875 2.9779,0.14038 7.5479,-0.54956 6.1875,-4.5625 1.6209,-3.76912 -1.0295,-10.19034 -6.4062,-9.3125 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4684"
-             d="m 1915.4062,637.03125 c 0.5189,2.76281 -4.5139,0.70945 -5.4687,3.65625 -3.7171,4.43808 -0.2461,13.53436 6.1875,11.5 8.059,2.12152 3.7536,-8.12138 4.8125,-13 2.3787,-4.89824 -5.6873,-6.01556 -5.5313,-2.15625 z m -0.75,6.78125 c 2.0302,0.54885 -0.1933,5.52441 -0.5624,1.9375 0.063,-0.65851 -0.092,-1.60792 0.5624,-1.9375 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4686"
-             d="m 1925.5938,637.03125 c 1.4102,4.64181 -3.1687,15.27284 3,15.15625 4.2849,1.32626 9.6055,-1.03032 9.4687,-6.0625 0.624,-3.92794 -2.6382,-8.45171 -6.875,-7.53125 2.3498,-4.78037 -6.3191,-4.96017 -5.5937,-1.5625 z m 6.1874,6.78125 c 1.8521,0.55701 -0.1174,5.40849 -0.5937,2.0625 0.049,-0.6393 -0.1634,-1.83448 0.5937,-2.0625 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4688"
-             d="m 1935.6875,641.46875 c 3.0664,5.66849 4.021,9.00549 0.7187,12.03125 -0.5193,3.98263 6.8918,2.75607 7.7188,-0.90625 0.3332,-4.27231 8.6864,-13.94929 2.625,-13.875 -6.2281,2.61502 -2.9847,2.41567 -9.2188,0 -3.1574,-0.0619 -3.5057,-0.54486 -1.8437,2.75 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4690"
-             d="m 1747.7812,660.15625 c -3.4194,-0.17421 -6.2041,3.54339 -4.6562,6.71875 -0.9639,1.6939 -1.3818,7.51333 2.8438,7 4.1504,1.52161 9.7936,-2.29223 7.4374,-6.875 0.2805,-5.23354 0.8221,-6.85514 -5.625,-6.84375 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4692"
-             d="m 1757.1875,660.15625 c -3.1438,0.1097 -5.8566,1.39541 -4.6875,5.0625 -1.5191,3.42352 -0.5538,8.87279 4.125,8.84375 3.4592,-0.59361 8.9194,1.30768 7.1562,-4.21875 0.845,-4.59723 -0.8274,-10.41722 -6.5937,-9.6875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4694"
-             d="m 1762.0312,663.0625 c 2.4756,4.11422 1.7819,12.81375 8.5313,10.78125 1.101,-3.36341 7.1278,-12.5413 3.4063,-13.46875 -6.5447,-0.10237 -4.1065,6.14051 -8.4376,0 -2.5863,0.41398 -6.0397,-1.51016 -3.5,2.6875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4696"
-             d="m 1778.0312,660.15625 c -3.1669,0.11067 -5.8557,1.37609 -4.6874,5.0625 -1.4541,3.43173 -0.566,8.86583 4.125,8.84375 3.4653,-0.59824 8.9529,1.32055 7.1874,-4.21875 0.7482,-4.6998 -0.7904,-10.36031 -6.625,-9.6875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4698"
-             d="m 1788.4688,660.15625 c -5.1438,0.50683 -6.6275,7.33726 -4.125,11.15625 -0.719,3.42022 0.2517,6.2786 4,6.09375 5.5815,1.12176 8.4721,-4.99683 7.3124,-9.75 0.9537,-5.50965 -0.162,-8.29167 -5.8437,-7.5 -0.4479,-0.007 -0.8963,-0.0712 -1.3437,0 z m 0.875,5.28125 c 1.8907,0.24073 0.053,5.13352 -0.5313,1.96875 0.055,-0.61673 -0.1665,-1.67096 0.5313,-1.96875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4700"
-             d="m 1800.1875,660.15625 c -8.0428,0.25229 -7.8522,13.90514 0.2187,13.90625 2.9714,0.0883 7.5103,-0.56735 6.1876,-4.59375 1.6023,-3.90323 -1.0421,-10.0528 -6.4063,-9.3125 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4702"
-             d="m 1809.9375,660.15625 c -3.4308,-0.20636 -6.1793,3.54163 -4.6875,6.6875 -0.9016,1.81947 -1.3627,7.55677 2.9062,7.0625 4.1753,1.45922 9.7642,-2.37428 7.375,-6.9375 0.814,-3.68728 -0.116,-7.05574 -4.1874,-6.8125 -0.4707,0.0228 -0.9362,-0.0888 -1.4063,0 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4704"
-             d="m 1814.75,669.6875 c -1.6822,8.61796 10.4886,2.48217 4.7812,-2 -1.8475,0.56012 -5.8739,-1.53104 -4.7812,2 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4706"
-             d="m 1825.625,659.21875 c 1.4392,4.67539 -3.4656,15.69476 3.7188,14.625 4.0198,2.28103 0.5637,-9.4157 3.3256,-3.41981 0.7106,5.82133 12.1027,4.43861 5.6797,-1.27207 -3.2626,-2.87343 1.2728,-6.49724 -1.5679,-9.74562 -2.6755,-3.35225 -7.502,-1.851 -11.1562,-2.1875 l 0,1 0,1 z m 5.8438,3.40625 c 1.5587,0.0163 -0.7208,1.13169 0,0 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4708"
-             d="m 1836.6562,662.375 c -1.0602,4.59413 0.049,13.2528 6.75,11.53125 7.6405,2.11272 4.6749,-6.13658 5.1876,-11.0625 -1.4013,-6.38118 -8.3312,-0.59267 -5.5938,5.03125 -1.2486,3.08778 -0.7311,-4.73752 -0.7812,-5.5 1.884,-3.00481 -7.4808,-2.95197 -5.5626,0 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4710"
-             d="m 1853.75,660.15625 c -5.4989,-0.67791 -7.1182,1.60634 -6,7.21875 -3.2295,8.14212 8.4732,8.99478 5.5625,0.46875 -0.9116,-2.03089 1.5388,-3.50696 0.8125,-0.5 -3.2432,8.15281 8.4632,9.05102 5.5625,0.5 0.5969,-3.78635 -1.4138,-8.36015 -5.9375,-7.6875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4712"
-             d="m 1869.3438,660.15625 c -8.3514,0.40275 -7.1609,15.33974 1.375,13.875 8.2007,-0.65399 7.1098,-15.0085 -1.375,-13.875 z m 0.4374,5.3125 c 2.1758,0.11286 0.026,5.5039 -0.5,2.09375 -0.015,-0.677 -0.077,-1.65023 0.5,-2.09375 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4714"
-             d="m 1873.9062,663.0625 c 2.4756,4.11422 1.7819,12.81375 8.5313,10.78125 1.101,-3.36341 7.1278,-12.5413 3.4063,-13.46875 -6.5447,-0.10237 -4.1065,6.14051 -8.4376,0 -2.5863,0.41398 -6.0397,-1.51016 -3.5,2.6875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4716"
-             d="m 1890.4375,660.15625 c -8.0978,0.2726 -7.7944,14.06838 0.375,13.90625 2.9414,0.068 7.3785,-0.61422 6.0625,-4.59375 1.6731,-3.89717 -1.1746,-10.10928 -6.4375,-9.3125 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4718"
-             d="m 1901.8125,660.15625 c -3.9989,0.213 -7.7159,-0.28315 -6.0937,5.21875 -3.4507,6.69664 5.736,13.2155 5.5624,4.46875 -0.094,-1.52634 -0.7346,-5.55811 2,-4.03125 3.7888,1.03642 2.6076,-7.40271 -1.4687,-5.65625 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4720"
-             d="m 1913.2188,660.15625 c -3.1438,0.1097 -5.8566,1.39541 -4.6876,5.0625 -1.4878,3.39223 -0.6069,8.777 4.0313,8.84375 3.4787,-0.60294 9.0548,1.35015 7.2813,-4.21875 0.7756,-4.56021 -0.8422,-10.43737 -6.625,-9.6875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4722"
-             d="m 1919.0312,658.6875 c 1.4103,4.64181 -3.1686,15.27284 3,15.15625 5.4346,-0.47175 1.2446,-10.56797 2.5626,-15.15625 1.884,-3.00481 -7.4808,-2.95197 -5.5626,0 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4724"
-             d="m 1923.8438,658.6875 c 1.4102,4.64181 -3.1687,15.27284 3,15.15625 5.4345,-0.47175 1.2445,-10.56797 2.5624,-15.15625 1.8841,-3.00481 -7.4807,-2.95197 -5.5624,0 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4726"
-             d="m 1939.1875,660.15625 c -8.2722,0.40045 -7.2139,15.15871 1.25,13.90625 8.3146,-0.50984 7.3073,-15.06514 -1.25,-13.90625 z m 0.5937,5.3125 c 2.3673,1.27218 -1.0167,5.52178 -0.6562,1.21875 0.1,-0.39868 0.094,-1.16857 0.6562,-1.21875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4728"
-             d="m 1949.1562,656.71875 c -3.1713,-0.44106 -3.1447,4.12304 -5.6562,3.65625 1.1738,4.48241 0.1304,11.18207 3.5,13.46875 6.3003,0.4982 2.2131,-9.3911 6.125,-11.28125 0.9062,-3.32532 1.2911,-7.32956 -3.9688,-5.84375 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4730"
-             d="m 1775.2188,681.3125 c -3.1767,2.59348 0.7125,6.1606 0.031,10 -0.1966,4.51901 7.2221,5.32585 8.7188,3.15625 -1.474,-6.42227 -4.2438,-4.80897 0,-10.25 -0.3259,-1.75992 -7.6926,-8.79408 -8.75,-2.90625 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4732"
-             d="m 1781.9688,680.3125 c 1.4102,4.64181 -3.1687,15.27284 3,15.15625 5.5957,1.57217 0.2834,-6.94811 3.2812,-8.34375 0.4148,4.09868 -1.6421,10.26656 4.6562,8.34375 1.8629,-1.57866 1.1171,-6.87372 0.6563,-10.125 -0.6166,-2.59647 -3.5208,-4.02947 -6.0313,-3.46875 2.3425,-4.77529 -6.2824,-4.95884 -5.5624,-1.5625 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4734"
-             d="m 1798.0938,681.8125 c -7.8677,0.55883 -7.4753,13.89759 0.4687,13.875 3.4076,0.39932 7.1798,-1.20658 6.5625,-4.59375 0.8164,-4.57445 -1.5184,-10.12039 -7.0312,-9.28125 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4736"
-             d="m 1809.5938,681.8125 c -5.5186,-0.77938 -7.104,1.61557 -6,7.1875 -3.2295,8.14212 8.4731,8.99478 5.5624,0.46875 -0.5685,-1.56124 0.9346,-3.74323 0.5626,-0.65625 -3.3113,8.20541 8.4128,9.33169 5.5624,0.65625 -0.6117,-1.91913 1.0698,-3.49218 0.5938,-0.46875 -3.2295,8.14212 8.4732,8.99478 5.5625,0.46875 1.4457,-5.2309 -4.0546,-9.65643 -8.5313,-6.9375 -0.961,-0.68321 -2.1714,-0.82363 -3.3124,-0.71875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4738"
-             d="m 1826.0312,681.3125 c -3.1766,2.59348 0.7126,6.1606 0.031,10 -0.1837,4.53105 7.2087,5.32084 8.7187,3.15625 -1.4739,-6.42227 -4.2437,-4.80897 0,-10.25 -0.3258,-1.75992 -7.6925,-8.79408 -8.75,-2.90625 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4740"
-             d="m 1837.75,681.8125 c -8.2327,0.50105 -6.9592,15.3342 1.5,13.84375 8.2958,-0.68793 7.0867,-15.15633 -1.5,-13.84375 z m 0.6562,5.28125 c 2.0654,0.39239 -0.1167,5.68731 -0.5937,1.90625 0.01,-0.71191 -0.06,-1.55993 0.5937,-1.90625 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4742"
-             d="m 1852.9688,681.8125 c -3.304,0.0389 -5.8381,3.82125 -4.1876,6.84375 -1.1041,1.54418 -1.3897,7.42417 2.8126,6.875 4.1835,1.48262 9.7599,-2.38987 7.375,-6.90625 0.4653,-5.56468 0.3989,-6.94166 -6,-6.8125 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4744"
-             d="m 1857.8125,684 c -0.8056,4.3438 -0.3438,12.60725 6.0313,11.65625 6.788,1.4019 6.3299,-3.63414 5.875,-9.1875 1.4174,-8.19965 -9.0899,-4.32387 -5.5313,2.71875 -0.8257,3.44721 -1.3064,-2.69786 -0.8437,-3.6875 2.3109,-4.72109 -6.2864,-4.86614 -5.5313,-1.5 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4746"
-             d="m 1874.9688,681.8125 c -5.5509,-0.78648 -7.1822,1.58714 -6.0626,7.1875 -3.2294,8.14212 8.4732,8.99478 5.5626,0.46875 -0.9449,-3.37695 2.3857,-2.29647 3.9687,-0.59375 -0.2702,-3.40698 1.4856,-7.98774 -3.4687,-7.0625 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4748"
-             d="m 1875.0938,684.71875 c 2.4826,4.08848 1.8094,12.77116 8.5312,10.75 1.1368,-3.36051 7.1622,-12.52608 3.4375,-13.46875 -6.564,-0.10664 -4.1338,6.06966 -8.4375,0 -2.6165,0.41337 -6.0725,-1.51387 -3.5312,2.71875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4750"
-             d="m 1886.3438,680.3125 c 0.581,4.80435 -1.2898,12.06053 1,15.15625 7.6481,1.98153 3.5286,-7.80469 4.5312,-12.46875 2.3473,-5.305 -5.1919,-6.80687 -5.5312,-2.6875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4752"
-             d="m 1890.125,684.71875 c 2.481,4.10589 1.8187,12.78808 8.5625,10.75 1.101,-3.36341 7.1278,-12.5413 3.4063,-13.46875 -6.5447,-0.10237 -4.1065,6.14051 -8.4376,0 -2.6164,0.41337 -6.0725,-1.51387 -3.5312,2.71875 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4754"
-             d="m 1906.4062,681.8125 c -7.8338,0.62767 -7.397,13.90076 0.5313,13.875 2.9892,0.1362 7.5289,-0.57725 6.1563,-4.59375 1.8092,-3.94891 -1.3292,-10.3111 -6.6876,-9.28125 z" />
-          <path
-             style="fill:#f4e3d7"
-             inkscape:connector-curvature="0"
-             id="path4756"
-             d="m 1913,680.84375 c 0.015,5.09789 0.078,9.61248 0,14.625 7.3189,2.24305 5.6003,-4.31274 5.7188,-9.09375 1.8089,-5.82594 -2.4493,-11.52411 -5.7188,-5.53125 z" />
-        </g>
-      </g>
-      <text
-         inkscape:label="#text4418"
-         inkscape:export-ydpi="192.10005"
-         inkscape:export-xdpi="192.10005"
-         inkscape:export-filename="/home/xymus/projects/mnit/tests/dino/assets/images/play_again_mobile.png"
-         sodipodi:linespacing="125%"
-         id="asdf"
-         y="650.19305"
-         x="1847.4612"
-         style="font-size:17.31080437px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="650.19305"
-           x="1847.4612"
-           id="tspan4420"
-           sodipodi:role="line">You're being hunted by</tspan><tspan
-           id="tspan4422"
-           y="671.83154"
-           x="1847.4612"
-           sodipodi:role="line">savages. Run over all of</tspan><tspan
-           id="tspan4424"
-           y="693.47009"
-           x="1847.4612"
-           sodipodi:role="line">them to survive!</tspan></text>
-    </g>
-    <g
-       id="g3781"
-       transform="matrix(0.10156811,0,0,0.10156811,1202.5788,588.80734)" />
-    <g
-       id="0javelin"
-       inkscape:label="#g3775"
-       transform="matrix(0.10156811,0,0,0.10156811,1203.9126,595.0659)">
-      <g
-         transform="translate(88.926767,-88.571427)"
-         id="g3001">
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5.51881981;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 467.70063,318.99143 0,112.60572"
-           id="path2987"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:type="star"
-           style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:4.09815788;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.99215686;stroke-dasharray:none"
-           id="path2989"
-           sodipodi:sides="3"
-           sodipodi:cx="456.58896"
-           sodipodi:cy="271.51425"
-           sodipodi:r1="17.239311"
-           sodipodi:r2="8.6196556"
-           sodipodi:arg1="0.52359878"
-           sodipodi:arg2="1.5707963"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 471.51864,280.13391 -14.92968,0 -14.92968,0 7.46484,-12.92949 7.46484,-12.92948 7.46484,12.92948 z"
-           inkscape:transform-center-y="-5.1599196"
-           transform="matrix(0.74434093,0,0,1.1972427,127.33771,-15.663089)" />
-      </g>
-      <path
-         d="m 567.14287,198.07648 c 0,80.47577 -4.79694,145.71428 -10.71428,145.71428 -5.91734,0 -10.71429,-65.23851 -10.71429,-145.71428 0,-80.47578 4.79695,-145.714282 10.71429,-145.714282 5.91734,0 10.71428,65.238502 10.71428,145.714282 z"
-         sodipodi:ry="145.71428"
-         sodipodi:rx="10.714286"
-         sodipodi:cy="198.07648"
-         sodipodi:cx="556.42859"
-         id="path3005"
-         style="fill:#d3bc5f;fill-opacity:0;stroke:none"
-         sodipodi:type="arc" />
-    </g>
-    <g
-       id="0caveman_ready"
-       inkscape:label="#g3848"
-       transform="matrix(0.10156811,0,0,0.10156811,1206.6827,583.67738)">
-      <g
-         inkscape:label="#g3831"
-         id="0caveman">
-        <path
-           transform="translate(169.41108,-114.17838)"
-           sodipodi:type="arc"
-           style="fill:#d3bc5f;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="path3767"
-           sodipodi:cx="192.14285"
-           sodipodi:cy="399.50504"
-           sodipodi:rx="34.285713"
-           sodipodi:ry="34.285713"
-           d="m 226.42857,399.50504 c 0,18.93547 -15.35024,34.28571 -34.28572,34.28571 -18.93547,0 -34.28571,-15.35024 -34.28571,-34.28571 0,-18.93548 15.35024,-34.28572 34.28571,-34.28572 18.93548,0 34.28572,15.35024 34.28572,34.28572 z" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 361.55394,319.61237 0,107.14286"
-           id="path3769"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 361.34006,426.289 -28.6056,49.54636"
-           id="path3771"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3773"
-           d="m 361.8416,426.289 28.6056,49.54636"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 360.32991,332.09228 -40.32208,23.27996"
-           id="path3775"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3777"
-           d="m 362.93931,332.09228 40.32208,23.27996"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           sodipodi:type="arc"
-           style="fill:#ff00ff;fill-opacity:0;stroke:none"
-           id="path3829"
-           sodipodi:cx="359.61429"
-           sodipodi:cy="476.57523"
-           sodipodi:rx="19.192898"
-           sodipodi:ry="231.32494"
-           d="m 378.80719,476.57523 c 0,127.75723 -8.59296,231.32493 -19.1929,231.32493 -10.59995,0 -19.1929,-103.5677 -19.1929,-231.32493 0,-127.75724 8.59295,-231.32494 19.1929,-231.32494 10.59994,0 19.1929,103.5677 19.1929,231.32494 z" />
-      </g>
-      <use
-         transform="matrix(0.96946853,0.24521577,-0.24521577,0.96946853,-68.867453,-35.58221)"
-         height="1"
-         width="1"
-         id="use3789"
-         xlink:href="#g3001"
-         y="0"
-         x="0" />
-    </g>
-    <g
-       transform="matrix(0.10156811,0,0,0.10156811,1208.414,583.95724)"
-       id="0caveman_afraid"
-       inkscape:label="#g3896">
-      <path
-         d="m 226.42857,399.50504 c 0,18.93547 -15.35024,34.28571 -34.28572,34.28571 -18.93547,0 -34.28571,-15.35024 -34.28571,-34.28571 0,-18.93548 15.35024,-34.28572 34.28571,-34.28572 18.93548,0 34.28572,15.35024 34.28572,34.28572 z"
-         sodipodi:ry="34.285713"
-         sodipodi:rx="34.285713"
-         sodipodi:cy="399.50504"
-         sodipodi:cx="192.14285"
-         id="path3767-4"
-         style="fill:#d38c5f;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         sodipodi:type="arc"
-         transform="translate(-33.62958,-116.19868)" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3769-0"
-         d="m 158.51328,317.59207 0,107.14286"
-         style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3771-6"
-         d="m 158.2994,424.2687 -28.6056,49.54636"
-         style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 158.80094,424.2687 28.6056,49.54636"
-         id="path3773-4"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:transform-center-y="-10.245755"
-         inkscape:transform-center-x="21.938845"
-         inkscape:connector-curvature="0"
-         id="path3775-7"
-         d="M 157.23601,329.21038 115.06405,309.47837"
-         style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 160.52091,329.21038 42.17196,-19.73201"
-         id="path3894"
-         inkscape:connector-curvature="0"
-         inkscape:transform-center-x="-21.938845"
-         inkscape:transform-center-y="-10.245755" />
-      <path
-         transform="translate(-203.41816,-1.2401916)"
-         sodipodi:type="arc"
-         style="fill:#ff00ff;fill-opacity:0;stroke:none"
-         id="path3829-0"
-         sodipodi:cx="359.61429"
-         sodipodi:cy="476.57523"
-         sodipodi:rx="19.192898"
-         sodipodi:ry="231.32494"
-         d="m 378.80719,476.57523 c 0,127.75723 -8.59296,231.32493 -19.1929,231.32493 -10.59995,0 -19.1929,-103.5677 -19.1929,-231.32493 0,-127.75724 8.59295,-231.32494 19.1929,-231.32494 10.59994,0 19.1929,103.5677 19.1929,231.32494 z" />
-    </g>
-    <g
-       id="0life"
-       inkscape:label="#g3015"
-       transform="matrix(0.10156811,0,0,0.10156811,1202.5788,588.80734)">
-      <path
-         sodipodi:nodetypes="ccscscc"
-         inkscape:connector-curvature="0"
-         id="path2985"
-         d="M 272.65322,631.50567 213.7214,553.40421 c 0,0 -37.66457,-52.06763 -18.02063,-78.10145 19.64394,-26.03382 71.15559,-9.3423 76.95245,15.31689 5.962,-24.62646 57.81359,-41.35072 77.45753,-15.3169 19.64394,26.03382 -18.52572,78.10146 -18.52572,78.10146 z"
-         inkscape:transform-center-y="26.033822"
-         style="fill:#ff2a2a;fill-opacity:1;stroke:#000000;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.99215686;stroke-dasharray:none" />
-    </g>
-    <g
-       id="0life_empty"
-       inkscape:label="#g3018"
-       transform="matrix(0.10156811,0,0,0.10156811,1202.5788,588.80734)">
-      <path
-         style="fill:#808080;fill-opacity:1;stroke:#000000;stroke-width:8;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.99215686;stroke-dasharray:none"
-         inkscape:transform-center-y="26.033822"
-         d="m 475.51036,631.50567 -58.93182,-78.10146 c 0,0 -37.66457,-52.06763 -18.02063,-78.10145 19.64394,-26.03382 71.15559,-9.3423 76.95245,15.31689 5.962,-24.62646 57.81359,-41.35072 77.45753,-15.3169 19.64394,26.03382 -18.52572,78.10146 -18.52572,78.10146 z"
-         id="path2988"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ccscscc" />
-    </g>
-    <g
-       transform="matrix(0.18739518,0,0,0.18739518,1249.6881,555.11955)"
-       id="0dino"
-       inkscape:label="#g3096">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3056"
-         d="m 306.59375,177.16066 c -10.92225,0.83824 -22.21496,9.45417 -22,21.21875 -2.94534,5.24854 -11.00925,2.72967 -15.5,6.0625 -5.99004,4.00265 -10.93566,9.97989 -18.5,11.0625 -21.19899,4.39872 -43.56299,-5.96458 -64.40625,1.90625 -21.0351,8.0811 -34.43119,28.27094 -44.40625,47.59375 -6.72268,14.38113 -8.50231,31.99863 -2.96875,46.9375 5.41013,6.67525 0.94783,15.09697 -3.375,21 -6.01574,7.94517 -6.37479,21.41996 3.21875,26.78125 9.25637,6.34728 21.20449,6.34758 31.75,8.75 -0.28469,14.45141 6.23359,29.64999 0.40625,43.5625 -2.59886,5.74683 -9.25843,6.72052 -14.8125,5.53125 -13.29133,-0.74154 -26.91644,0.76394 -40,-0.0937 -2.35827,-2.64991 -9.17401,-2.31838 -7.09375,2.40625 9.42125,15.25227 29.24385,17.93105 41.09375,30.4375 0.68965,2.14932 -3.94872,3.62927 -5.24271,5.50824 -7.28142,6.86748 -17.30185,11.95706 -22.00729,20.96051 -1.09534,4.62691 4.85487,4.69855 7.90625,4.375 11.93593,0.5357 21.68298,-9.32654 33.4375,-9.5 3.9365,1.78412 1.17136,7.34138 2.5,10.65625 1.21354,10.15697 -2.64377,21.03741 1.0625,30.78125 3.07186,3.93897 9.31468,-0.46315 8.5625,-4.71875 2.97468,-15.26145 12.9873,-27.61926 18.20746,-41.84244 -0.16464,-9.81041 5.44632,-20.14087 15.48004,-22.40756 14.12806,-3.6018 29.45735,-1.28412 43.84973,-4.69193 19.84165,-3.06847 40.26936,-7.59611 60.24402,-3.37057 -16.40694,33.16149 -28.88361,68.32036 -39.79291,103.63457 -8.07417,28.33624 -11.16777,61.55362 5.91791,87.30293 1.6736,2.19587 6.52819,5.35396 4.53125,8.4375 -7.71517,2.92425 -16.72294,0.0177 -23.6875,-3.6875 -8.82285,-4.8373 -17.43066,-11.89692 -27.78125,-12.625 -6.15078,0.48289 -4.60808,8.30602 -2.28125,11.875 6.05399,7.01001 7.80865,16.77008 13.0625,24.1875 2.14086,7.87825 11.72528,14.34119 8.59375,23.0625 -9.94978,11.22814 -17.64266,24.18848 -25.90625,36.75 -3.92568,3.61983 3.49083,3.43835 6.25,3.53125 13.08631,-0.80023 22.99422,-11.87312 35.625,-13.625 4.21794,1.86961 1.82848,8.69149 1.90625,12.25 -1.39398,13.10321 -6.9142,27.21165 -1.8125,40.03125 1.52899,5.2729 7.26192,0.5502 10.90625,0 13.33142,-4.88413 25.50501,-12.95466 34.71875,-23.6875 2.94634,-2.01826 3.5288,4.3282 4.78125,5.625 1.21492,2.76122 2.619,5.52247 4.78125,7.6875 -2.33412,3.29558 -8.30401,9.71554 -2.90625,13 3.0361,1.45204 6.94838,-0.2918 8.03125,3.8125 2.86297,5.33208 3.12491,11.71718 7.21875,16.5625 2.07001,3.89994 7.58175,2.75518 8.625,-1.28125 4.08327,-8.02022 3.64653,-19.23458 12.96875,-23.53125 6.88467,-3.19543 14.26891,-8.08327 21.78125,-7.59375 3.1483,1.58289 4.50287,-3.85065 8.1875,-2.28125 6.40391,4.10182 8.08788,12.68843 12.58784,18.63273 6.43888,10.28293 11.77417,21.64249 19.94341,30.52352 3.50011,4.0147 9.92082,2.05315 11.46875,-2.78125 3.39313,-7.38401 4.03843,-15.75572 8.0625,-22.90625 2.77527,-5.81474 2.86428,-14.04769 8.28125,-18.15625 1.54324,2.72431 4.7004,0.1207 6.46875,2.96875 7.89165,5.0887 16.7579,8.11321 25.0625,12.3125 4.91083,2.36924 13.79056,1.9162 13.96875,-5.15625 -0.52412,-7.90946 -5.20568,-14.93758 -10.21875,-20.875 -3.36421,-4.24611 -8.84917,-7.85048 -9.65625,-13.5625 25.53467,0.33007 52.15695,4.77108 76.71875,-4.1875 10.26111,-2.60716 19.79567,-7.86401 29.01875,-12.7875 5.09396,-2.9898 10.1487,-6.75113 15.325,-9.11875 2.56001,-0.565 4.58434,-0.98601 6.96875,-0.0312 2.17422,-1.45412 2.36244,-3.88244 5.25,-4.84375 12.27623,-7.35152 24.62187,-15.30452 34.25,-26.03125 2.60567,-1.98832 5.02411,-6.5144 8.33703,-9.79129 9.28332,-11.00155 15.05406,-24.41898 23.19422,-36.30246 7.69744,-11.30858 9.26201,-25.259 9.4375,-38.75 0.0193,-14.901 -0.33725,-30.37123 -5.00971,-44.55068 -8.07816,-19.03978 -16.29957,-38.82581 -31.74029,-53.16817 -13.44777,-12.69999 -31.33818,-18.77407 -47.53125,-26.96875 -10.56427,-4.46529 -23.31616,-7.77084 -33.9375,-1.5625 -18.21215,9.05363 -29.88875,29.18705 -29.20499,49.65117 -1.14255,11.26128 -0.0972,22.60054 1.67374,33.63008 -0.19084,6.59281 1.78885,14.30971 6.8125,18.53125 4.44935,1.1637 9.3329,-0.11937 13.90625,0.78125 -1.03364,-2.0192 -4.3356,-4.6367 -4.15625,-6.71875 2.50368,-0.76104 7.97391,-0.51196 8.16861,-2.96763 -1.06744,-1.94462 -3.65293,-5.78188 0.48764,-5.50112 4.34517,0.30987 6.31598,-0.47485 2.96875,-4.25 -1.14022,-1.79735 -2.91409,-7.21828 1.21875,-5.40625 4.12105,2.0646 6.35669,2.27989 5.0625,-2.9375 -0.23767,-2.30231 0.73313,-6.66973 3.875,-4.5625 3.18054,1.67453 6.04555,5.32186 6.90625,-0.21875 2.17028,-3.56519 4.89597,-9.57244 9.71875,-9.4375 2.66101,3.97149 -0.0183,9.5505 -0.90625,13.78125 3.05306,-0.50232 10.26416,-0.21426 7.65625,4.6875 -1.93989,4.08364 -5.24602,7.14955 -8.5625,10.1875 1.85273,1.95555 7.00743,3.63195 7.21875,6.3125 -4.14484,2.62405 -8.96122,4.03579 -13.125,6.6875 2.21063,3.31924 5.91348,5.88774 7.78125,9.1875 -4.15667,1.64889 -8.86836,1.25823 -13.3125,1.71875 1.65684,2.57388 7.53466,5.04612 6.78125,8.46875 -4.0749,1.942 -8.97775,0.89151 -13.25,0.3125 -0.35503,3.32144 1.06352,7.66271 1.53125,10.03125 -3.72306,-1.94719 -7.46732,-7.44829 -10.375,-1.53125 -1.831,1.13789 -5.10433,7.10821 -6.78125,3.1875 -2.21479,-3.04363 -3.40836,-8.48071 -6.63596,-9.7371 -4.22327,0.14815 -11.871,4.76179 -14.20779,-1.04415 -1.54454,-3.9472 -1.67551,-8.22077 -2.125,-12.40625 -5.23323,1.51971 -14.70155,4.35704 -16.5625,-3.125 -1.02453,-3.15562 -0.77813,-6.6742 -0.8125,-10.09375 -4.14889,0.93913 -9.61022,5.04274 -13.71875,2.78125 -0.8913,-5.9014 2.22522,-11.76722 2.65625,-17.71875 -3.23138,1.13189 -9.6733,0.28662 -7.875,-4.5 0.71193,-3.03679 6.4562,-6.07558 0.15625,-5.71875 -7.95037,-0.35739 -17.19947,-7.00381 -14.25,-15.875 2.2397,-4.55021 -4.98245,-1.54018 -7.46875,-3.1875 -5.81201,-1.46503 -1.98561,-8.81945 -1.5625,-12.625 0.7098,-3.04861 0.52524,-6.22716 -0.34375,-9.21875 -4.22826,0.7457 -9.41561,3.66034 -13.4375,1.59375 0.77903,-8.35604 7.51278,-15.68417 6.28125,-24.5625 -10.4959,3.40212 -23.30961,-2.75924 -25.0625,-14.09375 -0.75702,-3.94873 -0.18538,-7.98373 0.78125,-11.84375 -4.23624,-0.17757 -11.16849,2.78765 -14.15625,-1.25 -1.41896,-3.94279 1.37519,-10.10446 -1.96875,-12.53125 -2.36203,-0.79768 -9.84241,-2.12396 -3.83771,-2.87939 9.43722,-2.1841 19.29925,-4.22693 26.93146,-10.49561 -14.21494,-11.47114 -31.47987,-17.55848 -47.46875,-25.90625 -3.72253,-2.21416 0.73403,-7.08095 1.75,-9.71875 3.50588,-5.67153 7.78015,-10.92063 13.34375,-14.625 -12.85108,-2.67171 -23.69095,-10.95749 -36.28125,-14.28125 -2.84414,-4.27982 4.18504,-5.40724 6.25,-8.21875 15.04093,-12.32107 28.62882,-26.84914 39.09375,-43.125 4.63085,-14.39832 21.53032,-17.45686 32.65625,-25.03125 4.97765,-2.72905 1.74946,-9.3591 -2.5,-10.84375 -3.52968,-2.35699 -8.81547,-3.20101 -11.4375,-6.03125 6.64626,-4.72881 16.90617,-8.11702 18.8125,-17.0625 -0.40063,-7.07145 -9.66622,-7.41051 -15,-7.625 -5.41547,-8.3e-4 -11.12477,0.99324 -16.1875,-0.96875 -3.18307,-4.27073 1.54002,-9.86908 3.125,-13.9375 3.65713,-6.66673 6.8493,-13.37345 12.28125,-18.71875 3.17572,-2.66362 2.84475,-9.38586 -2.40625,-8.40625 -10.08896,2.15632 -17.004,10.85868 -26.53125,14.53125 -10.10584,5.49919 -22.82307,7.31 -33,1.03125 -7.74406,4.33242 -16.49923,-0.19756 -21.96875,-6.0625 -5.57952,-6.31225 -13.82851,-7.55342 -20.90625,-11.59375 -6.3145,-3.51114 -14.55413,-3.98756 -20.78125,-1.40625 -2.43303,-5.96341 -8.89503,-8.93446 -15.09375,-8.34375 z m -0.25,5.4375 c 3.51485,-0.19416 10.79526,1.28736 9.34375,6.09375 -0.67792,1.96834 -3.11107,4.35329 -4.28125,1.28125 -2.46109,-3.24081 -6.12216,-5.3565 -10,-6.40625 1.57633,-0.66268 3.18405,-0.82781 4.9375,-0.96875 z m 28.1875,8.4375 c 7.18711,-0.35641 7.82773,9.79642 14.09375,10.875 2.7823,0.61601 3.58368,-4.88001 5.90625,-1.59375 5.37038,3.48982 10.65778,7.11232 14.8125,12.09375 4.59626,0.17543 10.36336,-2.13661 14.375,0.0312 1.15718,1.09396 -4.13686,-0.13083 -5.4375,0.40625 -3.76227,-0.65927 -5.03399,4.60758 -1.03125,5 4.3104,1.19505 10.02809,2.44247 13.625,-1.03125 1.14285,-3.16696 -3.93727,-3.62051 -4.46875,-3.96875 2.12914,-3.45634 4.06789,4.00297 6.125,-0.15625 2.71028,0.61399 7.55847,2.33367 8.6875,3.625 -3.20888,-0.97562 -6.76041,3.25707 -2.8125,4.875 2.79579,1.28348 6.75393,2.07818 8.6875,-0.875 16.6603,13.4937 26.19428,36.38979 21.14452,57.51594 -5.10695,12.50101 -12.29686,24.15011 -20.98827,34.51531 -1.90901,-3.97385 -4.21079,-11.02089 -9.59375,-10.375 -3.72474,3.10421 1.19459,7.97086 3.03125,10.8125 4.54361,3.02901 1.40104,5.96166 -1.75,8.625 -6.97737,6.84512 -14.33964,13.6838 -23.125,18 -6.84877,5.76581 -0.74855,14.94174 -0.34375,22.03125 0.3684,4.09102 -4.48957,6.25128 -4.89661,10.40766 -0.87684,2.39656 -4.58286,2.41876 -5.54089,5.37359 -3.09473,4.48069 -5.09887,9.52213 -7.28125,14.5 5.41571,-4.25466 14.488,-8.78121 14.28125,-16.71875 0.3506,-2.273 5.0313,-3.59733 5.96875,-6.59375 1.24533,-3.70739 1.96919,2.84706 1.84375,4.15625 0.82326,6.33375 -4.96947,10.59088 -6.5625,15.9375 -4.9095,0.0451 -6.78881,6.44585 -9.28125,9.875 -4.24137,6.75306 -2.6864,8.80853 3.28125,3.15625 2.97651,-3.38388 8.97926,-7.58789 6.875,-12.625 4.47672,-1.44616 6.79559,-5.35116 9.125,-8.84375 2.21738,-0.47292 2.52781,4.06222 3.4375,5.53125 0.0272,2.1025 3.70704,7.13716 -0.1875,6 -5.87136,2.51528 -7.20618,10.45053 -10.09375,14.75 -5.4771,1.11819 -6.18201,8.71483 -8.87197,12.6669 -0.93445,2.45639 5.47112,-2.29395 7.52822,-3.8544 2.09466,-1.96878 5.17415,-6.5125 1.875,-8.625 4.40481,-3.40152 9.76464,-6.38631 12.3125,-11.53125 1.72763,8.48508 6.56621,15.69482 9.53125,23.625 8.13515,16.96664 21.8139,30.4938 31.57779,46.6209 23.60121,34.61985 46.55375,69.85468 71.17221,103.6291 8.15484,8.48687 18.62905,14.61155 28.24656,21.4226 9.09229,5.3953 20.40882,10.31618 28.84719,14.5774 -4.23737,5.84187 -1.61508,14.24062 1.875,19.875 6.17202,-1.40997 3.17269,-9.00143 3.71875,-13.375 0.37967,-1.66658 -1.60948,-5.18388 -0.78125,-5.5 5.74908,2.03771 11.71321,-0.82715 17.375,0.15625 9.66285,4.01589 12.21758,17.90005 23.0625,19.75 5.4846,-0.75099 2.73083,-7.8806 -0.65625,-9.65625 -2.35731,-2.07974 -5.8299,-2.39937 -6.0625,-6.03125 -0.72045,-2.9052 -4.57613,-5.16847 -5.40625,-6.8125 3.16737,-2.31173 -0.80591,-5.58752 -0.0937,-8.21875 5.93228,-3.81049 8.09239,-10.89203 11.09375,-16.8125 2.31948,-2.33435 1.37846,-5.97708 3.96875,-7.75 -0.0192,-3.25929 -1.8407,-5.34013 -0.1943,-9.02168 2.67985,-15.85602 5.91591,-34.50934 -4.3682,-48.29082 -14.0677,-8.02969 -30.87997,-0.62613 -41.62241,9.28936 -5.51093,5.23295 -12.01919,10.73604 -12.28384,18.86689 -0.90533,3.06876 -1.79334,6.77363 -3.71875,9.21875 -1.9075,-6.98229 -2.45206,-14.44909 -3.53125,-21.65625 -0.36814,-12.34984 -0.0815,-25.04792 2.8125,-37.0625 4.35097,-11.32952 13.67598,-19.89815 22.6875,-27.5625 3.46778,-2.8634 11.27641,-5.03024 12.5,1 -3.32324,4.05062 -2.26143,10.24641 -2.65625,14.34375 -6.51494,3.31712 -5.96417,12.49301 -7.5625,18.625 3.41247,-5.32879 10.77308,-10.19867 10.1875,-17.1875 -0.4209,-2.75194 3.56844,-5.52076 3.75,-8.84375 1.01907,-2.85554 -0.55439,-6.97762 3.625,-7.4375 1.60775,-0.4283 5.18864,-0.74542 5.8125,0.1875 -4.49218,6.54516 -6.27378,14.66172 -8.96875,22.09375 1.78918,3.87645 6.58616,1.37127 6.53125,-2.21875 0.27426,-1.85919 0.91743,-4.60733 -1.125,-5.65625 4.3849,-2.73394 7.66198,-8.48298 8.40625,-12.59375 3.80089,2.18537 6.0629,6.47683 3.67553,10.62927 -1.06425,3.87715 -2.99026,9.6246 1.91822,7.05823 1.98645,-2.95184 2.4729,-10.30235 7.34375,-11.65625 2.37456,0.80538 4.21612,4.04126 6.03125,4.4375 -4.21381,5.1713 -5.35583,11.89645 -7.875,17.875 -1.0885,2.79114 -1.53449,5.98718 2.3125,5.0625 4.43002,-1.03768 4.23151,-7.0598 3.71875,-10.15625 2.81573,-3.17722 5.91567,-6.51642 7.03125,-10.71875 12.03199,5.49341 22.83271,14.09213 29.28125,25.78125 6.43567,9.53637 12.08027,20.03152 16,30.71875 0.50954,2.03041 1.59872,3.43418 -0.78125,1.75 -5.01881,0.11448 -3.35924,7.14663 -3.125,10.375 -0.6743,4.51397 2.14333,4.53571 4.78125,2.28125 1.7297,-1.66058 2.35114,-4.16268 2.03125,-6.5 2.56536,4.91527 3.63153,10.67514 2.3125,15.90625 3.91261,10.32982 2.48922,22.01138 1.83932,32.86201 -1.05529,1.44177 -0.0448,10.08489 -2.27682,7.10674 -2.17392,-3.72451 -7.44407,-1.48388 -7.8125,2.4375 -1.53572,4.56184 -1.63519,13.54906 4.96875,13.40625 -3.55847,8.39408 -9.38083,15.53679 -13.53688,23.74991 -1.41245,3.01085 -3.17839,4.66459 -5.83812,5.59384 -0.83398,6.82223 -7.02594,11.64422 -11.3125,16.9375 -10.07856,10.31781 -21.79416,21.27964 -35.09375,26.0625 -23.29981,11.90528 -47.28104,28.75713 -74.55638,31.86043 -3.88344,0.22066 -8.23969,1.05748 -11.09987,-1.26668 -5.77251,2.83771 -13.16502,-0.37799 -19.71875,0.0937 -2.55311,-1.90584 -5.89981,1.20939 -9,-0.34375 -6.02741,-1.81182 -13.90559,2.40612 -18.90625,-2.25 -4.05216,-9.09455 -2.90714,-19.53695 -6.125,-28.90625 2.02433,-2.67212 -2.25793,-4.59805 -1.34375,-8.125 -1.91851,-16.94221 -2.82669,-34.27393 -7.4375,-50.75 -2.972,-14.20089 -5.18041,-29.48766 -15.28125,-40.65625 3.41036,35.75879 12.6675,70.80906 15.55607,106.61679 1.03417,4.0403 -0.0409,8.02666 -0.32107,11.13622 4.78925,3.32395 4.47693,9.50448 4.98375,14.80949 0.51972,4.24216 5.33878,5.45774 6.26083,9.60968 3.05293,4.85028 5.5002,10.46391 10.52042,13.26532 2.1568,1.79998 -0.7729,4.88272 2.40625,6.09375 0.48946,2.36055 1.34078,6.00624 -2.375,4.78125 -2.84283,-0.56607 -7.84005,-1.04362 -8.8125,-3.65625 0.48021,-3.78577 -4.55575,-5.03698 -5.53125,-1.90625 -4.35723,-1.95599 -7.55964,-6.18448 -12.625,-7.375 -3.9732,-1.85788 -12.07015,-3.41031 -12.90625,2.8125 0.76542,4.05804 1.0284,8.1404 -1.59375,11.65625 -1.54244,5.68692 -4.78267,11.00911 -6.03125,16.90625 -0.96449,3.28263 -0.35628,-5.33161 -3.78125,-3.8125 -5.97459,0.55002 -12.30849,-1.21769 -15,-7 -5.7087,-9.14054 -11.08224,-18.58282 -18.7188,-26.21865 -17.31301,3.07942 -33.3011,14.66441 -50.3125,15.71875 2.71677,-5.60012 0.54878,-11.93013 -0.0625,-17.53125 4.77962,-2.85261 4.08294,-11.08401 9.46875,-12.5625 4.09792,2.09445 5.1707,-3.63552 4.8125,-6.96875 -2.61467,-7.6607 -12.92764,-5.99507 -19.3125,-7.0625 -2.74196,-0.15363 -6.57363,-0.48102 -5.40625,-4.25 -1.1381,-3.39943 -2.16352,-8.78803 2.9375,-9.375 8.09322,-0.83994 14.64601,-5.89927 22.34375,-8.4375 6.77259,-3.20561 15.82297,-5.94247 17.0625,-14.5 1.98133,-4.90002 4.49197,-10.43351 6.46875,-14.8125 2.12123,-1.30311 2.14156,-4.31461 3.125,-6.4375 -0.22604,-2.80511 3.70439,-5.03093 3.78125,-8.40625 0.7118,-2.60091 -2.83428,-3.57927 -0.29898,-6.09852 6.03776,-15.24199 14.31216,-32.0142 9.26773,-48.71398 -5.31159,12.87015 -7.78617,26.69105 -13.06987,39.62383 -5.89418,15.64855 -11.95096,31.3833 -18.55513,46.65742 -8.5254,7.99398 -20.99612,2.29109 -29.05932,-3.5417 -10.31941,-7.30779 -22.3932,-12.32296 -30.5144,-22.39997 -9.83394,-10.15041 -19.7265,-21.05664 -24.39503,-34.80833 -1.33218,-2.70435 -2.08736,-4.75315 0.6875,-6.34375 1.5849,-2.58059 0.29136,-5.93467 -0.15625,-8.21875 -2.33842,-1.98372 -3.98715,1.11926 -4.21875,3 -1.00171,-3.37983 -1.96361,-8.59586 -1.3125,-11.125 3.64453,3.18899 6.04358,-2.72936 5.6875,-5.71875 0.39082,-2.84262 0.57121,-9.98128 -4.03125,-7.59375 -1.40768,1.87721 -1.48674,4.36433 -1.9375,6.59375 0.1663,-8.37257 1.1645,-17.81491 2.6875,-25.3125 0.95674,2.98173 -0.1825,4.85695 -1.03125,7.53125 -0.4313,3.43082 -1.70508,8.89747 3.125,4.9375 3.5811,-1.62698 1.86251,-5.85627 2.65625,-8.4375 1.74973,-3.1294 2.77131,-10.66529 -2.65625,-10.3125 -2.01651,3.4108 -0.64508,-7.14951 2.3125,-5.1875 5.37444,-0.42098 3.00905,-7.50342 5.0625,-10.59375 1.41732,-3.79541 -2.76952,-4.02318 -3,-4.125 8.27391,-25.83928 19.05409,-50.9247 29.03781,-76.10325 19.72954,-34.89625 31.95585,-73.35522 43.43094,-111.678 -3.42158,3.39374 -8.21775,6.93082 -13,4.25 -3.63547,-0.97249 -6.30064,-4.74604 -10.28125,-4.09375 -1.90465,2.36473 3.51177,5.02482 0.78125,5.625 -1.99038,0.38726 -4.56127,2.87484 -4.75,-0.3125 -1.53574,-3.43377 -6.66427,-1.99176 -6.15625,1.84375 4.41851,1.86976 -0.23221,2.439 -2.5625,3.28125 -11.03092,3.72906 -22.92162,2.97062 -34.0625,6.3125 -28.5252,5.47522 -57.86444,6.81996 -86.84375,6.125 -11.02962,-3.44241 -23.89312,-0.16399 -33.53125,-7.59375 -1.06428,4.81949 -6.81261,-0.25662 -9.53125,-0.84375 -2.69431,-2.05102 -5.54589,-2.05747 -8.125,-0.21875 -6.72763,0.71031 -8.89669,-8.33146 -8.625,-13.59375 -0.60577,-5.87746 5.27372,-10.27952 10.6875,-7.78125 23.20108,-2.03589 46.5535,0.36915 69.14994,5.23719 22.00171,2.58119 44.55564,0.44272 65.31524,-7.24878 27.82792,-8.00732 56.52735,-13.23949 84.12857,-21.76966 4.91602,-2.12393 -0.45427,-6.87774 -2.39487,-9.35804 -6.95502,-8.91305 -16.05336,-16.26537 -21.63638,-26.23571 -2.56551,10.82214 -4.838,21.69108 -9.4375,31.8125 -10.80589,-11.19661 -14.46417,-27.15365 -22.8125,-39.90625 -3.24456,-3.32468 -6.35703,1.75729 -5.71875,4.9375 -0.0234,14.70391 2.71828,30.38527 -5.0625,43.78125 -2.85067,5.66002 -8.7705,10.293 -15.375,9.3125 -4.26576,-4.57744 -7.72582,-10.04436 -10.96875,-15.46875 -2.37287,2.59491 -3.14379,7.97735 -5.84375,9.5625 -4.34197,-4.09535 -7.12792,-9.50188 -11,-14.03125 -4.23239,7.94926 -3.60104,17.31343 -7.4375,25.34375 -7.41219,-15.87803 -4.34886,-34.9181 -13.15625,-50.40625 -10.05518,15.74169 -13.49506,35.24478 -23.96875,50.375 -14.47152,-3.28618 -31.07953,2.91213 -44.15625,-5.4375 -6.53655,-5.21066 -5.01631,-14.61027 -9.84375,-21.03125 -1.25119,-6.07644 -3.74952,-3.79845 -6.03125,0.15625 -2.37302,3.13344 -4.65961,8.46149 -6.875,10.28125 -10.6254,-24.49561 -0.11788,-53.07978 17.60688,-71.34589 8.66058,-9.72832 18.17988,-21.52944 32.33062,-22.06036 19.19647,-2.30582 38.31235,2.7215 57.53125,1.84375 13.73353,-11.5226 31.95641,-15.11857 48.8155,-19.6735 2.15077,0.14992 9.38015,-3.55128 7.4345,-0.139 -6.06069,11.4583 3.17821,28.28989 16.84375,26.375 10.34517,-1.40273 21.74223,-10.30404 20.78125,-21.625 -2.10786,-8.94961 -13.37641,-8.50477 -19.78125,-12.96875 -1.97907,-0.88542 -5.69056,-3.27456 -1.59375,-3.625 2.57346,-0.60767 5.24275,-0.76815 7.875,-1.03125 z m 99.28125,10.9375 c -1.53343,8.84926 -7.06986,16.4743 -11.6875,23.96875 -3.4544,-3.09571 -10.41511,-7.16723 -8.1875,-12.625 3.93233,-4.55344 10.68091,-4.5902 14.8125,-8.90625 1.58463,-0.98832 3.19069,-2.10717 5.0625,-2.4375 z m -71.375,10.15625 c -3.86525,-0.73048 -7.06298,4.81743 -2.46875,6.15625 4.16071,1.26376 8.61666,0.5609 12.90625,1.25 -1.42183,-4.74038 -5.32238,-8.1038 -10.4375,-7.40625 z m -155.59375,10.96875 c -5.90224,0.1301 -15.7455,2.78211 -14.28125,10.5 1.45404,4.97987 8.25374,-1.55533 11.65625,-2.0625 4.0518,-1.25942 10.88502,-0.39761 12.40625,-5.25 -0.68243,-4.03039 -6.89798,-3.06593 -9.78125,-3.1875 z m 48.9375,5.75 c -8.32535,1.03176 -15.14949,6.83139 -20.25,13.21875 7.8583,-2.68049 16.99028,-4.03343 23.40625,-9.5625 1.34664,-2.21512 -1.00067,-4.13208 -3.15625,-3.65625 z m -72.875,1.875 c -7.26868,2.84807 -10.3943,11.17239 -13.21875,17.84375 5.27944,1.26447 9.11449,-2.59435 11.59375,-6.59375 2.03419,-2.51165 8.64159,-10.59895 1.625,-11.25 z m 249.9375,4.125 c 3.86773,0.63402 7.83074,0.83976 11.375,2.59375 2.69741,0.30004 8.00137,-0.93417 9.46875,1.46875 -4.21169,6.12322 -11.91826,10.28039 -18,13.875 -3.48378,-4.53967 -7.95959,-11.27016 -4.90625,-16.96875 0.55078,-0.55195 1.29801,-0.85427 2.0625,-0.96875 z M 231.3125,246.06691 c -5.35848,2.24055 -8.47124,7.82653 -11.8125,12.28125 4.52057,5.48098 9.25376,-1.73369 12.5,-4.9375 2.09851,-1.9904 4.31413,-7.6686 -0.6875,-7.34375 z m -64.75,6.1875 c -6.94127,2.44131 -7.50904,11.95071 -10.90625,17.03125 -12.63105,2.68235 -16.58231,22.91556 -5.5625,29.96875 13.66951,1.24297 22.81127,-18.36906 13.84375,-28.28125 -2.15787,-1.21747 -4.63054,-1.98889 -7.125,-1.8125 5.83821,-2.72266 13.91559,-7.32959 12.96875,-14.90625 -0.54249,-1.23766 -1.767,-2.21216 -3.21875,-2 z m 229.1875,7.71875 c -4.81358,1.45456 -0.43052,6.53169 2.125,7.96875 2.70053,1.55601 6.71891,7.26868 8.0625,1.875 1.1999,-5.49308 -5.535,-9.51746 -10.1875,-9.84375 z m 40.53125,1.1875 c 4.21429,0.83685 11.96776,1.04734 12.625,6.5625 -1.76213,5.16566 -8.67465,7.97656 -13.3125,8.71875 -0.74713,-5.03732 -0.48106,-10.5089 0.6875,-15.28125 z m -218.5625,2.03125 c -5.85208,2.44425 -6.66682,10.02648 -8.78125,15.21875 4.43431,-3.2857 13.80313,-6.95249 12,-13.9375 -0.57884,-1.10246 -2.04374,-1.62746 -3.21875,-1.28125 z m 194.6875,11.46875 c -4.51909,1.9822 0.24904,6.95565 2.15625,9.09375 1.9471,2.90583 5.19676,5.31395 6.71875,1.09375 1.52456,-4.70639 -4.45084,-10.28779 -8.875,-10.1875 z m -199.9375,6.0625 c -10.08144,1.77244 -19.88513,13.38928 -15.96875,23.75 3.17872,7.04073 13.63466,4.25309 17.625,-0.75 5.27666,-5.26484 8.54578,-15.34542 3.25,-21.53125 -1.32648,-1.16491 -3.16354,-1.63573 -4.90625,-1.46875 z m 168.9375,0.375 c -4.68151,2.10733 0.70795,6.86107 2.85606,8.71357 2.39831,2.41919 6.29242,6.66979 8.92519,2.41143 1.31589,-5.3652 -5.37442,-8.5264 -9.25,-10.65625 -0.80493,-0.3207 -1.65507,-0.6022 -2.53125,-0.46875 z m -67.53125,3.90625 c 3.70489,6.89511 6.65321,14.17388 12.03125,19.9375 3.60319,4.52015 2.45226,12.01454 -3.65625,13.46875 -3.535,0.88825 -8.61582,2.53178 -11.96875,0.65625 -1.66281,-10.93456 6.42594,-21.39504 3.39056,-32.52819 0.0596,-0.47422 -0.46333,-3.05328 0.20319,-1.53431 z m -77.4375,15.78125 c 3.44327,10.85981 6.07358,22.16796 6.9375,33.65625 -6.81299,1.28877 -14.84882,0.37398 -21.03125,-1.15625 1.63453,-12.12649 9.69106,-22.12898 13.78125,-33.4375 z m -79.71875,10.8125 c 1.9071,4.81928 5.39511,11.80154 1.40625,16.40625 -2.99499,1.69509 -7.8562,1.28951 -10.46875,-0.4375 0.36501,-6.0614 5.67955,-11.37496 9.0625,-15.96875 z m 105.3125,9.84375 c 3.33591,1.26957 6.61991,7.82336 2.90625,10.34375 -1.58543,0.068 -4.73744,1.51378 -5.53125,0.71875 0.79928,-3.5396 -0.0195,-8.69218 2.625,-11.0625 z M 275,325.12941 c 1.71829,-0.27525 7.08682,2.53341 4.21875,3.9375 -3.44292,2.13389 -4.83056,-1.54251 -4.21875,-3.9375 z m 54.71875,1.34375 c -4.38772,0.53711 0.40065,6.81738 3.34375,6.90625 4.21963,0.0616 2.43859,-5.2605 -0.5625,-6 -0.80041,-0.56493 -1.77127,-1.10754 -2.78125,-0.90625 z m -7.0625,8.59375 c -3.39452,4.42059 8.707,7.67345 6.59375,1.65625 -1.47348,-1.5199 -4.79309,-3.07384 -6.59375,-1.65625 z m 13.875,1.0625 c -2.4425,3.78608 4.17425,4.9054 4.34375,8.34375 2.08963,3.06277 6.49187,0.26307 3.9375,-2.78125 -1.09609,-3.10297 -4.09613,-6.18092 -7.71875,-6.15625 z m -185.65625,2.5625 c -4.33925,2.94216 -1.547,9.74977 -1.59362,14.08589 -0.37431,4.78145 5.20399,-0.88965 5.78112,-3.49214 0.85467,-3.29972 0.63721,-10.98312 -4.1875,-10.59375 z m 164.8125,2 c -4.45805,2.79291 4.31492,8.34291 4.0625,2.4375 -0.69006,-1.5513 -2.26752,-3.3814 -4.0625,-2.4375 z m -150.96875,0.625 c -4.45886,2.80528 -1.09529,9.62097 -1.24132,13.7957 -0.21166,4.83506 4.33399,-1.91368 4.99132,-4.2332 0.91931,-3.06791 0.74232,-9.97796 -3.75,-9.5625 z m 15.15625,3.8125 c -1.88869,4.6501 -3.22892,11.31842 -0.1875,15.78125 5.08443,1.43429 3.72842,-6.11816 4.09375,-9.21875 0.001,-2.45489 0.41884,-9.21741 -3.90625,-6.5625 z M 343,355.81691 c -1.80165,20.00655 -12.99588,37.58005 -18.1875,56.71875 -5.2202,10.26477 -18.86854,9.22936 -28.68715,9.12994 -10.00467,-0.64666 -20.21514,-0.63054 -29.9691,1.24506 -22.35798,-0.9429 -44.46517,7.40222 -66.65625,4.40625 -12.9875,-17.82012 -12.71545,-42.73896 -28.84375,-58.8125 12.72044,4.33348 26.76738,2.48052 40.125,3.09375 20.74698,-0.43842 41.76915,-0.78593 62.19868,-4.34748 22.68548,-7.19112 47.70638,-2.87165 70.05132,-11.68377 z m 41.15625,3.46875 c 5.25305,3.04934 13.7011,4.13183 16,10.5 -0.0182,4.36234 -6.49216,10.01483 -9.71875,4.9375 -3.55112,-4.61047 -5.25519,-10.44814 -7.125,-15.84375 z m -15.875,18 c -1.53274,-0.35758 1.85052,-1.78219 0,0 z m 4.15625,13.65625 c -2.19676,-0.14303 2.60041,-2.85396 0,0 z m 24.3125,1.9375 c 10.68001,3.70768 20.14286,10.83911 30.90625,14.625 2.22255,0.75037 7.67039,4.52149 3.34375,6.46875 -5.82746,2.57447 -12.41129,2.33081 -18.5625,3.40625 -8.78456,-0.90517 -10.15392,-12.12564 -13.5,-18.59375 -0.69685,-1.87224 -2.27031,-4.0868 -2.1875,-5.90625 z m -217.375,7.375 c 6.44269,10.9145 7.26073,25.97378 18.5625,33.5 5.45041,2.63697 12.18979,-0.86477 18.14678,-0.50692 33.69074,-3.35351 67.64639,-5.12431 101.35322,-6.96183 -6.91023,3.91402 -15.81475,4.94622 -23.15625,2.03125 -33.35511,3.22447 -66.36151,9.5139 -99.9375,10.625 -5.32584,15.98416 -5.35095,34.92075 -17.28125,47.9375 -1.49753,2.0581 -4.09548,3.33188 -4.03125,-0.1875 -1.63528,-8.05403 0.92818,-16.76885 -2.4375,-24.4375 -8.5438,3.48511 -17.91822,8.07815 -27.3125,7.03125 -0.98551,-2.45436 2.19124,-5.92999 4.375,-7.0625 5.24231,-2.82867 13.81154,-8.84533 9.25,-15.6875 -7.44123,-8.45847 -19.3422,-11.6583 -27.03125,-19.65625 -1.52228,-3.17665 4.3953,-3.56192 6.3125,-4.1875 9.10289,-1.13312 19.08516,-1.60457 27.40625,2.53125 7.32602,2.32665 11.98631,-5.84619 13.0625,-11.90625 1.18824,-4.11983 1.64422,-9.6981 2.71875,-13.0625 z m 197.09375,7.15625 c -1.29212,-0.28384 1.5593,-1.54318 0,0 z m -2.25,16.59375 c -7.10975,21.42415 -7.88193,44.51061 -12.96875,66.34375 1.5305,7.35011 -1.3567,14.86239 -0.0937,22.28125 7.07143,4.07139 4.76599,-5.64143 6.11259,-9.98546 3.22584,-26.25615 7.37416,-52.52132 10.65253,-78.68707 -0.33944,-5.9735 -1.0694,-3.43376 -3.70267,0.0475 z m -188.1875,-2.40625 c -3.62156,2.22748 -2.1149,7.74311 -2.9375,11.3125 2.14577,1.19455 1.85537,1.72698 0.90625,3.40625 -0.55877,3.54378 -0.83271,8.86921 2.875,10.59375 4.08077,-1.95107 1.8657,-8.00902 1.0625,-11.4375 -0.40706,-1.62241 2.58666,-3.60645 1.84375,-6.15625 -0.14733,-2.62118 0.14111,-8.27686 -3.75,-7.71875 z m 177.125,11.5625 c -6.87304,10.08922 -7.07733,23.35736 -9.80709,35.04578 -1.03487,7.96584 -3.76815,15.85615 -4.81791,23.61047 0.93677,3.84655 -1.37702,10.27401 -4.0625,10.8125 0.69987,-5.29307 -7.40749,-5.06277 -9.66194,-1.53257 -4.63196,2.65289 3.29244,3.17255 5.84944,3.56382 0.67218,0.3529 -4.96763,1.45518 -6.4375,1.625 -10.9867,1.40594 -22.6476,0.59016 -32.71334,5.51016 -4.15808,1.00947 -11.36033,-0.11839 -12.84916,5.05234 1.67384,5.48725 9.26669,5.56194 13.58273,7.88884 6.05125,1.90948 13.76589,3.95368 14.79227,11.29866 0.84773,4.09593 0.8129,9.39087 -0.28125,12.875 -2.73191,-1.40375 -7.09356,-1.27962 -9.03125,-0.5625 -2.12147,-2.8651 -6.11572,-3.61763 -9.21875,-2.625 -3.3329,-0.39255 -6.22841,-0.40355 -2.09375,-3.09375 2.97219,-4.33361 4.88874,-10.98162 2.40625,-15.8125 -4.52599,-2.3066 -4.91544,5.24201 -5.53125,8.1875 -1.46717,2.67502 0.60845,9.28824 -2.59375,9.75 -3.31038,-1.24529 -6.66609,3.18663 -2.8125,4.8125 5.94687,2.26531 12.7342,3.16322 19,2.65625 1.66811,-2.26483 3.40747,2.50001 5.96875,1.125 4.03373,-1.24792 3.39152,1.25866 2.4375,4.28125 -1.30718,7.50381 -4.66572,15.4214 -2.5,23 -2.31972,0.2406 -5.86533,-0.63915 -7.03125,2 -4.29437,-4.84056 -12.09259,-7.99451 -18.25,-5.28125 -2.59934,2.85718 2.29031,4.234 3.03125,5.25 -0.42507,4.57409 -3.64456,11.16263 0.84375,14.53125 4.8703,-0.40234 3.41953,-7.17203 4.0625,-10.6875 -1.50588,-5.67399 4.50625,-2.86646 7.95828,-2.6081 3.16553,0.49125 5.96536,2.72878 9.62747,2.5156 3.21322,1.2465 9.97645,-2.76927 4.883,-5.18875 -2.22504,-0.56006 2.44994,-3.70525 2.53125,-5.46875 3.8661,-6.55205 6.31186,-14.70794 10.25,-20.6875 2.64606,2.87955 7.55621,1.26032 11.0625,1.78125 3.59503,-3.62011 -1.75052,-6.99021 -5.28125,-5.875 -1.40491,-0.2499 -5.62691,1.86036 -2.8125,-0.90625 3.22834,-4.65478 8.25129,-8.47427 12.21875,-11.8125 2.72248,6.54942 2.52639,15.50542 9.5,19.40625 8.71777,9.10127 4.8207,23.44421 11.8125,33.40625 7.64003,-8.26443 6.89793,-20.59514 8.4375,-31.03125 0.92855,-7.75683 0.18208,-16.11989 0.78125,-23.59375 2.20483,-1.72474 6.96227,-0.79947 10.09375,-2 7.54339,-1.85161 15.90451,-3.16993 23.09375,0.1875 4.01511,-0.88783 11.12491,0.7681 12.75,-4.09375 -1.33435,-5.00367 -8.26695,-4.97004 -12.21808,-6.91977 -12.60376,-2.95078 -23.66535,-11.67674 -36.90692,-11.95523 -4.35797,2.85309 1.9056,5.60155 4.62383,6.28862 5.54293,3.01581 13.20333,2.44745 17.81367,6.71138 -6.74726,6.38799 -17.50342,4.71701 -25.25,9.25 3.80885,0.15228 -0.44295,3.51086 0.40528,5.83578 -2.06044,7.87678 0.84758,16.615 -2.34278,24.07047 -2.97082,0.7594 -5.42791,-3.91143 -7.27801,-5.93203 -5.45369,-7.32359 -8.78303,-15.90171 -10.34699,-24.78672 -1.63746,-5.01053 -7.87284,-3.08597 -10.09375,0.40625 -4.43038,4.08432 -7.18744,10.72353 -12.71875,13.34375 1.97076,-8.32021 -1.70619,-17.58826 -9.46875,-21.8125 -3.07649,-2.25864 -7.57503,-3.76331 -9.90625,-5.9375 10.93808,-7.8045 25.71103,-3.75941 37.90625,-8.40625 5.58418,-1.67824 10.60976,-6.18424 9.49679,-12.49589 2.08497,-23.86157 8.16491,-47.21737 11.94071,-70.87911 -1.61458,1.96875 -3.22917,3.9375 -4.84375,5.90625 z m 51.1875,-4.71875 c 4.47783,0.37588 8.35344,5.43414 5.90625,9.78125 -1.36521,-3.61351 -6.87667,-6.17778 -6.59375,-9.78125 0.23234,0.0316 0.45902,-0.0798 0.6875,0 z m -236.9375,5.875 c -4.66336,2.94497 -1.56418,9.91397 -1.16258,14.27211 0.12386,5.30883 3.2992,-1.40697 4.56883,-3.58461 1.63666,-3.27971 1.88384,-11.14748 -3.40625,-10.6875 z M 406.25,443.41066 c -3.62713,3.19635 1.86068,8.02043 3.1875,11.15625 2.64846,5.77629 4.67002,5.92296 4.875,-0.375 -0.33823,-4.47479 -2.86657,-9.67579 -7.3125,-11.15625 z m 24.78125,3.4375 c 3.25272,-0.67804 4.79984,2.91078 3.09375,5.46875 -2.65448,-0.72979 -7.08632,-1.16148 -8.3125,-3.5625 1.33228,-1.36815 3.37963,-1.76907 5.21875,-1.90625 z m -12.3125,12.84375 c -4.28845,1.21149 -0.37402,6.84844 1.5625,8.875 4.46823,6.9177 5.6301,5.54708 4.125,-2 -0.52025,-2.82671 -2.31175,-6.899 -5.6875,-6.875 z m 28.625,12.28125 c 6.20705,-0.52167 11.85006,6.34239 7.6875,11.875 -1.412,4.43204 -4.24569,-0.43761 -5.53125,-2.25 -1.53993,-2.81565 -4.82871,-6.44223 -5.4375,-8.84375 1.03158,-0.52246 2.14215,-0.7723 3.28125,-0.78125 z m -19.53125,1.25 c -3.57602,3.44642 2.41088,8.01465 3.86776,11.27869 1.73857,4.70981 7.53516,-0.34797 4.91349,-3.65369 -1.88987,-2.98859 -4.65593,-8.37253 -8.78125,-7.625 z m -124.46875,6.625 c -3.77316,5.97555 -4.08832,14.48991 -3.625,21 -3.36126,-0.79093 -7.0594,3.4502 -3.25,5.625 5.0526,0.60688 11.49879,1.77086 16.21875,-0.78125 2.51227,-3.77149 -4.10503,-4.59551 -6.78125,-4.6875 -6.03968,0.83736 -2.93338,-2.07965 -1.75068,-6.08483 0.78732,-4.77638 4.20955,-10.35986 2.00068,-14.94642 -0.30313,-0.84293 -2.42551,-0.83546 -2.8125,-0.125 z m 114.9375,3.6875 c -5.50413,0.99011 -6.58801,7.59248 -5.9375,12.21875 3.43617,-2.56806 11.45847,-5.5521 9.1875,-11.09375 -0.79124,-0.91861 -2.0479,-1.30019 -3.25,-1.125 z m 180.78125,1.8125 c -5.29197,3.97253 -3.7732,12.26838 -4.98579,18.07305 -0.91635,5.47001 3.88134,-3.80472 5.51704,-5.82305 1.87133,-3.37198 4.9111,-9.11758 1.1875,-12.15625 2.544,3.76961 -4.62805,5.22283 -0.15625,-0.0625 -0.48263,-0.17779 -1.07253,-0.17612 -1.5625,-0.0312 z m -156.96875,8.25 c -4.22573,2.50468 0.92281,7.47771 2.90625,9.8125 4.36237,6.0028 6.10363,6.12499 4.28125,-1.53125 -0.73607,-3.36659 -3.00167,-8.67283 -7.1875,-8.28125 z m -37.96875,1.0625 c -4.46371,2.02762 -4.5241,8.05684 -6,12.0625 4.12444,-1.64872 11.8212,-5.91268 8.5625,-11.40625 -0.70221,-0.67638 -1.6317,-0.85229 -2.5625,-0.65625 z m 204.78125,0.90625 c -1.29323,-0.0765 1.27734,-1.75145 0,0 z m -141.71875,1 c 1.64433,1.96889 -0.52812,6.39725 -1.71875,8.09375 -2.10002,-2.11663 -1.87541,-7.55034 1.71875,-8.09375 z m -29.65625,1.5 c -5.30408,1.66182 -6.69477,8.30329 -11.34375,10.9375 -1.87274,2.18496 -2.13495,5.17863 -2.96875,7.84375 3.39913,-1.66982 11.90886,-3.5131 9.4375,-8.96875 -3.30873,-1.77241 2.74286,-0.59802 4.0625,-2.125 2.87839,-1.2806 5.85173,-7.473 0.8125,-7.6875 z m -118.3125,2.59375 c -3.99732,-0.92135 -4.94829,4.73713 -0.8125,4.84375 3.91899,0.86151 9.51643,1.79024 12.65625,-1.0625 0.9029,-5.26976 -8.83033,-3.18924 -11.84375,-3.78125 z m 287.375,0.40625 c -2.46074,1.50017 -3.86281,6.98388 -1.40625,8.65625 5.65972,3.5094 6.85436,-9.7294 1.40625,-8.65625 z m -305.78125,4.46875 c -4.74683,0.88403 0.90113,-6.05693 0,0 z m 153.65625,6.1875 c -4.46446,2.83509 1.63886,8.07295 3.5625,10.75 2.78212,5.58448 3.50498,0.88786 3.6875,-2.59375 -0.24135,-3.6219 -3.18582,-8.45502 -7.25,-8.15625 z m -114.0625,1.125 c -3.76077,-0.51043 -4.3514,4.73552 -0.4375,4.78125 3.48691,1.29239 8.53087,0.54883 10.875,-0.5625 2.18627,3.05209 8.56673,4.8387 10.875,1.28125 -0.53931,-4.02813 -6.3037,-4.943 -9.75,-4.6875 -1.50221,2.42298 -2.40665,-1.14698 -4.78125,-0.625 -2.2523,-0.19946 -4.52122,-0.284 -6.78125,-0.1875 z m 27.125,3.25 c -4.2344,0.21592 -3.17039,5.66602 0.0312,6.75 2.6378,3.50564 9.51086,1.91111 9.03125,-2.84375 -1.36168,-3.35231 -5.89395,-4.00247 -9.06245,-3.90625 z m 109,1.375 c 1.10065,2.12366 -1.23782,3.75381 -1.40625,1.25 0.18135,-0.6062 0.7825,-1.12955 1.40625,-1.25 z m 101.40625,0.40625 c 1.17277,3.02366 -1.01487,7.85332 -3.96875,4.25 0.10492,-1.95978 2.11224,-3.98612 3.96875,-4.25 z m -229.84375,3.15625 c -3.70571,0.057 -2.6426,4.858 0.53125,5 3.71051,1.2865 9.05372,2.40541 11.96875,-0.90625 -1.14547,-4.90085 -8.75922,-3.58867 -12.5,-4.09375 z m 105.9375,3 c -6.62158,1.74258 -8.88235,9.17737 -11.03125,14.84375 4.53268,-4.04005 12.22393,-6.28583 14.03125,-12.53125 0.0538,-1.48357 -1.6242,-2.6198 -3,-2.3125 z m 109.84375,3.59375 c 2.64079,2.1437 -5.01889,2.37216 -1.28125,0.4375 0.41373,-0.23644 0.79247,-0.43026 1.28125,-0.4375 z m -95.40625,4.53125 c -4.53537,1.75647 -0.23543,7.03131 1.8125,9.15625 2.54876,3.65013 5.53256,6.29388 5.90625,0.3125 0.52535,-4.26162 -3.29633,-9.57425 -7.71875,-9.46875 z m 17.34375,1.75 c 4.22205,-1.15021 5.76487,5.39827 2.5,6.15625 -1.26815,-0.99 -7.46586,-5.93184 -2.5,-6.15625 z m 70.03125,4.125 c 2.28514,0.95396 2.81041,5.02453 -0.71875,3.34375 -1.96455,-0.23166 -0.57769,-3.02869 0.71875,-3.34375 z M 437.5,539.97316 c -4.16761,2.14528 -4.31042,7.79225 -5.875,11.65625 4.17208,-0.83397 14.00343,-8.60856 6.875,-11.8125 -0.33944,0.0216 -0.70633,-0.0942 -1,0.15625 z m 165.4375,3.09375 c 1.25715,2.77725 -0.86026,7.45023 -3.5625,4.34375 0.21559,-1.82964 1.88681,-3.83324 3.5625,-4.34375 z m -106.78125,3.9375 c 0.5699,2.35272 -3.37752,0.47806 -0.15625,-0.0625 l 0.15625,-0.0312 z m -15.40625,2.625 c -3.73242,3.18053 1.79453,7.82382 3.4375,10.71875 2.80972,3.04703 8.78185,-0.80347 5.6875,-4.53125 -2.11286,-2.65086 -5.29191,-7.08095 -9.125,-6.1875 z m -186.6875,4.625 c -4.36096,3.18188 -2.73813,10.109 -3.8125,14.8125 -2.10908,6.86558 2.51785,2.84484 5.03125,-0.0625 2.40865,-4.09477 4.11748,-10.85731 0.5,-14.59375 -0.55454,-0.13511 -1.17033,-0.58553 -1.71875,-0.15625 z m 371.25,0.65625 c -2.75265,1.24755 -2.058,5.85491 -2.78125,7.15625 -4.97541,-4.75255 -12.80362,-0.42713 -14.5945,5.40556 0.43175,1.84097 5.84364,1.40661 8.56325,1.71944 2.28275,0.004 4.93245,-0.2831 6.5,-2.09375 0.30167,4.81894 0.43647,11.43903 4.34375,4.03125 3.02955,-4.56137 4.83994,-12.2424 0.15625,-16.28125 -0.69455,-0.13494 -1.55361,-0.34809 -2.1875,0.0625 z m -26.71875,4.75 c -4.05128,-0.45886 -4.782,4.92475 -1.03125,5.9375 3.49701,2.1402 9.73323,2.02382 12.15625,-1.6875 -0.15672,-4.86339 -7.82903,-3.99142 -11.125,-4.25 z m -40.84375,1.125 c 3.22251,-0.53806 3.4168,6.44849 0,4 -1.7277,-0.21553 -6.45476,-2.32305 -2.65625,-3.53125 0.82526,-0.36323 1.75735,-0.51978 2.65625,-0.46875 z m -98.875,10.5625 c -3.86107,1.55428 -0.27701,8.42631 2.65625,8.28125 4.50206,-0.12489 3.56036,-6.13816 0.1875,-7.5625 -0.81767,-0.54478 -1.84762,-1.04627 -2.84375,-0.71875 z m 135.28125,1.875 c -4.53093,0.3445 -2.43575,5.75475 0.8125,6.46875 3.12351,2.76652 10.85905,3.46185 11.9375,-1.625 -2.13904,-4.35601 -8.48281,-4.5693 -12.75,-4.84375 z m 33.1875,1.4375 c -2.35003,0.38075 -2.79976,3.71451 -5.5625,1.875 -3.69003,-0.53086 -11.86993,-1.46607 -11.125,4.3125 2.27457,4.27823 8.08901,4.48025 12.28125,3.875 0.28258,3.44025 1.82171,6.56601 2.9375,9.8125 1.62601,-5.93179 6.99434,-12.73893 4,-18.9375 -0.60043,-0.73169 -1.58952,-1.11075 -2.53125,-0.9375 z m -72.59375,0.4375 c 2.60262,-0.89604 1.56107,3.92458 -0.59375,2.03125 -2.66033,-0.1732 -3.07376,-1.52465 -0.3125,-1.90625 0.30172,-0.0395 0.60056,-0.13539 0.90625,-0.125 z m -70.6875,0.96875 c 2.81175,-0.20335 4.6507,5.34826 0.59375,3.125 -1.5332,-0.0189 -5.04131,-1.80026 -2.0625,-2.8125 0.46021,-0.1878 0.97261,-0.28979 1.46875,-0.3125 z m -187.8125,8.1875 c -3.42546,-0.54582 -6.3685,4.11231 -2.5,5.6875 5.55153,1.76836 11.53744,1.0488 17.28125,1.4375 -3.62462,-4.59168 -8.71406,-7.93233 -14.78125,-7.125 z m -28.53125,0.0312 c 4.34104,0.2434 -0.0521,2.42498 0,0 z m 275.90625,2.84375 c 2.65377,-0.60034 6.18958,1.92303 2.625,4 -2.09131,3.6466 -5.93542,-0.32589 -5.46875,-3.09375 0.68725,-0.69566 1.87592,-0.90667 2.84375,-0.90625 z m -39.46875,1.4375 c 2.30722,-0.65679 6.45594,4.21845 2.1875,2.96875 -1.5208,0.0827 -7.302,-1.41839 -3.5,-2.75 0.44379,-0.0836 0.85245,-0.24548 1.3125,-0.21875 z m -25.40625,0.2188 c -5.30856,2.62841 -7.6152,8.8681 -10.21875,13.875 1.14103,4.24397 5.50681,2.00662 6.8125,-0.84375 2.17159,-3.6901 7.40517,-7.60638 5.71875,-12.34375 -0.67296,-0.38395 -1.49724,-1.11169 -2.3125,-0.6875 z m 47.6875,7.53125 c 1.58838,-0.0223 6.85987,0.8582 2.96875,1.3125 -0.84362,0.86798 -3.43658,-1.22314 -2.96875,-1.3125 z m -24.09375,1.84375 c -5.71492,3.11488 -9.13872,10.55567 -8.6875,17.03125 0.56858,4.08439 6.50466,0.46806 6.71875,-2.75 0.57877,-4.80488 6.73695,-9.09007 3.9375,-13.96875 -0.66125,-0.0423 -1.29287,-0.79281 -1.96875,-0.3125 z M 671.5,604.19191 c -0.59519,3.60102 -0.29365,-1.55658 0,0 z M 291,604.03566 c -4.86959,2.79091 -4.40445,9.7941 -4.75,14.71875 4.54988,3.60686 5.47078,-2.2199 6.875,-5.59375 0.95529,-2.68906 2.88785,-9.4982 -2.125,-9.125 z m 111.9375,1.96875 c -3.89267,4.76072 -4.11521,11.98387 -6.0989,17.75586 -1.54912,3.15683 -1.23531,7.298 2.88015,5.61914 4.56735,-3.78395 3.59977,-10.86386 5.53125,-16.0625 0.26734,-2.28872 2.35223,-8.85645 -2.3125,-7.3125 z m 103.15625,0.6875 c -5.34757,1.85174 -6.58525,9.32714 -8.34375,12.875 -4.33705,-2.67327 -5.57356,4.60244 -6.28125,7.625 -2.27863,3.92825 0.78833,4.97722 3.84375,3.59375 4.27158,-2.35919 1.99631,-8.56774 6.5625,-10.75 2.77894,-3.48128 7.88592,-7.18934 6.9375,-12.21875 -0.69041,-0.77095 -1.62058,-1.44905 -2.71875,-1.125 z m -76.21875,1.59375 c -4.34887,4.44211 -2.67981,12.14226 -2.375,17.78125 1.55253,3.46766 0.59714,6.46838 0.1875,10 -0.17347,4.89573 0.29944,9.7798 0.65625,14.65625 6.11326,-4.53708 8.2193,-14.18539 3.9375,-20.40625 -2.13249,-1.94768 1.17793,-6.57256 0.93205,-9.83231 0.10037,-3.84939 2.53743,-10.29651 -1.9008,-12.48019 -0.48827,0.0643 -1.08768,-0.22489 -1.4375,0.28125 z m 138.5,0.1875 c -4.64064,2.29452 1.48694,9.63691 5.21875,7.3125 5.1967,-2.69796 -1.94179,-8.05696 -5.21875,-7.3125 z m -37.65625,10.59375 c -5.45532,2.20486 -5.31726,9.46173 -6.6875,14.25 3.79586,-3.02438 12.427,-7.15975 9.5625,-13.28125 -0.62469,-0.89441 -1.84122,-1.20662 -2.875,-0.96875 z m 80.09375,5.03125 c -5.16109,1.48541 -0.31405,6.88557 2.25,8.5 2.31641,4.22166 11.56634,0.64051 7.46875,-3.90625 -2.62049,-2.41609 -6.15112,-4.51642 -9.71875,-4.59375 z m -114.25,1.5625 c -0.12241,-0.0373 0.16555,-0.19514 0,0 z m 65.28125,4.53125 c -4.85848,2.74065 -2.50157,10.14138 -0.71875,14.375 0.79251,2.94728 4.81401,7.19205 7.21875,3.34375 -0.0185,-5.5586 -0.60082,-11.88739 -3.71875,-16.71875 -0.64745,-0.80485 -1.75869,-1.24454 -2.78125,-1 z m -316.28125,3.75 c 8.93627,-0.53015 14.27109,9.1872 23.25,8.71875 8.9864,1.08419 21.02475,-3.41867 27.1875,5.4375 9.52903,9.69822 20.54525,18.51653 32.15625,25.6875 3.82253,2.41687 7.96309,4.10958 12.125,5.875 -12.22577,5.45782 -26.79399,9.78261 -34.75,21.25 -3.0186,4.73312 2.29471,9.25839 6.90625,9.25 8.16009,0.2794 15.6109,4.02954 23.65625,5.21875 2.72314,0.49624 4.94769,1.19127 2.09375,3.4375 -4.71125,5.96995 -7.53559,14.05402 -10.21875,20.5 -2.88019,-5.83008 -2.24714,-16.00563 -9.96875,-17.875 -4.66392,0.02 -5.99384,6.61936 -9.96875,8.71875 -5.27876,4.50531 -11.93541,8.80256 -18.03125,10.6875 0.27861,-6.49631 -6.40167,-9.93122 -12.15625,-9.25 -4.40824,0.10417 -1.37203,-6.43501 -1.67385,-9.11534 0.52969,-8.21823 5.31351,-17.39673 1.23635,-25.25966 -5.16525,-4.98963 -12.01899,1.14597 -16.875,3.28125 -3.89081,1.33275 -9.83641,4.60725 -13.40625,1.875 0.0755,-7.01973 7.75196,-10.9831 10.25,-17.25 4.0366,-6.23154 5.93018,-15.91476 -0.53125,-21.25 -5.90149,-7.73239 -7.53022,-17.76595 -12.90625,-25.625 -0.93561,-1.86346 -1.07323,-4.36225 1.625,-4.3125 z m 184.4375,1.75 c -2.08536,0.38559 0.24007,-3.0296 0,0 z m 93.40625,-0.5625 c -5.65399,1.87695 -4.01747,9.54898 -3.125,13.90625 3.30145,-2.97526 9.70061,-8.12944 6.03125,-13.03125 -0.74564,-0.72184 -1.86526,-1.0411 -2.90625,-0.875 z m -128.625,1.96875 c -5.34858,3.65877 -4.89894,11.78856 -7.30397,17.28717 5.24376,-1.79041 12.31574,-9.24968 9.99147,-16.22467 -0.55499,-0.89907 -1.64522,-1.41662 -2.6875,-1.0625 z m 35.65625,16.21875 c -4.03268,2.86666 -1.1976,9.27345 -1.5159,13.43153 0.47381,4.27343 0.34792,11.24614 4.6409,4.94347 3.23775,-5.2029 2.27585,-12.79192 -0.84375,-17.78125 -0.51948,-0.49967 -1.59572,-0.98613 -2.28125,-0.59375 z m -45.75,12.25 c -6.65142,4.14054 -9.89927,12.67638 -11.39685,20.05714 1.52594,0.78795 6.53085,-5.20669 8.70935,-8.08839 1.71713,-3.39713 7.98767,-8.12095 4.25,-12.03125 -0.50551,0.11661 -1.0631,-0.11362 -1.5625,0.0625 z m 52,21.5625 c -4.5638,2.14598 -0.32559,8.04503 1.03125,11.0625 1.2011,3.73192 6.28841,-1.1619 5.59375,-4.09375 -0.4803,-3.06736 -3.09948,-7.31148 -6.625,-6.96875 z m -95.59375,3.125 c -3.03765,1.59209 1.74918,-2.41803 0,0 z m -66.96875,45.3125 -0.0312,0 z m 66.46875,24.6875 c 3.56002,-0.30307 2.67439,4.04409 1.28125,5.90625 -0.12792,-1.72104 -2.00743,-5.00053 -1.28125,-5.90625 z"
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
-      <path
-         sodipodi:nodetypes="sssss"
-         inkscape:connector-curvature="0"
-         id="path3869"
-         d="m 309.93053,195.83415 c 0,5.43538 -3.60073,3.56418 -11.37309,5.5731 -5.45041,1.40878 -11.30165,3.06272 -10.10385,-5.51128 0.94257,-6.74707 4.74427,-11.31411 12.30218,-9.14847 3.37899,0.96821 9.17476,3.65127 9.17476,9.08665 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:none" />
-      <path
-         sodipodi:nodetypes="sssss"
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         d="m 344.39006,212.50892 c -2.16128,7.95384 -15.14436,15.17413 -18.95257,14.86366 -7.96005,-0.64895 -13.33366,-6.93732 -13.33366,-15.49501 0,-8.55769 7.9007,-14.63784 11.69217,-13.72724 9.46698,2.27369 22.23314,8.32653 20.59406,14.35859 z"
-         id="path3914"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3874"
-         d="m 332.23215,214.78176 c 0,4.09454 -3.43782,7.41379 -7.67856,7.41379 -4.24077,0 -7.67859,-3.31925 -7.67859,-7.41379 0,-4.09454 3.43782,-7.41379 7.67859,-7.41379 4.24074,0 7.67856,3.31925 7.67856,7.41379 z"
-         style="fill:#000000;fill-opacity:1;stroke:none" />
-      <path
-         sodipodi:nodetypes="ssssss"
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 304.44516,199.14013 c 0,3.79867 -2.83226,1.34237 -6.94514,2.59237 -1.88216,0.57203 -3.92668,3.51586 -5.21582,2.27117 -1.28914,-1.24469 -2.08649,-2.96421 -2.08649,-4.86354 0,-3.79867 3.1894,-6.87808 7.12374,-6.87808 3.93431,0 7.12371,3.07941 7.12371,6.87808 z"
-         id="path3876"
-         inkscape:connector-curvature="0" />
-      <path
-         sodipodi:nodetypes="ssscs"
-         inkscape:connector-curvature="0"
-         id="path3878"
-         d="m 364.55359,307.01392 c 0,1.7752 -11.7552,3.68451 -14.73215,4.73215 -10.65591,3.75 -10.6702,-1.34559 -8.83928,-5.53572 2.75626,-6.30783 2.96069,-13.66423 5.08928,-18.83929 2.48573,3.7535 18.48215,17.86766 18.48215,19.64286 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:none" />
-      <path
-         transform="matrix(1.1136365,0.86333713,-0.75193878,0.96994141,404.73812,-467.8684)"
-         d="m 510.88464,613.70343 a 2.7779195,2.7779195 0 1 1 -5.55584,0 2.7779195,2.7779195 0 1 1 5.55584,0 z"
-         sodipodi:ry="2.7779195"
-         sodipodi:rx="2.7779195"
-         sodipodi:cy="613.70343"
-         sodipodi:cx="508.10672"
-         id="path3883"
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         id="path3896"
-         sodipodi:cx="508.10672"
-         sodipodi:cy="613.70343"
-         sodipodi:rx="2.7779195"
-         sodipodi:ry="2.7779195"
-         d="m 510.88464,613.70343 a 2.7779195,2.7779195 0 1 1 -5.55584,0 2.7779195,2.7779195 0 1 1 5.55584,0 z"
-         transform="matrix(1.1136365,0.86333713,-0.75193878,0.96994141,495.90439,-508.52704)" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3932"
-         d="m 288.05562,742.11273 c 0.0388,-2.79455 -0.3373,-4.33149 -1.40851,-5.75672 -1.27023,-1.69003 -3.3037,-2.46681 -7.48849,-2.86056 -1.98218,-0.18651 -3.92903,-0.51308 -4.32633,-0.72571 -1.58325,-0.84733 -1.2946,-6.26109 1.01096,-18.96058 2.02686,-11.16434 1.55471,-15.62393 -1.75463,-16.57303 -1.59757,-0.45818 -4.15095,0.40486 -9.85185,3.32991 -8.76181,4.49556 -15.26922,5.73865 -17.95312,3.42954 -2.09285,-1.80059 -0.83002,-5.79254 3.58195,-11.32292 6.53316,-8.18929 9.31795,-13.93466 9.31629,-19.22064 -9.8e-4,-3.10823 -0.76824,-5.19345 -2.71003,-7.36514 -2.78209,-3.1115 -6.49396,-10.15766 -9.19928,-17.4628 -0.79886,-2.15714 -1.99006,-4.7339 -2.64713,-5.72615 -1.90648,-2.879 -2.73469,-4.72644 -2.95579,-6.59328 -0.18807,-1.58798 -0.1128,-1.83481 0.85452,-2.80212 1.40728,-1.40729 3.46032,-1.71056 6.61967,-0.97786 3.24157,0.75177 6.38492,2.24803 9.31785,4.43537 4.59443,3.42646 8.35,4.20215 18.63221,3.84834 12.00846,-0.4132 16.4833,0.91625 20.03109,5.95114 1.29998,1.84488 6.06166,6.0582 15.50463,13.71909 10.14093,8.22715 17.98436,13.18847 26.42857,16.71728 3.65294,1.52655 4.3748,2.49898 2.67961,3.60972 -0.4905,0.32138 -3.10211,1.51181 -5.80357,2.64538 -10.99133,4.61213 -14.7206,6.49996 -20.44747,10.35088 -5.64467,3.79565 -8.92857,7.61541 -8.92857,10.38549 0,2.45368 3.69038,4.18627 9.64285,4.52722 2.076,0.1189 3.99544,0.50758 6.07143,1.22941 1.66965,0.58054 5.92857,1.75755 9.46429,2.61556 5.91824,1.43618 7.40175,1.86896 10.32701,3.01265 l 1.04129,0.40712 -1.25881,1.32564 c -4.14052,4.36031 -8.32868,12.22156 -11.88469,22.30777 -0.53671,1.52233 -1.05046,2.76786 -1.14166,2.76786 -0.0912,0 -0.47615,-0.16609 -0.85546,-0.36908 -1.03376,-0.55326 -1.95015,-2.62047 -3.58506,-8.08728 -2.46922,-8.25662 -3.89943,-10.47221 -6.76001,-10.47221 -1.25059,0 -1.49557,0.16354 -2.54125,1.69643 -3.81539,5.59309 -14.38719,13.43486 -22.80565,16.91639 -1.47321,0.60927 -2.93229,1.33134 -3.2424,1.60461 -0.89742,0.79081 -1.00464,0.61953 -0.97446,-1.55672 l 0,0 z"
-         style="fill:#b2bc5f;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3934"
-         d="m 426.62796,773.89785 c 0,-3.5797 -2.35283,-5.15284 -7.70671,-5.15284 -3.66459,0 -8.79263,-5.05712 -14.48607,-14.28572 -2.1813,-3.53571 -6.13369,-9.0878 -8.78308,-12.33795 l -4.81705,-5.9094 -8.17497,2.61913 c -4.49623,1.44051 -14.46906,4.90331 -22.16182,7.6951 -7.69276,2.7918 -15.40704,5.07532 -17.14286,5.07452 -2.94374,-10e-4 -3.15601,-0.64994 -3.15601,-9.64285 0,-8.37666 0.56936,-10.48469 4.34034,-16.06997 2.38719,-3.53572 5.28005,-6.42858 6.42857,-6.42858 2.39795,0 3.69993,-6.10258 1.72363,-8.07888 -0.72644,-0.72644 -6.04704,-2.11213 -11.82357,-3.07932 -10.20027,-1.70787 -10.53851,-1.89641 -11.7433,-6.5458 -1.76571,-6.81414 -0.78256,-8.17767 7.7658,-10.77024 4.17683,-1.26677 13.02744,-5.02114 19.66802,-8.34306 l 12.07377,-6.03984 6.1456,-14.16157 c 3.38008,-7.78887 5.87545,-14.43173 5.54528,-14.76191 -0.33018,-0.33018 0.6647,-1.86536 2.21085,-3.4115 1.75401,-1.75402 2.4879,-3.82968 1.95154,-5.51959 -0.47279,-1.48961 0.4631,-5.79603 2.07974,-9.56977 4.43626,-10.3556 8.63373,-26.15603 8.63373,-32.49969 0,-8.00107 -1.76656,-5.00381 -6.2818,10.65806 -2.15504,7.47514 -8.53396,25.15371 -14.17537,39.28571 -9.88449,24.76109 -10.4568,25.79206 -15.7538,28.37886 -7.39826,3.61297 -12.7778,1.9178 -31.79112,-10.01781 -22.73762,-14.27356 -40.59574,-33.803 -48.56497,-53.11013 -5.25205,-12.7242 -6.34954,-35.19967 -2.71966,-55.69632 4.16941,-23.54318 25.87958,-83.56852 41.46566,-114.64628 4.41645,-8.80614 11.13203,-23.80319 14.92352,-33.32676 6.41861,-16.12246 20.0404,-56.64866 20.0404,-59.62223 0,-0.72557 -1.577,-0.92341 -3.50443,-0.43965 -2.03972,0.51192 -5.41543,-0.0737 -8.07663,-1.40136 -5.67393,-2.83053 -7.87107,-2.92057 -5.639,-0.23109 1.42579,1.71797 -0.21486,2.65513 -10.1337,5.78849 -6.50919,2.05626 -16.35673,4.32041 -21.88343,5.03147 -5.52668,0.71106 -14.86996,2.25764 -20.76281,3.43687 -14.4203,2.88566 -32.315,4.7573 -56.72438,5.93292 -19.48135,0.93825 -32.27409,-0.0452 -50.41848,-3.87598 -3.53571,-0.74647 -8.45041,-1.58924 -10.92155,-1.8728 -2.47114,-0.28355 -5.80387,-1.21712 -7.40608,-2.07461 -1.60221,-0.85747 -5.45355,-1.55904 -8.55854,-1.55904 -5.08662,0 -5.88912,-0.51356 -8.10742,-5.18827 -2.56384,-5.40289 -2.22009,-13.88376 0.68029,-16.78415 2.64504,-2.64503 45.91061,-1.67765 62.17044,1.39007 9.95679,1.87855 20.56266,2.68406 35,2.65826 20.16534,-0.036 21.35788,-0.2132 45,-6.6843 13.35715,-3.65598 36.17857,-9.60451 50.71429,-13.21893 31.74723,-7.89421 35.99164,-9.19774 35.43048,-10.88122 -0.60311,-1.80933 -23.09771,-28.22834 -24.13172,-28.34175 -0.46426,-0.0509 -1.66078,3.55667 -2.65892,8.01686 -0.99814,4.46019 -3.08131,11.04948 -4.62926,14.64286 l -2.81444,6.53342 -3.49341,-4.28571 c -1.92139,-2.35714 -7.17266,-11.51501 -11.6695,-20.35082 -4.49685,-8.8358 -8.97966,-16.06795 -9.9618,-16.07143 -1.32377,-0.005 -1.78572,4.17654 -1.78572,16.16296 0,20.67026 -2.48255,29.67311 -10.21525,37.045 -7.69529,7.33624 -11.47126,7.10146 -17.23205,-1.07142 -2.4922,-3.53572 -5.06416,-6.42858 -5.71547,-6.42858 -0.65131,0 -1.91646,1.60715 -2.81145,3.57143 -0.89499,1.96429 -2.12523,3.57143 -2.73386,3.57143 -0.60864,0 -2.91617,-2.55659 -5.12784,-5.68132 -2.21167,-3.12473 -4.66408,-5.48661 -5.44979,-5.24862 -0.78572,0.23799 -2.49761,4.79577 -3.80422,10.1284 -1.3066,5.33263 -3.03159,10.35163 -3.8333,11.15334 -1.82126,1.82127 -4.9364,-8.70131 -8.10955,-27.3931 -1.25766,-7.40844 -3.1632,-15.12272 -4.23454,-17.14286 l -1.94787,-3.67298 -3.55272,7.85714 c -1.95399,4.32143 -5.54561,12.67857 -7.98136,18.57143 -2.43576,5.89286 -5.86719,13.24416 -7.6254,16.33623 l -3.19676,5.62194 -16.42857,-0.34518 c -25.75685,-0.54119 -31.77622,-3.27892 -35.62631,-16.20355 -1.0033,-3.36805 -2.63149,-7.67511 -3.6182,-9.57124 -1.78703,-3.43408 -1.8141,-3.4177 -6.94685,4.204 l -5.15283,7.65152 -2.45539,-5.63258 c -3.23724,-7.42608 -3.28794,-25.83647 -0.1001,-36.34685 3.74512,-12.34779 12.15789,-25.20747 25.32825,-38.71653 16.74484,-17.17545 19.40291,-17.92917 56.42858,-16.00098 l 27.14285,1.41353 5.13206,-3.38632 c 9.56469,-6.31112 50.96559,-19.83112 53.36851,-17.42818 0.43892,0.43891 0.0684,2.8908 -0.82318,5.44865 -3.53536,10.14152 4.03056,21.52916 14.30098,21.52475 11.02945,-0.005 22.1994,-10.09156 21.30322,-19.23749 -0.37896,-3.86755 -1.6108,-4.90083 -11.49587,-9.64283 -13.8664,-6.65188 -14.36669,-9.68889 -1.59605,-9.68889 3.9019,0 5.99966,1.13922 9.86298,5.35625 4.19951,4.58402 5.29165,5.11601 7.57515,3.68994 2.26956,-1.41736 3.90289,-0.69726 10.93217,4.81979 8.123,6.37546 8.46166,6.49166 19.852,6.81149 7.8395,0.22012 13.34429,1.18411 17.01723,2.98005 5.23385,2.55915 5.31096,2.70072 2.14286,3.9343 -3.17296,1.23548 -3.18776,1.31766 -0.4292,2.38164 1.6016,0.61775 3.66983,0.45174 4.70653,-0.37777 4.5849,-3.66861 20.01134,17.69068 23.9655,33.18239 3.29037,12.8911 2.21001,22.03629 -4.09542,34.66756 -5.264,10.54504 -14.75145,24.07359 -17.51361,24.97337 -0.82964,0.27025 -2.5871,-1.77061 -3.90546,-4.53525 -2.36503,-4.95951 -5.3004,-6.74019 -5.3004,-3.21538 0,0.99618 1.59996,4.16578 3.55546,7.04356 l 3.55546,5.23233 -9.62689,8.77226 c -5.29478,4.82474 -12.03828,10.17298 -14.98557,11.885 -6.73454,3.91197 -7.53131,6.43174 -5.32351,16.83537 1.54585,7.2844 1.47461,8.80251 -0.55873,11.90579 -3.309,5.05015 -2.88533,6.10515 0.98977,2.4647 1.82614,-1.71559 3.75471,-2.68479 4.28571,-2.15379 1.8008,1.8008 0.97693,11.2657 -1.25841,14.4571 -1.22313,1.74626 -1.62297,3.17501 -0.88854,3.17501 0.73444,0 2.26187,-1.39544 3.39431,-3.10098 1.13244,-1.70554 2.7171,-2.69424 3.52146,-2.19712 0.80437,0.49713 2.93738,5.91043 4.74004,12.02956 4.4994,15.27329 14.11453,34.99907 22.4835,46.12569 3.84136,5.10714 13.97214,19.57143 22.51284,32.14285 53.45682,78.68539 68.59855,99.78142 75.64649,105.39352 12.14163,9.66807 26.52131,18.44436 39.87731,24.33814 10.87245,4.79783 14.11867,5.59646 22.43053,5.51824 9.59119,-0.0903 9.78983,-0.0144 15.18356,5.79055 9.89218,10.64655 13.59838,13.95955 15.6163,13.95955 3.71671,0 2.12408,-5.77188 -2.28492,-8.28072 -2.35217,-1.33846 -4.28074,-3.26635 -4.28571,-4.2842 -0.004,-1.01786 -1.57466,-3.41629 -3.48821,-5.32985 -1.91356,-1.91355 -2.96406,-3.79757 -2.33445,-4.18668 0.62962,-0.38913 0.84662,-2.26707 0.48223,-4.1732 -0.43234,-2.26166 0.36174,-4.48997 2.28566,-6.41389 4.27507,-4.27507 9.85228,-15.92446 10.73771,-22.42834 0.42062,-3.08957 1.51543,-10.97616 2.43295,-17.52574 2.76804,-19.7594 -1.2281,-37.2384 -8.9889,-39.31722 -18.20165,-4.87553 -41.76129,9.1535 -48.71912,29.0107 -1.72214,4.91493 -3.77208,9.03106 -4.55541,9.14697 -3.10375,0.45926 -5.35095,-23.32915 -3.91532,-41.4467 1.58292,-19.9762 2.99122,-23.22124 15.91213,-36.66521 11.47387,-11.93839 17.59143,-14.73782 22.17969,-10.14956 1.65684,1.65684 1.86991,2.93742 0.81633,4.90607 -1.82236,3.40512 -1.86198,10.43295 -0.0524,9.31463 0.75528,-0.4668 1.80063,-3.12687 2.32298,-5.9113 1.59443,-8.49907 10.22369,-10.09738 17.56906,-3.25413 2.88417,2.68702 3.23589,4.03877 2.52339,9.69815 l -0.82789,6.57594 2.87646,-5.42927 c 3.4244,-6.4635 5.97707,-7.74125 10.29765,-4.34267 3.32438,2.61494 3.33286,2.69191 0.7638,6.92242 -1.42887,2.35295 -2.58101,5.24238 -2.56031,6.42095 0.0503,2.86428 7.09019,-5.10475 7.09019,-8.02597 0,-2.73246 11.67052,3.37054 19.87555,10.39372 5.64592,4.8327 16.83252,21.15565 23.34287,34.06082 5.00816,9.92743 10.99802,27.7589 11.0432,32.87504 0.0207,2.3473 0.41746,10.51609 0.8816,18.15286 0.86566,14.24328 -1.60147,35.96273 -3.69945,32.56813 -0.60147,-0.9732 -0.79495,-2.91146 -0.42993,-4.30723 0.97224,-3.7179 -2.50517,-5.23223 -4.80199,-2.09116 -2.93063,4.00787 -2.3808,10.00913 1.13065,12.34064 3.03804,2.01718 3.00518,2.11863 -5.35715,16.54379 -4.62765,7.9828 -9.2175,14.54073 -10.19964,14.57319 -0.98214,0.0324 -1.78571,1.3876 -1.78571,3.01141 0,1.85214 -5.72296,8.65429 -15.35715,18.25306 l -15.35721,15.30067 -30.71429,15.92153 c -16.89285,8.75684 -34.61344,17.2241 -39.3791,18.81613 -9.3854,3.13531 -25.40878,6.09742 -28.18431,5.21018 -0.94726,-0.3028 -12.3096,-0.94238 -25.24963,-1.42128 -26.85853,-0.99403 -27.94664,-1.43743 -29.40626,-11.98292 -0.50404,-3.64164 -1.80185,-11.12118 -2.88403,-16.62118 -1.08217,-5.5 -2.96961,-18.67858 -4.19432,-29.28572 -3.42215,-29.63883 -13.96832,-71.49593 -17.19969,-68.26456 -0.41163,0.41163 1.48474,14.17169 4.21416,30.57792 6.31917,37.98393 9.19667,58.5393 10.043,71.74188 0.36961,5.76612 1.27361,11.2304 2.00887,12.14286 0.73527,0.91247 1.7869,4.38782 2.33696,7.72299 0.55005,3.33517 1.59621,6.43235 2.32478,6.88264 0.72859,0.45029 2.60516,3.32863 4.17019,6.39633 1.56503,3.06771 4.8046,7.80894 7.19907,10.53608 2.39446,2.72715 4.72463,7.24502 5.17814,10.03973 0.7125,4.39059 0.43979,5.08127 -2.0063,5.08127 -4.29298,0 -11.92337,-2.97674 -11.08938,-4.32615 0.40474,-0.65489 0.0826,-1.5945 -0.71599,-2.08802 -0.79853,-0.49351 -1.45187,-0.2767 -1.45187,0.48183 0,0.75853 -1.28572,1.04293 -2.85714,0.63199 -1.57143,-0.41095 -2.85715,-1.20516 -2.85715,-1.76492 0,-1.74535 -13.72065,-7.53875 -16.55945,-6.99205 -1.97618,0.38057 -2.95056,2.23061 -3.65046,6.9311 -0.90596,6.08422 -9.37846,29.98337 -10.62943,29.98337 -0.32407,0 -0.58923,-1.53837 -0.58926,-3.41859 z m 15.28712,-78.87133 c 0.6525,-1.95748 -3.40626,-7.20998 -4.6276,-5.98865 -1.55372,1.55371 0.66714,8.55064 2.51817,7.93362 0.90405,-0.30135 1.8533,-1.17658 2.10943,-1.94497 z M 382.2049,674.93277 c 4.51635,-6.81843 4.86019,-9.51456 0.78175,-6.12976 -2.97337,2.46767 -8.2382,12.79914 -6.52235,12.79914 0.72765,0 3.31092,-3.00123 5.7406,-6.66938 z m 51.54405,-10.91493 c -0.0261,-7.16753 -2.12872,-11.63347 -3.63229,-7.71525 -1.29381,3.37165 0.65003,15.55903 2.31727,14.52862 0.73529,-0.45444 1.32705,-3.52046 1.31502,-6.81337 z M 394.4041,646.99857 c 2.60899,-3.72486 2.95895,-8.73669 0.55406,-7.93506 -2.0358,0.6786 -5.8391,11.11007 -4.05071,11.11007 0.70004,0 2.27353,-1.42876 3.49665,-3.17501 z m 172.22386,-3.87485 c 0,-5.2489 -2.31401,-11.52157 -4.25036,-11.52157 -1.90507,0 -1.89428,9.38372 0.0149,12.95106 2.17376,4.0617 4.23546,3.36587 4.23546,-1.42949 z m -134.28571,-5.17731 c 0,-3.48934 -0.64286,-6.34426 -1.42857,-6.34426 -0.78572,0 -1.42858,3.25223 -1.42858,7.22717 0,4.45433 0.5481,6.88842 1.42858,6.34426 0.78571,-0.4856 1.42857,-3.73783 1.42857,-7.22717 z m 92.23305,4.43286 c 2.53533,-3.86939 1.70619,-6.81698 -1.56452,-5.56189 -1.17506,0.45091 -2.0971,2.62186 -2.0971,4.93761 0,5.04666 0.6872,5.16382 3.66162,0.62428 z m 94.9098,-11.44115 c 0,-2.54457 -4.96301,-5.40444 -8.27274,-4.76704 -2.10014,0.40446 -1.99904,0.87357 0.78914,3.66176 3.64163,3.64163 7.4836,4.20907 7.4836,1.10528 z m -122.70325,-5.49365 c 0.56317,-2.10578 0.48191,-4.16366 -0.18055,-4.57308 -1.45921,-0.90185 -2.1353,0.1914 -3.40957,5.51343 -1.2858,5.37019 2.14257,4.4722 3.59012,-0.94035 z m -93.76295,-7.66082 c 0.53998,-3.60073 1.32025,-7.42888 1.73396,-8.507 0.41372,-1.07811 0.12529,-1.96021 -0.64096,-1.96021 -1.49502,0 -6.0852,14.80131 -6.00994,19.37943 0.0843,5.1308 3.82886,-1.6563 4.91694,-8.91222 z m 29.15433,-2.25293 c 0.17182,-5.446 -1.67341,-7.20485 -3.24957,-3.09744 -1.18524,3.0887 -1.09206,11.2221 0.16509,14.40917 0.8564,2.17109 1.19263,1.8868 1.97384,-1.66887 0.51789,-2.35714 1.01767,-6.69643 1.11064,-9.64286 z m 98.45473,11.5 c 2.04986,-2.04985 2.28539,-6.85714 0.33597,-6.85714 -1.5025,0 -4.33597,4.60634 -4.33597,7.04894 0,2.02133 1.87687,1.93133 4,-0.1918 z m 31.71429,-12.69047 c 0,-6.31287 -0.48856,-8.52998 -1.78572,-8.10386 -3.46638,1.13873 -2.42075,16.79433 1.12169,16.79433 0.36521,0 0.66403,-3.91071 0.66403,-8.69047 z m -270.59813,-2.14054 c 1.03368,-5.51004 -0.22596,-8.14486 -2.31482,-4.8419 -1.76507,2.79098 -1.76468,11.79803 4.8e-4,10.70711 0.75528,-0.4668 1.79672,-3.10614 2.31434,-5.86521 z m 213.31241,2.14728 c 3.34886,-4.52957 3.22052,-6.54048 -0.33044,-5.17785 -2.16697,0.83155 -5.82579,9.57587 -4.00676,9.57587 0.59709,0 2.54882,-1.9791 4.3372,-4.39802 z m 35.97537,-6.59208 c 3.17853,-7.41522 3.20679,-7.58133 1.28935,-7.58133 -2.146,0 -7.11036,8.77859 -7.11652,12.58431 -0.007,4.75969 2.60332,2.51796 5.82717,-5.00298 z m 32.73892,5.23098 c 0,-1.71024 -4.02946,-3.54475 -5.20466,-2.36955 -1.25101,1.25101 0.87093,3.84295 3.14612,3.84295 1.1322,0 2.05854,-0.66302 2.05854,-1.4734 z M 279.4851,600.80355 c 0,-2.07337 -0.61834,-3.27357 -1.42857,-2.77283 -0.78571,0.4856 -1.42857,2.13069 -1.42857,3.65575 0,1.52505 0.64286,2.77282 1.42857,2.77282 0.78572,0 1.42857,-1.64508 1.42857,-3.65574 z m 236.37778,-1.98523 c 5.48505,-7.91495 3.77798,-10.8071 -1.81866,-3.08117 -2.47893,3.42206 -4.15947,6.78449 -3.73453,7.47204 1.14784,1.85725 1.31461,1.72538 5.55319,-4.39087 z m -222.09206,-10.7814 c 0,-6.00314 0.18606,-6.27328 4.64286,-6.7412 l 4.64285,-0.48745 -6.11728,-1.98578 c -4.66449,-1.51418 -6.51352,-1.58954 -7.78572,-0.31734 -1.27218,1.27219 -1.11618,1.66843 0.65693,1.66843 1.97226,0 2.19874,1.22674 1.49152,8.07913 -0.61105,5.92034 -0.3926,7.80643 0.8175,7.05856 0.90824,-0.56133 1.65134,-3.83479 1.65134,-7.27435 z m 51.42857,-0.006 c -1.91394,-2.30617 -11.42857,-2.99994 -11.42857,-0.83333 0,1.80703 2.7051,2.73034 8.3892,2.8634 4.12598,0.0966 4.56241,-0.19491 3.03937,-2.03007 z m 26.5756,-10.22924 c 1.08584,-4.5882 2.30669,-16.05485 2.71297,-25.48143 l 0.73873,-17.13925 3.91493,-1.22671 c 2.1532,-0.6747 12.05778,-1.31919 22.01018,-1.4322 16.44723,-0.18674 21.58299,-1.00339 19.48765,-3.09873 -0.94972,-0.94971 -33.13103,-13.3399 -39.45379,-15.19017 -2.60041,-0.76097 -5.49327,-1.09313 -6.42857,-0.7381 -1.70166,0.6459 2.35573,2.60387 15.08516,7.27961 3.73214,1.37089 6.78571,3.09262 6.78571,3.82606 0,1.64753 -7.31854,5.00796 -15.19073,6.9751 -3.24775,0.81156 -6.66137,2.38692 -7.58581,3.5008 -0.92443,1.11387 -2.06253,7.9174 -2.5291,15.11893 -0.60147,9.28391 -1.42899,13.31654 -2.84402,13.85954 -4.47347,1.71663 -14.36078,-12.68123 -17.6261,-25.66707 -2.28095,-9.0711 -5.13647,-8.84778 -13.7001,1.07143 -8.22145,9.52289 -10.52414,9.9712 -10.52414,2.04894 0,-8.05877 -1.7975,-10.71208 -11.50938,-16.98918 -6.18495,-3.99752 -7.97505,-5.83476 -6.68338,-6.85939 2.86616,-2.2736 11.12242,-4.36933 21.0499,-5.34323 20.83302,-2.04374 24.94299,-5.1365 26.1785,-19.69944 0.48065,-5.6653 2.84678,-20.83019 5.25805,-33.69974 2.41127,-12.86955 4.13037,-23.65295 3.82023,-23.96309 -0.31016,-0.31016 -1.32648,0.35492 -2.25849,1.47793 -1.63287,1.96747 -10.60386,41.17586 -12.79479,55.92054 -0.58671,3.94849 -1.59384,8.03193 -2.23808,9.07433 -1.93379,3.12893 -9.8575,5.71992 -20.27847,6.6309 -8.26223,0.72226 -29.12463,4.8953 -36.06212,7.21337 -3.65498,1.22127 1.0193,4.53479 12.09617,8.57475 5.88893,2.14781 11.63939,5.23607 12.77879,6.8628 2.68426,3.83231 2.63459,18.85472 -0.0999,30.17908 -1.13831,4.71429 -2.0797,11.30357 -2.09197,14.64286 -0.0187,5.11161 -0.474,6.07143 -2.87946,6.07143 -1.57142,0 -2.85714,0.64285 -2.85714,1.42857 0,0.78571 2.37857,1.42857 5.28572,1.42857 4.05171,0 4.89342,-0.39229 3.60541,-1.6803 -0.98144,-0.98144 -1.16677,-2.31829 -0.44561,-3.21429 0.67908,-0.84368 4.57634,-8.0438 8.66058,-16.00025 7.29933,-14.21972 18.24234,-27.52565 21.15637,-25.72467 0.76236,0.47115 2.09937,3.68924 2.97112,7.15128 0.87175,3.46204 3.7993,8.94496 6.50565,12.18426 3.36955,4.03308 5.4529,8.4736 6.60912,14.08681 4.1242,20.02239 5.88791,21.25327 9.3701,6.53935 z m 297.11199,4.39822 c 1.04665,-5.57915 0.29627,-7.18944 -2.52112,-5.4102 -1.03441,0.65325 -4.45218,1.19978 -7.59504,1.21448 -7.73077,0.0361 -8.09757,4.11447 -0.42737,4.75164 3.75721,0.31213 5.54367,1.24814 6.17428,3.23504 1.23923,3.90447 3.25342,2.15687 4.36925,-3.79096 z m -390.3011,0.68429 c 1.05582,-5.27916 -0.5117,-8.82441 -2.10394,-4.75844 -1.51077,3.85741 -1.52965,9.1904 -0.0326,9.1904 0.6875,0 1.64891,-1.9946 2.13649,-4.43245 z m 366.61351,-4.17483 c 0,-1.73836 -6.09591,-4.25036 -10.31441,-4.25036 -2.89506,0 -2.90719,0.0866 -0.39988,2.85715 2.66976,2.95005 10.71429,3.99611 10.71429,1.39321 z M 502.8413,575.12782 c -0.44261,-1.1534 -1.72287,-2.0971 -2.84501,-2.0971 -1.60699,0 -1.711,0.61526 -0.48977,2.89716 1.71937,3.21267 4.60861,2.51951 3.33478,-0.80006 z m 165.64228,-12.90013 c 0.15845,-5.5902 -1.42466,-7.89845 -3.33999,-4.86988 -1.54889,2.44914 -1.77726,8.67088 -0.44564,12.14101 0.86917,2.26503 1.01221,2.26405 2.28801,-0.0157 0.74849,-1.33747 1.4224,-4.60242 1.49762,-7.25544 z m -373.5135,4.30725 c 2.23495,-4.90517 2.15864,-11.05073 -0.12786,-10.29476 -1.7974,0.59427 -4.13126,13.9334 -2.43783,13.9334 0.49929,0 1.65383,-1.63739 2.56566,-3.63864 z m -15.48498,-2.15996 c 0,-1.6178 -0.64285,-2.54414 -1.42857,-2.05854 -0.78571,0.4856 -1.42857,1.80925 -1.42857,2.94145 0,1.1322 0.64286,2.05855 1.42857,2.05855 0.78572,0 1.42857,-1.32366 1.42857,-2.94146 z m 382.59253,0.44146 c -0.69903,-3.68606 -7.19661,-3.95173 -10.38847,-0.42476 -2.63181,2.90811 -2.60844,2.92476 4.10786,2.92476 5.6613,0 6.67798,-0.40469 6.28061,-2.5 z m -16.2808,0.2043 c 4.16,-1.59635 2.31856,-3.41859 -3.45458,-3.41859 -5.49083,0 -7.652,1.83717 -3.92857,3.3396 2.58225,1.04197 4.81152,1.06582 7.38315,0.079 z m -364.568,-7.34716 c 0.80085,-3.08777 -0.11458,-6.07143 -1.86277,-6.07143 -0.72024,0 -1.30953,1.92857 -1.30953,4.28572 0,4.64475 2.12112,5.83874 3.1723,1.78571 z m 208.25627,0.82677 c 0,-2.37181 -4.3635,-6.8982 -6.64998,-6.8982 -2.51116,0 -2.42713,1.49943 0.30241,5.39642 2.35815,3.36672 6.34757,4.31058 6.34757,1.50178 z m -148.84524,-4.1482 c -0.28154,-0.84464 -0.97797,-1.4875 -1.54761,-1.42857 -0.56965,0.0589 -2.48215,0.15233 -4.25,0.20756 -3.067,0.0959 -3.08337,0.15665 -0.35715,1.32815 4.04509,1.73823 6.75418,1.69108 6.15476,-0.10714 z m -34.36787,-4.53571 c -0.60821,-1.82822 -16.44089,-4.75077 -17.88944,-3.30222 -1.5207,1.52072 1.24153,2.8297 7.94831,3.76662 10.36246,1.44761 10.57393,1.43773 9.94113,-0.4644 z m 8.9274,0.35714 c -2.79504,-1.8063 -5.71429,-1.8063 -5.71429,0 0,0.78571 1.76786,1.41873 3.92858,1.4067 3.06134,-0.017 3.45552,-0.32759 1.78571,-1.4067 z m 352.14286,-5.71429 c 0,-2.61904 -0.80357,-5.02975 -1.78572,-5.35714 -1.2381,-0.4127 -1.78571,1.23016 -1.78571,5.35714 0,4.12699 0.54761,5.76985 1.78571,5.35715 0.98215,-0.32739 1.78572,-2.7381 1.78572,-5.35715 z M 439.4851,543.69475 c 0,-2.98227 -2.49161,-2.58776 -4.23545,0.67063 -2.14675,4.01123 -1.83796,4.67236 1.37831,2.95106 1.57143,-0.841 2.85714,-2.47076 2.85714,-3.62169 z m -155.69478,-3.16403 c 0.0114,-1.375 0.36743,-4.10714 0.79266,-6.07143 0.56222,-2.59718 0.16721,-2.26017 -1.44809,1.23545 -2.58457,5.5932 -2.77289,7.33598 -0.79264,7.33598 0.78571,0 1.43734,-1.125 1.44807,-2.5 z m 14.26621,-8.05875 c 0,-7.68189 -2.27311,-4.95518 -3.44313,4.13018 -0.84787,6.58402 -0.74917,6.9259 1.26165,4.36982 1.19981,-1.52518 2.18148,-5.35018 2.18148,-8.5 z m 177.14286,8.73377 c 0,-2.41296 -4.08474,-8.17502 -5.79529,-8.17502 -2.00805,0 -1.63495,2.51907 0.95959,6.47883 2.49386,3.80612 4.8357,4.62754 4.8357,1.69619 z m -20,-13.98657 c 0,-2.21755 -2.6889,-1.49955 -5.71429,1.52584 -4.36521,4.36521 -3.40008,6.29546 1.42858,2.85714 2.35714,-1.67843 4.28571,-3.65078 4.28571,-4.38298 z m -97.14286,-2.75988 c 0,-0.78571 -2.73214,-1.41872 -6.07143,-1.4067 -4.44637,0.016 -5.49787,0.39255 -3.92857,1.4067 2.8207,1.82288 10,1.82288 10,0 z m 17.14286,-3.41858 c 0,-2.04287 -2.95506,-3.72427 -6.54541,-3.72427 -2.50046,0 -2.69093,3.77931 -0.2403,4.76817 3.51048,1.41651 6.78571,0.91266 6.78571,-1.0439 z m 85.71429,-0.70887 c 0,-2.12995 -5.40396,-8.07952 -6.41975,-7.06792 -1.12963,1.12496 3.33029,8.33823 5.15547,8.33823 0.69535,0 1.26428,-0.57164 1.26428,-1.27031 z m -100.78572,-2.85485 c -2.0981,-1.96028 -7.78571,-3.36544 -7.78571,-1.92348 0,2.18136 1.74834,3.1915 5.52381,3.1915 2.17413,0 3.0772,-0.50626 2.2619,-1.26802 z m -11.35714,-1.58912 c 0.5396,-0.8731 -1.51066,-1.38953 -5.27283,-1.32816 -4.74989,0.0774 -5.50323,0.3808 -3.2986,1.32816 3.95354,1.6989 7.52146,1.6989 8.57143,0 z m 81.32428,-3.6021 c 3.24338,-2.45378 1.76082,-4.83479 -1.66491,-2.67389 -2.60481,1.64307 -4.13729,4.87293 -2.27841,4.80199 0.65475,-0.025 2.42925,-0.98265 3.94332,-2.1281 z m -59.39068,-43.73193 c 3.30956,-23.67659 5.7217,-43.34402 5.36031,-43.7054 -2.14247,-2.14246 -12.25891,53.21343 -13.309,72.82514 -1.40705,26.27851 1.89695,14.17443 7.94869,-29.11974 z m 237.35211,37.24971 c 0,-1.6178 -0.64285,-2.54414 -1.42857,-2.05854 -0.78571,0.4856 -1.42857,1.80926 -1.42857,2.94146 0,1.1322 0.64286,2.05854 1.42857,2.05854 0.78572,0 1.42857,-1.32366 1.42857,-2.94146 z m -296.54578,-1.15458 c 0.86678,-1.40252 -11.62796,-3.46122 -13.60206,-2.24116 -0.7044,0.43534 -1.28073,1.39646 -1.28073,2.1358 0,1.68924 13.84332,1.78724 14.88279,0.10528 z m 125.74258,-1.01913 c 3.20765,-3.20765 1.15733,-5.64813 -2.19577,-2.61363 -1.49341,1.35154 -2.71531,3.00056 -2.71531,3.6645 0,1.927 2.4595,1.40071 4.91108,-1.05087 z m -109.1968,-0.59912 c -2.82437,-1.82525 -11.42857,-1.82525 -11.42857,0 0,0.78572 3.05357,1.41873 6.78572,1.4067 4.90781,-0.0159 6.1927,-0.40511 4.64285,-1.4067 z m 15.71429,-1.42857 c 0,-0.78571 -1.60714,-1.42857 -3.57143,-1.42857 -1.96429,0 -3.57143,0.64286 -3.57143,1.42857 0,0.78572 1.60714,1.42857 3.57143,1.42857 1.96429,0 3.57143,-0.64285 3.57143,-1.42857 z m 61.49406,-1.55093 c 0.87701,-1.63871 1.1685,-3.40555 0.64774,-3.92631 -0.96914,-0.96916 -4.99894,3.66633 -4.99894,5.75028 0,2.27006 2.78491,1.10265 4.3512,-1.82397 z m 42.79165,1.05806 c 0,-1.0568 -1.28571,-3.085 -2.85714,-4.50713 -3.21201,-2.90683 -3.84156,-0.82324 -1.08493,3.59082 2.04157,3.26907 3.94207,3.71082 3.94207,0.91631 z m 151.19926,-6.00291 c 1.04613,-3.30616 1.06182,-10.11622 -2.00564,-3.86136 -0.47346,2.16071 -1.10839,4.73214 -1.41096,5.71428 -1.02159,3.31603 1.74513,1.81556 3.4166,-1.85292 z m 13.44261,0.0331 c 0.77878,-4.07383 -1.02601,-6.14647 -2.34932,-2.698 -1.25185,3.26226 -1.05979,6.30353 0.39805,6.30353 0.69413,0 1.5722,-1.62249 1.95127,-3.60553 z m -308.10711,-8.79116 c 0.54424,-4.72137 0.35806,-6.21477 -0.59171,-4.74617 -0.76222,1.17857 -1.80315,5.35714 -2.31319,9.28571 -0.69006,5.3151 -0.53864,6.52958 0.59171,4.74618 0.83548,-1.31818 1.87642,-5.49675 2.31319,-9.28572 z m 116.06999,0.44029 c 0.5388,-2.71712 -2.6904,-3.1008 -5.17618,-0.61503 -0.94285,0.94286 -1.71428,2.94984 -1.71428,4.45996 0,2.52628 0.25683,2.57542 3.21428,0.61502 1.76786,-1.17185 3.42215,-3.17882 3.67618,-4.45995 z m 155.08358,0.42893 c 2.78899,-4.72139 2.21276,-7.06875 -1.06703,-4.34676 -2.1016,1.74417 -4.05858,8.73137 -2.4455,8.73137 0.50736,0 2.08799,-1.97309 3.51253,-4.38461 z m 12.2898,-3.82968 c -0.017,-3.06134 -0.32758,-3.45552 -1.4067,-1.78571 -1.8063,2.79504 -1.8063,5.71429 0,5.71429 0.78572,0 1.41873,-1.76786 1.4067,-3.92858 z m -152.83527,-0.9132 c 0,-2.68664 -5.22337,-8.97367 -6.44479,-7.75715 -1.11001,1.10555 3.60999,9.74175 5.32423,9.74175 0.6163,0 1.12056,-0.89307 1.12056,-1.9846 z m 157.77614,-9.76184 c 1.22312,-1.74624 2.22386,-3.99624 2.22386,-5 0,-3.4067 -2.3187,-1.84443 -4.7123,3.17502 -2.64846,5.55387 -0.98029,6.77728 2.48844,1.82498 z m -170.22518,-6.84724 c -0.79562,-3.04246 -2.9681,-5.0368 -4.17356,-3.83133 -0.85723,0.85723 2.6103,6.71073 3.97536,6.71073 0.52315,0 0.61234,-1.29573 0.1982,-2.8794 z m -13.14062,-19.05946 c -3.71273,-3.71273 -3.97935,-0.91831 -0.48177,5.04919 2.3589,4.0247 2.52719,4.08673 2.98177,1.09901 0.27759,-1.82444 -0.78195,-4.43017 -2.5,-6.1482 z m -34.69605,-32.63257 c 0.94285,-0.94286 1.6929,-3.03214 1.66675,-4.64286 -0.0456,-2.80715 -0.16401,-2.78874 -2.85714,0.44397 -4.1405,4.97009 -3.13336,8.52263 1.19039,4.19889 z m -4.80363,-17.84736 c 3.61081,-5.31378 3.85377,-7.8582 0.48101,-5.03747 -2.90274,2.42762 -7.12641,10.3134 -5.52394,10.3134 0.80181,0 3.07113,-2.37417 5.04293,-5.27593 z m 17.39061,-2.89507 c -1.2252,-1.2209 -6.58698,4.66053 -6.58698,7.22537 0,0.87725 1.73377,-0.13871 3.85281,-2.25783 2.11904,-2.11905 3.34943,-4.35444 2.73417,-4.96754 z m -19.54781,-11.30737 c 3.09265,-3.93167 3.89565,-7.66449 1.64877,-7.66449 -1.2669,0 -7.25937,8.68882 -7.25937,10.52576 0,2.09507 2.8587,0.6372 5.6106,-2.86127 z m -185.63248,-29.4502 c -0.0157,-5.36921 -0.41531,-6.8912 -1.40669,-5.35714 -1.82704,2.82714 -1.82704,12.85714 0,12.85714 0.78571,0 1.41872,-3.375 1.40669,-7.5 z m -15.09857,-1.98697 c 1.08136,-2.81797 -0.25748,-7.65589 -2.11868,-7.65589 -0.73276,0 -1.3323,2.25 -1.3323,5 0,5.2215 1.90413,6.68692 3.45098,2.65589 z m -13.45098,-5.59734 c 0,-4.99975 -2.27365,-6.66993 -3.77033,-2.76963 -1.14615,2.98681 0.69523,9.58584 2.38364,8.54234 0.76268,-0.47136 1.38669,-3.06909 1.38669,-5.77271 z m 173.57143,3.65574 c -0.4856,-0.78572 -1.48783,-1.42857 -2.22717,-1.42857 -0.73935,0 -1.34426,0.64285 -1.34426,1.42857 0,0.78571 1.00223,1.42857 2.22717,1.42857 1.22494,0 1.82986,-0.64286 1.34426,-1.42857 z m 15.06548,-8.44907 c -1.49965,-2.80213 -4.3512,-4.1263 -4.3512,-2.02056 0,1.42669 4.6484,6.29743 5.34509,5.60074 0.33037,-0.33038 -0.11686,-1.94147 -0.99389,-3.58018 z m -15.06548,-2.9795 c -0.4856,-0.78572 -1.52576,-1.42857 -2.31147,-1.42857 -0.78572,0 -1.03128,0.64285 -0.54568,1.42857 0.4856,0.78571 1.52576,1.42857 2.31148,1.42857 0.78571,0 1.03127,-0.64286 0.54567,-1.42857 z m 6.42857,-6.99002 c 0,-0.70165 -0.96429,-1.64576 -2.14286,-2.09802 -2.17754,-0.8356 -2.9257,0.68614 -1.19047,2.42137 1.36527,1.36528 3.33333,1.17437 3.33333,-0.32335 z m -120.52583,-28.1117 c 3.92834,-4.16525 4.81154,-6.23097 4.81154,-11.25365 0,-7.9984 -2.60827,-10.40037 -8.59906,-7.9189 -12.93985,5.35986 -17.18485,24.27427 -5.44793,24.27427 3.22211,0 5.73102,-1.38594 9.23545,-5.10172 z m -53.27269,-7.83202 c 7.71146,-6.06584 7.79098,-21.46877 0.12078,-23.39387 -10.40226,-2.6108 -19.31165,13.67006 -12.66982,23.1526 2.77921,3.96788 7.69136,4.06232 12.54904,0.24127 z m 229.076,-7.87993 c -4.0329,-3.49341 -8.13462,-4.58782 -8.13462,-2.17047 0,0.71587 2.02092,3.00208 4.49095,5.08048 3.31653,2.79067 4.90427,3.35827 6.07143,2.17047 1.16033,-1.18085 0.51494,-2.53141 -2.42776,-5.08048 z m 28.19776,-7.86405 c -1.36923,-1.51297 -3.03271,-2.75085 -3.69666,-2.75085 -2.22491,0 -1.23732,3.35507 2.00713,6.81868 2.71865,2.90229 3.28867,3.06531 3.69665,1.05721 0.2653,-1.3058 -0.6379,-3.61207 -2.00712,-5.12504 z M 219.4851,267.15214 c 0,-3.61662 -2.19907,-3.40106 -4.91899,0.48216 -3.55208,5.07131 -2.88501,7.32406 1.34757,4.55077 1.96428,-1.28705 3.57142,-3.55187 3.57142,-5.03293 z m 185.71429,1.59287 c 0,-2.19102 -5.44703,-7.14286 -7.85714,-7.14286 -3.24369,0 -2.5766,2.30859 1.62123,5.6106 4.10857,3.2318 6.23591,3.75452 6.23591,1.53226 z m -239.64286,-6.86728 c 2.67832,-2.30011 3.45565,-8.84701 1.05043,-8.84701 -1.71254,0 -7.10882,8.45912 -7.11652,11.15574 -0.006,1.99418 1.90041,1.26873 6.06609,-2.30873 z m 62.77898,-6.97142 c 3.95756,-3.79159 5.28416,-7.58987 2.65087,-7.58987 -1.3895,0 -8.64413,8.80545 -8.64413,10.49198 0,1.86191 2.06379,0.86256 5.99326,-2.90211 z m -50.00652,-11.51844 c 6.78474,-7.27435 8.32867,-13.43123 2.59916,-10.3649 -2.85044,1.52552 -6.29611,6.44375 -7.76198,11.07918 -1.37194,4.33839 0.7202,4.04894 5.16282,-0.71428 z m 72.39418,-7.69047 c 4.03335,-1.67618 7.33336,-3.65583 7.33336,-4.39922 0,-2.02307 -8.68636,0.23559 -13.21428,3.43602 -7.04482,4.97942 -4.70522,5.36261 5.88092,0.9632 z m -45.52378,-5.15242 c 3.53571,-1.14197 7.23214,-2.31539 8.21429,-2.60759 4.01086,-1.1933 1.4,-3.4781 -3.97446,-3.4781 -8.29221,0 -15.6684,3.40027 -15.6684,7.22281 0,2.39201 0.56024,2.84268 2.5,2.01104 1.375,-0.58952 5.39286,-2.00619 8.92857,-3.14816 z M 369.4851,215.98413 c 0,-1.8612 -4.83791,-3.20003 -7.65588,-2.11867 -4.03103,1.54685 -2.56562,3.45098 2.65588,3.45098 2.75,0 5,-0.59954 5,-1.33231 z m 20,-0.0963 c 0,-0.78572 -2.9308,-1.42858 -6.51288,-1.42858 -3.97814,0 -6.16926,0.55599 -5.62997,1.42858 0.4856,0.78571 3.4164,1.42857 6.51288,1.42857 3.09649,0 5.62997,-0.64286 5.62997,-1.42857 z"
-         style="fill:#d3bc5f;fill-opacity:1;stroke:none"
-         sodipodi:nodetypes="cssscsscsssssssscscsssssssssssssccsssssssssssssssscsscsscsssssssssssscssscsssscsssscscccssssssssssssssssscssssssssssssssssssscscssssssssssscssscssssssscsscssscsscsssssssssssscssssscsssssscsssscsscccssccsscccsscccssscccsscccssccssssccsscccsssccsssssssscsccccsscccscccssssscssscscccsscsssscscsscccscsssscssssssssssssssssssssssscsssscscssscccssssccccsccsssscsscccssscccssccssssssssscssccsssssssscccscccssccsscsssssssssscsssccsscccssccssssssssssssssssssssscsscsccccssccssssscsscccssccsscssssssssssssssccsccssccssssscssscsssscsscsssssssssssscssccsssssssscscccssssssssssssssssssssssscssssssssssssssscsscccssscccsssccsssssssscsccccssccsssscsscccssssccsssssssss" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3936"
-         d="m 312.42748,193.36531 c -0.71883,-0.23109 -1.25836,-0.69635 -2.4582,-2.11983 -0.68032,-0.80713 -1.66311,-1.83164 -2.18397,-2.2767 -2.44208,-2.08664 -5.53569,-3.39328 -9.95737,-4.20566 -0.72664,-0.1335 -1.34495,-0.26651 -1.374,-0.29556 -0.12218,-0.12218 1.63591,-1.37021 2.74508,-1.94868 2.83498,-1.47855 5.84243,-2.06508 9.12649,-1.77992 4.34368,0.37716 7.87777,2.18624 9.0915,4.65389 0.37235,0.75703 0.40669,0.92913 0.40669,2.03814 0,1.16988 -0.0182,1.2481 -0.53335,2.28734 -0.63384,1.27879 -2.23419,3.19001 -2.90628,3.47082 -0.56018,0.23406 -1.51037,0.31961 -1.95659,0.17616 z"
-         style="fill:#d3bc5f;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3938"
-         d="m 172.69128,490.43165 c -1.47756,-1.47757 -1.92568,-4.63274 -2.26552,-15.95145 -0.21701,-7.22773 -0.46997,-9.59645 -1.02484,-9.59645 -0.12841,0 -0.89015,0.29099 -1.69277,0.64664 -4.49897,1.99358 -12.90768,4.62137 -17.35022,5.42208 -9.2837,1.67327 -11.64774,-1.02792 -6.728,-7.68753 0.59756,-0.80888 1.58049,-1.75012 2.22021,-2.12605 5.04207,-2.96289 8.91904,-6.18632 9.91495,-8.24361 0.68255,-1.40996 0.6601,-3.18378 -0.0585,-4.62263 -0.79396,-1.58976 -3.24431,-3.73983 -7.04209,-6.17911 -1.78523,-1.14664 -5.27154,-3.39169 -7.74736,-4.98899 -2.47581,-1.5973 -5.6107,-3.58597 -6.96641,-4.41926 -4.47087,-2.74804 -6.85405,-5.63674 -6.22436,-7.5447 1.04309,-3.1606 7.50661,-4.94076 17.97701,-4.95116 8.04584,-0.008 12.87379,0.64236 15.76551,2.12371 2.41709,1.23822 4.07625,1.5793 5.86116,1.20492 4.41559,-0.92618 6.75853,-5.59857 9.01636,-17.98078 1.01005,-5.53927 1.69733,-8.10536 2.30622,-8.61069 0.36065,-0.29931 0.49905,-0.24063 1.07612,0.45628 1.10787,1.33794 4.93886,9.70079 7.32179,15.9831 3.33763,8.79926 4.91827,11.93235 7.66057,15.18455 1.02528,1.21593 3.15302,2.98214 4.74652,3.94003 l 0.88388,0.53133 5.55584,-0.6046 c 23.93377,-2.60453 52.53238,-4.7637 90.02984,-6.79718 6.45867,-0.35025 12.85549,-0.75059 14.21518,-0.88964 3.26208,-0.3336 8.23839,-0.32236 9.22287,0.0208 3.25032,1.13307 -2.30201,4.76864 -9.80099,6.41751 -2.53623,0.55766 -8.04713,0.77511 -10.25719,0.40472 -0.9561,-0.16024 -2.44257,-0.53435 -3.30325,-0.83136 l -1.56489,-0.54002 -5.50618,0.56661 c -6.90651,0.71071 -15.92329,1.8113 -33.15911,4.04744 -28.62357,3.71355 -39.88798,4.88228 -54.41206,5.64547 l -5.79846,0.30469 -0.42232,1.38896 c -0.23228,0.76393 -0.90275,3.66181 -1.48994,6.43973 -4.46074,21.10314 -7.71955,30.24311 -13.29047,37.27577 -2.25372,2.84505 -5.27185,5.24908 -6.61794,5.27136 -0.1843,0.003 -0.65732,-0.31669 -1.05116,-0.71052 z m 6.59034,-46.70833 c 1.09934,-2.82692 0.6287,-7.05407 -0.83719,-7.51933 -0.9477,-0.30078 -1.32788,0.46063 -1.42778,2.8595 -0.0839,2.01491 0.33715,6.43937 0.66464,6.98402 0.21944,0.36496 0.98947,-0.75336 1.60033,-2.32419 z m 7.84953,0.0104 c 0.19318,-2.33412 -0.51487,-7.38674 -1.03514,-7.38674 -0.28276,0 -0.52182,1.5597 -0.5252,3.42656 -0.002,1.27677 0.29389,2.81103 0.88646,4.59152 0.21453,0.64462 0.59801,0.28534 0.67388,-0.63134 z m 0.28514,-11.93243 c 0.39056,-0.7516 0.44149,-1.31851 0.34031,-3.78807 -0.12403,-3.02721 -0.48078,-4.54569 -1.06797,-4.54569 -0.18987,0 -0.45056,0.19888 -0.57932,0.44194 -0.28516,0.53834 -0.70141,3.23725 -0.94095,6.10104 -0.15963,1.90844 -0.12938,2.15883 0.29859,2.47177 0.73575,0.538 1.44458,0.29037 1.94934,-0.68099 z"
-         style="fill:#b2bc5f;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3944"
-         d="m 407.59723,417.18589 c -3.23485,-2.19814 -5.15936,-5.45834 -9.44358,-15.99785 -3.29255,-8.09992 -3.58137,-10.06479 -1.47943,-10.06479 0.60406,0 6.31951,2.66159 12.70099,5.91465 6.38147,3.25305 13.53819,6.74774 15.9038,7.76596 5.52412,2.37772 9.05779,5.31144 8.77185,7.28254 -0.329,2.26795 -4.41393,4.59702 -9.00187,5.13253 -2.2391,0.26135 -5.35681,0.75674 -6.92824,1.10086 -4.90978,1.07518 -7.71782,0.77262 -10.52352,-1.1339 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3946"
-         d="m 390.82849,377.18836 c -2.19143,-1.53494 -5.4312,-7.55197 -7.97693,-14.81511 -1.20485,-3.4375 -2.04323,-6.25 -1.86306,-6.25 0.73722,0 16.511,7.83535 17.65277,8.76871 3.92306,3.20697 3.69343,7.43557 -0.6089,11.21307 -2.72167,2.38966 -4.87625,2.71367 -7.20388,1.08333 l 0,0 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3948"
-         d="m 417.83857,224.26929 c -8.1177,-7.29852 -7.56348,-12.7805 1.64774,-16.2983 1.78595,-0.68205 5.39217,-2.67848 8.01383,-4.43649 8.70968,-5.84049 9.90709,-2.9316 3.85887,9.37447 -3.76527,7.66103 -7.74764,14.03197 -9.02646,14.4404 -0.43351,0.13845 -2.4558,-1.24759 -4.49398,-3.08008 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3950"
-         d="m 432.58538,250.94468 c -4.41267,-6.72664 -5.49629,-13.43262 -2.63323,-16.29569 1.2857,-1.28569 1.99375,-1.4105 5.53572,-0.97577 2.2338,0.27417 4.86502,0.80134 5.84717,1.17147 0.98214,0.37014 4.02054,0.81841 6.75199,0.99615 3.21653,0.20931 5.42069,0.73441 6.25603,1.49039 1.1919,1.07865 1.20379,1.29842 0.15666,2.89654 -0.6232,0.95113 -2.1527,2.67336 -3.39889,3.82719 -2.59938,2.40673 -14.56031,10.63972 -15.45743,10.63972 -0.32891,0 -1.70502,-1.6875 -3.05802,-3.75 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3952"
-         d="m 433.80307,275.0876 c -0.47119,-3.14212 -0.0246,-10.12091 0.88728,-13.86489 0.38368,-1.57535 0.64383,-1.65534 3.95519,-1.21607 6.90923,0.91654 11.97521,4.13868 11.97521,7.61666 0,3.2011 -8.11516,9.17947 -14.05165,10.35173 -2.2372,0.44178 -2.27228,0.40517 -2.76603,-2.88743 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3954"
-         d="m 418.30811,438.44016 c -0.68267,-1.07787 -2.38645,-3.37217 -3.78619,-5.09845 -3.22504,-3.97741 -3.14347,-6.19412 0.22226,-6.03994 5.25928,0.24093 8.69693,5.08135 7.29811,10.27617 -0.89398,3.31999 -2.0138,3.57856 -3.73418,0.86222 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3956"
-         d="m 429.85171,452.8737 c -5.5816,-1.71968 -7.03576,-4.85435 -3.08663,-6.6537 6.01669,-2.74138 11.56613,1.26728 8.83054,6.37878 -0.85918,1.60539 -1.34944,1.62885 -5.74391,0.27492 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3958"
-         d="m 451.1937,486.32827 c -0.6187,-0.70205 -3.07949,-4.08613 -5.46842,-7.52019 l -4.34351,-6.24374 2.08402,-1.07769 c 2.76372,-1.42917 5.44213,-1.33752 9.07188,0.31044 5.13785,2.33266 6.77608,8.24322 3.59368,12.96559 -1.92491,2.85637 -3.39057,3.32109 -4.93765,1.56559 l 0,0 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3960"
-         d="m 463.50303,504.74164 c -1.35355,-2.52912 -0.88043,-6.39946 1.01383,-8.29371 2.03654,-2.03655 2.73769,-2.15586 3.96671,-0.67499 1.84557,2.22378 -0.67578,10.35031 -3.2113,10.35031 -0.5664,0 -1.36257,-0.62172 -1.76924,-1.38161 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3962"
-         d="m 475.44218,521.39657 c -2.94433,-1.54874 -2.2468,-5.27332 0.98758,-5.27332 1.54139,0 2.19006,1.90276 1.5011,4.40327 -0.50325,1.82653 -0.6036,1.86161 -2.48868,0.87005 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3964"
-         d="m 486.21711,540.22774 c -3.28462,-2.90928 -4.27353,-4.80741 -3.35744,-6.44436 0.95682,-1.70976 5.7225,-1.66095 7.29323,0.0747 1.5432,1.70521 1.50939,5.28432 -0.0679,7.18339 l -1.25,1.50505 -2.61793,-2.31877 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3966"
-         d="m 494.58396,549.87602 c -1.66612,-0.45844 -2.37766,-1.22255 -2.06265,-2.21505 0.21449,-0.6758 1.39182,-1.81877 2.31925,-2.25157 1.22068,-0.56964 1.95433,-0.54687 2.58134,0.0802 0.68528,0.68528 0.79949,1.59607 0.40751,3.2497 l -0.31747,1.33929 -0.97855,0.0323 c -0.5382,0.0178 -1.41544,-0.0879 -1.94943,-0.23483 l 0,0 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3968"
-         d="m 508.74381,569.46176 c -1.24479,-0.29684 -2.32701,-1.23089 -2.9061,-2.50822 -0.47224,-1.04166 -0.46492,-1.70499 0.0296,-2.68394 1.30087,-2.57505 4.96836,-2.17099 6.42857,0.70825 0.57358,1.13099 0.60901,1.78801 0.15081,2.79692 -0.38184,0.84079 -1.04842,1.37442 -2.07046,1.6575 -0.79137,0.2192 -0.83372,0.21996 -1.63246,0.0295 l 0,0 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3970"
-         d="m 528.23342,581.65491 c -2.95847,-0.24859 -5.68069,-0.96254 -7.30933,-1.91699 -2.04429,-1.19803 -2.03158,-3.19535 0.029,-4.56023 1.63138,-1.08059 3.62446,-1.27042 5.1528,-0.49079 1.08779,0.55489 1.69809,1.19111 2.30254,2.40032 0.77892,1.55823 1.29809,4.72976 0.76246,4.65773 -0.12277,-0.0165 -0.54464,-0.057 -0.9375,-0.09 l 0,0 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3972"
-         d="m 547.83969,593.55222 c -2.8765,-0.19336 -4.74737,-0.60353 -6.28835,-1.37866 -1.53109,-0.77015 -2.05981,-1.3721 -2.05981,-2.34512 0,-1.36876 1.57152,-2.61548 3.87807,-3.07655 1.99914,-0.39963 4.55183,0.65385 5.79345,2.39092 0.77801,1.08846 1.4118,2.40947 1.7173,3.57938 l 0.26559,1.01706 -0.65269,-0.0263 c -0.35898,-0.0145 -1.55308,-0.0868 -2.65356,-0.16077 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3974"
-         d="m 566.61327,598.96201 c -1.8749,-1.25848 -2.86609,-2.1309 -3.18534,-2.80367 -0.61428,-1.2945 0.0586,-1.62232 3.27296,-1.59462 2.06846,0.0178 2.65684,0.0904 3.99815,0.49326 1.80133,0.54102 3.09704,1.15446 3.5895,1.69941 0.83138,0.92002 -0.70994,1.90296 -4.11484,2.62414 -1.11699,0.23658 -2.09085,0.42994 -2.16415,0.4297 -0.0733,-2.5e-4 -0.70163,-0.38195 -1.39628,-0.84822 l 0,0 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3976"
-         d="m 582.05046,594.14104 c -2.10746,-2.23205 -3.113,-3.83933 -3.29638,-5.26897 -0.14421,-1.1243 0.46933,-2.19408 1.62763,-2.83794 2.62929,-1.46154 7.34042,-0.77566 8.87447,1.29201 1.18123,1.59214 0.0389,3.9251 -3.0392,6.20701 -0.93935,0.69637 -2.74261,1.63467 -3.14156,1.63467 -0.0305,0 -0.49176,-0.46205 -1.02496,-1.02678 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3978"
-         d="m 548.46266,556.86963 c -1.34182,-0.29183 -2.06152,-0.65078 -2.55005,-1.27185 -0.48568,-0.61744 -0.47228,-1.16317 0.0404,-1.64479 0.48723,-0.45772 1.33952,-0.5068 2.08716,-0.12018 0.60632,0.31354 1.51369,1.56628 1.87386,2.58709 0.29561,0.83785 0.31112,0.83305 -1.45135,0.44973 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3980"
-         d="m 553.75398,549.52233 c -2.2967,-0.33533 -3.21428,-0.80743 -3.21428,-1.65373 0,-1.29598 2.65404,-2.28745 4.10906,-1.53503 0.63854,0.3302 1.3508,1.52647 1.51449,2.54365 l 0.12213,0.75893 -1.04249,-0.0243 c -0.57336,-0.0134 -1.24337,-0.0537 -1.48891,-0.0895 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3982"
-         d="m 554.42525,543.13205 c -1.52038,-0.54262 -2.11586,-1.31675 -2.12708,-2.76522 -0.0125,-1.6076 1.43167,-3.61463 2.96496,-4.12066 1.34612,-0.44426 2.78204,0.53824 3.73709,2.55706 0.37199,0.78632 1.17511,3.55091 1.18108,4.06568 0.002,0.18956 -2.43338,0.51751 -3.78314,0.5094 -0.71769,-0.004 -1.6055,-0.11513 -1.97291,-0.24626 l 0,0 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3984"
-         d="m 560.66181,530.98458 c -0.97049,-0.34612 -1.37211,-0.76914 -1.37211,-1.44521 0,-1.2574 1.93164,-3.21167 3.62523,-3.66771 2.13711,-0.57546 3.32746,0.68072 3.33513,3.51957 l 0.004,1.4515 -1.34658,0.20028 c -1.77534,0.26405 -3.40423,0.24163 -4.24559,-0.0584 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3986"
-         d="m 576.70041,525.34223 c -2.15593,-0.2847 -3.73613,-1.07188 -4.2859,-2.13502 -0.92739,-1.79338 0.5891,-4.83909 3.18689,-6.40052 1.3969,-0.83963 2.21139,-1.02014 3.04025,-0.67382 1.63928,0.68493 1.81252,3.84511 0.45222,8.24925 -0.39767,1.28751 -0.27794,1.23948 -2.39346,0.96011 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3988"
-         d="m 599.81498,528.75254 c -1.93413,-0.5869 -3.41344,-2.57712 -3.14501,-4.23123 0.34693,-2.1379 2.70189,-3.19845 4.85493,-2.1864 1.7538,0.82438 2.81045,3.00061 2.21719,4.5664 -0.55253,1.4583 -2.38119,2.32032 -3.92711,1.85123 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3990"
-         d="m 599.60382,549.91777 c -1.61673,-0.57702 -2.20047,-1.39786 -2.04757,-2.87927 0.23862,-2.31201 2.67933,-5.14464 5.00838,-5.8126 0.72816,-0.20883 1.62589,0.20811 2.02571,0.94082 0.45139,0.82723 0.44342,3.91428 -0.0162,6.26407 l -0.34054,1.74107 -1.98089,-0.008 c -1.17936,-0.005 -2.25119,-0.10431 -2.64891,-0.24626 l 0,0 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3992"
-         d="m 600.27184,567.37237 c -5.88629,-1.31023 -8.65784,-2.86498 -8.66005,-4.858 -0.002,-1.81733 2.92055,-3.60406 5.86346,-3.58467 3.92934,0.0259 5.45615,2.90436 4.04507,7.62609 -0.28539,0.95498 -0.37205,1.01166 -1.24848,0.81658 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3994"
-         d="m 595.14571,579.26652 c -2.22795,-0.39892 -3.86205,-0.9469 -4.75703,-1.59523 -1.14797,-0.83158 -1.19822,-1.64963 -0.16402,-2.67009 0.74011,-0.73027 1.5696,-1.15677 2.94081,-1.51208 1.43342,-0.37144 2.84341,-0.35928 3.62067,0.0312 0.78128,0.39252 1.43213,1.34941 1.43213,2.10553 0,0.67427 -0.58477,2.60267 -1.03111,3.40026 l -0.30818,0.55072 -1.73327,-0.31035 z"
-         style="fill:#c87137;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4008"
-         d="m 340.93764,310.80616 c -0.24091,-0.69448 0.12631,-2.88425 0.81603,-4.86616 0.68973,-1.98191 1.80858,-6.30031 2.48633,-9.59645 0.67775,-3.29614 1.4366,-6.33503 1.68633,-6.7531 0.4093,-0.68519 16.59097,15.61504 17.29132,17.41801 0.33877,0.87212 -15.68815,5.06039 -19.36423,5.06039 -1.36277,0 -2.67487,-0.56821 -2.91578,-1.26269 z"
-         style="fill:#e9c6af;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4010"
-         d="m 309.55586,320.48679 c -1.2712,-1.2712 -0.65731,-8.93125 1.40323,-17.50931 1.54596,-6.43587 1.8942,-10.1675 1.39047,-14.89975 -0.42605,-4.00251 -0.30042,-6.31346 0.34323,-6.31346 0.55839,0 2.95003,3.71888 5.31475,8.26416 2.36472,4.54529 5.82464,10.26222 7.68871,12.70429 5.94315,7.78594 3.98735,14.92815 -4.77611,17.44147 -3.94123,1.13033 -10.36972,1.30716 -11.36428,0.3126 z"
-         style="fill:#e9c6af;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4012"
-         d="m 224.66899,335.5696 -3.9063,-0.40329 0.66126,-4.13527 c 0.36369,-2.27439 3.59887,-10.42336 7.18929,-18.10881 3.59043,-7.68545 6.52805,-14.52169 6.52805,-15.19164 0,-2.99673 2.37488,1.49804 4.19149,7.93295 4.31228,15.27523 6.23459,29.29812 4.12714,30.10683 -1.51092,0.57979 -12.35232,0.46396 -18.79093,-0.20077 l 0,0 z"
-         style="fill:#e9c6af;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4014"
-         d="m 258.37479,330.44811 c 0,-5.02074 1.82488,-10.29804 3.56104,-10.29804 2.25955,0 5.53034,5.12348 5.53034,8.66291 0,3.81195 -0.15973,3.95914 -5.3033,4.88725 l -3.78808,0.68352 0,-3.93564 z"
-         style="fill:#e9c6af;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4016"
-         d="m 274.03757,328.25594 c -0.3631,-1.6532 -0.39877,-3.4288 -0.0793,-3.94578 0.83892,-1.35741 4.19308,-0.2447 6.30846,2.09277 1.75546,1.93976 1.75095,2.06116 -0.12765,3.43483 -3.17367,2.32064 -5.36946,1.75138 -6.10156,-1.58182 z"
-         style="fill:#e9c6af;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4018"
-         d="m 147.46004,329.03941 c -2.11174,-2.11174 -1.35023,-4.47307 4.04289,-12.53646 l 5.25507,-7.85698 1.77624,3.98428 c 2.82072,6.32714 3.3766,12.14579 1.44237,15.0978 -1.38145,2.10835 -2.44742,2.52355 -6.47894,2.52355 -2.65399,0 -5.37093,-0.54549 -6.03763,-1.21219 z"
-         style="fill:#f4e3d7;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4020"
-         d="m 342.31628,307.17539 c 0.51972,-2.59863 1.60977,-7.19372 2.42232,-10.21131 l 1.47737,-5.48652 3.85963,3.21909 c 2.12279,1.7705 5.66122,5.29555 7.86316,7.83345 l 4.00355,4.61435 -5.43212,1.38644 c -2.98766,0.76253 -7.61613,1.83257 -10.28549,2.37785 l -4.85338,0.99142 0.94496,-4.72477 0,0 z"
-         style="fill:#f4e3d7;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4022"
-         d="m 309.87267,319.08067 c -0.36286,-0.58929 0.20258,-6.53571 1.25652,-13.21429 1.05395,-6.67857 2.11647,-14.25914 2.36115,-16.84571 0.43402,-4.58802 0.61058,-4.42551 7.2306,6.65497 8.18443,13.69899 8.80415,19.0736 2.57094,22.29692 -4.42288,2.28716 -12.29302,2.93705 -13.41921,1.10811 z"
-         style="fill:#f4e3d7;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4024"
-         d="m 225.59298,334.83082 c -3.55812,-0.53284 -3.94302,-1.05972 -3.13271,-4.28824 1.74838,-6.96609 12.70654,-31.66796 13.7597,-31.01708 1.564,0.96661 7.00097,25.16595 7.00097,31.16058 l 0,5.1803 -6.78572,-0.21404 c -3.73214,-0.11773 -8.61115,-0.48741 -10.84224,-0.82152 z"
-         style="fill:#f4e3d7;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4026"
-         d="m 259.38096,327.95878 c 1.06395,-6.5563 1.74251,-7.28308 4.59197,-4.91825 3.44888,2.86232 2.13783,9.14884 -2.03088,9.73811 -3.20577,0.45316 -3.36741,0.14895 -2.56109,-4.81986 z"
-         style="fill:#f4e3d7;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4028"
-         d="m 274.64951,327.29496 c 0,-1.57143 0.56414,-2.85715 1.25365,-2.85715 1.87335,0 4.57733,3.69283 3.49586,4.7743 -1.95578,1.95578 -4.74951,0.82807 -4.74951,-1.91715 z"
-         style="fill:#f4e3d7;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4030"
-         d="m 150.00665,329.16735 c -3.58625,-0.93719 -3.11608,-3.68535 2.07342,-12.11936 l 4.57341,-7.43275 1.79072,4.197 c 2.7663,6.48349 2.38893,13.13101 -0.84363,14.86102 -2.87417,1.53821 -3.45408,1.57594 -7.59392,0.49409 z"
-         style="fill:#d3bc5f;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4032"
-         d="m 340.90644,768.34518 c -1.39847,-3.7173 -3.01076,-9.26507 -2.76425,-9.51158 0.15059,-0.15059 1.15539,-0.27379 2.23288,-0.27379 2.31729,0 4.43855,1.7794 4.43855,3.72324 0,1.35272 -1.48774,5.05283 -2.64053,6.56721 -0.68568,0.90074 -0.74697,0.8763 -1.26665,-0.50508 z"
-         style="fill:#d3bc5f;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4034"
-         d="m 333.66775,764.05176 c -0.71211,-1.33059 0.005,-3.15022 1.57219,-3.98891 0.94499,-0.50575 1.04814,-0.46145 0.80957,0.34764 -0.15037,0.50998 -0.42446,1.77955 -0.60908,2.82127 -0.37904,2.13869 -0.93043,2.39375 -1.77268,0.82 z"
-         style="fill:#d3bc5f;fill-opacity:1;stroke:none" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#ffffff;fill-opacity:0;stroke:none"
-         id="path3169"
-         sodipodi:cx="97.85714"
-         sodipodi:cy="103.27783"
-         sodipodi:rx="101.42857"
-         sodipodi:ry="101.42857"
-         d="m 199.28571,103.27783 c 0,56.01746 -45.41112,101.42858 -101.42857,101.42858 -56.017455,0 -101.428574,-45.41112 -101.428574,-101.42858 0,-56.017452 45.411119,-101.4285716 101.428574,-101.4285716 56.01745,0 101.42857,45.4111196 101.42857,101.4285716 z"
-         transform="matrix(5.3363165,0,0,5.3363165,-159.26717,225.11369)" />
-      <path
-         sodipodi:nodetypes="cssscsscsssssssscscsssssssssssssccsssssssssssssssscsscsscsssssssssssscssscsssscsssscscccssssssssssssssssscssssssssssssssssssscscssssssssssscssscssssssscsscssscsscsssssssssssscssssscsssssscsssscsscccssccsscccsscccssscccsscccssccssssccsscccsssccsssssssscsccccsscccscccssssscssscscccsscsssscscsscccscsssscssssssssssssssssssssssscsssscscssscccssssccccsccsssscsscccssscccssccssssssssscssccsssssssscccscccssccsscsssssssssscsssccsscccssccssssssssssssssssssssscsscsccccssccssssscsscccssccsscssssssssssssssccsccssccssssscssscsssscsscsssssssssssscssccsssssssscscccssssssssssssssssssssssscssssssssssssssscsscccssscccsssccsssssssscsccccssccsssscsscccssssccsssssssss"
-         style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-         d="m 426.62796,773.89785 c 0,-3.5797 -2.35283,-5.15284 -7.70671,-5.15284 -3.66459,0 -8.79263,-5.05712 -14.48607,-14.28572 -2.1813,-3.53571 -6.13369,-9.0878 -8.78308,-12.33795 l -4.81705,-5.9094 -8.17497,2.61913 c -4.49623,1.44051 -14.46906,4.90331 -22.16182,7.6951 -7.69276,2.7918 -15.40704,5.07532 -17.14286,5.07452 -2.94374,-10e-4 -3.15601,-0.64994 -3.15601,-9.64285 0,-8.37666 0.56936,-10.48469 4.34034,-16.06997 2.38719,-3.53572 5.28005,-6.42858 6.42857,-6.42858 2.39795,0 3.69993,-6.10258 1.72363,-8.07888 -0.72644,-0.72644 -6.04704,-2.11213 -11.82357,-3.07932 -10.20027,-1.70787 -10.53851,-1.89641 -11.7433,-6.5458 -1.76571,-6.81414 -0.78256,-8.17767 7.7658,-10.77024 4.17683,-1.26677 13.02744,-5.02114 19.66802,-8.34306 l 12.07377,-6.03984 6.1456,-14.16157 c 3.38008,-7.78887 5.87545,-14.43173 5.54528,-14.76191 -0.33018,-0.33018 0.6647,-1.86536 2.21085,-3.4115 1.75401,-1.75402 2.4879,-3.82968 1.95154,-5.51959 -0.47279,-1.48961 0.4631,-5.79603 2.07974,-9.56977 4.43626,-10.3556 8.63373,-26.15603 8.63373,-32.49969 0,-8.00107 -1.76656,-5.00381 -6.2818,10.65806 -2.15504,7.47514 -8.53396,25.15371 -14.17537,39.28571 -9.88449,24.76109 -10.4568,25.79206 -15.7538,28.37886 -7.39826,3.61297 -12.7778,1.9178 -31.79112,-10.01781 -22.73762,-14.27356 -40.59574,-33.803 -48.56497,-53.11013 -5.25205,-12.7242 -6.34954,-35.19967 -2.71966,-55.69632 4.16941,-23.54318 25.87958,-83.56852 41.46566,-114.64628 4.41645,-8.80614 11.13203,-23.80319 14.92352,-33.32676 6.41861,-16.12246 20.0404,-56.64866 20.0404,-59.62223 0,-0.72557 -1.577,-0.92341 -3.50443,-0.43965 -2.03972,0.51192 -5.41543,-0.0737 -8.07663,-1.40136 -5.67393,-2.83053 -7.87107,-2.92057 -5.639,-0.23109 1.42579,1.71797 -0.21486,2.65513 -10.1337,5.78849 -6.50919,2.05626 -16.35673,4.32041 -21.88343,5.03147 -5.52668,0.71106 -14.86996,2.25764 -20.76281,3.43687 -14.4203,2.88566 -32.315,4.7573 -56.72438,5.93292 -19.48135,0.93825 -32.27409,-0.0452 -50.41848,-3.87598 -3.53571,-0.74647 -8.45041,-1.58924 -10.92155,-1.8728 -2.47114,-0.28355 -5.80387,-1.21712 -7.40608,-2.07461 -1.60221,-0.85747 -5.45355,-1.55904 -8.55854,-1.55904 -5.08662,0 -5.88912,-0.51356 -8.10742,-5.18827 -2.56384,-5.40289 -2.22009,-13.88376 0.68029,-16.78415 2.64504,-2.64503 45.91061,-1.67765 62.17044,1.39007 9.95679,1.87855 20.56266,2.68406 35,2.65826 20.16534,-0.036 21.35788,-0.2132 45,-6.6843 13.35715,-3.65598 36.17857,-9.60451 50.71429,-13.21893 31.74723,-7.89421 35.99164,-9.19774 35.43048,-10.88122 -0.60311,-1.80933 -23.09771,-28.22834 -24.13172,-28.34175 -0.46426,-0.0509 -1.66078,3.55667 -2.65892,8.01686 -0.99814,4.46019 -3.08131,11.04948 -4.62926,14.64286 l -2.81444,6.53342 -3.49341,-4.28571 c -1.92139,-2.35714 -7.17266,-11.51501 -11.6695,-20.35082 -4.49685,-8.8358 -8.97966,-16.06795 -9.9618,-16.07143 -1.32377,-0.005 -1.78572,4.17654 -1.78572,16.16296 0,20.67026 -2.48255,29.67311 -10.21525,37.045 -7.69529,7.33624 -11.47126,7.10146 -17.23205,-1.07142 -2.4922,-3.53572 -5.06416,-6.42858 -5.71547,-6.42858 -0.65131,0 -1.91646,1.60715 -2.81145,3.57143 -0.89499,1.96429 -2.12523,3.57143 -2.73386,3.57143 -0.60864,0 -2.91617,-2.55659 -5.12784,-5.68132 -2.21167,-3.12473 -4.66408,-5.48661 -5.44979,-5.24862 -0.78572,0.23799 -2.49761,4.79577 -3.80422,10.1284 -1.3066,5.33263 -3.03159,10.35163 -3.8333,11.15334 -1.82126,1.82127 -4.9364,-8.70131 -8.10955,-27.3931 -1.25766,-7.40844 -3.1632,-15.12272 -4.23454,-17.14286 l -1.94787,-3.67298 -3.55272,7.85714 c -1.95399,4.32143 -5.54561,12.67857 -7.98136,18.57143 -2.43576,5.89286 -5.86719,13.24416 -7.6254,16.33623 l -3.19676,5.62194 -16.42857,-0.34518 c -25.75685,-0.54119 -31.77622,-3.27892 -35.62631,-16.20355 -1.0033,-3.36805 -2.63149,-7.67511 -3.6182,-9.57124 -1.78703,-3.43408 -1.8141,-3.4177 -6.94685,4.204 l -5.15283,7.65152 -2.45539,-5.63258 c -3.23724,-7.42608 -3.28794,-25.83647 -0.1001,-36.34685 3.74512,-12.34779 12.15789,-25.20747 25.32825,-38.71653 16.74484,-17.17545 19.40291,-17.92917 56.42858,-16.00098 l 27.14285,1.41353 5.13206,-3.38632 c 9.56469,-6.31112 50.96559,-19.83112 53.36851,-17.42818 0.43892,0.43891 0.0684,2.8908 -0.82318,5.44865 -3.53536,10.14152 4.03056,21.52916 14.30098,21.52475 11.02945,-0.005 22.1994,-10.09156 21.30322,-19.23749 -0.37896,-3.86755 -1.6108,-4.90083 -11.49587,-9.64283 -13.8664,-6.65188 -14.36669,-9.68889 -1.59605,-9.68889 3.9019,0 5.99966,1.13922 9.86298,5.35625 4.19951,4.58402 5.29165,5.11601 7.57515,3.68994 2.26956,-1.41736 3.90289,-0.69726 10.93217,4.81979 8.123,6.37546 8.46166,6.49166 19.852,6.81149 7.8395,0.22012 13.34429,1.18411 17.01723,2.98005 5.23385,2.55915 5.31096,2.70072 2.14286,3.9343 -3.17296,1.23548 -3.18776,1.31766 -0.4292,2.38164 1.6016,0.61775 3.66983,0.45174 4.70653,-0.37777 4.5849,-3.66861 20.01134,17.69068 23.9655,33.18239 3.29037,12.8911 2.21001,22.03629 -4.09542,34.66756 -5.264,10.54504 -14.75145,24.07359 -17.51361,24.97337 -0.82964,0.27025 -2.5871,-1.77061 -3.90546,-4.53525 -2.36503,-4.95951 -5.3004,-6.74019 -5.3004,-3.21538 0,0.99618 1.59996,4.16578 3.55546,7.04356 l 3.55546,5.23233 -9.62689,8.77226 c -5.29478,4.82474 -12.03828,10.17298 -14.98557,11.885 -6.73454,3.91197 -7.53131,6.43174 -5.32351,16.83537 1.54585,7.2844 1.47461,8.80251 -0.55873,11.90579 -3.309,5.05015 -2.88533,6.10515 0.98977,2.4647 1.82614,-1.71559 3.75471,-2.68479 4.28571,-2.15379 1.8008,1.8008 0.97693,11.2657 -1.25841,14.4571 -1.22313,1.74626 -1.62297,3.17501 -0.88854,3.17501 0.73444,0 2.26187,-1.39544 3.39431,-3.10098 1.13244,-1.70554 2.7171,-2.69424 3.52146,-2.19712 0.80437,0.49713 2.93738,5.91043 4.74004,12.02956 4.4994,15.27329 14.11453,34.99907 22.4835,46.12569 3.84136,5.10714 13.97214,19.57143 22.51284,32.14285 53.45682,78.68539 68.59855,99.78142 75.64649,105.39352 12.14163,9.66807 26.52131,18.44436 39.87731,24.33814 10.87245,4.79783 14.11867,5.59646 22.43053,5.51824 9.59119,-0.0903 9.78983,-0.0144 15.18356,5.79055 9.89218,10.64655 13.59838,13.95955 15.6163,13.95955 3.71671,0 2.12408,-5.77188 -2.28492,-8.28072 -2.35217,-1.33846 -4.28074,-3.26635 -4.28571,-4.2842 -0.004,-1.01786 -1.57466,-3.41629 -3.48821,-5.32985 -1.91356,-1.91355 -2.96406,-3.79757 -2.33445,-4.18668 0.62962,-0.38913 0.84662,-2.26707 0.48223,-4.1732 -0.43234,-2.26166 0.36174,-4.48997 2.28566,-6.41389 4.27507,-4.27507 9.85228,-15.92446 10.73771,-22.42834 0.42062,-3.08957 1.51543,-10.97616 2.43295,-17.52574 2.76804,-19.7594 -1.2281,-37.2384 -8.9889,-39.31722 -18.20165,-4.87553 -41.76129,9.1535 -48.71912,29.0107 -1.72214,4.91493 -3.77208,9.03106 -4.55541,9.14697 -3.10375,0.45926 -5.35095,-23.32915 -3.91532,-41.4467 1.58292,-19.9762 2.99122,-23.22124 15.91213,-36.66521 11.47387,-11.93839 17.59143,-14.73782 22.17969,-10.14956 1.65684,1.65684 1.86991,2.93742 0.81633,4.90607 -1.82236,3.40512 -1.86198,10.43295 -0.0524,9.31463 0.75528,-0.4668 1.80063,-3.12687 2.32298,-5.9113 1.59443,-8.49907 10.22369,-10.09738 17.56906,-3.25413 2.88417,2.68702 3.23589,4.03877 2.52339,9.69815 l -0.82789,6.57594 2.87646,-5.42927 c 3.4244,-6.4635 5.97707,-7.74125 10.29765,-4.34267 3.32438,2.61494 3.33286,2.69191 0.7638,6.92242 -1.42887,2.35295 -2.58101,5.24238 -2.56031,6.42095 0.0503,2.86428 7.09019,-5.10475 7.09019,-8.02597 0,-2.73246 11.67052,3.37054 19.87555,10.39372 5.64592,4.8327 16.83252,21.15565 23.34287,34.06082 5.00816,9.92743 10.99802,27.7589 11.0432,32.87504 0.0207,2.3473 0.41746,10.51609 0.8816,18.15286 0.86566,14.24328 -1.60147,35.96273 -3.69945,32.56813 -0.60147,-0.9732 -0.79495,-2.91146 -0.42993,-4.30723 0.97224,-3.7179 -2.50517,-5.23223 -4.80199,-2.09116 -2.93063,4.00787 -2.3808,10.00913 1.13065,12.34064 3.03804,2.01718 3.00518,2.11863 -5.35715,16.54379 -4.62765,7.9828 -9.2175,14.54073 -10.19964,14.57319 -0.98214,0.0324 -1.78571,1.3876 -1.78571,3.01141 0,1.85214 -5.72296,8.65429 -15.35715,18.25306 l -15.35721,15.30067 -30.71429,15.92153 c -16.89285,8.75684 -34.61344,17.2241 -39.3791,18.81613 -9.3854,3.13531 -25.40878,6.09742 -28.18431,5.21018 -0.94726,-0.3028 -12.3096,-0.94238 -25.24963,-1.42128 -26.85853,-0.99403 -27.94664,-1.43743 -29.40626,-11.98292 -0.50404,-3.64164 -1.80185,-11.12118 -2.88403,-16.62118 -1.08217,-5.5 -2.96961,-18.67858 -4.19432,-29.28572 -3.42215,-29.63883 -13.96832,-71.49593 -17.19969,-68.26456 -0.41163,0.41163 1.48474,14.17169 4.21416,30.57792 6.31917,37.98393 9.19667,58.5393 10.043,71.74188 0.36961,5.76612 1.27361,11.2304 2.00887,12.14286 0.73527,0.91247 1.7869,4.38782 2.33696,7.72299 0.55005,3.33517 1.59621,6.43235 2.32478,6.88264 0.72859,0.45029 2.60516,3.32863 4.17019,6.39633 1.56503,3.06771 4.8046,7.80894 7.19907,10.53608 2.39446,2.72715 4.72463,7.24502 5.17814,10.03973 0.7125,4.39059 0.43979,5.08127 -2.0063,5.08127 -4.29298,0 -11.92337,-2.97674 -11.08938,-4.32615 0.40474,-0.65489 0.0826,-1.5945 -0.71599,-2.08802 -0.79853,-0.49351 -1.45187,-0.2767 -1.45187,0.48183 0,0.75853 -1.28572,1.04293 -2.85714,0.63199 -1.57143,-0.41095 -2.85715,-1.20516 -2.85715,-1.76492 0,-1.74535 -13.72065,-7.53875 -16.55945,-6.99205 -1.97618,0.38057 -2.95056,2.23061 -3.65046,6.9311 -0.90596,6.08422 -9.37846,29.98337 -10.62943,29.98337 -0.32407,0 -0.58923,-1.53837 -0.58926,-3.41859 z m 15.28712,-78.87133 c 0.6525,-1.95748 -3.40626,-7.20998 -4.6276,-5.98865 -1.55372,1.55371 0.66714,8.55064 2.51817,7.93362 0.90405,-0.30135 1.8533,-1.17658 2.10943,-1.94497 z M 382.2049,674.93277 c 4.51635,-6.81843 4.86019,-9.51456 0.78175,-6.12976 -2.97337,2.46767 -8.2382,12.79914 -6.52235,12.79914 0.72765,0 3.31092,-3.00123 5.7406,-6.66938 z m 51.54405,-10.91493 c -0.0261,-7.16753 -2.12872,-11.63347 -3.63229,-7.71525 -1.29381,3.37165 0.65003,15.55903 2.31727,14.52862 0.73529,-0.45444 1.32705,-3.52046 1.31502,-6.81337 z M 394.4041,646.99857 c 2.60899,-3.72486 2.95895,-8.73669 0.55406,-7.93506 -2.0358,0.6786 -5.8391,11.11007 -4.05071,11.11007 0.70004,0 2.27353,-1.42876 3.49665,-3.17501 z m 172.22386,-3.87485 c 0,-5.2489 -2.31401,-11.52157 -4.25036,-11.52157 -1.90507,0 -1.89428,9.38372 0.0149,12.95106 2.17376,4.0617 4.23546,3.36587 4.23546,-1.42949 z m -134.28571,-5.17731 c 0,-3.48934 -0.64286,-6.34426 -1.42857,-6.34426 -0.78572,0 -1.42858,3.25223 -1.42858,7.22717 0,4.45433 0.5481,6.88842 1.42858,6.34426 0.78571,-0.4856 1.42857,-3.73783 1.42857,-7.22717 z m 92.23305,4.43286 c 2.53533,-3.86939 1.70619,-6.81698 -1.56452,-5.56189 -1.17506,0.45091 -2.0971,2.62186 -2.0971,4.93761 0,5.04666 0.6872,5.16382 3.66162,0.62428 z m 94.9098,-11.44115 c 0,-2.54457 -4.96301,-5.40444 -8.27274,-4.76704 -2.10014,0.40446 -1.99904,0.87357 0.78914,3.66176 3.64163,3.64163 7.4836,4.20907 7.4836,1.10528 z m -122.70325,-5.49365 c 0.56317,-2.10578 0.48191,-4.16366 -0.18055,-4.57308 -1.45921,-0.90185 -2.1353,0.1914 -3.40957,5.51343 -1.2858,5.37019 2.14257,4.4722 3.59012,-0.94035 z m -93.76295,-7.66082 c 0.53998,-3.60073 1.32025,-7.42888 1.73396,-8.507 0.41372,-1.07811 0.12529,-1.96021 -0.64096,-1.96021 -1.49502,0 -6.0852,14.80131 -6.00994,19.37943 0.0843,5.1308 3.82886,-1.6563 4.91694,-8.91222 z m 29.15433,-2.25293 c 0.17182,-5.446 -1.67341,-7.20485 -3.24957,-3.09744 -1.18524,3.0887 -1.09206,11.2221 0.16509,14.40917 0.8564,2.17109 1.19263,1.8868 1.97384,-1.66887 0.51789,-2.35714 1.01767,-6.69643 1.11064,-9.64286 z m 98.45473,11.5 c 2.04986,-2.04985 2.28539,-6.85714 0.33597,-6.85714 -1.5025,0 -4.33597,4.60634 -4.33597,7.04894 0,2.02133 1.87687,1.93133 4,-0.1918 z m 31.71429,-12.69047 c 0,-6.31287 -0.48856,-8.52998 -1.78572,-8.10386 -3.46638,1.13873 -2.42075,16.79433 1.12169,16.79433 0.36521,0 0.66403,-3.91071 0.66403,-8.69047 z m -270.59813,-2.14054 c 1.03368,-5.51004 -0.22596,-8.14486 -2.31482,-4.8419 -1.76507,2.79098 -1.76468,11.79803 4.8e-4,10.70711 0.75528,-0.4668 1.79672,-3.10614 2.31434,-5.86521 z m 213.31241,2.14728 c 3.34886,-4.52957 3.22052,-6.54048 -0.33044,-5.17785 -2.16697,0.83155 -5.82579,9.57587 -4.00676,9.57587 0.59709,0 2.54882,-1.9791 4.3372,-4.39802 z m 35.97537,-6.59208 c 3.17853,-7.41522 3.20679,-7.58133 1.28935,-7.58133 -2.146,0 -7.11036,8.77859 -7.11652,12.58431 -0.007,4.75969 2.60332,2.51796 5.82717,-5.00298 z m 32.73892,5.23098 c 0,-1.71024 -4.02946,-3.54475 -5.20466,-2.36955 -1.25101,1.25101 0.87093,3.84295 3.14612,3.84295 1.1322,0 2.05854,-0.66302 2.05854,-1.4734 z M 279.4851,600.80355 c 0,-2.07337 -0.61834,-3.27357 -1.42857,-2.77283 -0.78571,0.4856 -1.42857,2.13069 -1.42857,3.65575 0,1.52505 0.64286,2.77282 1.42857,2.77282 0.78572,0 1.42857,-1.64508 1.42857,-3.65574 z m 236.37778,-1.98523 c 5.48505,-7.91495 3.77798,-10.8071 -1.81866,-3.08117 -2.47893,3.42206 -4.15947,6.78449 -3.73453,7.47204 1.14784,1.85725 1.31461,1.72538 5.55319,-4.39087 z m -222.09206,-10.7814 c 0,-6.00314 0.18606,-6.27328 4.64286,-6.7412 l 4.64285,-0.48745 -6.11728,-1.98578 c -4.66449,-1.51418 -6.51352,-1.58954 -7.78572,-0.31734 -1.27218,1.27219 -1.11618,1.66843 0.65693,1.66843 1.97226,0 2.19874,1.22674 1.49152,8.07913 -0.61105,5.92034 -0.3926,7.80643 0.8175,7.05856 0.90824,-0.56133 1.65134,-3.83479 1.65134,-7.27435 z m 51.42857,-0.006 c -1.91394,-2.30617 -11.42857,-2.99994 -11.42857,-0.83333 0,1.80703 2.7051,2.73034 8.3892,2.8634 4.12598,0.0966 4.56241,-0.19491 3.03937,-2.03007 z m 26.5756,-10.22924 c 1.08584,-4.5882 2.30669,-16.05485 2.71297,-25.48143 l 0.73873,-17.13925 3.91493,-1.22671 c 2.1532,-0.6747 12.05778,-1.31919 22.01018,-1.4322 16.44723,-0.18674 21.58299,-1.00339 19.48765,-3.09873 -0.94972,-0.94971 -33.13103,-13.3399 -39.45379,-15.19017 -2.60041,-0.76097 -5.49327,-1.09313 -6.42857,-0.7381 -1.70166,0.6459 2.35573,2.60387 15.08516,7.27961 3.73214,1.37089 6.78571,3.09262 6.78571,3.82606 0,1.64753 -7.31854,5.00796 -15.19073,6.9751 -3.24775,0.81156 -6.66137,2.38692 -7.58581,3.5008 -0.92443,1.11387 -2.06253,7.9174 -2.5291,15.11893 -0.60147,9.28391 -1.42899,13.31654 -2.84402,13.85954 -4.47347,1.71663 -14.36078,-12.68123 -17.6261,-25.66707 -2.28095,-9.0711 -5.13647,-8.84778 -13.7001,1.07143 -8.22145,9.52289 -10.52414,9.9712 -10.52414,2.04894 0,-8.05877 -1.7975,-10.71208 -11.50938,-16.98918 -6.18495,-3.99752 -7.97505,-5.83476 -6.68338,-6.85939 2.86616,-2.2736 11.12242,-4.36933 21.0499,-5.34323 20.83302,-2.04374 24.94299,-5.1365 26.1785,-19.69944 0.48065,-5.6653 2.84678,-20.83019 5.25805,-33.69974 2.41127,-12.86955 4.13037,-23.65295 3.82023,-23.96309 -0.31016,-0.31016 -1.32648,0.35492 -2.25849,1.47793 -1.63287,1.96747 -10.60386,41.17586 -12.79479,55.92054 -0.58671,3.94849 -1.59384,8.03193 -2.23808,9.07433 -1.93379,3.12893 -9.8575,5.71992 -20.27847,6.6309 -8.26223,0.72226 -29.12463,4.8953 -36.06212,7.21337 -3.65498,1.22127 1.0193,4.53479 12.09617,8.57475 5.88893,2.14781 11.63939,5.23607 12.77879,6.8628 2.68426,3.83231 2.63459,18.85472 -0.0999,30.17908 -1.13831,4.71429 -2.0797,11.30357 -2.09197,14.64286 -0.0187,5.11161 -0.474,6.07143 -2.87946,6.07143 -1.57142,0 -2.85714,0.64285 -2.85714,1.42857 0,0.78571 2.37857,1.42857 5.28572,1.42857 4.05171,0 4.89342,-0.39229 3.60541,-1.6803 -0.98144,-0.98144 -1.16677,-2.31829 -0.44561,-3.21429 0.67908,-0.84368 4.57634,-8.0438 8.66058,-16.00025 7.29933,-14.21972 18.24234,-27.52565 21.15637,-25.72467 0.76236,0.47115 2.09937,3.68924 2.97112,7.15128 0.87175,3.46204 3.7993,8.94496 6.50565,12.18426 3.36955,4.03308 5.4529,8.4736 6.60912,14.08681 4.1242,20.02239 5.88791,21.25327 9.3701,6.53935 z m 297.11199,4.39822 c 1.04665,-5.57915 0.29627,-7.18944 -2.52112,-5.4102 -1.03441,0.65325 -4.45218,1.19978 -7.59504,1.21448 -7.73077,0.0361 -8.09757,4.11447 -0.42737,4.75164 3.75721,0.31213 5.54367,1.24814 6.17428,3.23504 1.23923,3.90447 3.25342,2.15687 4.36925,-3.79096 z m -390.3011,0.68429 c 1.05582,-5.27916 -0.5117,-8.82441 -2.10394,-4.75844 -1.51077,3.85741 -1.52965,9.1904 -0.0326,9.1904 0.6875,0 1.64891,-1.9946 2.13649,-4.43245 z m 366.61351,-4.17483 c 0,-1.73836 -6.09591,-4.25036 -10.31441,-4.25036 -2.89506,0 -2.90719,0.0866 -0.39988,2.85715 2.66976,2.95005 10.71429,3.99611 10.71429,1.39321 z M 502.8413,575.12782 c -0.44261,-1.1534 -1.72287,-2.0971 -2.84501,-2.0971 -1.60699,0 -1.711,0.61526 -0.48977,2.89716 1.71937,3.21267 4.60861,2.51951 3.33478,-0.80006 z m 165.64228,-12.90013 c 0.15845,-5.5902 -1.42466,-7.89845 -3.33999,-4.86988 -1.54889,2.44914 -1.77726,8.67088 -0.44564,12.14101 0.86917,2.26503 1.01221,2.26405 2.28801,-0.0157 0.74849,-1.33747 1.4224,-4.60242 1.49762,-7.25544 z m -373.5135,4.30725 c 2.23495,-4.90517 2.15864,-11.05073 -0.12786,-10.29476 -1.7974,0.59427 -4.13126,13.9334 -2.43783,13.9334 0.49929,0 1.65383,-1.63739 2.56566,-3.63864 z m -15.48498,-2.15996 c 0,-1.6178 -0.64285,-2.54414 -1.42857,-2.05854 -0.78571,0.4856 -1.42857,1.80925 -1.42857,2.94145 0,1.1322 0.64286,2.05855 1.42857,2.05855 0.78572,0 1.42857,-1.32366 1.42857,-2.94146 z m 382.59253,0.44146 c -0.69903,-3.68606 -7.19661,-3.95173 -10.38847,-0.42476 -2.63181,2.90811 -2.60844,2.92476 4.10786,2.92476 5.6613,0 6.67798,-0.40469 6.28061,-2.5 z m -16.2808,0.2043 c 4.16,-1.59635 2.31856,-3.41859 -3.45458,-3.41859 -5.49083,0 -7.652,1.83717 -3.92857,3.3396 2.58225,1.04197 4.81152,1.06582 7.38315,0.079 z m -364.568,-7.34716 c 0.80085,-3.08777 -0.11458,-6.07143 -1.86277,-6.07143 -0.72024,0 -1.30953,1.92857 -1.30953,4.28572 0,4.64475 2.12112,5.83874 3.1723,1.78571 z m 208.25627,0.82677 c 0,-2.37181 -4.3635,-6.8982 -6.64998,-6.8982 -2.51116,0 -2.42713,1.49943 0.30241,5.39642 2.35815,3.36672 6.34757,4.31058 6.34757,1.50178 z m -148.84524,-4.1482 c -0.28154,-0.84464 -0.97797,-1.4875 -1.54761,-1.42857 -0.56965,0.0589 -2.48215,0.15233 -4.25,0.20756 -3.067,0.0959 -3.08337,0.15665 -0.35715,1.32815 4.04509,1.73823 6.75418,1.69108 6.15476,-0.10714 z m -34.36787,-4.53571 c -0.60821,-1.82822 -16.44089,-4.75077 -17.88944,-3.30222 -1.5207,1.52072 1.24153,2.8297 7.94831,3.76662 10.36246,1.44761 10.57393,1.43773 9.94113,-0.4644 z m 8.9274,0.35714 c -2.79504,-1.8063 -5.71429,-1.8063 -5.71429,0 0,0.78571 1.76786,1.41873 3.92858,1.4067 3.06134,-0.017 3.45552,-0.32759 1.78571,-1.4067 z m 352.14286,-5.71429 c 0,-2.61904 -0.80357,-5.02975 -1.78572,-5.35714 -1.2381,-0.4127 -1.78571,1.23016 -1.78571,5.35714 0,4.12699 0.54761,5.76985 1.78571,5.35715 0.98215,-0.32739 1.78572,-2.7381 1.78572,-5.35715 z M 439.4851,543.69475 c 0,-2.98227 -2.49161,-2.58776 -4.23545,0.67063 -2.14675,4.01123 -1.83796,4.67236 1.37831,2.95106 1.57143,-0.841 2.85714,-2.47076 2.85714,-3.62169 z m -155.69478,-3.16403 c 0.0114,-1.375 0.36743,-4.10714 0.79266,-6.07143 0.56222,-2.59718 0.16721,-2.26017 -1.44809,1.23545 -2.58457,5.5932 -2.77289,7.33598 -0.79264,7.33598 0.78571,0 1.43734,-1.125 1.44807,-2.5 z m 14.26621,-8.05875 c 0,-7.68189 -2.27311,-4.95518 -3.44313,4.13018 -0.84787,6.58402 -0.74917,6.9259 1.26165,4.36982 1.19981,-1.52518 2.18148,-5.35018 2.18148,-8.5 z m 177.14286,8.73377 c 0,-2.41296 -4.08474,-8.17502 -5.79529,-8.17502 -2.00805,0 -1.63495,2.51907 0.95959,6.47883 2.49386,3.80612 4.8357,4.62754 4.8357,1.69619 z m -20,-13.98657 c 0,-2.21755 -2.6889,-1.49955 -5.71429,1.52584 -4.36521,4.36521 -3.40008,6.29546 1.42858,2.85714 2.35714,-1.67843 4.28571,-3.65078 4.28571,-4.38298 z m -97.14286,-2.75988 c 0,-0.78571 -2.73214,-1.41872 -6.07143,-1.4067 -4.44637,0.016 -5.49787,0.39255 -3.92857,1.4067 2.8207,1.82288 10,1.82288 10,0 z m 17.14286,-3.41858 c 0,-2.04287 -2.95506,-3.72427 -6.54541,-3.72427 -2.50046,0 -2.69093,3.77931 -0.2403,4.76817 3.51048,1.41651 6.78571,0.91266 6.78571,-1.0439 z m 85.71429,-0.70887 c 0,-2.12995 -5.40396,-8.07952 -6.41975,-7.06792 -1.12963,1.12496 3.33029,8.33823 5.15547,8.33823 0.69535,0 1.26428,-0.57164 1.26428,-1.27031 z m -100.78572,-2.85485 c -2.0981,-1.96028 -7.78571,-3.36544 -7.78571,-1.92348 0,2.18136 1.74834,3.1915 5.52381,3.1915 2.17413,0 3.0772,-0.50626 2.2619,-1.26802 z m -11.35714,-1.58912 c 0.5396,-0.8731 -1.51066,-1.38953 -5.27283,-1.32816 -4.74989,0.0774 -5.50323,0.3808 -3.2986,1.32816 3.95354,1.6989 7.52146,1.6989 8.57143,0 z m 81.32428,-3.6021 c 3.24338,-2.45378 1.76082,-4.83479 -1.66491,-2.67389 -2.60481,1.64307 -4.13729,4.87293 -2.27841,4.80199 0.65475,-0.025 2.42925,-0.98265 3.94332,-2.1281 z m -59.39068,-43.73193 c 3.30956,-23.67659 5.7217,-43.34402 5.36031,-43.7054 -2.14247,-2.14246 -12.25891,53.21343 -13.309,72.82514 -1.40705,26.27851 1.89695,14.17443 7.94869,-29.11974 z m 237.35211,37.24971 c 0,-1.6178 -0.64285,-2.54414 -1.42857,-2.05854 -0.78571,0.4856 -1.42857,1.80926 -1.42857,2.94146 0,1.1322 0.64286,2.05854 1.42857,2.05854 0.78572,0 1.42857,-1.32366 1.42857,-2.94146 z m -296.54578,-1.15458 c 0.86678,-1.40252 -11.62796,-3.46122 -13.60206,-2.24116 -0.7044,0.43534 -1.28073,1.39646 -1.28073,2.1358 0,1.68924 13.84332,1.78724 14.88279,0.10528 z m 125.74258,-1.01913 c 3.20765,-3.20765 1.15733,-5.64813 -2.19577,-2.61363 -1.49341,1.35154 -2.71531,3.00056 -2.71531,3.6645 0,1.927 2.4595,1.40071 4.91108,-1.05087 z m -109.1968,-0.59912 c -2.82437,-1.82525 -11.42857,-1.82525 -11.42857,0 0,0.78572 3.05357,1.41873 6.78572,1.4067 4.90781,-0.0159 6.1927,-0.40511 4.64285,-1.4067 z m 15.71429,-1.42857 c 0,-0.78571 -1.60714,-1.42857 -3.57143,-1.42857 -1.96429,0 -3.57143,0.64286 -3.57143,1.42857 0,0.78572 1.60714,1.42857 3.57143,1.42857 1.96429,0 3.57143,-0.64285 3.57143,-1.42857 z m 61.49406,-1.55093 c 0.87701,-1.63871 1.1685,-3.40555 0.64774,-3.92631 -0.96914,-0.96916 -4.99894,3.66633 -4.99894,5.75028 0,2.27006 2.78491,1.10265 4.3512,-1.82397 z m 42.79165,1.05806 c 0,-1.0568 -1.28571,-3.085 -2.85714,-4.50713 -3.21201,-2.90683 -3.84156,-0.82324 -1.08493,3.59082 2.04157,3.26907 3.94207,3.71082 3.94207,0.91631 z m 151.19926,-6.00291 c 1.04613,-3.30616 1.06182,-10.11622 -2.00564,-3.86136 -0.47346,2.16071 -1.10839,4.73214 -1.41096,5.71428 -1.02159,3.31603 1.74513,1.81556 3.4166,-1.85292 z m 13.44261,0.0331 c 0.77878,-4.07383 -1.02601,-6.14647 -2.34932,-2.698 -1.25185,3.26226 -1.05979,6.30353 0.39805,6.30353 0.69413,0 1.5722,-1.62249 1.95127,-3.60553 z m -308.10711,-8.79116 c 0.54424,-4.72137 0.35806,-6.21477 -0.59171,-4.74617 -0.76222,1.17857 -1.80315,5.35714 -2.31319,9.28571 -0.69006,5.3151 -0.53864,6.52958 0.59171,4.74618 0.83548,-1.31818 1.87642,-5.49675 2.31319,-9.28572 z m 116.06999,0.44029 c 0.5388,-2.71712 -2.6904,-3.1008 -5.17618,-0.61503 -0.94285,0.94286 -1.71428,2.94984 -1.71428,4.45996 0,2.52628 0.25683,2.57542 3.21428,0.61502 1.76786,-1.17185 3.42215,-3.17882 3.67618,-4.45995 z m 155.08358,0.42893 c 2.78899,-4.72139 2.21276,-7.06875 -1.06703,-4.34676 -2.1016,1.74417 -4.05858,8.73137 -2.4455,8.73137 0.50736,0 2.08799,-1.97309 3.51253,-4.38461 z m 12.2898,-3.82968 c -0.017,-3.06134 -0.32758,-3.45552 -1.4067,-1.78571 -1.8063,2.79504 -1.8063,5.71429 0,5.71429 0.78572,0 1.41873,-1.76786 1.4067,-3.92858 z m -152.83527,-0.9132 c 0,-2.68664 -5.22337,-8.97367 -6.44479,-7.75715 -1.11001,1.10555 3.60999,9.74175 5.32423,9.74175 0.6163,0 1.12056,-0.89307 1.12056,-1.9846 z m 157.77614,-9.76184 c 1.22312,-1.74624 2.22386,-3.99624 2.22386,-5 0,-3.4067 -2.3187,-1.84443 -4.7123,3.17502 -2.64846,5.55387 -0.98029,6.77728 2.48844,1.82498 z m -170.22518,-6.84724 c -0.79562,-3.04246 -2.9681,-5.0368 -4.17356,-3.83133 -0.85723,0.85723 2.6103,6.71073 3.97536,6.71073 0.52315,0 0.61234,-1.29573 0.1982,-2.8794 z m -13.14062,-19.05946 c -3.71273,-3.71273 -3.97935,-0.91831 -0.48177,5.04919 2.3589,4.0247 2.52719,4.08673 2.98177,1.09901 0.27759,-1.82444 -0.78195,-4.43017 -2.5,-6.1482 z m -34.69605,-32.63257 c 0.94285,-0.94286 1.6929,-3.03214 1.66675,-4.64286 -0.0456,-2.80715 -0.16401,-2.78874 -2.85714,0.44397 -4.1405,4.97009 -3.13336,8.52263 1.19039,4.19889 z m -4.80363,-17.84736 c 3.61081,-5.31378 3.85377,-7.8582 0.48101,-5.03747 -2.90274,2.42762 -7.12641,10.3134 -5.52394,10.3134 0.80181,0 3.07113,-2.37417 5.04293,-5.27593 z m 17.39061,-2.89507 c -1.2252,-1.2209 -6.58698,4.66053 -6.58698,7.22537 0,0.87725 1.73377,-0.13871 3.85281,-2.25783 2.11904,-2.11905 3.34943,-4.35444 2.73417,-4.96754 z m -19.54781,-11.30737 c 3.09265,-3.93167 3.89565,-7.66449 1.64877,-7.66449 -1.2669,0 -7.25937,8.68882 -7.25937,10.52576 0,2.09507 2.8587,0.6372 5.6106,-2.86127 z m -185.63248,-29.4502 c -0.0157,-5.36921 -0.41531,-6.8912 -1.40669,-5.35714 -1.82704,2.82714 -1.82704,12.85714 0,12.85714 0.78571,0 1.41872,-3.375 1.40669,-7.5 z m -15.09857,-1.98697 c 1.08136,-2.81797 -0.25748,-7.65589 -2.11868,-7.65589 -0.73276,0 -1.3323,2.25 -1.3323,5 0,5.2215 1.90413,6.68692 3.45098,2.65589 z m -13.45098,-5.59734 c 0,-4.99975 -2.27365,-6.66993 -3.77033,-2.76963 -1.14615,2.98681 0.69523,9.58584 2.38364,8.54234 0.76268,-0.47136 1.38669,-3.06909 1.38669,-5.77271 z m 173.57143,3.65574 c -0.4856,-0.78572 -1.48783,-1.42857 -2.22717,-1.42857 -0.73935,0 -1.34426,0.64285 -1.34426,1.42857 0,0.78571 1.00223,1.42857 2.22717,1.42857 1.22494,0 1.82986,-0.64286 1.34426,-1.42857 z m 15.06548,-8.44907 c -1.49965,-2.80213 -4.3512,-4.1263 -4.3512,-2.02056 0,1.42669 4.6484,6.29743 5.34509,5.60074 0.33037,-0.33038 -0.11686,-1.94147 -0.99389,-3.58018 z m -15.06548,-2.9795 c -0.4856,-0.78572 -1.52576,-1.42857 -2.31147,-1.42857 -0.78572,0 -1.03128,0.64285 -0.54568,1.42857 0.4856,0.78571 1.52576,1.42857 2.31148,1.42857 0.78571,0 1.03127,-0.64286 0.54567,-1.42857 z m 6.42857,-6.99002 c 0,-0.70165 -0.96429,-1.64576 -2.14286,-2.09802 -2.17754,-0.8356 -2.9257,0.68614 -1.19047,2.42137 1.36527,1.36528 3.33333,1.17437 3.33333,-0.32335 z m -120.52583,-28.1117 c 3.92834,-4.16525 4.81154,-6.23097 4.81154,-11.25365 0,-7.9984 -2.60827,-10.40037 -8.59906,-7.9189 -12.93985,5.35986 -17.18485,24.27427 -5.44793,24.27427 3.22211,0 5.73102,-1.38594 9.23545,-5.10172 z m -53.27269,-7.83202 c 7.71146,-6.06584 7.79098,-21.46877 0.12078,-23.39387 -10.40226,-2.6108 -19.31165,13.67006 -12.66982,23.1526 2.77921,3.96788 7.69136,4.06232 12.54904,0.24127 z m 229.076,-7.87993 c -4.0329,-3.49341 -8.13462,-4.58782 -8.13462,-2.17047 0,0.71587 2.02092,3.00208 4.49095,5.08048 3.31653,2.79067 4.90427,3.35827 6.07143,2.17047 1.16033,-1.18085 0.51494,-2.53141 -2.42776,-5.08048 z m 28.19776,-7.86405 c -1.36923,-1.51297 -3.03271,-2.75085 -3.69666,-2.75085 -2.22491,0 -1.23732,3.35507 2.00713,6.81868 2.71865,2.90229 3.28867,3.06531 3.69665,1.05721 0.2653,-1.3058 -0.6379,-3.61207 -2.00712,-5.12504 z M 219.4851,267.15214 c 0,-3.61662 -2.19907,-3.40106 -4.91899,0.48216 -3.55208,5.07131 -2.88501,7.32406 1.34757,4.55077 1.96428,-1.28705 3.57142,-3.55187 3.57142,-5.03293 z m 185.71429,1.59287 c 0,-2.19102 -5.44703,-7.14286 -7.85714,-7.14286 -3.24369,0 -2.5766,2.30859 1.62123,5.6106 4.10857,3.2318 6.23591,3.75452 6.23591,1.53226 z m -239.64286,-6.86728 c 2.67832,-2.30011 3.45565,-8.84701 1.05043,-8.84701 -1.71254,0 -7.10882,8.45912 -7.11652,11.15574 -0.006,1.99418 1.90041,1.26873 6.06609,-2.30873 z m 62.77898,-6.97142 c 3.95756,-3.79159 5.28416,-7.58987 2.65087,-7.58987 -1.3895,0 -8.64413,8.80545 -8.64413,10.49198 0,1.86191 2.06379,0.86256 5.99326,-2.90211 z m -50.00652,-11.51844 c 6.78474,-7.27435 8.32867,-13.43123 2.59916,-10.3649 -2.85044,1.52552 -6.29611,6.44375 -7.76198,11.07918 -1.37194,4.33839 0.7202,4.04894 5.16282,-0.71428 z m 72.39418,-7.69047 c 4.03335,-1.67618 7.33336,-3.65583 7.33336,-4.39922 0,-2.02307 -8.68636,0.23559 -13.21428,3.43602 -7.04482,4.97942 -4.70522,5.36261 5.88092,0.9632 z m -45.52378,-5.15242 c 3.53571,-1.14197 7.23214,-2.31539 8.21429,-2.60759 4.01086,-1.1933 1.4,-3.4781 -3.97446,-3.4781 -8.29221,0 -15.6684,3.40027 -15.6684,7.22281 0,2.39201 0.56024,2.84268 2.5,2.01104 1.375,-0.58952 5.39286,-2.00619 8.92857,-3.14816 z M 369.4851,215.98413 c 0,-1.8612 -4.83791,-3.20003 -7.65588,-2.11867 -4.03103,1.54685 -2.56562,3.45098 2.65588,3.45098 2.75,0 5,-0.59954 5,-1.33231 z m 20,-0.0963 c 0,-0.78572 -2.9308,-1.42858 -6.51288,-1.42858 -3.97814,0 -6.16926,0.55599 -5.62997,1.42858 0.4856,0.78571 3.4164,1.42857 6.51288,1.42857 3.09649,0 5.62997,-0.64286 5.62997,-1.42857 z"
-         id="path3850"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="0you_won"
-       inkscape:label="#g3153"
-       transform="matrix(0.23143297,0,0,0.23143297,959.83408,561.94353)">
-      <g
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f4e3d7;fill-opacity:1;stroke:none;font-family:Sans"
-         id="text5055">
-        <path
-           style="fill:#f4e3d7"
-           d="m 1871.9375,160.34375 c -5.4502,0.48437 -13.8516,-2.51228 -16.4063,4.4375 -3.4797,4.06846 -6.9489,12.62782 -10.4352,13.92166 -4.2165,-6.24675 -8.4556,-12.47827 -12.6585,-18.73416 -4.6849,2.14276 -11.7587,-2.56762 -15.125,2.375 0.3317,4.52195 5.0421,7.48105 6.8125,11.46875 4.6071,7.28067 10.881,14.0647 13.7812,22.125 0,8.9375 1e-4,17.875 0,26.8125 5.1565,-0.17465 14.3866,2.37702 15.9063,-4.75 -0.075,-8.26099 -1.8124,-17.13512 0.375,-25.1875 7.5218,-11.12777 15.0239,-22.26877 22.5313,-33.40625 -1.5938,0.3125 -3.1876,0.625 -4.7813,0.9375 z"
-           id="path5060"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1880.3125,172.96875 c -12.9679,-0.45681 -22.4783,12.64556 -21.7187,24.90625 -0.9075,12.0516 7.3597,25.40441 20.2187,26 12.5474,1.85606 24.8523,-8.43692 25.25,-21.0625 1.9198,-12.19843 -4.204,-27.41377 -17.625,-29.4375 -2.0191,-0.36152 -4.0705,-0.52333 -6.125,-0.40625 z m 0.875,13.65625 c 7.7595,0.11927 8.9186,10.39035 7.5,16.25 0.3194,6.88198 -10.7159,10.59737 -13.2813,3.3125 -3.0027,-6.02585 -2.6553,-15.8329 3.8438,-19.25 0.6107,-0.26462 1.2871,-0.25755 1.9375,-0.3125 z"
-           id="path5062"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1918.7188,174 c -3.822,0.40407 -11.3894,-2.39307 -12.0938,3.53125 1.2505,13.18282 -3.2325,28.01355 4.0312,39.9375 5.7061,7.39747 17.1785,8.06354 24.6876,3.78125 4.0814,3.88464 14.7807,2.68208 14,-4.34375 -1.1046,-14.02876 -0.1491,-28.58472 -0.4688,-42.8125 -5.233,-0.79049 -14.5259,-1.79728 -15.2812,5.5625 0.2648,8.03046 1.474,16.42231 0.1874,24.40625 0.015,6.21415 -10.8665,8.66535 -12.1562,2.21875 -0.6934,-11.02678 -0.034,-22.10841 -0.3125,-33.15625 -0.8646,0.29167 -1.7292,0.58333 -2.5937,0.875 z"
-           id="path5064"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1993.7188,172.96875 c -10.5144,-0.76148 -20.7052,9.48658 -17.4063,20.15625 2.4167,9.08519 12.9037,11.62817 20.9687,12.4375 2.585,0.5133 3.9047,4.3225 0.2188,4.28125 -8.1648,1.86626 -15.9242,-2.78826 -22.8438,-6.625 3.3223,5.58813 -2.4353,13.88928 3.6563,17.96875 10.9732,3.51022 26.1159,5.31234 34,-5.15625 6.4577,-8.58026 0.4972,-21.83689 -9.8437,-23.625 -3.7543,-1.58577 -9.576,-0.62693 -12,-4.03125 2.6413,-3.34812 8.6371,-1.54993 12.375,-0.9375 3.6645,1.14142 6.988,3.06503 10.4062,4.78125 -2.3595,-5.4993 2.7506,-14.1953 -4.0312,-17.34375 -5.0238,-1.39458 -10.2167,-2.20443 -15.5,-1.90625 z"
-           id="path5066"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2029.0312,174 c -3.8219,0.40407 -11.3893,-2.39307 -12.0937,3.53125 1.3143,13.14268 -3.3297,27.94655 4,39.84375 5.5755,7.49157 17.1145,8.1849 24.7187,3.875 4.0909,4.01814 15.1195,2.5176 13.9688,-4.59375 -1.03,-14.02707 -0.1397,-28.40236 -0.4375,-42.5625 -5.233,-0.79049 -14.5259,-1.79728 -15.2813,5.5625 0.2403,8.03446 1.4565,16.40636 0.1876,24.40625 -0.1899,5.96723 -10.0904,8.65349 -12.0626,2.65625 -0.9282,-11.16319 -0.063,-22.37823 -0.4062,-33.5625 -0.8646,0.28125 -1.7292,0.5625 -2.5938,0.84375 z"
-           id="path5068"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2088.0312,172.96875 c -3.4293,-0.2828 -7.0681,1.84042 -9.8124,2.3125 -4.1627,-3.57443 -14.4852,-2.4733 -13.875,4.4375 1.1806,14.04915 0.1571,28.64942 0.5,42.90625 5.2664,0.79002 14.6201,1.79671 15.3124,-5.625 -0.3075,-7.88795 -1.3358,-16.03811 -0.125,-23.9375 0.8725,-6.79339 9.0663,-7.69089 13.7188,-4.03125 5.4017,4.68806 3.189,0.14013 2.875,-3.9375 0.8926,-4.3335 1.2802,-12.59156 -5.3125,-12.03125 -1.0801,-0.18666 -2.1903,-0.13038 -3.2813,-0.0937 z"
-           id="path5070"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2102.9688,174 c -3.7756,0.73974 -11.2476,-2.6183 -12.4376,2.90625 5.4696,15.35713 11.5561,30.80177 17.25,46.1875 5.2717,-1.59725 13.5734,2.72759 16.2813,-4.09375 5.0352,-15.31835 11.2564,-30.30895 16.75,-45.5 -5.7567,1.7822 -14.7181,-2.67592 -17.7813,4.46875 -1.8614,7.80988 -5.4667,15.19839 -8.0312,22.84375 -3.3865,-9.14274 -6.7859,-18.28081 -10.2188,-27.40625 l -0.9503,0.31131 -0.8621,0.28244 z"
-           id="path5072"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2143.375,157.875 c -5.0642,0.78981 -3.08,7.32017 -3.375,10.9375 -0.2553,2.12144 2.4079,4.57715 2.375,5.375 -4.6875,3.05826 -1.0282,10.15238 -2.1875,14.71875 0,11.23958 0,22.47917 0,33.71875 5.233,0.79049 14.5259,1.79728 15.2813,-5.5625 -1.1983,-14.5222 -0.2723,-29.30245 -0.5626,-43.9375 -4.3001,2.18762 0.6811,-1.65417 0.2188,-3.59375 1.2051,-4.24557 -0.01,-13.02816 -6.1875,-11.375 -1.8549,-0.0191 -3.7032,-0.45858 -5.5625,-0.28125 z"
-           id="path5074"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2168,174 c -3.7756,0.73974 -11.2475,-2.6183 -12.4375,2.90625 5.4696,15.35713 11.556,30.80177 17.25,46.1875 5.2717,-1.59725 13.5734,2.72759 16.2813,-4.09375 5.0351,-15.31835 11.2564,-30.30895 16.75,-45.5 -5.7567,1.7822 -14.7182,-2.67592 -17.7813,4.46875 -1.8614,7.80988 -5.4667,15.19839 -8.0313,22.84375 -3.3865,-9.14274 -6.7859,-18.28081 -10.2187,-27.40625 l -0.9503,0.31131 L 2168,174 z"
-           id="path5076"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2225.125,172.96875 c -13.8334,-0.42872 -24.2039,13.5803 -22.9375,26.75 -0.3385,13.54991 12.0378,25.51984 25.6563,24.1875 6.594,-0.0598 13.0533,-1.83315 19,-4.59375 -1.6031,-4.27523 2.5436,-11.53733 -2.8438,-13.71875 -4.611,0.81937 -8.4124,4.68687 -13.3438,4.5 -4.9699,1.15796 -11.5753,-1.3012 -12.6562,-6.34375 9.9665,0.76993 19.9876,-0.0827 30,0.21875 2.2177,-12.02425 -2.682,-27.91263 -16.0938,-30.40625 -2.1929,-0.55115 -4.5123,-0.66846 -6.7812,-0.59375 z m 0.5,13.625 c 2.9327,-0.39193 5.9511,1.23711 7.125,4.0625 -4.4813,-0.13583 -10.1397,0.59388 -14,-0.1875 1.4628,-2.3897 4.1158,-3.84453 6.875,-3.875 z"
-           id="path5078"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2290.25,158.09375 c -3.8646,0.41751 -11.3762,-2.40224 -12.125,3.53125 -0.2081,4.3287 0.2999,9.32816 -0.125,13.21875 -11.4701,-5.95546 -26.9979,2.22922 -28.668,15.03558 -6.8425,17.52965 9.7072,41.81622 29.043,31.93317 1.8912,-1.10319 3.9794,2.11878 6.4062,1.5 4.5342,0.99361 10.7166,-2.97675 8.0938,-7.9375 0,-19.38542 0,-38.77083 0,-58.15625 -0.875,0.29167 -1.75,0.58333 -2.625,0.875 z m -19.9062,28.46875 c 7.531,0.0119 8.6053,9.85341 7.5624,15.625 0.654,6.11043 -8.3702,11.5037 -12.2187,5.5 -3.9339,-5.93574 -3.6867,-16.0198 1.9687,-20.46875 0.8387,-0.40835 1.7568,-0.64059 2.6876,-0.65625 z"
-           id="path5081"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2315.8438,160.40625 c -4.0483,0.45955 -12.4715,-2.57826 -12.9063,3.90625 -0.01,13.54304 -0.2975,27.13044 1.0625,40.625 3.3876,0.50762 2.638,0.26698 0.3125,1.4375 -2.6254,3.40822 -1.5231,8.65177 -1.1563,12.71875 0.9591,4.84138 6.4261,4.47043 10.0938,3.9375 5.8924,0.40182 5.9192,-7.23853 5,-11.34375 -1.0789,-2.77294 2.9394,-8.95934 -2.1467,-6.1117 -2.0309,0.43493 -6.0182,0.0998 -2.0721,-0.6383 6.6021,-2.88822 3.3709,-11.10797 4.25,-16.5 0.2712,-9.60187 -0.1208,-19.20902 0.094,-28.8125 -0.8437,0.26042 -1.6875,0.52083 -2.5312,0.78125 z"
-           id="path5083"
-           inkscape:connector-curvature="0" />
-      </g>
-      <text
-         inkscape:export-ydpi="192.10005"
-         inkscape:export-xdpi="192.10005"
-         inkscape:export-filename="/home/xymus/projects/mnit/tests/dino/assets/images/you_won.png"
-         sodipodi:linespacing="125%"
-         id="text2985"
-         y="218.826"
-         x="1822.7584"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="218.826"
-           x="1822.7584"
-           id="tspan2987"
-           sodipodi:role="line">You survived!</tspan></text>
-    </g>
-    <g
-       id="0you_lost"
-       inkscape:label="#g3157"
-       transform="matrix(0.23143297,0,0,0.23143297,959.83408,561.94353)">
-      <g
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="text5214">
-        <path
-           style="fill:#f4e3d7"
-           d="m 1871.9375,243.90625 c -5.4502,0.48437 -13.8516,-2.51228 -16.4063,4.4375 -3.4797,4.06846 -6.9489,12.62782 -10.4352,13.92166 -4.2165,-6.24675 -8.4556,-12.47827 -12.6585,-18.73416 -4.6849,2.14276 -11.7587,-2.56762 -15.125,2.375 0.3154,4.54165 5.0616,7.40454 6.8125,11.5 4.6114,7.27749 10.878,14.05724 13.7812,22.125 0,8.92708 1e-4,17.85417 0,26.78125 5.1565,-0.17465 14.3866,2.37702 15.9063,-4.75 -0.075,-8.25074 -1.812,-17.11419 0.375,-25.15625 7.5332,-11.13049 15.0229,-22.29028 22.5313,-33.4375 -1.5938,0.3125 -3.1876,0.625 -4.7813,0.9375 z"
-           id="path5219"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1880.3125,256.53125 c -12.9817,-0.41477 -22.4743,12.63268 -21.7187,24.90625 -0.9092,12.05439 7.3624,25.40126 20.2187,26 12.5777,1.81669 24.9089,-8.4195 25.25,-21.15625 1.8784,-12.19371 -4.2134,-27.29389 -17.625,-29.34375 -2.0191,-0.36152 -4.0705,-0.52333 -6.125,-0.40625 z m 0.875,13.65625 c 7.7813,0.14463 8.9097,10.36826 7.5,16.25 0.3245,6.88389 -10.756,10.61761 -13.2813,3.28125 -2.9973,-5.88279 -2.6753,-15.63187 3.6563,-19.15625 0.6818,-0.27239 1.398,-0.3431 2.125,-0.375 z"
-           id="path5221"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1918.7188,257.59375 c -3.822,0.40407 -11.3894,-2.39307 -12.0938,3.53125 1.2727,13.16931 -3.2723,28.00743 4.0625,39.90625 5.4781,7.32434 17.1829,8.11336 24.6563,3.78125 4.0814,3.88464 14.7807,2.68208 14,-4.34375 -1.1046,-14.01835 -0.1491,-28.56387 -0.4688,-42.78125 -5.233,-0.79049 -14.5259,-1.79728 -15.2812,5.5625 0.2855,7.80482 1.3252,15.93055 0.3124,23.71875 0.3794,6.50381 -10.4332,9.56412 -12.2812,3.09375 -0.6833,-11.09697 -0.041,-22.23182 -0.3125,-33.34375 -0.8646,0.29167 -1.7292,0.58333 -2.5937,0.875 z"
-           id="path5223"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1958.3438,243.75 c -5.8334,0.78846 -2.622,8.58262 -3.4063,12.3125 1.1062,4.89255 -2.2626,13.73562 1.75,16.0625 5.0927,1.20381 13.466,0.26045 13.0313,-6.6875 -1.9936,-6.13977 1.0294,-12.81645 -1.0938,-18.875 -1.8032,-4.08426 -6.7398,-2.1765 -10.2812,-2.8125 z"
-           id="path5225"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1998.3125,256.53125 c -3.4796,-0.38161 -7.1826,2.10611 -9.9687,2.1875 -4.2014,-3.38677 -14.4482,-2.19999 -13.6563,4.6875 1.1045,14.01835 0.1491,28.56387 0.4687,42.78125 5.2665,0.79002 14.6202,1.79671 15.3126,-5.625 -0.2691,-8.12828 -1.5902,-16.60037 0.094,-24.6875 1.5459,-7.25286 10.9405,-6.32915 14.9437,-1.89375 4.9292,4.79154 0.9152,-2.31612 1.4,-5.3875 1.0321,-4.39691 1.1117,-12.65373 -5.4687,-12 -1.0353,-0.1278 -2.0849,-0.11204 -3.125,-0.0625 z"
-           id="path5227"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2024.5625,256.53125 c -13.8346,-0.42192 -24.2368,13.59316 -22.9687,26.75 -0.3693,13.52495 12.0681,25.48128 25.625,24.1875 6.6132,-0.0116 13.069,-1.82941 19.0312,-4.59375 -1.6096,-4.29558 2.4412,-11.08437 -2.5938,-13.59375 -4.1598,0.0517 -7.4077,4.14408 -11.7812,4.09375 -5.1257,1.77234 -13.7494,-0.57921 -14.2188,-5.96875 9.9175,0.25034 19.8555,0.073 29.7813,0.125 1.9705,-11.6931 -2.2057,-26.9271 -15.0313,-30.15625 -2.5419,-0.70979 -5.1979,-0.95268 -7.8437,-0.84375 z m 0.031,13.65625 c 3.1065,-0.51819 6.3705,1.10959 7.5937,4.0625 -4.2132,-0.34274 -11.0111,0.84595 -13.875,-0.40625 1.342,-2.14826 3.8673,-3.52698 6.2813,-3.65625 z"
-           id="path5229"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2113.4688,241.65625 c -3.857,0.29205 -11.8813,-2.35421 -12.0938,3.90625 -0.2443,4.18599 0.3684,9.11477 -0.125,12.84375 -11.0905,-5.74642 -26.3244,1.68334 -28.4688,14.0625 -3.9081,12.84536 0.4368,30.82471 14.875,34.4375 5.104,1.64141 10.9526,-0.30633 15.2813,-1.75 4.2378,3.32712 14.4334,2.21606 13.625,-4.6875 -1.1005,-19.65588 -0.1519,-39.83319 -0.4687,-59.6875 -0.875,0.29167 -1.75,0.58333 -2.625,0.875 z m -19.9376,28.46875 c 7.8878,0.005 8.7628,10.65683 7.4376,16.46875 0.3597,6.43688 -9.9673,10.53034 -12.75,3.59375 -2.9393,-5.87921 -2.7875,-14.90566 2.5312,-19.34375 0.866,-0.43115 1.8142,-0.68791 2.7812,-0.71875 z"
-           id="path5231"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2141.875,256.53125 c -13.8319,-0.40425 -24.2792,13.56393 -22.9688,26.75 -0.3569,13.5246 12.0473,25.47975 25.625,24.1875 6.6281,-0.0259 13.0827,-1.8106 19.0313,-4.59375 -1.6031,-4.30183 2.5106,-11.28023 -2.7187,-13.625 -4.4272,0.39621 -7.9004,4.41743 -12.625,4.3125 -5.0733,1.36555 -12.498,-0.94204 -13.4063,-6.21875 9.9452,0.66357 19.9262,-0.0737 29.9063,0.1875 2.199,-12.07402 -2.6428,-27.85216 -16.0938,-30.4375 -2.2087,-0.49457 -4.4861,-0.65091 -6.75,-0.5625 z m 0.4688,13.625 c 2.9812,-0.38942 5.9977,1.31916 7.1562,4.09375 -4.2743,-0.33056 -10.8871,0.83008 -13.9062,-0.40625 1.4675,-2.24842 4.0074,-3.63781 6.75,-3.6875 z"
-           id="path5233"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2184.5312,256.53125 c -5.6751,0.32558 -11.162,1.98535 -16.4062,4.125 1.6581,4.34833 -2.3918,11.05249 2.625,13.6875 4.5163,-0.48376 8.3454,-4.48779 13.2188,-4.1875 2.5563,-0.66878 7.707,0.90521 8.0937,2.59375 -10.1872,-1.57787 -24.3878,1.98413 -26.3437,13.71875 -2.9334,10.73155 6.6056,22.35925 17.8124,21 3.8591,0.40566 7.9656,-1.82484 11.1563,-2.40625 4.2722,3.61149 14.8268,2.17302 13.6875,-4.84375 -2.1461,-11.96451 2.914,-25.84334 -4.8125,-36.59375 -4.3645,-5.81971 -12.1057,-7.46749 -19.0313,-7.09375 z m 8.1876,28.84375 c 0.9695,1.55734 -0.8521,5.3069 -2.5626,6.625 -3.111,3.32986 -11.5143,2.32587 -9.9062,-3.3125 2.3974,-4.45799 8.6259,-1.82448 12.4688,-3.3125 z"
-           id="path5235"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2252.8438,241.65625 c -3.857,0.29212 -11.8813,-2.35428 -12.0938,3.90625 -0.1161,4.302 0.1173,8.60422 0,12.90625 -11.1468,-5.86461 -26.4358,1.58319 -28.5938,14.03125 -3.8495,12.63973 0.2568,30.01586 14.125,34.28125 5.295,1.61753 11.3894,0.21242 15.9063,-1.71875 4.2086,3.41233 14.4053,2.40959 13.7813,-4.5 -1.1756,-19.67651 -0.1608,-39.89772 -0.5,-59.78125 -0.875,0.29167 -1.7501,0.58333 -2.625,0.875 z m -19.9063,28.46875 c 7.537,-0.007 8.6343,9.93088 7.5625,15.625 0.7653,6.34789 -9.0061,11.63129 -12.5,5.0625 -3.5214,-5.91186 -3.2969,-15.71577 2.2188,-20.03125 0.857,-0.38193 1.7748,-0.66411 2.7187,-0.65625 z"
-           id="path5237"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2275.4062,289.21875 c -4.094,0.49689 -12.5998,-2.669 -13.1562,3.90625 -0.416,4.81161 -1.3286,13.52637 5.5938,13.8125 3.5493,-0.61933 9.1885,0.83805 10.125,-4.15625 0.9065,-4.81752 -1.2211,-9.78718 0.625,-14.53125 -1.0626,0.32292 -2.125,0.64583 -3.1876,0.96875 z"
-           id="path5239"
-           inkscape:connector-curvature="0" />
-      </g>
-      <text
-         inkscape:export-ydpi="192.10005"
-         inkscape:export-xdpi="192.10005"
-         inkscape:export-filename="/home/xymus/projects/mnit/tests/dino/assets/images/you_lost.png"
-         sodipodi:linespacing="125%"
-         id="text2989"
-         y="302.39023"
-         x="1822.7584"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="302.39023"
-           x="1822.7584"
-           id="tspan2991"
-           sodipodi:role="line">You're dead.</tspan></text>
-    </g>
-    <g
-       id="0play_again_mobile"
-       inkscape:label="#g3165"
-       transform="matrix(0.23143297,0,0,0.23143297,959.83408,561.94353)">
-      <g
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="text5263">
-        <path
-           style="fill:#f4e3d7"
-           d="m 1865.375,326.90625 c -15.4497,1.26373 -31.2566,0.15997 -46.8438,0.53125 0.036,4.64328 -2.3921,11.8716 3.6563,13.90625 5.011,2.37919 11.1761,-2.18095 15.6563,0.96875 1.4228,4.86209 -0.9108,10.16115 0.062,15.3125 1e-4,10.76042 1e-4,21.52083 0,32.28125 5.1565,-0.17465 14.3866,2.37702 15.9063,-4.75 -1.0148,-14.37835 -0.2774,-29.03456 -0.5,-43.53125 6.375,0 12.75,0 19.125,0 1.0842,-5.1575 1.5466,-14.31865 -5.7187,-14.71875 -0.4467,-0.0467 -0.8971,-0.038 -1.3438,0 z"
-           id="path5268"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1875.6875,340.09375 c -5.6453,0.32631 -11.1736,1.94876 -16.375,4.1875 1.6724,4.27298 -2.3929,11.05378 2.5937,13.59375 4.1377,-0.18169 7.4703,-4.01499 11.9063,-4 3.1214,-0.73542 8.1793,0.0682 9.5625,2.46875 -10.2535,-1.63007 -24.5134,1.88729 -26.5,13.71875 -3.0462,10.98712 7.1479,22.7918 18.5625,20.9375 3.6341,0.4262 7.5454,-2.10507 10.4687,-2.28125 4.2507,3.55903 14.8047,2.07143 13.6563,-4.90625 -2.1838,-12.14616 3.0697,-26.4897 -5.2813,-37.1875 -4.4771,-5.37916 -11.8792,-6.88522 -18.5937,-6.53125 z m 7.3125,29 c 3.0957,-0.1251 0.028,4.02822 -0.625,5.4375 -2.6636,4.36298 -12.7786,3.97182 -10.9375,-2.40625 2.3004,-4.02951 7.866,-1.95965 11.5625,-3.03125 z"
-           id="path5270"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1927.3438,340.09375 c -3.2321,-0.23124 -6.6618,1.69092 -9.2813,2.28125 -4.2494,-3.45383 -14.5744,-2.38262 -13.8125,4.59375 1.1241,18.60112 0.1338,37.7333 0.4688,56.53125 0.1138,3.40661 5.9838,1.97297 8.9062,2.1875 5.3488,-0.0279 7.677,-5.93802 6.0312,-10.40625 0.3253,-2.02583 -0.4013,-4.68979 -0.1874,-6.1875 12.7217,6.62332 28.7945,-3.78562 29.4062,-17.78125 2.4977,-12.39088 -3.0368,-28.45325 -16.8125,-30.9375 -1.5494,-0.28543 -3.1341,-0.38251 -4.7187,-0.28125 z m -0.75,13.59375 c 7.733,-0.019 8.6929,10.5716 7.3437,16.3125 0.5347,6.5139 -9.8909,10.77088 -12.625,3.78125 -3.1789,-5.90195 -2.8087,-15.31713 2.6563,-19.46875 0.819,-0.38728 1.7188,-0.60718 2.625,-0.625 z"
-           id="path5272"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1984,328.9375 c -2.9092,0.84477 -9.0495,-0.6973 -7.9375,4.46875 2.1404,3.73634 0.01,7.3774 -3.1875,9.5625 -3.4328,4.09374 -1.7158,10.44632 3.25,12.28125 1.8879,2.56135 -0.8379,6.221 0.169,9.31233 -0.5984,8.27368 -1.1508,20.17371 8.081,23.90642 6.3641,2.47224 13.4083,1.101 20.0938,1.53125 1.6258,-5.15855 1.2418,-13.67198 -5.75,-14.125 -2.6374,-0.51139 -8.8793,2.68289 -7.7813,-2.3125 0.1764,-6.40696 -0.3464,-13.51305 0.25,-19.5 4.4549,0.38271 13.6804,2.2372 13.9063,-4.71875 0.029,-3.3191 -0.019,-8.05407 -4.4688,-8.4375 -2.9948,-0.86853 -7.7347,1.38146 -9.625,-0.1875 0.6717,-5.03905 0.1171,-12.88975 -7,-11.78125 z"
-           id="path5274"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2024.3438,340.09375 c -13.5161,-0.4462 -22.957,13.58413 -21.7188,26.1875 -0.5684,12.08161 8.5843,24.85394 21.3438,24.8125 12.2487,1.25748 23.7435,-9.03955 24.1562,-21.28125 1.8581,-12.18274 -4.2514,-27.30031 -17.6562,-29.3125 -2.0191,-0.36152 -4.0705,-0.52333 -6.125,-0.40625 z m 0.75,13.65625 c 7.8965,0.003 9.0537,10.51061 7.6562,16.40625 0.5946,7.60407 -12.6484,9.81122 -14.0625,1.9375 -1.5254,-5.80091 -1.9023,-17.65957 6.4063,-18.34375 z"
-           id="path5276"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2097.5312,340.09375 c -3.2439,-0.20696 -6.6479,1.68243 -9.2812,2.28125 -4.2349,-3.45275 -14.5514,-2.37745 -13.7812,4.59375 1.1017,19.20759 0.1503,38.93779 0.4687,58.34375 5.2665,0.79002 14.6201,1.79671 15.3125,-5.625 -0.2902,-3.51808 -0.5246,-7.32249 -0.6562,-10.65625 11.3502,5.98698 26.4994,-1.69683 28.7187,-14.21875 3.7759,-12.55941 -0.3882,-29.73899 -14.0937,-34.03125 -2.1705,-0.5766 -4.433,-0.82406 -6.6876,-0.6875 z m -0.8124,13.59375 c 7.6546,-0.0958 8.6977,10.18567 7.5312,15.875 0.5496,6.24284 -8.9229,11.34977 -12.4062,4.8125 -3.4327,-5.83555 -3.3404,-14.96849 1.7812,-19.71875 0.8735,-0.64419 1.9945,-0.94005 3.0938,-0.96875 z"
-           id="path5278"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2134.75,325.21875 c -3.8204,0.40409 -11.3899,-2.39318 -12.0938,3.53125 1e-4,20.34375 0,40.6875 0,61.03125 5.2331,0.79049 14.526,1.79728 15.2813,-5.5625 -1.2696,-19.82462 -0.22,-39.93476 -0.5625,-59.875 -0.875,0.29167 -1.75,0.58333 -2.625,0.875 z"
-           id="path5280"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2159.9688,340.09375 c -5.674,0.32178 -11.1722,1.95674 -16.375,4.1875 1.6664,4.28384 -2.3879,11.00121 2.5937,13.5625 4.2487,-0.16243 7.6992,-4.09832 12.2187,-4.03125 3.1602,-0.4759 7.0866,-0.20692 9.3126,2.4375 -10.1633,-1.30845 -23.6906,1.60201 -26.4063,13 -3.4035,10.75755 5.9523,23.03073 17.375,21.78125 3.9396,0.38271 8.089,-1.53518 11.3437,-2.46875 4.117,3.61437 14.6504,2.48074 13.8438,-4.5 -2.275,-12.18638 3.1012,-26.75422 -5.3438,-37.53125 -4.5037,-5.26945 -11.8838,-6.80109 -18.5624,-6.4375 z m 7.25,29.03125 c 3.2584,-0.29466 0.052,4.01435 -0.5,5.34375 -2.5273,4.01521 -11.906,4.39118 -11.1563,-1.6875 1.5371,-4.87519 8.0434,-2.59557 11.6563,-3.65625 z"
-           id="path5282"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2196.3125,341.15625 c -3.8778,0.72153 -11.1943,-2.55169 -12.5625,2.875 5.5027,13.73575 11.3884,27.52998 16.9688,41.3125 -0.7932,3.95965 -3.3955,8.48981 -8,6.28125 -8.1191,0.66587 -6.0834,16.8308 2.25,14.125 8.2973,0.93481 16.4038,-4.70724 18.3492,-12.94558 7.1626,-17.32882 13.9084,-34.82661 21.0882,-52.14817 -5.761,1.83901 -14.7431,-2.68225 -17.9687,4.3125 -1.9086,7.2928 -5.4607,14.18688 -8.0625,21.3125 -3.4236,-8.57429 -6.8762,-17.1371 -10.2812,-25.71875 l -0.9487,0.31623 -0.8326,0.27752 z"
-           id="path5284"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2273.9375,340.09375 c -5.6693,0.3348 -11.1833,1.92814 -16.375,4.1875 1.6724,4.27298 -2.3929,11.05378 2.5937,13.59375 4.1596,-0.20705 7.5351,-4.03899 11.9688,-4.03125 2.8714,-0.84511 8.6353,0.36648 9.3438,2.46875 -10.1854,-1.56303 -24.3881,1.97934 -26.3438,13.71875 -2.9487,10.71769 6.6036,22.37168 17.8125,21 3.905,0.51781 8.0638,-2.01793 11.2187,-2.3125 4.2374,3.52804 14.7953,2.073 13.625,-4.90625 -2.1751,-11.95562 2.9621,-25.88996 -4.8124,-36.625 -4.368,-5.80693 -12.1058,-7.47382 -19.0313,-7.09375 z m 7.2187,29.0625 c 3.1349,-0.50624 0.2441,3.59146 -0.2187,4.90625 -2.3274,4.31259 -12.0162,5.04593 -11.4687,-1.21875 1.4964,-4.87248 7.972,-2.67281 11.6874,-3.6875 z"
-           id="path5286"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2319.9375,340.09375 c -13.4511,0.19842 -21.157,15.15162 -19.625,27.28125 -0.2037,12.49938 11.1926,25.29961 24.3125,22.34375 1.6401,-0.0213 6.1153,-2.3442 2.8438,0.3125 -7.6191,5.24104 -16.6978,-0.70767 -23.3126,-4.8125 3.5141,5.43953 -2.071,13.22981 3.25,17.625 11.1205,4.52809 27.7326,4.46579 34.3438,-7.34375 6.2176,-14.33684 1.689,-30.43007 3.2188,-45.53125 1.1564,-4.44088 -1.4803,-10.78913 -6.9376,-9.25 -2.392,-0.21988 -5.4619,-0.40471 -6.875,1.84375 -3.3827,-1.96819 -7.3267,-2.66166 -11.2187,-2.46875 z m 2.8437,13.59375 c 7.3975,0.20063 8.2598,10.08359 7,15.625 0.3933,7.26738 -11.624,9.96367 -13.3437,2.46875 -2.3046,-5.73442 -2.2358,-15.6535 4.6875,-17.96875 0.5264,-0.0701 1.0866,-0.10401 1.6562,-0.125 z"
-           id="path5288"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2367.2812,340.09375 c -5.6453,0.32631 -11.1736,1.94876 -16.375,4.1875 1.6725,4.27298 -2.3929,11.05378 2.5938,13.59375 4.1357,-0.18026 7.4685,-4.0148 11.9062,-4 2.9366,-0.89402 8.7161,0.33994 9.4063,2.4375 -10.2102,-1.58339 -24.3881,2.01029 -26.3437,13.75 -2.9769,10.97085 7.0317,22.65707 18.4062,20.9375 3.7026,0.52489 7.6426,-2.1259 10.625,-2.28125 4.2507,3.55903 14.8046,2.07143 13.6562,-4.90625 -2.1838,-12.14616 3.0698,-26.4897 -5.2812,-37.1875 -4.4772,-5.37916 -11.8793,-6.88522 -18.5938,-6.53125 z m 7.3126,29 c 3.0957,-0.1251 0.028,4.02822 -0.625,5.4375 -2.6116,3.97379 -11.8268,4.30169 -11.1563,-1.78125 1.6814,-4.80285 8.1022,-2.55204 11.7813,-3.65625 z"
-           id="path5290"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2399.7812,325 c -5.0629,0.7871 -3.1168,7.30099 -3.375,10.9375 -0.269,2.14546 2.4786,4.62622 2.375,5.40625 -4.6874,3.05826 -1.0282,10.15238 -2.1874,14.71875 -1e-4,11.23958 0,22.47917 0,33.71875 5.233,0.79049 14.5259,1.79728 15.2812,-5.5625 -1.1982,-14.5222 -0.2722,-29.30245 -0.5625,-43.9375 -4.3515,2.21282 0.6447,-1.60815 0.2187,-3.625 1.2052,-4.24557 -0.01,-13.02816 -6.1874,-11.375 -1.8549,-0.0191 -3.7032,-0.45858 -5.5626,-0.28125 z"
-           id="path5292"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2439.875,340.09375 c -3.3206,-0.39901 -6.8602,2.27139 -9.4688,2.28125 -4.2614,-3.66412 -14.9074,-2.16355 -13.7812,4.84375 1.0576,14.02576 0.1194,28.40545 0.4375,42.5625 5.2621,0.79846 14.5853,1.797 15.3437,-5.59375 -0.268,-8.00594 -1.4713,-16.36138 -0.1874,-24.3125 0.1,-6.16211 10.4945,-8.63532 12.125,-2.34375 0.6442,10.73271 0.095,21.50212 0.2812,32.25 5.233,0.79049 14.5259,1.79728 15.2812,-5.5625 -2.3216,-11.65837 2.302,-24.50917 -3.375,-35.5 -2.9216,-6.31872 -9.9951,-9.11174 -16.6562,-8.625 z"
-           id="path5294"
-           inkscape:connector-curvature="0" />
-      </g>
-      <text
-         inkscape:export-ydpi="192.10005"
-         inkscape:export-xdpi="192.10005"
-         inkscape:export-filename="/home/xymus/projects/mnit/tests/dino/assets/images/play_again_mobile.png"
-         sodipodi:linespacing="125%"
-         id="text2993"
-         y="385.95447"
-         x="1822.7584"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="385.95447"
-           x="1822.7584"
-           id="tspan2995"
-           sodipodi:role="line">Tap to play again</tspan></text>
-    </g>
-    <g
-       id="0play_again"
-       inkscape:label="#g3161"
-       transform="matrix(0.23143297,0,0,0.23143297,959.83408,561.94353)">
-      <g
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="text5324">
-        <path
-           style="fill:#f4e3d7"
-           d="m 1851.9688,410.03125 c -15.2515,-0.46522 -28.5892,13.10758 -28.9063,28.15625 -1.892,14.66785 5.7736,31.8626 21.1875,35.21875 10.5618,2.8602 22.411,0.56625 31,-6.21875 -2.036,-4.69183 2.5504,-11.74474 -2.3125,-15 -4.3558,-0.11232 -6.088,5.42771 -10.2813,6.4375 -8.3677,4.3939 -21.6178,1.52581 -23,-9.0625 -2.7716,-9.17317 -0.4668,-23.3122 10.5,-25.21875 10.8905,-2.13871 20.1449,5.90938 26.2813,13.9375 -2.6156,-6.03749 -1.034,-12.2736 -1.4063,-18.5 -1.5594,-6.52904 -9.7567,-7.85305 -15.2812,-9.25 -2.5688,-0.45019 -5.1714,-0.62777 -7.7812,-0.5 z"
-           id="path5329"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1890.1875,408.78125 c -3.8204,0.40409 -11.3899,-2.39318 -12.0937,3.53125 0,20.34375 0,40.6875 0,61.03125 5.233,0.79049 14.5259,1.79728 15.2812,-5.5625 -1.2696,-19.82462 -0.22,-39.93476 -0.5625,-59.875 -0.875,0.29167 -1.75,0.58333 -2.625,0.875 z"
-           id="path5331"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1902.0312,408.5625 c -5.0629,0.7871 -3.1168,7.30099 -3.375,10.9375 -0.269,2.14546 2.4786,4.62622 2.375,5.40625 -4.6874,3.05826 -1.0282,10.15238 -2.1874,14.71875 -1e-4,11.23958 0,22.47917 0,33.71875 5.233,0.79049 14.5259,1.79728 15.2812,-5.5625 -1.1982,-14.5222 -0.2722,-29.30245 -0.5625,-43.9375 -4.3515,2.21282 0.6447,-1.60815 0.2187,-3.625 1.2052,-4.24557 -0.01,-13.02816 -6.1874,-11.375 -1.8549,-0.0191 -3.7032,-0.45858 -5.5626,-0.28125 z"
-           id="path5333"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1940,423.65625 c -13.684,-0.56449 -24.7096,12.81508 -23.4375,26.09375 -0.3669,12.68711 9.8595,25.32481 23.125,24.8125 6.1444,0.2856 12.2395,-1.27799 17.5937,-4.25 -1.6311,-4.25288 2.3292,-10.78889 -2.5937,-13.375 -4.4007,0.33975 -7.6278,4.69791 -12.4375,3.96875 -6.2625,0.72944 -11.0729,-4.87459 -10.625,-10.90625 -0.7735,-6.37661 3.8074,-14.16976 11.0312,-12.65625 5.4179,0.36565 10.286,3.58838 14.9688,6.21875 -2.3859,-5.56455 2.6078,-14.01117 -3.8125,-17.5625 -4.4607,-1.563 -9.0488,-2.62566 -13.8125,-2.34375 z"
-           id="path5335"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 1972.6562,408.78125 c -3.8661,0.41746 -11.3757,-2.40211 -12.125,3.53125 0,20.34375 0,40.6875 0,61.03125 5.2665,0.79002 14.6202,1.79671 15.3126,-5.625 0.275,-2.98545 -1.6709,-7.33434 -0.5938,-9.34375 5.5685,4.94287 9.5547,11.9966 16.5938,14.96875 4.0967,0.43708 8.4486,0.96584 12.5312,0 4.6131,-3.45543 -1.669,-8.14071 -4.5,-10.28125 -5.25,-5.0625 -10.5,-10.125 -15.75,-15.1875 9.0215,-7.94719 18.0328,-15.9059 27.0625,-23.84375 -8.2987,2.50051 -18.7384,-2.79606 -25.5313,4 -3.4417,3.19207 -6.8359,6.45614 -10.375,9.53125 1e-4,-9.88542 0,-19.77083 0,-29.65625 -0.8749,0.29167 -1.75,0.58333 -2.625,0.875 z"
-           id="path5337"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2035.7188,412.5 c -2.8821,0.91159 -8.919,-0.80633 -7.9688,4.34375 2.2098,3.83789 0.012,7.50539 -3.2188,9.78125 -3.37,4.09886 -1.6015,10.36424 3.3126,12.1875 1.8875,2.54307 -0.8292,6.17798 0.1689,9.24983 -0.6331,8.46243 -1.1058,20.85515 8.6748,24.18767 6.2448,2.19503 13.0186,0.87223 19.5,1.3125 1.6259,-5.15855 1.2418,-13.67198 -5.75,-14.125 -2.4185,-0.90163 -7.4186,2.62814 -7.9063,-1.1875 0.486,-6.76015 -0.3171,-14.26246 0.375,-20.625 4.4549,0.38271 13.6804,2.2372 13.9063,-4.71875 0.029,-3.3191 -0.019,-8.05407 -4.4687,-8.4375 -2.9949,-0.86853 -7.7347,1.38146 -9.625,-0.1875 0.6716,-5.03905 0.1171,-12.88975 -7,-11.78125 z"
-           id="path5339"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2076.0625,423.65625 c -13.4179,-0.44533 -22.8721,13.41326 -21.7187,25.96875 -0.6029,12.1287 8.4105,25.04514 21.2812,25 12.8172,1.43817 24.3834,-9.7528 24.3125,-22.4375 1.4348,-11.88617 -4.8013,-26.19208 -17.75,-28.125 -2.0191,-0.36152 -4.0705,-0.52333 -6.125,-0.40625 z m 0.875,13.65625 c 7.7177,0.0857 8.9683,10.47056 7.5,16.25 0.2999,6.87772 -10.7356,10.65664 -13.3125,3.3125 -2.8814,-5.98875 -2.6855,-15.73981 3.8125,-19.21875 0.6101,-0.17433 1.2916,-0.32123 2,-0.34375 z"
-           id="path5341"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2149.25,423.65625 c -3.2519,-0.25139 -6.6308,1.71708 -9.2812,2.28125 -4.2349,-3.45275 -14.5514,-2.37745 -13.7813,4.59375 1.1018,19.20759 0.1503,38.93779 0.4687,58.34375 5.2665,0.79002 14.6202,1.79671 15.3126,-5.625 -0.2903,-3.51808 -0.5247,-7.32249 -0.6563,-10.65625 11.2777,5.96298 26.4588,-1.62179 28.6875,-14.125 3.8545,-12.63744 -0.4201,-30.08991 -14.25,-34.15625 -2.108,-0.57054 -4.3177,-0.75438 -6.5,-0.65625 z m -0.8125,13.59375 c 7.2275,-0.20353 8.6765,9.47383 7.6563,15.03125 0.8562,6.21347 -8.0184,12.33546 -12.2188,6.15625 -4.1787,-4.56752 -3.708,-21.04777 4.5625,-21.1875 z"
-           id="path5343"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2186.4688,408.78125 c -3.822,0.40407 -11.3894,-2.39307 -12.0938,3.53125 0,20.34375 0,40.6875 0,61.03125 5.233,0.79049 14.5259,1.79728 15.2812,-5.5625 -1.2696,-19.82462 -0.2199,-39.93476 -0.5624,-59.875 -0.8751,0.29167 -1.75,0.58333 -2.625,0.875 z"
-           id="path5345"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2211.6562,423.6875 c -5.6794,0.24438 -11.1235,1.97048 -16.3437,4.125 1.6685,4.29462 -2.3918,11.02351 2.5937,13.59375 4.2021,-0.17458 7.7272,-4.03981 12.125,-4 3.2072,-0.50721 7.104,-0.2104 9.4376,2.40625 -10.1374,-1.29436 -23.6958,1.57837 -26.4376,12.96875 -3.5617,11.14891 6.5361,23.57774 18.25,21.78125 3.6398,0.3079 7.4989,-1.67925 10.4688,-2.4375 4.117,3.61437 14.6504,2.48074 13.8438,-4.5 -2.2773,-12.19375 3.1034,-26.7357 -5.3438,-37.53125 -4.5508,-5.24795 -11.9086,-6.85345 -18.5938,-6.40625 z m 7.8126,28.96875 c 2.3225,0.10032 -0.4309,3.83967 -0.7813,5.03125 -2.3961,4.03766 -11.3598,5.10777 -11.5,-0.875 1.0336,-5.59954 8.595,-2.95023 12.2813,-4.15625 z"
-           id="path5347"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2248.0312,424.71875 c -3.8778,0.72153 -11.1942,-2.55169 -12.5624,2.875 5.4929,13.74513 11.3901,27.54655 16.9374,41.34375 -0.7946,3.91723 -3.3623,8.48311 -7.9687,6.25 -8.119,0.66587 -6.0834,16.8308 2.25,14.125 8.3276,0.95007 16.4322,-4.78109 18.3805,-13.00808 7.0963,-17.32633 13.9711,-34.74236 21.0258,-52.08567 -5.7531,1.83404 -14.7194,-2.67506 -17.9376,4.3125 -1.9085,7.2928 -5.4607,14.18688 -8.0624,21.3125 -3.4237,-8.57429 -6.8762,-17.1371 -10.2813,-25.71875 l -0.9487,0.31623 -0.8326,0.27752 z"
-           id="path5349"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2325.625,423.6875 c -5.6838,0.2527 -11.1387,1.97269 -16.375,4.09375 1.6581,4.34833 -2.3918,11.05249 2.625,13.6875 4.5661,-0.54365 8.5289,-4.5263 13.4688,-4.1875 2.498,-0.53979 7.2303,0.73517 7.6874,2.53125 -10.1634,-1.35653 -23.8512,1.92457 -26.125,13.46875 -3.3313,11.00431 6.8645,23.00525 18.3126,21.28125 3.6288,0.2969 7.4981,-1.66272 10.4687,-2.4375 4.117,3.61437 14.6504,2.48074 13.8437,-4.5 -2.259,-12.18926 3.1112,-26.7407 -5.3437,-37.53125 -4.5574,-5.28276 -11.8537,-6.83422 -18.5625,-6.40625 z m 7.4375,28.96875 c 2.8065,-0.35002 0.1199,3.36241 -0.1875,4.65625 -2.21,4.3489 -11.5713,5.64698 -11.7188,-0.5 0.9703,-5.52177 8.3055,-2.94059 11.9063,-4.15625 z"
-           id="path5351"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2371.6562,423.65625 c -13.4118,0.21309 -21.1815,15.1332 -19.625,27.28125 -0.2158,12.46317 11.1317,25.25783 24.2188,22.34375 1.7873,-0.0191 6.1615,-2.25947 2.75,0.4375 -7.5572,4.9952 -16.6078,-0.82754 -23.0625,-4.96875 3.4223,5.49411 -2.1386,13.26107 3.1875,17.6875 11.1844,4.4732 27.7469,4.44154 34.4062,-7.4375 6.0819,-14.34537 1.6546,-30.37203 3.1563,-45.46875 1.1564,-4.44088 -1.4802,-10.78913 -6.9375,-9.25 -2.3052,0.0412 -5.4017,-0.75841 -6.7188,1.96875 -3.3413,-2.05793 -7.4346,-2.78271 -11.375,-2.59375 z m 2.4376,13.59375 c 7.7523,-0.20848 8.7542,10.15363 7.375,15.84375 0.151,6.92404 -11.0692,9.80496 -13.1876,2.5 -2.4529,-5.50623 -2.2849,-14.5308 3.4376,-17.875 0.7806,-0.32781 1.5368,-0.46151 2.375,-0.46875 z"
-           id="path5353"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2418.9688,423.6875 c -5.681,0.23965 -11.1229,1.97048 -16.3438,4.125 1.6751,4.28339 -2.3973,11.07629 2.5938,13.625 4.1555,-0.20491 7.5096,-4.00179 11.9687,-4 3.0712,-0.71331 8.1168,0.0618 9.5,2.46875 -10.2304,-1.66007 -24.5009,1.91183 -26.5,13.6875 -2.9268,10.7358 6.6287,22.40472 17.875,21 3.8601,0.56178 8.0451,-2.10905 11.1563,-2.3125 4.2373,3.52804 14.7952,2.073 13.625,-4.90625 -2.1818,-12.11691 3.0794,-26.36921 -5.1563,-37.09375 -4.5254,-5.43654 -11.9398,-7.02446 -18.7187,-6.59375 z m 7.4687,28.90625 c 2.8718,-0.1966 -0.038,3.72208 -0.4063,5.03125 -2.2724,4.29834 -11.9364,5.09641 -11.5,-1.15625 1.3413,-5.09432 8.1968,-2.54095 11.9063,-3.875 z"
-           id="path5355"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2451.5,408.5625 c -5.0642,0.78981 -3.08,7.32017 -3.375,10.9375 -0.269,2.14546 2.4786,4.62622 2.375,5.40625 -4.6875,3.05826 -1.0282,10.15238 -2.1875,14.71875 0,11.23958 0,22.47917 0,33.71875 5.233,0.79049 14.5259,1.79728 15.2813,-5.5625 -1.1983,-14.5222 -0.2723,-29.30245 -0.5626,-43.9375 -4.3514,2.21282 0.6447,-1.60815 0.2188,-3.625 1.2051,-4.24557 -0.01,-13.02816 -6.1875,-11.375 -1.8549,-0.0191 -3.7032,-0.45858 -5.5625,-0.28125 z"
-           id="path5357"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7"
-           d="m 2491.5938,423.65625 c -3.2959,-0.38014 -6.7619,2.13855 -9.4063,2.375 -4.2054,-3.81292 -14.9669,-2.28716 -13.8437,4.75 1.0576,14.02576 0.1194,28.40545 0.4374,42.5625 5.2665,0.79002 14.6202,1.79671 15.3126,-5.625 -0.2521,-7.90088 -1.3807,-16.03886 -0.25,-23.96875 0.071,-6.08476 9.7821,-9.04621 12.125,-3.09375 0.7958,10.86097 0.1149,21.79699 0.3437,32.6875 5.233,0.79049 14.5259,1.79728 15.2813,-5.5625 -2.359,-11.84379 2.4804,-24.96751 -3.625,-36.0625 -3.0558,-5.99257 -9.9731,-8.48204 -16.375,-8.0625 z"
-           id="path5359"
-           inkscape:connector-curvature="0" />
-      </g>
-      <text
-         inkscape:export-ydpi="192.10005"
-         inkscape:export-xdpi="192.10005"
-         inkscape:export-filename="/home/xymus/projects/mnit/tests/dino/assets/images/play_again.png"
-         sodipodi:linespacing="125%"
-         id="text2997"
-         y="469.51871"
-         x="1822.7584"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="469.51871"
-           x="1822.7584"
-           id="tspan2999"
-           sodipodi:role="line">Click to play again</tspan></text>
-    </g>
-    <g
-       id="0blood"
-       inkscape:label="#g3847">
-      <path
-         sodipodi:nodetypes="sssssssss"
-         inkscape:connector-curvature="0"
-         id="path3076"
-         d="m 1246.9418,671.36422 c 0,1.02197 -2.3629,0.63873 -5.985,0.22756 -2.339,-0.26552 0.7926,2.28344 -1.4791,2.62 -1.812,0.26843 -1.0075,-2.60198 -9.2162,-2.22177 -2.8285,0.13101 -7.9193,0.2824 -7.9193,-1.47914 0,-1.02198 6.4486,-1.31449 7.5675,-1.69977 2.2258,-0.7664 2.7877,-2.32871 5.0063,-2.0511 3.3137,0.41465 1.3705,2.04114 8.1457,1.8735 2.2586,-0.0559 3.8801,1.70874 3.8801,2.73072 z"
-         style="fill:#d90000;fill-opacity:1;stroke:none" />
-    </g>
-    <g
-       id="g4434"
-       transform="translate(21.428571,-54.285714)">
-      <path
-         sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 1593.2094,687.52908 c -2.0468,0.15708 -4.163,1.77167 -4.1227,3.97629 -0.5519,0.98355 -2.0631,0.51153 -2.9046,1.13609 -1.1225,0.75007 -2.0493,1.87018 -3.4668,2.07305 -3.9726,0.8243 -8.1635,-1.11773 -12.0695,0.35723 -3.9418,1.51436 -6.4522,5.29783 -8.3215,8.91884 -1.2598,2.69495 -1.5933,5.99638 -0.5563,8.79586 1.0138,1.25091 0.1776,2.8291 -0.6325,3.9353 -1.1273,1.48888 -1.1946,4.01399 0.6032,5.01867 1.7346,1.18945 3.9736,1.18951 5.9498,1.63971 7.8732,0.77315 30.4383,0.55907 40.4828,-5.19452 2.8186,-2.30891 5.3649,-5.0314 7.326,-8.08142 0.8678,-2.69817 4.0347,-3.27133 6.1196,-4.69074 0.9328,-0.51141 0.3279,-1.75385 -0.4685,-2.03206 -0.6614,-0.44169 -1.6519,-0.59986 -2.1433,-1.13023 1.2455,-0.88616 3.1681,-1.52109 3.5254,-3.19743 -0.075,-1.32516 -1.8114,-1.38869 -2.8109,-1.42889 -1.0149,-1.5e-4 -2.0848,0.18613 -3.0335,-0.18154 -0.5965,-0.80031 0.2886,-1.84941 0.5856,-2.61182 0.6853,-1.24936 1.2835,-2.50616 2.3015,-3.50785 0.5951,-0.49915 0.533,-1.75886 -0.451,-1.57529 -1.8906,0.40409 -3.1864,2.03487 -4.9718,2.72309 -1.8938,1.03052 -4.2769,1.36986 -6.184,0.19325 -1.4512,0.81187 -3.0919,-0.037 -4.1169,-1.13608 -1.0455,-1.18289 -2.5914,-1.41548 -3.9177,-2.17262 -1.1833,-0.65797 -2.7274,-0.74725 -3.8943,-0.26352 -0.4559,-1.11752 -1.6669,-1.67428 -2.8285,-1.56358 z m -0.047,1.01896 c 0.6587,-0.0364 2.023,0.24125 1.751,1.14194 -0.127,0.36886 -0.583,0.81579 -0.8023,0.2401 -0.4612,-0.60731 -1.1472,-1.00378 -1.8739,-1.2005 0.2954,-0.12418 0.5967,-0.15513 0.9252,-0.18154 z m 5.2822,1.58115 c 1.3469,-0.0668 1.4669,1.8358 2.6412,2.03792 0.5213,0.11544 0.6715,-0.91449 1.1068,-0.29866 1.0063,0.65398 1.9972,1.33281 2.7757,2.26631 0.8614,0.0329 1.9421,-0.40039 2.6938,0.006 0.2169,0.205 -0.7752,-0.0245 -1.0189,0.0761 -0.705,-0.12354 -0.9434,0.86344 -0.1933,0.93698 0.8078,0.22394 1.8793,0.4577 2.5533,-0.19326 0.2142,-0.59347 -0.7378,-0.67846 -0.8374,-0.74372 0.399,-0.6477 0.7623,0.75014 1.1478,-0.0293 0.5079,0.11506 1.4164,0.43732 1.628,0.67931 -0.6014,-0.18283 -1.2669,0.61036 -0.5271,0.91355 0.5239,0.24052 1.2657,0.38944 1.628,-0.16397 3.1221,2.52865 4.9087,6.81927 3.9624,10.77821 -0.957,2.34263 -2.3044,4.52561 -3.9331,6.468 -0.3577,-0.74468 -0.7891,-2.06526 -1.7978,-1.94422 -0.698,0.58171 0.2238,1.4937 0.568,2.02621 0.8515,0.56762 0.2626,1.11718 -0.3279,1.61628 -1.3076,1.28274 -6.5265,3.72499 -8.1728,4.53382 -1.3752,0.0193 7.7168,-2.1945 0.092,-0.60433 -0.6411,0.63597 -1.5399,1.29881 -2.4361,0.79643 -0.6813,-0.18224 -1.1807,-0.88938 -1.9267,-0.76715 -0.3569,0.44314 0.6581,0.94163 0.1465,1.0541 -0.373,0.0726 -0.8548,0.53873 -0.8902,-0.0586 -0.2878,-0.64347 -1.2488,-0.37324 -1.1536,0.34551 0.828,0.35039 -0.043,0.45706 -0.4802,0.61489 -2.0672,0.69881 -4.2954,0.55668 -6.3832,1.18294 -5.3455,1.02602 -10.8435,1.27802 -16.2741,1.14779 -2.0669,-0.64516 -4.4774,-0.0308 -6.2836,-1.4231 -0.1994,0.90315 -1.2766,-0.0481 -1.7861,-0.15811 -0.5049,-0.38436 -1.0392,-0.38556 -1.5226,-0.041 -1.2607,0.13311 -1.6672,-1.56127 -1.6162,-2.5474 -0.1136,-1.10141 0.9882,-1.92633 2.0027,-1.45817 4.3478,-0.38151 8.7239,0.0692 12.9584,0.98143 4.123,0.4837 8.3495,0.083 12.2398,-1.35839 5.2148,-1.50053 10.5929,-2.48102 15.7653,-4.07953 0.9212,-0.39801 -0.085,-1.28886 -0.4488,-1.75365 -1.3034,-1.67026 -3.0083,-3.04805 -4.0546,-4.91645 -0.4807,2.02802 -0.9066,4.06481 -1.7685,5.96151 -2.025,-2.09819 -2.7105,-5.08846 -4.275,-7.47824 -0.608,-0.62303 -1.1912,0.32931 -1.0716,0.92527 0,2.75544 0.5094,5.69405 -0.9487,8.20439 -0.5342,1.06066 -1.6436,1.92886 -2.8812,1.74512 -0.7994,-0.85779 -1.4478,-1.88227 -2.0555,-2.89877 -0.4447,0.48627 -0.5892,1.49492 -1.0951,1.79197 -0.8137,-0.76745 -1.3357,-1.78061 -2.0614,-2.62939 -0.7931,1.48965 -0.6748,3.24445 -1.3937,4.74929 -1.389,-2.97546 -0.815,-6.54348 -2.4654,-9.44588 -1.8843,2.94991 -2.5289,6.6047 -4.4917,9.44003 -2.7118,-0.61582 -5.8241,0.54572 -8.2746,-1.01896 -1.2249,-0.97646 -0.9401,-2.7379 -1.8447,-3.94116 -0.2345,-1.13869 -0.7026,-0.71181 -1.1302,0.0293 -0.4447,0.58719 -0.8732,1.58564 -1.2884,1.92666 -1.9911,-4.59036 -0.022,-9.9469 3.2995,-13.36988 1.6229,-1.82304 3.4068,-4.03451 6.0586,-4.134 3.5973,-0.4321 7.1795,0.50999 10.7811,0.34551 2.5736,-2.15928 5.9884,-2.83315 9.1478,-3.68672 0.403,0.0281 1.7577,-0.66549 1.3931,-0.0261 -1.1357,2.14723 0.5956,5.30139 3.1565,4.94255 1.9386,-0.26287 4.0744,-1.93093 3.8943,-4.05242 -0.395,-1.67712 -2.5067,-1.59375 -3.7069,-2.43028 -0.3709,-0.16593 -1.0664,-0.61364 -0.2987,-0.67931 0.4823,-0.11387 0.9825,-0.14395 1.4758,-0.19325 z m 18.6049,2.04963 c -0.2874,1.65831 -1.3249,3.08721 -2.1902,4.49163 -0.6473,-0.58012 -1.9517,-1.3431 -1.5343,-2.36586 0.7369,-0.8533 2.0015,-0.86018 2.7758,-1.66899 0.2969,-0.18521 0.5979,-0.39487 0.9487,-0.45678 z m -13.3754,1.90324 c -0.7243,-0.13689 -1.3235,0.90276 -0.4626,1.15365 0.7797,0.23682 1.6147,0.10511 2.4186,0.23424 -0.2665,-0.88832 -0.9974,-1.51861 -1.956,-1.38789 z m -29.1575,2.05549 c -1.106,0.0244 -2.9506,0.52135 -2.6762,1.96765 0.2725,0.9332 1.5467,-0.29147 2.1843,-0.38651 0.7593,-0.23601 2.0398,-0.0745 2.3249,-0.98382 -0.1279,-0.75528 -1.2927,-0.57454 -1.833,-0.59732 z m 9.1707,1.07752 c -1.5602,0.19335 -2.839,1.28017 -3.7948,2.47713 1.4726,-0.50231 3.1839,-0.75585 4.3862,-1.79197 0.2524,-0.4151 -0.1875,-0.77433 -0.5914,-0.68516 z m -13.6564,0.35136 c -1.3622,0.53372 -1.9479,2.09366 -2.4772,3.34384 0.9894,0.23695 1.708,-0.48617 2.1726,-1.23564 0.3812,-0.47067 1.6194,-1.98619 0.3046,-2.1082 z m 46.837,0.77301 c 0.7248,0.11881 1.4675,0.15737 2.1317,0.48606 0.5054,0.0562 1.4994,-0.17506 1.7744,0.27523 -0.7893,1.14746 -2.2335,1.9265 -3.3732,2.60011 -0.6528,-0.85071 -1.4915,-2.11197 -0.9194,-3.17986 0.1032,-0.10343 0.2433,-0.16009 0.3865,-0.18154 z m -37.7659,2.10234 c -1.0042,0.41987 -1.5875,1.46665 -2.2137,2.30145 0.8472,1.02711 1.7342,-0.32489 2.3425,-0.92527 0.3932,-0.37299 0.8084,-1.43706 -0.1288,-1.37618 z m -12.1339,1.15951 c -1.3007,0.45749 -1.4071,2.2395 -2.0438,3.19157 -2.367,0.50266 -3.1074,4.29427 -1.0423,5.616 2.5616,0.23293 4.2747,-3.44227 2.5942,-5.29977 -0.4044,-0.22815 -0.8677,-0.37271 -1.3352,-0.33965 1.0941,-0.51022 2.6077,-1.37353 2.4303,-2.79336 -0.1017,-0.23193 -0.3311,-0.41455 -0.6032,-0.37479 z m 42.9486,1.44645 c -0.902,0.27258 -0.081,1.22401 0.3983,1.49331 0.506,0.29159 1.2591,1.36211 1.5108,0.35136 0.2249,-1.02937 -1.0372,-1.78352 -1.9091,-1.84467 z m 7.5954,0.22254 c 0.7897,0.15682 2.2427,0.19626 2.3659,1.22978 -0.3302,0.96802 -1.6256,1.49476 -2.4947,1.63385 -0.14,-0.94397 -0.09,-1.96932 0.1288,-2.86363 z m -40.9575,0.38064 c -1.0967,0.45804 -1.2494,1.87892 -1.6456,2.85192 0.831,-0.61572 2.5866,-1.30286 2.2487,-2.61182 -0.1084,-0.20659 -0.383,-0.30498 -0.6031,-0.2401 z m 36.4834,2.14919 c -0.8468,0.37145 0.047,1.30346 0.4041,1.70412 0.3649,0.54454 0.9739,0.99581 1.2591,0.20497 0.2857,-0.88196 -0.8341,-1.92788 -1.6632,-1.90909 z m -37.4673,1.13608 c -1.8892,0.33215 -3.7264,2.50909 -2.9924,4.45064 0.5956,1.3194 2.555,0.79701 3.3028,-0.14055 0.9888,-0.9866 1.6014,-2.87566 0.609,-4.03485 -0.2485,-0.2183 -0.5928,-0.30653 -0.9194,-0.27524 z m 31.6581,0.0703 c -0.8773,0.39491 0.1327,1.28573 0.5352,1.63288 0.4494,0.45335 1.1792,1.24989 1.6725,0.45189 0.2466,-1.00541 -1.0071,-1.5978 -1.7334,-1.99692 -0.1508,-0.0601 -0.3101,-0.11285 -0.4743,-0.0878 z m -12.655,0.73202 c 0.6942,1.29211 1.2467,2.65611 2.2546,3.73619 0.6752,0.84705 0.4595,2.25146 -0.6852,2.52398 -0.6624,0.16645 -1.6146,0.47444 -2.2429,0.12297 -0.3116,-2.04908 1.2042,-4.00932 0.6354,-6.09562 0.011,-0.0889 -0.087,-0.57217 0.038,-0.28752 z m -14.5114,2.95733 c 0.6452,2.03508 1.1381,4.15417 1.3,6.30702 -1.2767,0.24151 -2.7826,0.0701 -3.9411,-0.21668 0.3063,-2.27244 1.816,-4.14686 2.5825,-6.26602 z m -14.939,2.02621 c 0.3574,0.90311 1.0111,2.21155 0.2636,3.07445 -0.5613,0.31765 -1.4722,0.24165 -1.9618,-0.082 0.068,-1.13588 1.0643,-2.13161 1.6982,-2.99247 z m 19.7351,1.84467 c 0.6251,0.23791 1.2405,1.46606 0.5446,1.93837 -0.2971,0.0127 -0.8878,0.28368 -1.0365,0.13469 0.1498,-0.6633 0,-1.62887 0.4919,-2.07306 z m 2.4303,0.69102 c 0.322,-0.0516 1.328,0.47475 0.7906,0.73787 -0.6452,0.39988 -0.9053,-0.28906 -0.7906,-0.73787 z m 10.254,0.25181 c -0.8222,0.10065 0.075,1.27755 0.6266,1.2942 0.7908,0.0115 0.457,-0.98579 -0.1054,-1.12437 -0.15,-0.10587 -0.3319,-0.20755 -0.5212,-0.16983 z m -1.3235,1.61043 c -0.6361,0.8284 1.6317,1.43797 1.2357,0.31037 -0.2762,-0.28482 -0.8982,-0.57602 -1.2357,-0.31037 z m 2.6001,0.19911 c -0.4577,0.70949 0.7823,0.91925 0.814,1.56358 0.3916,0.57394 1.2166,0.0493 0.7379,-0.5212 -0.2054,-0.58148 -0.7676,-1.15827 -1.4464,-1.15365 z m -34.791,0.4802 c -0.8132,0.55134 -0.2899,1.82706 -0.2987,2.63963 -0.07,0.89602 0.9752,-0.16672 1.0834,-0.65441 0.1601,-0.61836 0.1194,-2.05819 -0.7847,-1.98522 z m 30.885,0.37479 c -0.8354,0.52338 0.8086,1.56342 0.7613,0.45677 -0.1293,-0.2907 -0.4249,-0.63365 -0.7613,-0.45677 z m -28.2908,0.11712 c -0.8356,0.5257 -0.2052,1.80292 -0.2326,2.58525 -0.04,0.90606 0.8122,-0.35862 0.9353,-0.79328 0.1723,-0.57492 0.1391,-1.86983 -0.7027,-1.79197 z m 2.8402,0.71444 c -0.3539,0.87141 -0.6051,2.12102 -0.035,2.95733 0.9528,0.26878 0.6987,-1.14651 0.7671,-1.72754 2e-4,-0.46004 0.079,-1.7273 -0.732,-1.22979 z"
-         id="path3056-5-4"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         d="m 1593.8347,691.0284 c 0,1.01857 -0.6748,0.66791 -2.1313,1.04437 -1.0213,0.264 -2.1178,0.57394 -1.8934,-1.03278 0.1767,-1.26437 0.8891,-2.12021 2.3054,-1.71438 0.6332,0.18144 1.7193,0.68423 1.7193,1.70279 z"
-         id="path3869-9-2"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="sssss" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3914-1-5"
-         d="m 1600.2922,694.15317 c -0.405,1.49052 -2.8379,2.84356 -3.5516,2.78538 -1.4917,-0.12161 -2.4986,-1.30002 -2.4986,-2.90369 0,-1.60367 1.4805,-2.74306 2.191,-2.57242 1.7741,0.42608 4.1664,1.56036 3.8592,2.69073 z"
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         sodipodi:nodetypes="sssss" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 1598.0139,694.57909 c 0,0.7673 -0.6442,1.38931 -1.4389,1.38931 -0.7947,0 -1.4389,-0.62201 -1.4389,-1.38931 0,-0.76729 0.6442,-1.38931 1.4389,-1.38931 0.7947,0 1.4389,0.62202 1.4389,1.38931 z"
-         id="path3874-4-8"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3876-5-2"
-         d="m 1592.8068,691.64793 c 0,0.71185 -0.5308,0.25155 -1.3015,0.48579 -0.3527,0.1072 -0.7359,0.65886 -0.9774,0.42561 -0.2416,-0.23325 -0.391,-0.55548 -0.391,-0.9114 0,-0.71186 0.5976,-1.28892 1.3349,-1.28892 0.7373,0 1.335,0.57706 1.335,1.28892 z"
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         sodipodi:nodetypes="ssssss" />
-      <path
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         d="m 1604.0708,711.86296 c 0,0.33266 -2.2029,0.69045 -2.7607,0.88678 -1.9969,0.70273 -1.9996,-0.25216 -1.6565,-1.03737 0.5165,-1.18206 0.5548,-2.56061 0.9537,-3.53039 0.4658,0.70339 3.4635,3.34831 3.4635,3.68098 z"
-         id="path3878-6-0"
-         inkscape:connector-curvature="0"
-         sodipodi:nodetypes="ssscs" />
-      <path
-         style="fill:#d3bc5f;fill-opacity:1;stroke:none"
-         d="m 1594.3026,690.56575 c -0.1347,-0.0433 -0.2358,-0.13049 -0.4606,-0.39724 -0.1275,-0.15125 -0.3117,-0.34324 -0.4093,-0.42664 -0.4576,-0.39103 -1.0374,-0.63589 -1.866,-0.78813 -0.1361,-0.025 -0.252,-0.0499 -0.2575,-0.0554 -0.023,-0.0229 0.3066,-0.25677 0.5145,-0.36517 0.5312,-0.27708 1.0948,-0.38699 1.7102,-0.33355 0.814,0.0707 1.4763,0.40969 1.7037,0.87211 0.07,0.14187 0.076,0.17412 0.076,0.38194 0,0.21923 0,0.23389 -0.1,0.42864 -0.1188,0.23964 -0.4187,0.59779 -0.5446,0.65041 -0.105,0.0439 -0.2831,0.0599 -0.3667,0.033 z"
-         id="path3936-8-4"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1614.0561,696.35701 c -1.5212,-1.36771 -1.4173,-2.395 0.3088,-3.05422 0.3347,-0.12782 1.0105,-0.50194 1.5018,-0.83138 1.6321,-1.09448 1.8565,-0.54937 0.7231,1.75673 -0.7056,1.43564 -1.4519,2.62952 -1.6915,2.70606 -0.081,0.026 -0.4602,-0.23379 -0.8422,-0.57719 z"
-         id="path3948-3-8"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1616.8196,701.35585 c -0.8269,-1.26054 -1.03,-2.51721 -0.4934,-3.05373 0.2409,-0.24094 0.3736,-0.26432 1.0373,-0.18286 0.4186,0.0514 0.9117,0.15017 1.0958,0.21953 0.184,0.0694 0.7534,0.15337 1.2653,0.18667 0.6027,0.0392 1.0158,0.13763 1.1723,0.27929 0.2234,0.20214 0.2256,0.24332 0.029,0.5428 -0.1168,0.17824 -0.4034,0.50098 -0.637,0.7172 -0.4871,0.45101 -2.7285,1.99383 -2.8966,1.99383 -0.062,0 -0.3195,-0.31623 -0.5731,-0.70273 z"
-         id="path3950-9-7"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1617.0478,705.88012 c -0.088,-0.58882 0,-1.89661 0.1663,-2.59822 0.072,-0.29521 0.1206,-0.3102 0.7412,-0.22788 1.2947,0.17175 2.2441,0.77557 2.2441,1.42732 0,0.59987 -1.5208,1.72019 -2.6332,1.93987 -0.4193,0.0828 -0.4259,0.0759 -0.5184,-0.54109 z"
-         id="path3952-4-5"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#e9c6af;fill-opacity:1;stroke:none"
-         d="m 1599.6453,712.5736 c -0.045,-0.13014 0.024,-0.54049 0.1529,-0.91189 0.1292,-0.3714 0.3389,-1.18065 0.4659,-1.79833 0.127,-0.61768 0.2692,-1.18715 0.316,-1.2655 0.077,-0.1284 3.1091,2.92618 3.2403,3.26405 0.063,0.16343 -2.9398,0.94829 -3.6287,0.94829 -0.2554,0 -0.5013,-0.10648 -0.5464,-0.23662 z"
-         id="path4008-6-6"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#e9c6af;fill-opacity:1;stroke:none"
-         d="m 1593.7645,714.38771 c -0.2382,-0.23822 -0.1232,-1.67368 0.2629,-3.28116 0.2897,-1.20605 0.355,-1.90534 0.2606,-2.79215 -0.08,-0.75005 -0.056,-1.18311 0.064,-1.18311 0.1047,0 0.5528,0.6969 0.996,1.54867 0.4431,0.85176 1.0915,1.92309 1.4408,2.38072 1.1137,1.45905 0.7472,2.79746 -0.895,3.26845 -0.7386,0.21181 -1.9432,0.24495 -2.1296,0.0586 z"
-         id="path4010-7-4"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#e9c6af;fill-opacity:1;stroke:none"
-         d="m 1577.8571,717.21415 -0.732,-0.0756 0.1239,-0.77493 c 0.068,-0.42621 0.6744,-1.95329 1.3472,-3.3935 0.6729,-1.44022 1.2234,-2.7213 1.2234,-2.84684 0,-0.56158 0.445,0.28072 0.7854,1.48659 0.8081,2.86251 1.1683,5.49033 0.7734,5.64188 -0.2831,0.10865 -2.3147,0.0869 -3.5213,-0.0376 l 0,0 z"
-         id="path4012-6-4"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#e9c6af;fill-opacity:1;stroke:none"
-         d="m 1584.1734,716.25441 c 0,-0.94086 0.342,-1.9298 0.6673,-1.9298 0.4234,0 1.0364,0.96011 1.0364,1.62338 0,0.71434 -0.03,0.74193 -0.9938,0.91585 l -0.7099,0.12809 0,-0.73752 z"
-         id="path4014-4-3"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#e9c6af;fill-opacity:1;stroke:none"
-         d="m 1587.1085,715.84361 c -0.068,-0.3098 -0.075,-0.64254 -0.015,-0.73942 0.1572,-0.25438 0.7857,-0.0459 1.1821,0.39217 0.329,0.3635 0.3282,0.38625 -0.024,0.64367 -0.5947,0.43488 -1.0062,0.3282 -1.1434,-0.29642 z"
-         id="path4016-8-6"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-         d="m 1563.3885,715.99043 c -0.3957,-0.39573 -0.253,-0.83824 0.7576,-2.34928 l 0.9848,-1.47236 0.3329,0.74664 c 0.5285,1.18567 0.6327,2.27606 0.2703,2.82925 -0.2589,0.3951 -0.4587,0.4729 -1.2142,0.4729 -0.4973,0 -1.0065,-0.10222 -1.1314,-0.22715 z"
-         id="path4018-5-7"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-         d="m 1599.9036,711.89321 c 0.097,-0.48697 0.3017,-1.34806 0.454,-1.91355 l 0.2768,-1.02814 0.7233,0.60324 c 0.3978,0.33178 1.0609,0.99236 1.4735,1.46795 l 0.7503,0.86471 -1.018,0.25981 c -0.5599,0.14289 -1.4272,0.34341 -1.9275,0.4456 l -0.9095,0.18578 0.1771,-0.8854 0,0 z"
-         id="path4020-7-8"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-         d="m 1593.8239,714.12421 c -0.068,-0.11043 0.038,-1.22476 0.2354,-2.4763 0.1975,-1.25153 0.3966,-2.67209 0.4425,-3.1568 0.081,-0.85978 0.1144,-0.82932 1.355,1.24711 1.5337,2.56712 1.6498,3.5743 0.4817,4.17833 -0.8288,0.42861 -2.3036,0.55039 -2.5146,0.20766 z"
-         id="path4022-3-4"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-         d="m 1578.0302,717.07571 c -0.6667,-0.0998 -0.7389,-0.19859 -0.587,-0.8036 0.3276,-1.30541 2.3811,-5.93442 2.5785,-5.81245 0.2931,0.18114 1.3119,4.71598 1.3119,5.83934 l 0,0.97077 -1.2716,-0.0401 c -0.6994,-0.0221 -1.6137,-0.0913 -2.0318,-0.15395 z"
-         id="path4024-7-4"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-         d="m 1584.3619,715.78792 c 0.1994,-1.22862 0.3266,-1.36481 0.8606,-0.92166 0.6463,0.53639 0.4006,1.71445 -0.3806,1.82488 -0.6008,0.0849 -0.6311,0.0279 -0.48,-0.90322 z"
-         id="path4026-3-3"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-         d="m 1587.2232,715.66352 c 0,-0.29447 0.1057,-0.53541 0.2349,-0.53541 0.3511,0 0.8578,0.69202 0.6551,0.89468 -0.3665,0.3665 -0.89,0.15518 -0.89,-0.35927 z"
-         id="path4028-7-9"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#d3bc5f;fill-opacity:1;stroke:none"
-         d="m 1563.8657,716.0144 c -0.672,-0.17562 -0.5839,-0.69062 0.3886,-2.27111 l 0.857,-1.39286 0.3356,0.7865 c 0.5184,1.21497 0.4477,2.46069 -0.1581,2.78488 -0.5386,0.28825 -0.6473,0.29532 -1.4231,0.0926 z"
-         id="path4030-7-8"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3850-2-4"
-         d="m 1601.7824,719.65247 c 0,-0.13597 -0.2955,-0.17305 -0.6567,-0.0824 -0.3822,0.0959 -1.0148,-0.0138 -1.5135,-0.26261 -1.0633,-0.53043 -1.475,-0.5473 -1.0567,-0.0433 0.2672,0.32194 -0.04,0.49756 -1.899,1.08473 -1.2198,0.38534 -3.0652,0.80963 -4.1009,0.94288 -1.0356,0.13325 -2.7865,0.42307 -3.8908,0.64405 -2.7023,0.54076 -6.0557,0.89149 -10.6299,1.1118 -3.6507,0.17582 -6.048,-0.009 -9.4482,-0.72634 -0.6625,-0.13988 -1.5835,-0.29782 -2.0466,-0.35095 -0.4631,-0.0531 -1.0876,-0.22809 -1.3879,-0.38878 -0.3002,-0.16068 -1.022,-0.29215 -1.6038,-0.29215 -0.9532,0 -1.1036,-0.0962 -1.5193,-0.97226 -0.4805,-1.01247 -0.416,-2.60175 0.1275,-3.14527 0.4956,-0.49566 8.6034,-0.31438 11.6504,0.26049 1.8659,0.35204 3.8534,0.50298 6.5589,0.49815 3.7788,-0.007 4.0023,-0.0399 8.4327,-1.25261 2.5031,-0.68511 6.7797,-1.79983 9.5036,-2.47716 5.9493,-1.47934 6.7447,-1.72361 6.6396,-2.03909 -0.1131,-0.33906 -4.3284,-5.28985 -4.5222,-5.31111 -0.087,-0.01 -0.3112,0.66651 -0.4983,1.50233 -0.187,0.83581 -0.5774,2.07062 -0.8675,2.744 l -0.5274,1.22434 -0.6546,-0.80313 c -0.3601,-0.44171 -1.3442,-2.15785 -2.1869,-3.81364 -0.8426,-1.65579 -1.6827,-3.01106 -1.8667,-3.01171 -0.2481,-9.4e-4 -0.3347,0.78266 -0.3347,3.02886 0,3.87351 -0.4652,5.5606 -1.9143,6.94206 -1.442,1.37477 -2.1496,1.33078 -3.2292,-0.20078 -0.467,-0.66258 -0.949,-1.20469 -1.071,-1.20469 -0.1221,0 -0.3592,0.30117 -0.5269,0.66927 -0.1677,0.3681 -0.3982,0.66927 -0.5123,0.66927 -0.114,0 -0.5465,-0.47909 -0.9609,-1.06465 -0.4145,-0.58556 -0.8741,-1.02817 -1.0213,-0.98357 -0.1472,0.0446 -0.468,0.89871 -0.7129,1.89802 -0.2448,0.9993 -0.5681,1.93984 -0.7183,2.09008 -0.3413,0.34129 -0.9251,-1.63059 -1.5197,-5.13334 -0.2357,-1.3883 -0.5928,-2.83392 -0.7935,-3.21249 l -0.3651,-0.6883 -0.6657,1.47239 c -0.3662,0.80982 -1.0393,2.37591 -1.4957,3.4802 -0.4564,1.10429 -1.0995,2.48189 -1.429,3.06133 l -0.599,1.05353 -3.0787,-0.0647 c -4.8267,-0.10142 -5.9547,-0.61445 -6.6762,-3.03647 -0.188,-0.63115 -0.4931,-1.43828 -0.678,-1.7936 -0.3349,-0.64353 -0.3399,-0.64046 -1.3018,0.78781 l -0.9656,1.43386 -0.4601,-1.05552 c -0.6067,-1.39161 -0.6162,-4.84163 -0.019,-6.81123 0.7018,-2.31391 2.2783,-4.72376 4.7464,-7.25529 3.1379,-3.21859 3.636,-3.35984 10.5744,-2.9985 l 5.0865,0.26488 0.9617,-0.63458 c 1.7924,-1.18267 9.5507,-3.71625 10.001,-3.26595 0.082,0.0823 0.013,0.54172 -0.1543,1.02105 -0.6625,1.90047 0.7554,4.03446 2.68,4.03363 2.0668,-9.3e-4 4.16,-1.89111 3.9921,-3.60501 -0.071,-0.72476 -0.3019,-0.91839 -2.1543,-1.80702 -2.5985,-1.24653 -2.6922,-1.81565 -0.2991,-1.81565 0.7312,0 1.1243,0.21348 1.8483,1.00373 0.787,0.85903 0.9916,0.95872 1.4196,0.69148 0.4253,-0.26561 0.7313,-0.13066 2.0486,0.90321 1.5222,1.19473 1.5857,1.2165 3.7202,1.27644 1.469,0.0412 2.5006,0.22189 3.1889,0.55844 0.9808,0.47958 0.9953,0.50611 0.4016,0.73727 -0.5946,0.23153 -0.5974,0.24693 -0.081,0.44631 0.3002,0.11576 0.6878,0.0847 0.882,-0.0708 0.8592,-0.68748 3.7501,3.31515 4.491,6.21822 0.6166,2.41573 0.4142,4.12949 -0.7674,6.49653 -0.9865,1.97609 -2.7644,4.51128 -3.282,4.67989 -0.1555,0.0506 -0.4848,-0.3318 -0.7318,-0.84988 -0.4432,-0.92939 -0.9933,-1.26308 -0.9933,-0.60255 0,0.18668 0.2998,0.78065 0.6663,1.31993 l 0.6662,0.98051 -1.804,1.64388 c -0.9922,0.90414 -2.2559,1.90637 -2.8082,2.22719 -5.624,1.02748 -1.8392,-0.45754 -5.2863,2.02504 z m -31.8612,0.76674 c 0,-1.00617 -0.078,-1.29138 -0.2636,-1.0039 -0.3424,0.52979 -0.3424,2.40936 0,2.40936 0.1472,0 0.2658,-0.63246 0.2636,-1.40546 z m -2.8294,-0.37235 c 0.2026,-0.52807 -0.048,-1.43468 -0.3971,-1.43468 -0.1373,0 -0.2496,0.42164 -0.2496,0.93698 0,0.97848 0.3568,1.25309 0.6467,0.4977 z m -2.5207,-1.04892 c 0,-0.93692 -0.4261,-1.24991 -0.7065,-0.51901 -0.2148,0.55971 0.1303,1.79634 0.4467,1.60079 0.1429,-0.0883 0.2598,-0.57513 0.2598,-1.08178 z m 32.5265,0.68507 c -0.091,-0.14724 -0.2788,-0.2677 -0.4174,-0.2677 -0.1385,0 -0.2519,0.12046 -0.2519,0.2677 0,0.14724 0.1878,0.26771 0.4174,0.26771 0.2295,0 0.3429,-0.12047 0.2519,-0.26771 z m 2.8232,-1.58331 c -0.2811,-0.52511 -0.8154,-0.77325 -0.8154,-0.37865 0,0.26736 0.8711,1.18011 1.0016,1.04956 0.062,-0.0619 -0.022,-0.36383 -0.1862,-0.67091 z m -2.8232,-0.55835 c -0.091,-0.14724 -0.286,-0.2677 -0.4332,-0.2677 -0.1472,0 -0.1932,0.12046 -0.1022,0.2677 0.091,0.14724 0.2859,0.26771 0.4331,0.26771 0.1472,0 0.1933,-0.12047 0.1023,-0.26771 z m 1.2046,-1.30989 c 0,-0.13149 -0.1807,-0.30841 -0.4015,-0.39316 -0.4081,-0.15659 -0.5483,0.12858 -0.2231,0.45375 0.2558,0.25585 0.6246,0.22007 0.6246,-0.0606 z m -22.5859,-5.268 c 0.7361,-0.78055 0.9016,-1.16765 0.9016,-2.10888 0,-1.49886 -0.4887,-1.94898 -1.6114,-1.48396 -2.4248,1.00441 -3.2203,4.54888 -1.0209,4.54888 0.6038,0 1.074,-0.25972 1.7307,-0.95604 z m -9.9831,-1.46768 c 1.4451,-1.13671 1.46,-4.02315 0.023,-4.3839 -1.9494,-0.48925 -3.6189,2.5617 -2.3743,4.33868 0.5208,0.74357 1.4413,0.76126 2.3516,0.0452 z m 42.9278,-1.47666 c -0.7558,-0.65465 -1.5244,-0.85974 -1.5244,-0.40674 0,0.13415 0.3787,0.56258 0.8416,0.95206 0.6215,0.52296 0.919,0.62932 1.1377,0.40673 0.2175,-0.22128 0.096,-0.47437 -0.4549,-0.95205 z m 5.2841,-1.47369 c -0.2566,-0.28352 -0.5683,-0.51549 -0.6927,-0.51549 -0.417,0 -0.2319,0.62872 0.3761,1.27778 0.5095,0.54388 0.6163,0.57443 0.6927,0.19812 0.05,-0.2447 -0.1195,-0.67688 -0.3761,-0.96041 z m -37.0594,-2.15252 c 0,-0.67774 -0.4121,-0.63734 -0.9218,0.0903 -0.6657,0.95034 -0.5407,1.37249 0.2525,0.85279 0.3681,-0.24119 0.6693,-0.6656 0.6693,-0.94315 z m 34.8019,0.2985 c 0,-0.41059 -1.0207,-1.33854 -1.4724,-1.33854 -0.6078,0 -0.4828,0.43262 0.3038,1.0514 0.77,0.60562 1.1686,0.70358 1.1686,0.28714 z m -44.9079,-1.2869 c 0.5019,-0.43103 0.6476,-1.65789 0.1968,-1.65789 -0.3209,0 -1.3321,1.5852 -1.3336,2.09054 0,0.3737 0.3562,0.23775 1.1368,-0.43265 z m 11.7645,-1.30641 c 0.7416,-0.71053 0.9902,-1.4223 0.4967,-1.4223 -0.2603,0 -1.6198,1.65009 -1.6198,1.96614 0,0.34891 0.3867,0.16164 1.1231,-0.54384 z m -9.371,-2.1585 c 1.2714,-1.36318 1.5608,-2.51695 0.4871,-1.94233 -0.5342,0.28587 -1.1799,1.20753 -1.4546,2.07618 -0.2571,0.813 0.135,0.75875 0.9675,-0.13385 z m 13.5663,-1.44116 c 0.7559,-0.31411 1.3743,-0.68508 1.3743,-0.82439 0,-0.37911 -1.6278,0.0442 -2.4763,0.64389 -1.3202,0.93312 -0.8818,1.00493 1.102,0.1805 z m -8.5309,-0.96554 c 0.6626,-0.21399 1.3553,-0.43389 1.5393,-0.48865 0.7516,-0.22361 0.2624,-0.65177 -0.7448,-0.65177 -1.5539,0 -2.9362,0.63719 -2.9362,1.35352 0,0.44825 0.105,0.5327 0.4685,0.37685 0.2577,-0.11047 1.0106,-0.37595 1.6732,-0.58995 z m 30.7863,-2.72863 c 0,-0.34878 -0.9066,-0.59967 -1.4346,-0.39703 -0.7554,0.28988 -0.4808,0.6467 0.4977,0.6467 0.5153,0 0.9369,-0.11235 0.9369,-0.24967 z m 3.7479,-0.018 c 0,-0.14724 -0.5492,-0.26771 -1.2204,-0.26771 -0.7455,0 -1.1561,0.10419 -1.0551,0.26771 0.091,0.14723 0.6402,0.2677 1.2205,0.2677 0.5803,0 1.055,-0.12047 1.055,-0.2677 z"
-         style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-         sodipodi:nodetypes="cccsssssssssssssssscsscsscsssssssssssscssscsssscsssscscccssssssssssssssssscscccsscccccssssssssssssssssssssssscssssssssssssssscsssccsscccccsscssssssssccsccccsscssssccssc" />
-    </g>
-    <g
-       id="g4377"
-       transform="translate(-1.4285714,-66.428571)">
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 407.15625,144.3125 c -0.8552,0.40215 -0.0668,1.52829 0.1875,2.09375 0.2251,0.69934 1.16145,-0.23184 1.03125,-0.78125 -0.09,-0.57481 -0.55805,-1.37673 -1.21875,-1.3125 z"
-         id="path4731"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 397.40625,140.28125 c -1.2465,0.77592 -1.87565,2.36688 -2.15625,3.75 0.2859,0.14766 1.24795,-0.95999 1.65625,-1.5 0.3217,-0.63661 1.48165,-1.51723 0.78125,-2.25 -0.095,0.0218 -0.18765,-0.033 -0.28125,0 z"
-         id="path4729"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 399.28125,134.9375 c -1.0023,0.68564 -0.9243,2.21958 -1.375,3.25 0.9826,-0.33552 2.3106,-1.72417 1.875,-3.03125 -0.104,-0.16848 -0.3047,-0.28511 -0.5,-0.21875 z m 6.6875,3.03125 c -0.7557,0.5372 -0.22155,1.75205 -0.28125,2.53125 0.089,0.80082 0.0703,2.11859 0.875,0.9375 0.6068,-0.975 0.42835,-2.40878 -0.15625,-3.34375 -0.097,-0.0936 -0.309,-0.19853 -0.4375,-0.125 z"
-         id="path4727"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 423.40625,134.5625 c -1.0595,0.35173 -0.76095,1.80847 -0.59375,2.625 0.6187,-0.55754 1.8127,-1.51892 1.125,-2.4375 -0.1397,-0.13527 -0.33615,-0.21863 -0.53125,-0.1875 z"
-         id="path4725"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 430.59375,133.65625 c -0.9104,0.51358 -0.4591,1.89414 -0.125,2.6875 0.1485,0.55231 0.89305,1.34616 1.34375,0.625 0,-1.04165 -0.1032,-2.21962 -0.6875,-3.125 -0.1213,-0.15082 -0.33965,-0.23333 -0.53125,-0.1875 z"
-         id="path4723"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 439.78125,132.5 c -0.9671,0.27836 -0.0745,1.29121 0.40625,1.59375 0.434,0.79112 2.17405,0.13329 1.40625,-0.71875 -0.4911,-0.45276 -1.1439,-0.86051 -1.8125,-0.875 z"
-         id="path4721"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 431.8125,129.59375 c -0.8696,0.42998 0.3007,1.77934 1,1.34375 0.9738,-0.50558 -0.3859,-1.48326 -1,-1.34375 z"
-         id="path4719"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 420.15625,129.25 c -1.0021,0.347 -1.233,1.7414 -1.5625,2.40625 -0.8128,-0.50096 -1.0549,0.87108 -1.1875,1.4375 -0.427,0.73613 0.14615,0.91551 0.71875,0.65625 0.8005,-0.4421 0.36305,-1.59105 1.21875,-2 0.5207,-0.65237 1.4902,-1.33877 1.3125,-2.28125 -0.1294,-0.14448 -0.2942,-0.27948 -0.5,-0.21875 z m 4.59375,2.3125 c -1.0223,0.41318 -0.9932,1.7902 -1.25,2.6875 0.7114,-0.56676 2.3493,-1.35286 1.8125,-2.5 -0.1171,-0.1676 -0.3687,-0.23208 -0.5625,-0.1875 z"
-         id="path4717"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 400.8125,129.125 c -0.7295,0.89214 -0.7532,2.23085 -1.125,3.3125 -0.2903,0.59157 -0.23995,1.37711 0.53125,1.0625 0.8559,-0.7091 0.66935,-2.0258 1.03125,-3 0.05,-0.42889 0.4366,-1.66433 -0.4375,-1.375 z m 5.3125,0.375 c -0.091,0.012 -0.1844,-0.0635 -0.25,0.0312 -0.8149,0.83243 -0.52585,2.28703 -0.46875,3.34375 0.291,0.64982 0.1394,1.21319 0.0625,1.875 -0.032,0.91744 0.058,1.83618 0.125,2.75 1.1456,-0.85023 1.52115,-2.64674 0.71875,-3.8125 -0.3996,-0.36499 0.2336,-1.23289 0.1875,-1.84375 0.019,-0.72136 0.4567,-1.93454 -0.375,-2.34375 z"
-         id="path4715"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 379.84375,128.75 c -0.9125,0.523 -0.84155,1.82715 -0.90625,2.75 0.8526,0.67591 1.0494,-0.39901 1.3125,-1.03125 0.179,-0.50392 0.53315,-1.78869 -0.40625,-1.71875 z"
-         id="path4713"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 431.46875,127.3125 c 0.2976,-0.004 1.26045,0.16487 0.53125,0.25 -0.1581,0.16265 -0.61895,-0.23325 -0.53125,-0.25 z"
-         id="path4711"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 422.53125,125.875 c -0.9948,0.49255 -1.4496,1.68673 -1.9375,2.625 0.2138,0.7953 1.03665,0.37789 1.28125,-0.15625 0.407,-0.69151 1.40975,-1.42474 1.09375,-2.3125 -0.1261,-0.072 -0.2848,-0.23574 -0.4375,-0.15625 z m 4.40625,1.78125 c -1.0709,0.58372 -1.7095,1.974 -1.625,3.1875 0.1066,0.76539 1.2099,0.0718 1.25,-0.53125 0.1084,-0.90041 1.2746,-1.67951 0.75,-2.59375 -0.1239,-0.008 -0.2483,-0.15247 -0.375,-0.0625 z"
-         id="path4709"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 427.28125,125.84375 c 0.4323,-0.12308 1.20615,0.79669 0.40625,0.5625 -0.285,0.0155 -1.36875,-0.28171 -0.65625,-0.53125 0.083,-0.0157 0.1638,-0.0362 0.25,-0.0312 z"
-         id="path4707"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 423.53125,123.5 c 0.5269,-0.0381 0.85395,1.01038 0.0937,0.59375 -0.2874,-0.004 -0.9333,-0.34156 -0.375,-0.53125 0.086,-0.0352 0.18825,-0.0582 0.28125,-0.0625 z"
-         id="path4705"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 444.15625,122.96875 c -0.849,0.0646 -0.45245,1.08495 0.15625,1.21875 0.5853,0.51843 2.01665,0.64075 2.21875,-0.3125 -0.4008,-0.8163 -1.5753,-0.85481 -2.375,-0.90625 z M 450.375,123.25 c -0.4404,0.0714 -0.5447,0.68847 -1.0625,0.34375 -0.6915,-0.0995 -2.2021,-0.27037 -2.0625,0.8125 0.4262,0.80172 1.49565,0.83217 2.28125,0.71875 0.053,0.64469 0.3534,1.23538 0.5625,1.84375 0.3047,-1.11158 1.3111,-2.40092 0.75,-3.5625 -0.1126,-0.13712 -0.29225,-0.18872 -0.46875,-0.15625 z"
-         id="path4703"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 444.96875,120.4375 c -0.7592,-0.086 -0.8903,0.90396 -0.1875,1.09375 0.6554,0.40106 1.82715,0.38298 2.28125,-0.3125 -0.029,-0.91138 -1.47615,-0.7328 -2.09375,-0.78125 z"
-         id="path4701"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 450,119.53125 c -0.5159,0.23379 -0.39575,1.09988 -0.53125,1.34375 -0.9324,-0.89061 -2.4144,-0.0617 -2.75,1.03125 0.081,0.34499 1.1154,0.25387 1.625,0.3125 0.4278,7.5e-4 0.92505,-0.0669 1.21875,-0.40625 0.056,0.90305 0.0805,2.16943 0.8125,0.78125 0.5677,-0.85478 0.90925,-2.30564 0.0312,-3.0625 -0.1301,-0.0253 -0.28745,-0.0769 -0.40625,0 z"
-         id="path4699"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 380.40625,119.40625 c -0.8172,0.59627 -0.51745,1.89984 -0.71875,2.78125 -0.3953,1.28658 0.49775,0.54481 0.96875,0 0.4514,-0.76734 0.77135,-2.0498 0.0937,-2.75 -0.1039,-0.0253 -0.24095,-0.11167 -0.34375,-0.0312 z"
-         id="path4697"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 415.40625,118.5625 c -0.6994,0.59602 0.3171,1.45751 0.625,2 0.5265,0.571 1.67365,-0.14518 1.09375,-0.84375 -0.3959,-0.49676 -1.00045,-1.32368 -1.71875,-1.15625 z"
-         id="path4695"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 429.46875,116.375 c 0.4283,0.17876 0.5363,0.93997 -0.125,0.625 -0.3682,-0.0434 -0.1179,-0.56596 0.125,-0.625 z"
-         id="path4693"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 416.34375,115.59375 c 0.7912,-0.21554 1.08055,1.01421 0.46875,1.15625 -0.2376,-0.18552 -1.39935,-1.1142 -0.46875,-1.15625 z"
-         id="path4691"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 413.09375,115.28125 c -0.8499,0.32915 -0.0399,1.32054 0.34375,1.71875 0.4777,0.68401 1.02375,1.18334 1.09375,0.0625 0.099,-0.79861 -0.6088,-1.80102 -1.4375,-1.78125 z"
-         id="path4689"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 430.96875,114.4375 c 0.4948,0.40171 -0.91925,0.42503 -0.21875,0.0625 0.078,-0.0443 0.12715,-0.0611 0.21875,-0.0625 z"
-         id="path4687"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 433.625,112.59375 c 0.2198,0.56662 -0.1965,1.48775 -0.75,0.8125 0.02,-0.36725 0.4021,-0.76305 0.75,-0.8125 z"
-         id="path4685"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 414.625,112.53125 c 0.2062,0.39797 -0.24965,0.68795 -0.28125,0.21875 0.034,-0.1136 0.16435,-0.19618 0.28125,-0.21875 z"
-         id="path4683"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 394.1875,112.28125 c -0.7935,0.0405 -0.6041,1.04687 0,1.25 0.4943,0.65694 1.7774,0.35978 1.6875,-0.53125 -0.2552,-0.62821 -1.0937,-0.73678 -1.6875,-0.71875 z"
-         id="path4681"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 407.3125,108.875 c -0.994,0.31142 -1.2538,1.56886 -2.125,2.0625 -0.351,0.40945 -0.4063,0.96932 -0.5625,1.46875 0.6369,-0.31292 2.2131,-0.66514 1.75,-1.6875 -0.62,-0.33214 0.53395,-0.0888 0.78125,-0.375 0.5394,-0.23997 1.10055,-1.42855 0.15625,-1.46875 z m 3.15625,2.5625 c -0.8367,0.53128 0.327,1.52958 0.6875,2.03125 0.5213,1.0465 0.6533,0.15244 0.6875,-0.5 -0.045,-0.67872 -0.6134,-1.58724 -1.375,-1.53125 z"
-         id="path4679"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 412.84375,108.59375 c 0.3081,0.36896 -0.0894,1.21334 -0.3125,1.53125 -0.3935,-0.39664 -0.361,-1.42942 0.3125,-1.53125 z"
-         id="path4677"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 408.15625,108.0625 c -0.7918,0.46937 0.15955,1.40622 0.53125,1.84375 0.8174,1.12489 1.1541,1.12224 0.8125,-0.3125 -0.1379,-0.63088 -0.55935,-1.60463 -1.34375,-1.53125 z"
-         id="path4675"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 437.5625,106.5 c -0.9917,0.74444 -0.7102,2.31849 -0.9375,3.40625 -0.1717,1.02506 0.72475,-0.71552 1.03125,-1.09375 0.3507,-0.63189 0.9478,-1.71182 0.25,-2.28125 0.4768,0.70641 -0.86955,0.95918 -0.0312,-0.0312 -0.09,-0.0333 -0.2207,-0.027 -0.3125,0 z m 1.40625,2.9375 c -0.4612,0.28112 -0.7103,1.31161 -0.25,1.625 1.0606,0.65764 1.2709,-1.8261 0.25,-1.625 z"
-         id="path4673"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 382.15625,105.46875 c -0.7071,1.11979 -0.7744,2.71754 -0.6875,3.9375 -0.6299,-0.14822 -1.30755,0.65495 -0.59375,1.0625 0.9469,0.11372 2.14675,0.32201 3.03125,-0.15625 0.4708,-0.70676 -0.77975,-0.85776 -1.28125,-0.875 -1.1318,0.15692 -0.5341,-0.37445 -0.3125,-1.125 0.1475,-0.89507 0.7889,-1.953 0.375,-2.8125 -0.057,-0.15796 -0.45875,-0.16441 -0.53125,-0.0312 z m 2.96875,3.90625 c -0.7491,-0.17266 -0.93125,0.88627 -0.15625,0.90625 0.7344,0.16144 1.7866,0.34709 2.375,-0.1875 0.1692,-0.98753 -1.65405,-0.60781 -2.21875,-0.71875 z m -3.5,0.46875 c 0.0616,0.0403 0.10472,0.15374 0.0625,0.4375 -0.66712,0.12425 -0.24723,-0.55829 -0.0625,-0.4375 z"
-         id="path4671"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 409.125,104 c 1.1631,-0.0978 2.24875,1.18196 1.46875,2.21875 -0.2646,0.83054 -0.8216,-0.0666 -1.0625,-0.40625 -0.2885,-0.52764 -0.8859,-1.20621 -1,-1.65625 0.1933,-0.0979 0.38025,-0.15457 0.59375,-0.15625 z"
-         id="path4669"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 406.09375,99.28125 c 0.6095,-0.12706 0.8823,0.5519 0.5625,1.03125 -0.4974,-0.13675 -1.3327,-0.20631 -1.5625,-0.65625 0.2497,-0.25639 0.6553,-0.3493 1,-0.375 z"
-         id="path4667"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 402.8125,95.84375 c 0.043,0.006 0.11345,-0.015 0.15625,0 0.8392,0.0704 1.55235,1.02913 1.09375,1.84375 -0.2558,-0.67715 -1.303,-1.16848 -1.25,-1.84375 z"
-         id="path4663"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 394.28125,95.625 c -0.3025,0.36893 -0.60365,0.72482 -0.90625,1.09375 -1.2879,1.89067 -1.33215,4.37214 -1.84375,6.5625 -0.1939,1.49276 -0.70955,2.98438 -0.90625,4.4375 0.1755,0.72083 -0.2468,1.93034 -0.75,2.03125 0.1311,-0.99189 -1.39,-0.94279 -1.8125,-0.28125 -0.868,0.49714 0.61465,0.58293 1.09375,0.65625 0.126,0.0661 -0.94335,0.28068 -1.21875,0.3125 -2.0589,0.26346 -4.2388,0.10926 -6.125,1.03125 -0.7792,0.18917 -2.12725,-0.0315 -2.40625,0.9375 0.3137,1.02828 1.72245,1.0327 2.53125,1.46875 1.134,0.35783 2.58895,0.74858 2.78125,2.125 0.1589,0.76755 0.1429,1.75334 -0.0625,2.40625 -0.5119,-0.26306 -1.3244,-0.22814 -1.6875,-0.0937 -0.3975,-0.53691 -1.13725,-0.68602 -1.71875,-0.5 -0.6246,-0.0736 -1.18105,-0.0583 -0.40625,-0.5625 0.557,-0.8121 0.93395,-2.06347 0.46875,-2.96875 -0.8481,-0.43225 -0.91585,0.97928 -1.03125,1.53125 -0.2749,0.50129 0.1001,1.72597 -0.5,1.8125 -0.6203,-0.23336 -1.25345,0.60157 -0.53125,0.90625 1.1144,0.4245 2.3883,0.59501 3.5625,0.5 0.3126,-0.42441 0.645,0.47642 1.125,0.21875 0.7559,-0.23385 0.64755,0.24608 0.46875,0.8125 -0.245,1.40618 -0.87455,2.89231 -0.46875,4.3125 -0.4347,0.0451 -1.12525,-0.11956 -1.34375,0.375 -0.8048,-0.9071 -2.25235,-1.50845 -3.40625,-1 -0.4871,0.53542 0.4236,0.77836 0.5625,0.96875 -0.08,0.85717 -0.68485,2.11874 0.15625,2.75 0.9126,-0.0754 0.66075,-1.37246 0.78125,-2.03125 -0.2822,-1.06327 0.82185,-0.51717 1.46875,-0.46875 0.5932,0.0921 1.1263,0.5087 1.8125,0.46875 0.6022,0.23359 1.86075,-0.51535 0.90625,-0.96875 -0.417,-0.10495 0.45355,-0.70078 0.46875,-1.03125 0.7245,-1.22783 1.1996,-2.75446 1.9375,-3.875 0.4959,0.53961 1.4054,0.24613 2.0625,0.34375 0.6737,-0.6784 -0.30705,-1.33399 -0.96875,-1.125 -0.2632,-0.0468 -1.05865,0.3622 -0.53125,-0.15625 0.6049,-0.87228 1.53775,-1.59319 2.28125,-2.21875 0.5102,1.22733 0.47435,2.89401 1.78125,3.625 1.6336,1.70554 0.90845,4.41442 2.21875,6.28125 1.4317,-1.54871 1.274,-3.85683 1.5625,-5.8125 0.174,-1.4536 0.0439,-3.03693 0.15625,-4.4375 0.4132,-0.32321 1.31945,-0.15002 1.90625,-0.375 1.4136,-0.34698 2.9653,-0.59788 4.3125,0.0312 0.7524,-0.16637 2.10175,0.16109 2.40625,-0.75 -0.2501,-0.93766 -1.5721,-0.94713 -2.3125,-1.3125 -2.3619,-0.55296 -4.42485,-2.16656 -6.90625,-2.21875 -0.8167,0.53465 0.3656,1.02749 0.875,1.15625 1.0387,0.56514 2.47975,0.48221 3.34375,1.28125 -1.2644,1.19707 -3.2983,0.86929 -4.75,1.71875 0.7138,0.0285 -0.0652,0.65807 0.0937,1.09375 -0.3861,1.47607 0.12905,3.10288 -0.46875,4.5 -0.5567,0.14231 -0.99705,-0.71509 -1.34375,-1.09375 -1.022,-1.3724 -1.6444,-2.99124 -1.9375,-4.65625 -0.3068,-0.93895 -1.49005,-0.56064 -1.90625,0.0937 -0.8302,0.76538 -1.3385,2.00898 -2.375,2.5 0.3693,-1.55917 -0.32665,-3.30215 -1.78125,-4.09375 -0.5765,-0.42326 -1.40685,-0.71757 -1.84375,-1.125 2.0497,-1.46252 4.80845,-0.6917 7.09375,-1.5625 1.0465,-0.31449 1.98985,-1.16098 1.78125,-2.34375 0.3907,-4.47154 1.5425,-8.84716 2.25,-13.28125 z m -5.1875,16.03125 c -0.7048,-0.0956 -0.7959,0.89768 -0.0625,0.90625 0.6534,0.24219 1.59205,0.0833 2.03125,-0.125 0.4097,0.57195 1.59865,0.91665 2.03125,0.25 -0.1011,-0.75485 -1.1666,-0.92288 -1.8125,-0.875 -0.2815,0.45405 -0.46125,-0.22282 -0.90625,-0.125 -0.4221,-0.0374 -0.85775,-0.0494 -1.28125,-0.0312 z m 1.4375,1.53125 c -0.6944,0.0107 -0.4702,0.91088 0.125,0.9375 0.6954,0.24108 1.67255,0.46434 2.21875,-0.15625 -0.2146,-0.9184 -1.64275,-0.6866 -2.34375,-0.78125 z m 19.875,0.5625 c -1.2409,0.32656 -1.69105,1.7194 -2.09375,2.78125 0.8494,-0.75708 2.31755,-1.17339 2.65625,-2.34375 0.01,-0.27802 -0.3047,-0.49508 -0.5625,-0.4375 z m -2.9375,2.96875 c -0.064,0.004 -0.1325,-0.0157 -0.1875,0.0312 -0.781,0.40202 -0.80065,1.4634 -1.09375,2.1875 0.7818,-0.15628 2.61705,-1.61834 1.28125,-2.21875 z m 11.3125,5.90625 c -0.7236,0.29126 -0.0497,1.58969 0.5,1.5625 0.8437,-0.0234 0.6947,-1.17059 0.0625,-1.4375 -0.1532,-0.10209 -0.3758,-0.18638 -0.5625,-0.125 z m -30.46875,2.40625 c -0.6419,-0.10229 -1.19365,0.76731 -0.46875,1.0625 1.0404,0.33138 2.1736,0.20841 3.25,0.28125 -0.6793,-0.86046 -1.64425,-1.49504 -2.78125,-1.34375 z"
-         id="path4661"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 395.9375,94.34375 c -0.10379,0.06062 -0.25325,0.330015 -0.5,0.65625 -1.3323,4.01478 -1.4842,8.34607 -2.4375,12.4375 0.2868,1.37737 -0.2362,2.79724 0,4.1875 1.3251,0.76296 0.8727,-1.06095 1.125,-1.875 0.6045,-4.92028 1.3856,-9.84666 2,-14.75 -0.032,-0.5597 -0.0837,-0.716866 -0.1875,-0.65625 z m 5.65625,4.21875 -0.15625,0.09375 c -0.6797,0.59898 0.34515,1.50612 0.59375,2.09375 0.4963,1.08245 0.86785,1.08649 0.90625,-0.0937 -0.063,-0.83855 -0.51055,-1.81632 -1.34375,-2.09375 z m 2.1875,3.125 c -0.8037,0.22703 -0.0815,1.30773 0.28125,1.6875 0.8373,1.29634 1.06325,1.03928 0.78125,-0.375 -0.098,-0.52972 -0.4299,-1.31699 -1.0625,-1.3125 z m 1.6875,2.5625 c -0.6701,0.64584 0.477,1.48208 0.75,2.09375 0.3258,0.88259 1.39755,-0.068 0.90625,-0.6875 -0.3542,-0.56004 -0.88315,-1.54634 -1.65625,-1.40625 z m -1.78125,1.90625 c -1.0315,0.18554 -1.21565,1.44556 -1.09375,2.3125 0.644,-0.48124 2.14435,-1.05527 1.71875,-2.09375 -0.1482,-0.17215 -0.3997,-0.25158 -0.625,-0.21875 z m -2.65625,2.09375 c -0.8365,0.37997 -0.8484,1.49936 -1.125,2.25 0.7729,-0.30896 2.2356,-1.09553 1.625,-2.125 -0.1316,-0.12675 -0.3256,-0.16174 -0.5,-0.125 z"
-         id="path4657"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 399.65625,89.1875 c 2.0014,0.69481 3.76425,2.00929 5.78125,2.71875 0.4165,0.14061 1.4358,0.85384 0.625,1.21875 -1.092,0.48244 -2.31605,0.45471 -3.46875,0.65625 -1.6462,-0.16963 -1.90425,-2.28791 -2.53125,-3.5 -0.1306,-0.35085 -0.42175,-0.75279 -0.40625,-1.09375 z"
-         id="path4655"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 397.15625,82.8125 0.15625,0.0625 c 0.9844,0.57143 2.5692,0.77538 3,1.96875 0,0.81748 -1.23905,1.88897 -1.84375,0.9375 -0.6655,-0.86398 -0.9621,-1.95764 -1.3125,-2.96875 z"
-         id="path4653"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#000000;fill-opacity:1;stroke:none"
-         d="m 394.78125,79.0625 c -1.07126,0.0885 -2.88755,1.02827 -3.59375,1.0625 -0.8851,0.04287 -3.87209,9.986548 -5.375,12.78125 -0.006,0.0119 -0.0249,0.01963 -0.0312,0.03125 l -1.6875,4.34375 c 0.0206,0.0043 0.0419,-0.0044 0.0625,0 -3.0746,6.21431 -5.42445,12.78854 -7.46875,19.40625 -1.5131,5.31008 -2.0768,11.5497 1.125,16.375 0.3136,0.41149 1.21795,0.98466 0.84375,1.5625 -1.4458,0.54799 -3.1324,0.007 -4.4375,-0.6875 -1.6534,-0.90649 -3.27905,-2.23856 -5.21875,-2.375 -1.1526,0.0905 -0.84225,1.58119 -0.40625,2.25 1.1345,1.31364 1.4529,3.14126 2.4375,4.53125 0.4012,1.47635 2.18055,2.67817 1.59375,4.3125 -1.8645,2.1041 -3.29515,4.52103 -4.84375,6.875 -0.7357,0.67833 0.6705,0.67009 1.1875,0.6875 2.4523,-0.14996 4.28925,-2.2342 6.65625,-2.5625 0.7904,0.35036 0.3604,1.6144 0.375,2.28125 -0.2612,2.45548 -1.29975,5.09767 -0.34375,7.5 0.2866,0.98812 1.34835,0.10311 2.03125,0 2.4983,-0.91526 4.7734,-2.42622 6.5,-4.4375 0.5522,-0.37822 0.67155,0.81949 0.90625,1.0625 0.2277,0.51744 0.50105,1.03178 0.90625,1.4375 -0.4374,0.61757 -1.574,1.82201 -0.5625,2.4375 0.5689,0.27211 1.2971,-0.0504 1.5,0.71875 0.5365,0.9992 0.6078,2.18576 1.375,3.09375 0.3879,0.73083 1.39825,0.53766 1.59375,-0.21875 0.7651,-1.50295 0.6906,-3.63233 2.4375,-4.4375 1.2902,-0.59881 2.68605,-1.49798 4.09375,-1.40625 0.59,0.29663 0.84085,-0.7316 1.53125,-0.4375 1.2001,0.76866 1.50055,2.38607 2.34375,3.5 1.2066,1.92697 2.2192,4.05449 3.75,5.71875 0.6559,0.75234 1.86615,0.37469 2.15625,-0.53125 0.6359,-1.38373 0.7459,-2.94128 1.5,-4.28125 0.5201,-1.08965 0.5473,-2.63633 1.5625,-3.40625 0.2892,0.51052 0.88735,0.0288 1.21875,0.5625 1.4788,0.95359 3.1312,1.52557 4.6875,2.3125 0.9202,0.44398 2.5916,0.3566 2.625,-0.96875 -0.098,-1.48219 -0.9981,-2.79361 -1.9375,-3.90625 -0.6304,-0.7957 -1.6613,-1.49209 -1.8125,-2.5625 4.785,0.0619 9.80345,0.89755 14.40625,-0.78125 1.9229,-0.48857 3.7091,-1.45236 5.4375,-2.375 0.9545,-0.56028 1.87375,-1.27507 2.84375,-1.71875 0.4797,-0.10588 0.8657,-0.17878 1.3125,0 0.4074,-0.2725 0.4589,-0.7261 1,-0.90625 2.3005,-1.37764 4.60195,-2.86486 6.40625,-4.875 0.4883,-0.3726 0.9417,-1.22968 1.5625,-1.84375 1.7397,-2.06164 2.81835,-4.58559 4.34375,-6.8125 1.4425,-2.11917 1.74835,-4.72185 1.78125,-7.25 0,-2.79237 -0.0617,-5.68659 -0.9375,-8.34375 -1.5138,-3.56797 -3.07525,-7.28106 -5.96875,-9.96875 -2.5201,-2.37992 -5.87175,-3.52686 -8.90625,-5.0625 -1.9797,-0.83678 -4.35335,-1.44466 -6.34375,-0.28125 -3.4128,1.69661 -5.59695,5.44637 -5.46875,9.28125 -0.2141,2.11031 -0.0191,4.24561 0.3125,6.3125 -0.036,1.23546 0.33985,2.67766 1.28125,3.46875 0.8338,0.21807 1.73675,-0.0126 2.59375,0.15625 -0.1937,-0.37838 -0.81485,-0.85983 -0.78125,-1.25 0.4692,-0.14261 1.49475,-0.10228 1.53125,-0.5625 -0.2,-0.36441 -0.68175,-1.08386 0.0937,-1.03125 0.8142,0.0581 1.1898,-0.10507 0.5625,-0.8125 -0.2137,-0.33681 -0.55575,-1.33957 0.21875,-1 0.7723,0.38689 1.18,0.41522 0.9375,-0.5625 -0.045,-0.43144 0.1613,-1.23863 0.75,-0.84375 0.5961,0.3138 1.11995,1.00704 1.28125,-0.0312 0.4067,-0.6681 0.9087,-1.80654 1.8125,-1.78125 0.4986,0.74424 0.0136,1.80093 -0.15625,2.59375 0.5721,-0.0941 1.9262,-0.0435 1.4375,0.875 -0.3635,0.76526 -1.0035,1.33695 -1.625,1.90625 0.3472,0.36646 1.3354,0.68518 1.375,1.1875 -0.7767,0.49174 -1.68845,0.75308 -2.46875,1.25 0.4143,0.62201 1.11875,1.10039 1.46875,1.71875 -0.7789,0.309 -1.6672,0.2262 -2.5,0.3125 0.3105,0.48233 1.42245,0.95237 1.28125,1.59375 -0.7636,0.36392 -1.6994,0.17097 -2.5,0.0625 -0.067,0.62242 0.19365,1.43115 0.28125,1.875 -0.6976,-0.36489 -1.3926,-1.39007 -1.9375,-0.28125 -0.3431,0.21324 -0.96695,1.32847 -1.28125,0.59375 -0.415,-0.57036 -0.61395,-1.57706 -1.21875,-1.8125 -0.7914,0.0278 -2.2496,0.86925 -2.6875,-0.21875 -0.2894,-0.73969 -0.2908,-1.52816 -0.375,-2.3125 -0.9807,0.28478 -2.7763,0.80834 -3.125,-0.59375 -0.192,-0.59135 -0.14975,-1.2342 -0.15625,-1.875 -0.7775,0.17598 -1.7926,0.92379 -2.5625,0.5 -0.167,-1.10589 0.4192,-2.19721 0.5,-3.3125 -0.6056,0.21211 -1.80575,0.0532 -1.46875,-0.84375 0.1334,-0.56908 1.21215,-1.12937 0.0312,-1.0625 -1.4899,-0.067 -3.2402,-1.30633 -2.6875,-2.96875 0.4197,-0.85269 -0.9091,-0.3163 -1.375,-0.625 -1.0891,-0.27454 -0.3918,-1.63061 -0.3125,-2.34375 0.133,-0.57129 0.0995,-1.15814 -0.0625,-1.71875 -0.7924,0.13974 -1.7464,0.66852 -2.5,0.28125 0.1459,-1.56588 1.38705,-2.92999 1.15625,-4.59375 -1.9668,0.63754 -4.359,-0.53222 -4.6875,-2.65625 -0.1418,-0.73997 -0.0251,-1.4954 0.15625,-2.21875 -0.7938,-0.0333 -2.09635,0.53789 -2.65625,-0.21875 -0.2659,-0.73886 0.2516,-1.88898 -0.375,-2.34375 -0.4426,-0.14948 -1.84395,-0.42093 -0.71875,-0.5625 1.7685,-0.40929 3.60095,-0.79403 5.03125,-1.96875 -2.6639,-2.14964 -5.8787,-3.27942 -8.875,-4.84375 -0.6975,-0.41492 0.1221,-1.31819 0.3125,-1.8125 0.657,-1.06281 1.4574,-2.05582 2.5,-2.75 -2.4082,-0.50067 -4.42185,-2.06464 -6.78125,-2.6875 -0.2281,-1.22582 -0.51595,-0.69746 -1.03125,-1.625 -0.12885,-0.231887 -0.39291,-0.2795 -0.75,-0.25 z m 0.75,2.875 c 0.10402,0.171812 0.13115,0.605998 0.125,1.34375 0.069,0.76664 -0.82995,1.18986 -0.90625,1.96875 -0.1643,0.4491 -0.85175,0.44628 -1.03125,1 -0.5799,0.83966 -0.966,1.78592 -1.375,2.71875 1.0149,-0.7973 2.7262,-1.63754 2.6875,-3.125 0.066,-0.42595 0.9493,-0.68848 1.125,-1.25 0.2333,-0.69474 0.36725,0.53592 0.34375,0.78125 0.1543,1.18692 -0.9515,1.96682 -1.25,2.96875 -0.92,0.008 -1.25165,1.2324 -1.71875,1.875 -0.7948,1.26549 -0.52455,1.65296 0.59375,0.59375 0.5578,-0.63412 1.7068,-1.43107 1.3125,-2.375 0.8389,-0.271 1.2509,-1.00176 1.6875,-1.65625 0.4155,-0.0886 0.48585,0.75596 0.65625,1.03125 0.01,0.394 0.69845,1.3381 -0.0312,1.125 -1.1003,0.47135 -1.36515,1.9443 -1.90625,2.75 -1.0264,0.20954 -1.15215,1.6344 -1.65625,2.375 -0.1751,0.46032 1.02075,-0.42633 1.40625,-0.71875 0.3925,-0.36894 0.96205,-1.19787 0.34375,-1.59375 0.8255,-0.63742 1.8351,-1.22336 2.3125,-2.1875 0.3238,1.59007 1.22565,2.95143 1.78125,4.4375 1.5245,3.17947 4.1078,5.72786 5.9375,8.75 4.4227,6.48759 8.73035,13.07709 13.34375,19.40625 1.5282,1.5904 3.47895,2.75489 5.28125,4.03125 1.7038,1.01106 3.82495,1.92021 5.40625,2.71875 -0.7941,1.09474 -0.31035,2.66289 0.34375,3.71875 1.1566,-0.26423 0.61645,-1.68042 0.71875,-2.5 0.071,-0.31231 -0.31145,-0.97201 -0.15625,-1.03125 1.0774,0.38186 2.189,-0.15305 3.25,0.0312 1.8108,0.75256 2.2802,3.34082 4.3125,3.6875 1.0278,-0.14074 0.5098,-1.47975 -0.125,-1.8125 -0.4417,-0.38973 -1.0815,-0.4444 -1.125,-1.125 -0.1351,-0.54442 -0.8445,-0.97316 -1,-1.28125 0.5935,-0.4332 -0.16435,-1.03817 -0.0312,-1.53125 1.1117,-0.71407 1.53135,-2.04678 2.09375,-3.15625 0.4347,-0.43745 0.23335,-1.10527 0.71875,-1.4375 0,-0.61078 -0.34015,-0.9976 -0.0312,-1.6875 0.5022,-2.97134 1.1147,-6.47992 -0.8125,-9.0625 -2.6362,-1.50472 -5.7994,-0.10811 -7.8125,1.75 -1.0327,0.98063 -2.23165,2.00756 -2.28125,3.53125 -0.1697,0.57507 -0.35795,1.26054 -0.71875,1.71875 -0.3575,-1.30845 -0.45405,-2.71191 -0.65625,-4.0625 -0.069,-2.3143 -0.0107,-4.68602 0.53125,-6.9375 0.8154,-2.12309 2.5613,-3.71998 4.25,-5.15625 0.6499,-0.53658 2.11445,-0.94254 2.34375,0.1875 -0.6228,0.75907 -0.426,1.91968 -0.5,2.6875 -1.2209,0.62161 -1.10675,2.3509 -1.40625,3.5 0.6395,-0.99858 2.01605,-1.90908 1.90625,-3.21875 -0.079,-0.5157 0.6534,-1.03353 0.6875,-1.65625 0.1909,-0.53511 -0.0957,-1.32007 0.6875,-1.40625 0.3012,-0.0803 0.97685,-0.14354 1.09375,0.0312 -0.8418,1.22653 -1.1825,2.76352 -1.6875,4.15625 0.3353,0.72642 1.22905,0.23525 1.21875,-0.4375 0.051,-0.3484 0.1952,-0.86594 -0.1875,-1.0625 0.8217,-0.51233 1.423,-1.57341 1.5625,-2.34375 0.7123,0.40953 1.1348,1.22186 0.6875,2 -0.1995,0.72656 -0.5448,1.79343 0.375,1.3125 0.3723,-0.55316 0.4622,-1.93379 1.375,-2.1875 0.445,0.15092 0.7849,0.7695 1.125,0.84375 -0.7896,0.96908 -0.99665,2.2234 -1.46875,3.34375 -0.204,0.52305 -0.2835,1.11078 0.4375,0.9375 0.8301,-0.19446 0.7836,-1.32599 0.6875,-1.90625 0.5277,-0.5954 1.1034,-1.21251 1.3125,-2 2.2547,1.02943 4.2916,2.65326 5.5,4.84375 1.206,1.78707 2.2655,3.74727 3,5.75 0.096,0.38049 0.28975,0.6281 -0.15625,0.3125 -0.9405,0.0214 -0.63765,1.33252 -0.59375,1.9375 -0.1263,0.8459 0.41195,0.85997 0.90625,0.4375 0.3241,-0.31119 0.4349,-0.78075 0.375,-1.21875 0.4807,0.92109 0.6847,2.01972 0.4375,3 0.7332,1.93576 0.46555,4.1229 0.34375,6.15625 -0.1978,0.27018 -0.0208,1.87059 -0.4375,1.3125 -0.4074,-0.69795 -1.39975,-0.2661 -1.46875,0.46875 -0.2878,0.85486 -0.3,2.52677 0.9375,2.5 -0.6668,1.57301 -1.75245,2.92965 -2.53125,4.46875 -0.2647,0.56422 -0.59525,0.85712 -1.09375,1.03125 -0.1562,1.27846 -1.3217,2.19556 -2.125,3.1875 -1.8886,1.93351 -4.0702,3.97872 -6.5625,4.875 -4.3662,2.231 -8.85745,5.38721 -13.96875,5.96875 -0.7277,0.0414 -1.55785,0.18554 -2.09375,-0.25 -1.0818,0.53177 -2.4594,-0.0572 -3.6875,0.0312 -0.4785,-0.35715 -1.1065,0.22853 -1.6875,-0.0625 -1.1295,-0.33952 -2.6254,0.46629 -3.5625,-0.40625 -0.7594,-1.70428 -0.522,-3.68174 -1.125,-5.4375 0.3793,-0.50075 -0.4214,-0.87032 -0.25,-1.53125 -0.3596,-3.17489 -0.54225,-6.41247 -1.40625,-9.5 -0.5569,-2.66118 -0.9822,-5.53206 -2.875,-7.625 0.6391,6.70103 2.3962,13.28981 2.9375,20 0.1938,0.75714 -0.0125,1.47978 -0.0625,2.0625 0.8975,0.62289 0.8425,1.78711 0.9375,2.78125 0.097,0.79496 0.98345,1.03444 1.15625,1.8125 0.5721,0.90891 1.02795,1.94378 1.96875,2.46875 0.4042,0.33731 -0.12695,0.92931 0.46875,1.15625 0.092,0.44236 0.22765,1.13581 -0.46875,0.90625 -0.5327,-0.10607 -1.4427,-0.1979 -1.625,-0.6875 0.09,-0.70943 -0.8797,-0.96168 -1.0625,-0.375 -0.8165,-0.36654 -1.39445,-1.1519 -2.34375,-1.375 -0.7445,-0.34816 -2.2809,-0.63488 -2.4375,0.53125 0.1434,0.76046 0.21015,1.52865 -0.28125,2.1875 -0.289,1.0657 -0.891,2.05116 -1.125,3.15625 -0.1808,0.61515 -0.0772,-1.00342 -0.71875,-0.71875 -1.1196,0.10307 -2.3082,-0.22892 -2.8125,-1.3125 -1.0698,-1.71289 -2.0689,-3.47533 -3.5,-4.90625 -3.2443,0.57707 -6.2496,2.73992 -9.4375,2.9375 0.5091,-1.04943 0.1149,-2.23163 0,-3.28125 0.8957,-0.53456 0.7407,-2.06669 1.75,-2.34375 0.7679,0.39249 0.97335,-0.68787 0.90625,-1.3125 -0.49,-1.43558 -2.4285,-1.11247 -3.625,-1.3125 -0.5138,-0.0288 -1.2188,-0.10617 -1,-0.8125 -0.2133,-0.63704 -0.3935,-1.64001 0.5625,-1.75 1.5166,-0.1574 2.7449,-1.1181 4.1875,-1.59375 1.2691,-0.60072 2.9552,-1.08386 3.1875,-2.6875 0.3713,-0.91824 0.84835,-1.96065 1.21875,-2.78125 0.3975,-0.2442 0.40945,-0.82093 0.59375,-1.21875 -0.042,-0.52566 0.6731,-0.92998 0.6875,-1.5625 0.1334,-0.4874 -0.5376,-0.68416 -0.0625,-1.15625 1.1314,-2.85628 2.6953,-5.99554 1.75,-9.125 -0.9954,2.41181 -1.4474,5.01396 -2.4375,7.4375 -1.1046,2.93246 -2.2624,5.85646 -3.5,8.71875 -1.5976,1.49804 -3.9265,0.43678 -5.4375,-0.65625 -1.9339,-1.36945 -4.19685,-2.29912 -5.71875,-4.1875 -1.8428,-1.90214 -3.6876,-3.95425 -4.5625,-6.53125 -0.2497,-0.50679 -0.395,-0.88943 0.125,-1.1875 0.297,-0.48359 0.0528,-1.10322 -0.0312,-1.53125 -0.4382,-0.37174 -0.73785,0.21006 -0.78125,0.5625 -0.1877,-0.63336 -0.372,-1.6198 -0.25,-2.09375 0.683,0.5976 1.1293,-0.5023 1.0625,-1.0625 0.073,-0.53269 0.1125,-1.88491 -0.75,-1.4375 -0.2638,0.35178 -0.2905,0.83221 -0.375,1.25 0.0153,-0.77428 0.16559,-1.53972 0.25,-2.34375 0.0434,0.24371 0.2037,0.30854 0.65625,-0.0625 0.6711,-0.30489 0.3512,-1.11004 0.5,-1.59375 0.3279,-0.58643 0.5171,-2.00361 -0.5,-1.9375 -0.3779,0.63917 -0.1167,-1.33642 0.4375,-0.96875 1.0072,-0.0789 0.5527,-1.38964 0.9375,-1.96875 0.2656,-0.71124 -0.5194,-0.76217 -0.5625,-0.78125 1.5504,-4.84216 3.5666,-9.53166 5.4375,-14.25 7.43916,-8.371571 10.95934,-19.921435 11.6875,-18.71875 z m 42.78125,35.375 c 0.2356,0.52044 -0.1811,1.39464 -0.6875,0.8125 0.04,-0.34287 0.3735,-0.71683 0.6875,-0.8125 z m -1,3.34375 c 0.6039,-0.10083 0.6403,1.20883 0,0.75 -0.3238,-0.0404 -1.2118,-0.46109 -0.5,-0.6875 0.1547,-0.0681 0.3315,-0.0721 0.5,-0.0625 z m -0.5625,2.65625 c 0.4877,-0.16791 0.31005,0.76105 -0.0937,0.40625 -0.4985,-0.0325 -0.5805,-0.30349 -0.0625,-0.375 0.056,-0.007 0.099,-0.0332 0.15625,-0.0312 z m -2.0625,2.28125 c 0.4973,-0.1125 1.13675,0.36079 0.46875,0.75 -0.3919,0.68336 -1.0874,-0.0751 -1,-0.59375 0.1288,-0.13037 0.34995,-0.15633 0.53125,-0.15625 z m -63.375,8.75 c 1.6746,-0.0993 2.6924,1.74404 4.375,1.65625 1.684,0.20317 3.93885,-0.6596 5.09375,1 1.7857,1.8174 3.85545,3.46869 6.03125,4.8125 0.7163,0.45291 1.4701,0.76292 2.25,1.09375 -2.2911,1.02277 -5.0091,1.85107 -6.5,4 -0.5657,0.88696 0.41705,1.72033 1.28125,1.71875 1.5291,0.0524 2.9298,0.77715 4.4375,1 0.5103,0.093 0.94105,0.20407 0.40625,0.625 -0.8829,1.11874 -1.40345,2.63581 -1.90625,3.84375 -0.5398,-1.09253 -0.428,-2.99344 -1.875,-3.34375 -0.874,0.004 -1.1301,1.23158 -1.875,1.625 -0.9892,0.84427 -2.2327,1.64677 -3.375,2 0.052,-1.21738 -1.20285,-1.84641 -2.28125,-1.71875 -0.8261,0.0195 -0.2559,-1.21646 -0.3125,-1.71875 0.099,-1.54005 0.98275,-3.24528 0.21875,-4.71875 -0.9679,-0.93503 -2.24625,0.19361 -3.15625,0.59375 -0.7291,0.24975 -1.831,0.88701 -2.5,0.375 0.014,-1.31547 1.43815,-2.07561 1.90625,-3.25 0.7565,-1.16776 1.11655,-2.96895 -0.0937,-3.96875 -1.1059,-1.44901 -1.39875,-3.33975 -2.40625,-4.8125 -0.1753,-0.3492 -0.22435,-0.82182 0.28125,-0.8125 z m 17.8125,23.6875 c 0.6672,-0.0568 0.5111,0.74479 0.25,1.09375 -0.024,-0.32251 -0.386,-0.92402 -0.25,-1.09375 z"
-         id="path3056-5-9"
-         transform="translate(1217.6994,663.73334)"
-         inkscape:connector-curvature="0" />
-      <path
-         sodipodi:type="arc"
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         id="path3883-7-9"
-         sodipodi:cx="508.10672"
-         sodipodi:cy="613.70343"
-         sodipodi:rx="2.7779195"
-         sodipodi:ry="2.7779195"
-         d="m 510.88464,613.70343 c 0,1.5342 -1.24372,2.77792 -2.77792,2.77792 -1.5342,0 -2.77792,-1.24372 -2.77792,-2.77792 0,-1.5342 1.24372,-2.77792 2.77792,-2.77792 1.5342,0 2.77792,1.24372 2.77792,2.77792 z"
-         transform="matrix(0.20869011,0.16178522,-0.1409097,0.18176235,1618.8554,591.61169)" />
-      <path
-         transform="matrix(0.20869011,0.16178522,-0.1409097,0.18176235,1635.9395,583.99245)"
-         d="m 510.88464,613.70343 c 0,1.5342 -1.24372,2.77792 -2.77792,2.77792 -1.5342,0 -2.77792,-1.24372 -2.77792,-2.77792 0,-1.5342 1.24372,-2.77792 2.77792,-2.77792 1.5342,0 2.77792,1.24372 2.77792,2.77792 z"
-         sodipodi:ry="2.7779195"
-         sodipodi:rx="2.7779195"
-         sodipodi:cy="613.70343"
-         sodipodi:cx="508.10672"
-         id="path3896-7-1"
-         style="fill:#ffffff;fill-opacity:1;stroke:none"
-         sodipodi:type="arc" />
-      <path
-         style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-         d="m 1596.9896,818.35632 c 0.01,-0.52369 -0.063,-0.81171 -0.2639,-1.07879 -0.238,-0.3167 -0.6191,-0.46226 -1.4033,-0.53605 -0.3715,-0.0349 -0.7363,-0.0961 -0.8107,-0.136 -0.2967,-0.15878 -0.2426,-1.17329 0.1894,-3.55312 0.3798,-2.09214 0.2913,-2.92785 -0.3288,-3.1057 -0.2994,-0.0859 -0.7779,0.0759 -1.8462,0.62401 -1.6419,0.84244 -2.8614,1.07539 -3.3643,0.64267 -0.3922,-0.33742 -0.1556,-1.08549 0.6712,-2.12186 1.2243,-1.53463 1.7462,-2.61128 1.7458,-3.60185 -10e-5,-0.58247 -0.1439,-0.97323 -0.5078,-1.38019 -0.5214,-0.58308 -1.2169,-1.9035 -1.7239,-3.27245 -0.1497,-0.40424 -0.3729,-0.88711 -0.4961,-1.07305 -0.3572,-0.53951 -0.5124,-0.88571 -0.5539,-1.23555 -0.035,-0.29758 -0.021,-0.34383 0.1602,-0.5251 0.2637,-0.26372 0.6484,-0.32055 1.2405,-0.18325 0.6074,0.14088 1.1965,0.42127 1.7461,0.83117 0.861,0.6421 1.5647,0.78746 3.4916,0.72116 2.2503,-0.0774 3.0889,0.1717 3.7537,1.11521 0.2436,0.34572 1.1359,1.13528 2.9055,2.57089 1.9004,1.54173 3.3702,2.47146 4.9526,3.13274 0.6845,0.28607 0.8198,0.4683 0.5021,0.67645 -0.092,0.0602 -0.5813,0.2833 -1.0875,0.49573 -2.0598,0.86429 -2.7586,1.21806 -3.8318,1.9397 -1.0578,0.71129 -1.6732,1.42709 -1.6732,1.94619 0,0.45981 0.6916,0.78449 1.8071,0.84838 0.389,0.0223 0.7487,0.0951 1.1377,0.23039 0.3129,0.10879 1.111,0.32935 1.7736,0.49014 1.109,0.26914 1.387,0.35024 1.9352,0.56456 l 0.1951,0.0763 -0.2359,0.24842 c -0.7759,0.8171 -1.5607,2.29026 -2.2271,4.18037 -0.1006,0.28527 -0.1968,0.51868 -0.2139,0.51868 -0.017,0 -0.089,-0.0311 -0.1603,-0.0692 -0.1938,-0.10368 -0.3655,-0.49107 -0.6719,-1.51552 -0.4627,-1.54725 -0.7307,-1.96244 -1.2668,-1.96244 -0.2343,0 -0.2802,0.0306 -0.4762,0.3179 -0.715,1.04812 -2.6961,2.51763 -4.2736,3.17005 -0.2761,0.11418 -0.5495,0.24949 -0.6076,0.3007 -0.1682,0.14819 -0.1883,0.11609 -0.1827,-0.29172 l 0,0 z"
-         id="path3932-9-8"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1619.3912,757.46659 c -0.6062,-0.41192 -0.9669,-1.02287 -1.7697,-2.99792 -0.617,-1.51788 -0.6712,-1.88609 -0.2773,-1.88609 0.1132,0 1.1843,0.49877 2.3801,1.10837 1.1959,0.60961 2.537,1.2645 2.9803,1.45531 1.0352,0.44557 1.6974,0.99534 1.6438,1.36471 -0.062,0.425 -0.8271,0.86146 -1.6869,0.96181 -0.4196,0.049 -1.0038,0.14181 -1.2983,0.2063 -0.92,0.20148 -1.4463,0.14478 -1.972,-0.21249 z"
-         id="path3944-7-7"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1616.2488,749.97125 c -0.4107,-0.28764 -1.0178,-1.41521 -1.4949,-2.77628 -0.2257,-0.64417 -0.3828,-1.17122 -0.3491,-1.17122 0.1382,0 3.0941,1.4683 3.3081,1.64321 0.7351,0.60097 0.6921,1.39339 -0.1141,2.10128 -0.5101,0.44781 -0.9138,0.50852 -1.35,0.20301 l 0,0 z"
-         id="path3946-0-7"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1621.3983,761.44954 c -0.1279,-0.20199 -0.4472,-0.63193 -0.7095,-0.95543 -0.6043,-0.74534 -0.5891,-1.16074 0.042,-1.13185 0.9855,0.0451 1.6297,0.95222 1.3676,1.9257 -0.1675,0.62215 -0.3774,0.67061 -0.6998,0.16158 z"
-         id="path3954-4-9"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1623.5615,764.15431 c -1.0459,-0.32225 -1.3184,-0.90968 -0.5784,-1.24687 1.1275,-0.51372 2.1675,0.23749 1.6548,1.19536 -0.161,0.30084 -0.2529,0.30523 -1.0764,0.0515 z"
-         id="path3956-0-1"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1627.5609,770.42354 c -0.1159,-0.13156 -0.5771,-0.76572 -1.0247,-1.40925 l -0.814,-1.17004 0.3906,-0.20196 c 0.5179,-0.26782 1.0198,-0.25064 1.7,0.0582 0.9628,0.43713 1.2698,1.54474 0.6734,2.42969 -0.3607,0.53527 -0.6354,0.62236 -0.9253,0.29338 l 0,0 z"
-         id="path3958-6-6"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1629.8676,773.87412 c -0.2536,-0.47395 -0.1649,-1.19923 0.19,-1.5542 0.3817,-0.38164 0.5131,-0.404 0.7434,-0.12649 0.3458,0.41672 -0.1267,1.93959 -0.6018,1.93959 -0.1062,0 -0.2554,-0.1165 -0.3316,-0.2589 z"
-         id="path3960-0-0"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1632.105,776.99517 c -0.5518,-0.29023 -0.4211,-0.98819 0.185,-0.98819 0.2889,0 0.4105,0.35656 0.2813,0.82515 -0.094,0.34228 -0.1131,0.34885 -0.4663,0.16304 z"
-         id="path3962-2-6"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1634.1241,780.52404 c -0.6155,-0.54518 -0.8008,-0.90088 -0.6291,-1.20764 0.1793,-0.3204 1.0724,-0.31126 1.3667,0.014 0.2892,0.31955 0.2828,0.99025 -0.013,1.34613 l -0.2343,0.28204 -0.4906,-0.43453 z"
-         id="path3964-6-5"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1635.6921,782.33208 c -0.3123,-0.0859 -0.4456,-0.2291 -0.3866,-0.41509 0.04,-0.12664 0.2608,-0.34083 0.4346,-0.42193 0.2288,-0.10675 0.3663,-0.10248 0.4838,0.015 0.1284,0.12842 0.1498,0.29909 0.076,0.60898 l -0.06,0.25097 -0.1833,0.006 c -0.1009,0.003 -0.2653,-0.0165 -0.3653,-0.044 l 0,0 z"
-         id="path3966-9-7"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1638.3455,786.00236 c -0.2332,-0.0556 -0.436,-0.23067 -0.5445,-0.47003 -0.088,-0.19521 -0.087,-0.31951 0.01,-0.50296 0.2437,-0.48255 0.931,-0.40683 1.2046,0.13272 0.1075,0.21194 0.1142,0.33507 0.028,0.52413 -0.072,0.15756 -0.1965,0.25756 -0.388,0.31061 -0.1483,0.0411 -0.1562,0.0412 -0.3059,0.005 l 0,0 z"
-         id="path3968-1-5"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1641.9978,788.28729 c -0.5544,-0.0466 -1.0645,-0.18037 -1.3697,-0.35923 -0.3831,-0.22451 -0.3807,-0.5988 0.01,-0.85457 0.3057,-0.20249 0.6792,-0.23807 0.9656,-0.092 0.2038,0.10399 0.3182,0.22321 0.4315,0.44981 0.1459,0.29201 0.2432,0.88633 0.1428,0.87284 -0.023,-0.003 -0.102,-0.0107 -0.1756,-0.0169 l 0,0 z"
-         id="path3970-8-7"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1645.6719,790.51679 c -0.539,-0.0362 -0.8896,-0.1131 -1.1784,-0.25835 -0.2869,-0.14433 -0.386,-0.25713 -0.386,-0.43947 0,-0.2565 0.2945,-0.49012 0.7268,-0.57653 0.3746,-0.0749 0.8529,0.12253 1.0856,0.44805 0.1458,0.20397 0.2646,0.45152 0.3218,0.67076 l 0.05,0.19059 -0.1223,-0.005 c -0.067,-0.003 -0.2911,-0.0163 -0.4973,-0.0301 z"
-         id="path3972-2-4"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1649.19,791.53056 c -0.3513,-0.23583 -0.5371,-0.39932 -0.5969,-0.52539 -0.1151,-0.24259 0.011,-0.30402 0.6133,-0.29883 0.3876,0.003 0.4979,0.0169 0.7493,0.0924 0.3375,0.10139 0.5803,0.21634 0.6726,0.31846 0.1558,0.17241 -0.133,0.35661 -0.7711,0.49175 -0.2093,0.0443 -0.3918,0.0806 -0.4055,0.0805 -0.014,-4e-5 -0.1315,-0.0716 -0.2617,-0.15895 l 0,0 z"
-         id="path3974-8-8"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1652.0829,790.62713 c -0.395,-0.41827 -0.5834,-0.71947 -0.6178,-0.98738 -0.027,-0.21068 0.088,-0.41116 0.305,-0.53181 0.4928,-0.27389 1.3756,-0.14536 1.6631,0.24211 0.2213,0.29836 0.01,0.73555 -0.5696,1.16317 -0.176,0.13049 -0.5139,0.30633 -0.5887,0.30633 -0.01,0 -0.092,-0.0866 -0.192,-0.19242 z"
-         id="path3976-3-2"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1645.7887,783.64265 c -0.2515,-0.0547 -0.3864,-0.12195 -0.4779,-0.23834 -0.091,-0.1157 -0.088,-0.21797 0.01,-0.30822 0.091,-0.0858 0.251,-0.095 0.3911,-0.0225 0.1136,0.0588 0.2837,0.29351 0.3512,0.4848 0.055,0.15701 0.058,0.15611 -0.272,0.0843 z"
-         id="path3978-3-1"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1646.7802,782.2658 c -0.4304,-0.0628 -0.6023,-0.15131 -0.6023,-0.3099 0,-0.24286 0.4973,-0.42865 0.77,-0.28766 0.1197,0.0619 0.2531,0.28606 0.2838,0.47667 l 0.023,0.14222 -0.1953,-0.005 c -0.1075,-0.002 -0.2331,-0.0101 -0.2791,-0.0168 z"
-         id="path3980-7-9"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1646.906,781.06829 c -0.2849,-0.10168 -0.3965,-0.24675 -0.3986,-0.51818 0,-0.30126 0.2683,-0.67737 0.5556,-0.7722 0.2523,-0.0833 0.5214,0.10087 0.7004,0.47918 0.07,0.14736 0.2202,0.66543 0.2213,0.76189 4e-4,0.0355 -0.456,0.097 -0.709,0.0955 -0.1345,-7.5e-4 -0.3008,-0.0216 -0.3697,-0.0462 l 0,0 z"
-         id="path3982-9-3"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1648.0747,778.79192 c -0.1818,-0.0649 -0.2571,-0.14414 -0.2571,-0.27083 0,-0.23563 0.362,-0.60185 0.6794,-0.68731 0.4004,-0.10784 0.6235,0.12756 0.6249,0.65955 l 8e-4,0.27201 -0.2524,0.0375 c -0.3326,0.0495 -0.6379,0.0453 -0.7956,-0.0109 z"
-         id="path3984-2-2"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1651.0803,777.73457 c -0.404,-0.0534 -0.7001,-0.20087 -0.8032,-0.40009 -0.1738,-0.33608 0.1104,-0.90683 0.5972,-1.19943 0.2618,-0.15734 0.4144,-0.19117 0.5698,-0.12627 0.3072,0.12835 0.3396,0.72055 0.085,1.54587 -0.074,0.24127 -0.052,0.23227 -0.4485,0.17992 z"
-         id="path3986-1-3"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1655.4118,778.37364 c -0.3624,-0.10998 -0.6396,-0.48294 -0.5893,-0.79291 0.065,-0.40063 0.5063,-0.59937 0.9098,-0.40972 0.3286,0.15449 0.5266,0.5623 0.4155,0.85572 -0.1036,0.27328 -0.4463,0.43482 -0.736,0.34691 z"
-         id="path3988-3-4"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1655.3723,782.33991 c -0.303,-0.10814 -0.4124,-0.26196 -0.3837,-0.53957 0.045,-0.43326 0.5021,-0.96408 0.9385,-1.08925 0.1365,-0.0391 0.3047,0.039 0.3796,0.17631 0.085,0.15502 0.083,0.73351 0,1.17385 l -0.064,0.32627 -0.3712,-0.002 c -0.221,-9.4e-4 -0.4219,-0.0195 -0.4964,-0.0461 l 0,0 z"
-         id="path3990-7-3"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1655.4975,785.61081 c -1.1031,-0.24553 -1.6225,-0.53688 -1.6229,-0.91036 -4e-4,-0.34056 0.5473,-0.67539 1.0988,-0.67175 0.7363,0.005 1.0224,0.54426 0.758,1.42909 -0.053,0.17896 -0.07,0.18958 -0.2339,0.15302 z"
-         id="path3992-7-3"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#c87137;fill-opacity:1;stroke:none"
-         d="m 1654.5368,787.83972 c -0.4175,-0.0748 -0.7237,-0.17744 -0.8914,-0.29894 -0.2151,-0.15583 -0.2245,-0.30913 -0.031,-0.50036 0.1387,-0.13685 0.2941,-0.21677 0.5511,-0.28336 0.2686,-0.0696 0.5328,-0.0673 0.6784,0.006 0.1465,0.0736 0.2684,0.25288 0.2684,0.39457 0,0.12635 -0.1096,0.48773 -0.1932,0.63719 l -0.058,0.1032 -0.3248,-0.0582 z"
-         id="path3994-2-8"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#d3bc5f;fill-opacity:1;stroke:none"
-         d="m 1606.8936,823.27215 c -0.262,-0.6966 -0.5642,-1.73623 -0.518,-1.78242 0.028,-0.0282 0.2165,-0.0513 0.4185,-0.0513 0.4342,0 0.8317,0.33345 0.8317,0.69772 0,0.25349 -0.2788,0.94687 -0.4948,1.23066 -0.1285,0.16879 -0.14,0.16421 -0.2374,-0.0947 z"
-         id="path4032-0-4"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#d3bc5f;fill-opacity:1;stroke:none"
-         d="m 1605.5371,822.46758 c -0.1334,-0.24934 0,-0.59033 0.2947,-0.7475 0.177,-0.0948 0.1964,-0.0865 0.1517,0.0652 -0.028,0.0956 -0.08,0.33348 -0.1142,0.52869 -0.071,0.40078 -0.1743,0.44858 -0.3322,0.15366 z"
-         id="path4034-9-6"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3850-2-8"
-         d="m 1622.9574,824.31269 c 0,-0.67081 -0.4409,-0.96561 -1.4442,-0.96561 -0.6867,0 -1.6477,-0.94768 -2.7146,-2.67708 -0.4088,-0.66257 -1.1494,-1.70301 -1.6459,-2.31207 l -0.9027,-1.10739 -1.5319,0.49081 c -0.8426,0.26994 -2.7115,0.91885 -4.1531,1.44202 -1.4415,0.52317 -2.8872,0.95109 -3.2124,0.95094 -0.5517,-1.8e-4 -0.5915,-0.12179 -0.5915,-1.80702 0,-1.56975 0.1067,-1.96478 0.8134,-3.01144 0.4473,-0.66257 0.9894,-1.20468 1.2047,-1.20468 0.4493,0 0.6933,-1.14359 0.323,-1.51394 -0.1362,-0.13614 -1.1332,-0.39581 -2.2157,-0.57705 -1.9115,-0.32005 -1.9749,-0.35538 -2.2006,-1.22665 -0.3309,-1.27694 -0.1467,-1.53246 1.4552,-2.0183 0.7827,-0.23738 2.4413,-0.94093 3.6857,-1.56345 l 2.2626,-1.13183 1.1516,-2.65381 c 0.6335,-1.4596 1.1011,-2.70444 1.0392,-2.76631 -0.062,-0.0619 0.1246,-0.34956 0.4143,-0.6393 0.3287,-0.3287 0.4662,-0.71767 0.3657,-1.03435 -0.089,-0.27914 0.087,-1.08614 0.3897,-1.79332 0.8314,-1.94059 1.618,-4.90152 1.618,-6.09029 0,-1.49936 -0.3311,-0.93769 -1.1772,1.99727 -0.4039,1.4008 -1.5992,4.71368 -2.6564,7.36195 -1.8523,4.64011 -1.9596,4.83331 -2.9522,5.31806 -1.3864,0.67706 -2.3945,0.35939 -5.9575,-1.87729 -4.2609,-2.67479 -7.6074,-6.33452 -9.1008,-9.95258 -0.9842,-2.38445 -1.1899,-6.59625 -0.5097,-10.43722 0.7813,-4.41188 4.8497,-15.66034 7.7705,-21.48416 0.8276,-1.65023 2.0861,-4.4606 2.7966,-6.24527 1.2028,-3.02128 3.7554,-10.61569 3.7554,-11.17292 3.1043,-0.46618 2.6485,-1.57829 4.0208,-0.65588 0.2897,1.36506 0.5442,3.43526 0.1632,4.0168 -0.6201,0.94637 -0.5407,1.14408 0.1855,0.46187 0.3422,-0.32149 0.7036,-0.50311 0.8031,-0.40361 0.3374,0.33746 0.183,2.11114 -0.2358,2.70919 -0.2293,0.32724 -0.3042,0.59499 -0.1666,0.59499 0.1377,0 0.4239,-0.2615 0.6361,-0.58111 0.2122,-0.31961 0.5092,-0.50489 0.6599,-0.41173 0.1508,0.0932 0.5505,1.10758 0.8883,2.25428 0.8432,2.86214 2.645,6.55866 4.2133,8.64373 0.7198,0.95705 2.6183,3.66759 4.2188,6.02342 10.0175,14.74526 12.855,18.69855 14.1758,19.75023 2.2753,1.81175 4.9699,3.45639 7.4728,4.56085 2.0374,0.89909 2.6458,1.04875 4.2034,1.03409 1.7973,-0.0169 1.8345,-0.003 2.8453,1.08513 1.8537,1.99511 2.5483,2.61595 2.9264,2.61595 0.6965,0 0.398,-1.08162 -0.4282,-1.55177 -0.4408,-0.25082 -0.8022,-0.6121 -0.8031,-0.80284 -7e-4,-0.19074 -0.2951,-0.64019 -0.6537,-0.99879 -0.3586,-0.35859 -0.5554,-0.71164 -0.4374,-0.78456 0.118,-0.0729 0.1586,-0.42484 0.09,-0.78204 -0.081,-0.42382 0.068,-0.8414 0.4284,-1.20193 0.8011,-0.80113 1.8462,-2.98417 2.0122,-4.20296 0.079,-0.57897 0.2839,-2.05688 0.4559,-3.28424 0.5187,-3.70282 -0.2302,-6.9783 -1.6845,-7.36786 -3.4109,-0.91365 -7.8259,1.71532 -9.1297,5.43647 -0.3228,0.92103 -0.7069,1.69237 -0.8537,1.7141 -0.5816,0.0861 -1.0027,-4.37178 -0.7337,-7.76692 0.2966,-3.74344 0.5605,-4.35155 2.9819,-6.87088 2.1501,-2.2372 3.2965,-2.7618 4.1563,-1.90198 0.3105,0.31049 0.3504,0.55046 0.153,0.91938 -0.3415,0.6381 -0.3489,1.95508 -0.01,1.74551 0.1415,-0.0875 0.3374,-0.58596 0.4353,-1.10775 0.2988,-1.59268 1.9159,-1.8922 3.2924,-0.60981 0.5404,0.50354 0.6064,0.75685 0.4728,1.81739 l -0.1551,1.2323 0.539,-1.01742 c 0.6417,-1.21123 1.1201,-1.45067 1.9298,-0.81379 0.6229,0.49002 0.6245,0.50445 0.1431,1.29722 -0.2678,0.44094 -0.4837,0.9824 -0.4798,1.20326 0.01,0.53675 1.3287,-0.95661 1.3287,-1.50403 0,-0.51205 2.187,0.63162 3.7246,1.94773 1.058,0.90563 3.1543,3.96447 4.3743,6.38284 0.9385,1.86035 2.061,5.20188 2.0694,6.16062 0,0.43987 0.078,1.97067 0.1652,3.40176 0.1623,2.66912 -0.3001,6.73924 -0.6932,6.10311 -0.1127,-0.18237 -0.149,-0.54559 -0.081,-0.80715 0.1822,-0.69672 -0.4695,-0.9805 -0.8999,-0.39188 -0.5492,0.75106 -0.4461,1.87567 0.2119,2.31258 0.5693,0.37801 0.5631,0.39702 -1.0039,3.10023 -0.8672,1.49593 -1.7273,2.72486 -1.9114,2.73094 -0.184,0.006 -0.3346,0.26003 -0.3346,0.56433 0,0.34708 -1.0725,1.62177 -2.8779,3.42053 l -2.8778,2.86727 -5.7557,2.98362 c -3.1657,1.64099 -6.4864,3.22771 -7.3795,3.52605 -1.7588,0.58754 -4.7615,1.14263 -5.2816,0.97636 -0.1775,-0.0567 -2.3068,-0.17659 -4.7317,-0.26634 -5.0331,-0.18627 -5.237,-0.26936 -5.5106,-2.24554 -0.094,-0.68242 -0.3376,-2.08405 -0.5404,-3.11473 -0.2028,-1.03067 -0.5565,-3.50027 -0.786,-5.488 -0.6413,-5.55417 -2.6176,-13.39799 -3.2231,-12.79245 -0.077,0.0771 0.2782,2.65571 0.7897,5.73016 1.1842,7.118 1.7234,10.96998 1.882,13.44408 0.069,1.08054 0.2386,2.10452 0.3764,2.27551 0.1378,0.17099 0.3349,0.82226 0.438,1.44725 0.103,0.625 0.2991,1.20539 0.4356,1.28978 0.1366,0.0844 0.4882,0.62377 0.7815,1.19864 0.2933,0.57487 0.9004,1.46336 1.3491,1.97441 0.4487,0.51105 0.8853,1.35768 0.9703,1.8814 0.1335,0.82277 0.082,0.9522 -0.3759,0.9522 -0.8045,0 -2.2344,-0.55783 -2.0781,-0.8107 0.076,-0.12272 0.015,-0.2988 -0.1342,-0.39128 -0.1497,-0.0925 -0.2721,-0.0519 -0.2721,0.0903 0,0.14214 -0.2409,0.19544 -0.5354,0.11843 -0.2945,-0.077 -0.5354,-0.22584 -0.5354,-0.33074 0,-0.32707 -2.5712,-1.41272 -3.1032,-1.31027 -0.3703,0.0713 -0.5529,0.418 -0.6841,1.29885 -0.1697,1.14016 -1.7574,5.61874 -1.9919,5.61874 -0.061,0 -0.1104,-0.28828 -0.1104,-0.64063 z m 2.8648,-14.7801 c 0.1222,-0.36683 -0.6384,-1.35112 -0.8672,-1.12225 -0.2912,0.29116 0.125,1.60235 0.4719,1.48672 0.1694,-0.0565 0.3473,-0.22048 0.3953,-0.36447 z m -11.1894,-3.76548 c 0.8463,-1.27774 0.9107,-1.78298 0.1465,-1.14868 -0.5572,0.46243 -1.5438,2.39849 -1.2223,2.39849 0.1364,0 0.6205,-0.56241 1.0758,-1.24981 z m 9.6591,-2.0454 c 0,-1.34316 -0.3989,-2.18006 -0.6807,-1.4458 -0.2425,0.63183 0.1218,2.91569 0.4342,2.72259 0.1378,-0.0852 0.2487,-0.65972 0.2465,-1.27679 z m -7.3731,-3.18933 c 0.4889,-0.69802 0.5545,-1.63721 0.1039,-1.48699 -0.3815,0.12716 -1.0943,2.08197 -0.7591,2.08197 0.1312,0 0.426,-0.26774 0.6552,-0.59498 z m 32.274,-0.72613 c 0,-0.98362 -0.4337,-2.15909 -0.7965,-2.15909 -0.357,0 -0.355,1.75847 0,2.42697 0.4073,0.76114 0.7937,0.63075 0.7937,-0.26788 z m -25.1645,-0.9702 c 0,-0.65389 -0.1205,-1.18889 -0.2677,-1.18889 -0.1473,0 -0.2678,0.60946 -0.2678,1.35434 0,0.83472 0.1028,1.29086 0.2678,1.18889 0.1472,-0.091 0.2677,-0.70046 0.2677,-1.35434 z m 17.284,0.8307 c 0.4751,-0.72511 0.3197,-1.27747 -0.2932,-1.04228 -0.2202,0.0845 -0.393,0.49133 -0.393,0.92529 0,0.94572 0.1288,0.96767 0.6862,0.11699 z m 17.7856,-2.14402 c 0,-0.47684 -0.93,-1.01277 -1.5502,-0.89332 -0.3936,0.0758 -0.3747,0.1637 0.1478,0.68619 0.6825,0.68243 1.4024,0.78876 1.4024,0.20713 z m -22.994,-1.02948 c 0.1056,-0.39462 0.09,-0.78025 -0.034,-0.85698 -0.2734,-0.169 -0.4001,0.0359 -0.6389,1.03319 -0.241,1.00635 0.4015,0.83807 0.6727,-0.17621 z m -17.5707,-1.43561 c 0.1012,-0.67475 0.2474,-1.39213 0.3249,-1.59417 0.078,-0.20203 0.023,-0.36733 -0.1201,-0.36733 -0.2801,0 -1.1403,2.77369 -1.1262,3.63161 0.016,0.96149 0.7175,-0.31038 0.9214,-1.67011 z m 5.4634,-0.42218 c 0.032,-1.02056 -0.3136,-1.35016 -0.609,-0.58045 -0.2221,0.57881 -0.2046,2.10297 0.031,2.70021 0.1605,0.40685 0.2235,0.35358 0.3699,-0.31274 0.097,-0.44171 0.1907,-1.25488 0.2081,-1.80702 z m 18.4499,2.15504 c 0.3842,-0.38413 0.4283,-1.28499 0.063,-1.28499 -0.2816,0 -0.8126,0.8632 -0.8126,1.32093 0,0.37879 0.3518,0.36193 0.7496,-0.0359 z m 5.9431,-2.37813 c 0,-1.183 -0.091,-1.59848 -0.3346,-1.51863 -0.6496,0.2134 -0.4536,3.14718 0.2102,3.14718 0.068,0 0.1244,-0.73285 0.1244,-1.62855 z m -50.7088,-0.40113 c 0.1938,-1.03255 -0.042,-1.52631 -0.4337,-0.90735 -0.3308,0.52302 -0.3307,2.2109 10e-5,2.00646 0.1415,-0.0875 0.3366,-0.58207 0.4336,-1.09911 z m 39.9738,0.40239 c 0.6275,-0.84882 0.6035,-1.22565 -0.062,-0.9703 -0.406,0.15583 -1.0917,1.79447 -0.7508,1.79447 0.1119,0 0.4776,-0.37088 0.8128,-0.82417 z m 6.7416,-1.23532 c 0.5956,-1.38958 0.6009,-1.42071 0.2416,-1.42071 -0.4022,0 -1.3325,1.64507 -1.3336,2.35824 0,0.89194 0.4878,0.47185 1.092,-0.93753 z m 6.1351,0.98026 c 0,-0.32049 -0.7551,-0.66427 -0.9753,-0.44404 -0.2345,0.23443 0.1632,0.72015 0.5895,0.72015 0.2122,0 0.3858,-0.12425 0.3858,-0.27611 z m -55.1477,-2.28291 c 0,-0.38854 -0.1159,-0.61345 -0.2677,-0.51962 -0.1473,0.091 -0.2677,0.39928 -0.2677,0.68507 0,0.28579 0.1204,0.51961 0.2677,0.51961 0.1472,0 0.2677,-0.30828 0.2677,-0.68506 z m 44.296,-0.37203 c 1.0279,-1.48322 0.708,-2.02519 -0.3408,-0.57739 -0.4645,0.64127 -0.7794,1.27138 -0.6998,1.40022 0.2151,0.34804 0.2463,0.32333 1.0406,-0.82283 z m -41.619,-2.02038 c 0,-1.12496 0.035,-1.17558 0.8701,-1.26327 l 0.87,-0.0914 -1.1463,-0.37212 c -0.8741,-0.28375 -1.2206,-0.29788 -1.459,-0.0595 -0.2384,0.2384 -0.2092,0.31265 0.1231,0.31265 0.3696,0 0.412,0.22989 0.2795,1.51399 -0.1145,1.10945 -0.074,1.46289 0.1532,1.32274 0.1702,-0.10519 0.3094,-0.71862 0.3094,-1.36318 z m 9.6375,-10e-4 c -0.3587,-0.43216 -2.1417,-0.56217 -2.1417,-0.15616 0,0.33863 0.507,0.51165 1.5721,0.53659 0.7732,0.0181 0.855,-0.0365 0.5696,-0.38043 z m 4.9801,-1.91691 c 0.2035,-0.85981 0.4323,-3.0086 0.5084,-4.7751 l 0.1385,-3.21181 0.7336,-0.22988 c 0.4035,-0.12644 2.2596,-0.24721 4.1246,-0.26839 3.0822,-0.035 4.0446,-0.18803 3.6519,-0.58068 -0.178,-0.17798 -6.2086,-2.49984 -7.3934,-2.84657 -0.4873,-0.1426 -1.0295,-0.20485 -1.2047,-0.13831 -0.3189,0.12103 0.4414,0.48795 2.8269,1.36416 0.6994,0.2569 1.2716,0.57954 1.2716,0.71699 0,0.30873 -1.3715,0.93846 -2.8467,1.30709 -0.6086,0.15209 -1.2483,0.4473 -1.4215,0.65604 -0.1733,0.20873 -0.3865,1.48368 -0.474,2.83321 -0.1127,1.73976 -0.2678,2.49546 -0.5329,2.59721 -0.8383,0.32169 -2.6912,-2.3764 -3.3031,-4.80988 -0.4274,-1.69988 -0.9625,-1.65803 -2.5673,0.20078 -1.5407,1.78454 -1.9722,1.86855 -1.9722,0.38396 0,-1.51017 -0.3368,-2.00739 -2.1568,-3.18369 -1.159,-0.74912 -1.4945,-1.09341 -1.2524,-1.28542 0.5371,-0.42606 2.0843,-0.81879 3.9446,-1.00129 3.904,-0.38299 4.6742,-0.96256 4.9058,-3.69158 0.09,-1.06165 0.5334,-3.90348 0.9853,-6.31517 0.4518,-2.41169 0.774,-4.43245 0.7159,-4.49057 -0.058,-0.0581 -0.2486,0.0665 -0.4233,0.27696 -0.3059,0.36869 -1.9871,7.71616 -2.3976,10.47924 -0.11,0.73993 -0.2987,1.50514 -0.4194,1.70048 -0.3624,0.58635 -1.8473,1.07189 -3.8001,1.2426 -1.5483,0.13535 -5.4578,0.91736 -6.7579,1.35175 -0.6849,0.22886 0.191,0.8498 2.2668,1.60687 1.1035,0.40249 2.1811,0.98121 2.3947,1.28606 0.503,0.71815 0.4937,3.53328 -0.019,5.65541 -0.2133,0.88343 -0.3897,2.11823 -0.392,2.744 0,0.95789 -0.089,1.13776 -0.5396,1.13776 -0.2945,0 -0.5354,0.12046 -0.5354,0.2677 0,0.14724 0.4457,0.26771 0.9905,0.26771 0.7593,0 0.917,-0.0735 0.6756,-0.31488 -0.1839,-0.18392 -0.2186,-0.43443 -0.083,-0.60234 0.1273,-0.1581 0.8576,-1.50737 1.623,-2.99837 1.3679,-2.66471 3.4185,-5.15817 3.9646,-4.82068 0.1429,0.0883 0.3934,0.69135 0.5568,1.34012 0.1633,0.64877 0.7119,1.67624 1.2191,2.28327 0.6314,0.75578 1.0219,1.58791 1.2385,2.6398 0.7729,3.7521 1.1034,3.98276 1.7559,1.22544 z m 55.6774,0.82421 c 0.1961,-1.04551 0.055,-1.34727 -0.4724,-1.01385 -0.1939,0.12242 -0.8344,0.22483 -1.4233,0.22759 -1.4487,0.007 -1.5175,0.77103 -0.08,0.89043 0.7041,0.0585 1.0388,0.2339 1.157,0.60623 0.2322,0.73168 0.6097,0.40419 0.8188,-0.7104 z m -73.1405,0.12823 c 0.1978,-0.98929 -0.096,-1.65365 -0.3943,-0.89171 -0.2831,0.72286 -0.2867,1.72224 -0.01,1.72224 0.1288,0 0.309,-0.37378 0.4004,-0.83062 z m 68.7016,-0.78235 c 0,-0.32576 -1.1424,-0.79649 -1.9329,-0.79649 -0.5425,0 -0.5448,0.0162 -0.075,0.53541 0.5003,0.55283 2.0078,0.74886 2.0078,0.26108 z m -26.6773,-0.67118 c -0.083,-0.21614 -0.3228,-0.39299 -0.5331,-0.39299 -0.3011,0 -0.3206,0.1153 -0.092,0.54291 0.3222,0.60204 0.8637,0.47215 0.6249,-0.14992 z m 31.0406,-2.41742 c 0.03,-1.04758 -0.267,-1.48014 -0.6259,-0.9126 -0.2902,0.45896 -0.333,1.62488 -0.083,2.27517 0.1629,0.42446 0.1897,0.42427 0.4288,-0.003 0.1402,-0.25064 0.2665,-0.86247 0.2806,-1.35963 z m -69.9946,0.80715 c 0.4188,-0.9192 0.4045,-2.07085 -0.024,-1.92919 -0.3368,0.11137 -0.7742,2.61106 -0.4568,2.61106 0.094,0 0.3099,-0.30684 0.4808,-0.68187 z m -2.9018,-0.40476 c 0,-0.30317 -0.1205,-0.47676 -0.2677,-0.38576 -0.1473,0.091 -0.2677,0.33904 -0.2677,0.55121 0,0.21217 0.1204,0.38576 0.2677,0.38576 0.1472,0 0.2677,-0.24804 0.2677,-0.55121 z m 71.696,0.0827 c -0.131,-0.69075 -1.3486,-0.74054 -1.9468,-0.0796 -0.4932,0.54496 -0.4888,0.54808 0.7698,0.54808 1.0609,0 1.2514,-0.0758 1.177,-0.46848 z m -3.051,0.0383 c 0.7796,-0.29915 0.4345,-0.64063 -0.6473,-0.64063 -1.029,0 -1.434,0.34428 -0.7362,0.62583 0.4839,0.19526 0.9016,0.19972 1.3835,0.0148 z m -68.3183,-1.37683 c 0.1501,-0.57864 -0.021,-1.13776 -0.349,-1.13776 -0.135,0 -0.2454,0.36141 -0.2454,0.80312 0,0.87041 0.3974,1.09416 0.5944,0.33464 z m 39.0263,0.15493 c 0,-0.44447 -0.8177,-1.29269 -1.2462,-1.29269 -0.4706,0 -0.4549,0.28099 0.057,1.01126 0.4419,0.63091 1.1895,0.80779 1.1895,0.28143 z m -27.8929,-0.77735 c -0.053,-0.15828 -0.1833,-0.27875 -0.29,-0.26771 -0.1068,0.011 -0.4652,0.0285 -0.7965,0.0389 -0.5747,0.018 -0.5778,0.0294 -0.067,0.24889 0.758,0.32574 1.2657,0.3169 1.1534,-0.0201 z m -6.4404,-0.84997 c -0.114,-0.3426 -3.0809,-0.89027 -3.3524,-0.61882 -0.285,0.28497 0.2327,0.53027 1.4895,0.70584 1.9419,0.27128 1.9815,0.26943 1.8629,-0.087 z m 1.673,0.0669 c -0.5238,-0.3385 -1.0709,-0.3385 -1.0709,0 0,0.14723 0.3313,0.26586 0.7362,0.26361 0.5737,-0.003 0.6476,-0.0614 0.3347,-0.26361 z m 65.9898,-1.07083 c 0,-0.4908 -0.1506,-0.94255 -0.3346,-1.00391 -0.232,-0.0773 -0.3346,0.23053 -0.3346,1.00391 0,0.77337 0.1026,1.08124 0.3346,1.0039 0.184,-0.0614 0.3346,-0.51311 0.3346,-1.0039 z m -42.6993,-0.14328 c 0,-0.55886 -0.4669,-0.48493 -0.7937,0.12567 -0.4023,0.75169 -0.3444,0.87558 0.2583,0.55302 0.2945,-0.1576 0.5354,-0.46301 0.5354,-0.67869 z m -29.1765,-0.59292 c 0,-0.25767 0.069,-0.76966 0.1486,-1.13776 0.1053,-0.4867 0.031,-0.42354 -0.2714,0.23152 -0.4843,1.04814 -0.5196,1.37473 -0.1485,1.37473 0.1472,0 0.2693,-0.21082 0.2713,-0.46849 z m 2.6735,-1.51017 c 0,-1.43955 -0.426,-0.92858 -0.6453,0.77397 -0.1588,1.23382 -0.1404,1.29788 0.2365,0.81889 0.2248,-0.28582 0.4088,-1.0026 0.4088,-1.59286 z m 33.1957,1.63666 c 0,-0.45217 -0.7655,-1.53196 -1.086,-1.53196 -0.3763,0 -0.3064,0.47207 0.1798,1.21411 0.4673,0.71324 0.9062,0.86717 0.9062,0.31785 z m -3.7479,-2.62101 c 0,-0.41556 -0.5039,-0.28101 -1.0709,0.28593 -0.818,0.81802 -0.6371,1.17974 0.2678,0.53542 0.4417,-0.31453 0.8031,-0.68414 0.8031,-0.82135 z m -18.2041,-0.51719 c 0,-0.14724 -0.512,-0.26586 -1.1378,-0.26361 -0.8332,0.003 -1.0303,0.0736 -0.7362,0.26361 0.5286,0.3416 1.874,0.3416 1.874,0 z m 3.2125,-0.64063 c 0,-0.38282 -0.5538,-0.69791 -1.2266,-0.69791 -0.4686,0 -0.5043,0.70823 -0.045,0.89354 0.6578,0.26544 1.2716,0.17102 1.2716,-0.19563 z m 16.0624,-0.13283 c 0,-0.39915 -1.0127,-1.51407 -1.203,-1.3245 -0.2117,0.21081 0.6241,1.56255 0.9661,1.56255 0.1303,0 0.2369,-0.10713 0.2369,-0.23805 z m -18.8867,-0.53499 c -0.3932,-0.36735 -1.4591,-0.63067 -1.4591,-0.36045 0,0.40878 0.3277,0.59807 1.0352,0.59807 0.4074,0 0.5766,-0.0949 0.4239,-0.23762 z m -2.1283,-0.29779 c 0.1011,-0.16362 -0.2831,-0.26039 -0.9881,-0.24889 -0.8901,0.0145 -1.0313,0.0714 -0.6182,0.24889 0.7409,0.31836 1.4095,0.31836 1.6063,0 z m 15.2398,-0.67502 c 0.6077,-0.45983 0.3299,-0.90602 -0.312,-0.50107 -0.4882,0.3079 -0.7753,0.91316 -0.427,0.89987 0.1227,-0.005 0.4552,-0.18415 0.739,-0.3988 z m -11.1296,-8.19515 c 0.6202,-4.43688 1.0722,-8.12246 1.0045,-8.19018 -0.4015,-0.40149 -2.2972,9.97194 -2.494,13.64708 -0.2637,4.92446 0.3555,2.65622 1.4895,-5.4569 z m 44.4787,6.98041 c 0,-0.30316 -0.1205,-0.47676 -0.2677,-0.38576 -0.1473,0.091 -0.2677,0.33905 -0.2677,0.55122 0,0.21217 0.1204,0.38576 0.2677,0.38576 0.1472,0 0.2677,-0.24805 0.2677,-0.55122 z m -55.5713,-0.21636 c 0.1624,-0.26282 -2.179,-0.64862 -2.5489,-0.41998 -0.132,0.0816 -0.24,0.26169 -0.24,0.40024 0,0.31655 2.5941,0.33492 2.7889,0.0197 z m 23.5636,-0.19098 c 0.6011,-0.6011 0.2169,-1.05843 -0.4115,-0.48978 -0.2799,0.25327 -0.5088,0.56229 -0.5088,0.68671 0,0.36111 0.4609,0.26249 0.9203,-0.19693 z m -20.463,-0.11227 c -0.5293,-0.34204 -2.1416,-0.34204 -2.1416,0 0,0.14724 0.5722,0.26586 1.2716,0.26361 0.9197,-0.003 1.1605,-0.0759 0.87,-0.26361 z m 2.9448,-0.26771 c 0,-0.14724 -0.3012,-0.26771 -0.6693,-0.26771 -0.3681,0 -0.6692,0.12047 -0.6692,0.26771 0,0.14724 0.3011,0.26771 0.6692,0.26771 0.3681,0 0.6693,-0.12047 0.6693,-0.26771 z m 11.5237,-0.29064 c 0.1643,-0.30708 0.219,-0.63818 0.1214,-0.73577 -0.1816,-0.18161 -0.9368,0.68706 -0.9368,1.07758 0,0.4254 0.5219,0.20663 0.8154,-0.34181 z m 8.0189,0.19828 c 0,-0.19804 -0.2409,-0.57811 -0.5354,-0.84461 -0.6019,-0.54473 -0.7199,-0.15428 -0.2033,0.6729 0.3826,0.61261 0.7387,0.69539 0.7387,0.17171 z m 28.3341,-1.12492 c 0.196,-0.61955 0.1989,-1.89573 -0.3759,-0.7236 -0.089,0.40491 -0.2077,0.88678 -0.2644,1.07083 -0.1914,0.62141 0.327,0.34023 0.6403,-0.34723 z m 2.519,0.006 c 0.146,-0.76341 -0.1922,-1.15182 -0.4402,-0.50559 -0.2346,0.61133 -0.1986,1.18125 0.075,1.18125 0.13,0 0.2946,-0.30404 0.3656,-0.67566 z m -57.7378,-1.64741 c 0.102,-0.88477 0.067,-1.16462 -0.1108,-0.88941 -0.1429,0.22085 -0.3379,1.0039 -0.4335,1.74009 -0.1293,0.99603 -0.101,1.22362 0.1109,0.88941 0.1565,-0.24702 0.3516,-1.03006 0.4334,-1.74009 z m 21.751,0.0825 c 0.101,-0.50918 -0.5042,-0.58108 -0.97,-0.11526 -0.1767,0.17669 -0.3212,0.55279 -0.3212,0.83578 0,0.47341 0.048,0.48262 0.6023,0.11525 0.3313,-0.2196 0.6413,-0.5957 0.6889,-0.83577 z m 29.0619,0.0804 c 0.5227,-0.88477 0.4147,-1.32465 -0.1999,-0.81456 -0.3939,0.32684 -0.7606,1.63621 -0.4583,1.63621 0.095,0 0.3913,-0.36975 0.6582,-0.82165 z m 2.3031,-0.71767 c 0,-0.57368 -0.061,-0.64755 -0.2636,-0.33463 -0.3385,0.52378 -0.3385,1.07083 0,1.07083 0.1472,0 0.2658,-0.33129 0.2636,-0.7362 z m -28.6406,-0.17113 c 0,-0.50346 -0.9789,-1.68162 -1.2077,-1.45365 -0.2081,0.20717 0.6764,1.82555 0.9977,1.82555 0.1155,0 0.21,-0.16735 0.21,-0.3719 z m 29.5665,-1.82932 c 0.2292,-0.32724 0.4167,-0.74888 0.4167,-0.93698 0,-0.6384 -0.4345,-0.34563 -0.8831,0.59499 -0.4963,1.04076 -0.1837,1.27003 0.4664,0.34199 z m -31.8994,-1.28314 c -0.1491,-0.57014 -0.5562,-0.94387 -0.7821,-0.71797 -0.1607,0.16064 0.4891,1.25755 0.7449,1.25755 0.098,0 0.1148,-0.24281 0.037,-0.53958 z m -2.4625,-3.57165 c -0.6958,-0.69575 -0.7457,-0.17209 -0.09,0.94619 0.4421,0.75421 0.4736,0.76584 0.5588,0.20595 0.052,-0.34189 -0.1465,-0.83019 -0.4685,-1.15214 z m -6.5019,-6.11519 c 0.1767,-0.17669 0.3173,-0.56821 0.3124,-0.87005 -0.01,-0.52604 -0.031,-0.52259 -0.5355,0.0832 -0.7759,0.93137 -0.5871,1.5971 0.2231,0.78685 z m -0.9002,-3.34451 c 0.6767,-0.99577 0.7222,-1.47259 0.09,-0.944 -0.544,0.45493 -1.3355,1.93269 -1.0352,1.93269 0.1503,0 0.5755,-0.44491 0.945,-0.98869 z m 3.259,-0.54252 c -0.2296,-0.22879 -1.2344,0.87336 -1.2344,1.354 0,0.16439 0.3249,-0.026 0.722,-0.42311 0.3971,-0.3971 0.6277,-0.816 0.5124,-0.93089 z m -3.6632,-2.11895 c 0.5795,-0.73677 0.73,-1.43629 0.309,-1.43629 -0.2374,0 -1.3604,1.62825 -1.3604,1.97248 0,0.39261 0.5357,0.11941 1.0514,-0.53619 z"
-         style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-         sodipodi:nodetypes="sssscsscsssssssscscssssssssssssccsssssssssssssssscscssssssssssscssscssssssscsscssscsscsssssssssssscssssscsssssscscssccscccssccsscccsscscssssccsccccssccscsscccsccccssccsssssssscsccscsssccssccsscsscssscscccssssssscscsscccscsssscssssssssssssssssssssssscsssscscssscscssscccccsccsscscsscscssscccssccssssssssscssccsssssscscccccccssccsscssssssscssccssccsscscssscsssssssssssssssssscssccscscsccssscsscssccsccccsccsscsssssssssscssscssccssccsssssssssssssccsscsssssssssssscssccsssss" />
-    </g>
-    <g
-       id="g4733"
-       transform="translate(-152.23147,-61.270137)">
-      <path
-         inkscape:connector-curvature="0"
-         id="path4665"
-         d="m 1718.4941,750.49226 c -0.8739,0.55187 -0.294,1.8708 -0.2188,2.6875 0.023,0.99485 0.6059,-0.27942 0.8438,-0.6875 0.3067,-0.6146 0.3663,-2.0862 -0.625,-2 z"
-         style="fill:#000000;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4659"
-         d="m 1720.0878,748.11726 c -0.6787,0.41742 -0.3771,1.45611 -0.5312,2.125 0.4021,0.22385 0.3341,0.31032 0.1562,0.625 -0.1047,0.66409 -0.1323,1.67683 0.5625,2 0.7647,-0.36562 0.338,-1.51377 0.1875,-2.15625 -0.076,-0.30403 0.483,-0.67843 0.3438,-1.15625 -0.028,-0.4912 0.01,-1.54209 -0.7188,-1.4375 z"
-         style="fill:#000000;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path4651"
-         d="m 1744.0253,750.83601 1.6875,-4.34375 c -0.1787,0.32767 -0.4052,0.98615 -0.5312,1.0625 -1.0348,0.62709 -8.2548,0.71715 -9.8125,0.8125 -1.5577,0.0954 -10.2088,1.26654 -12.5313,1.03125 -4.0933,-5.56998 -4.2982,-10.56406 -5.6562,-11.25 -0.053,2.70812 1.1547,5.58037 0.062,8.1875 -0.487,1.07693 -1.7405,1.25412 -2.7813,1.03125 -2.4908,-0.13896 -5.0169,0.12951 -7.4687,-0.0312 -0.4419,-0.49658 -1.7336,-0.41662 -1.3438,0.46875 1.7655,2.8582 5.4669,3.34385 7.6875,5.6875 0.1292,0.40278 -0.7262,0.67914 -0.9687,1.03125 -1.3645,1.28693 -3.2433,2.2503 -4.125,3.9375 -0.2053,0.86706 0.8968,0.87313 1.4687,0.8125 2.2367,0.10039 4.0785,-1.74875 6.2813,-1.78125 0.7377,0.33433 0.2197,1.37881 0.4687,2 0.2274,1.90337 -0.5071,3.9553 0.1875,5.78125 0.5756,0.73814 1.7659,-0.10878 1.625,-0.90625 0.5574,-2.85993 2.4281,-5.17839 3.4063,-7.84375 -0.031,-1.83842 1.026,-3.76274 2.9062,-4.1875 2.6476,-0.67496 5.5217,-0.23639 8.2188,-0.875 3.6977,-0.57184 7.4953,-1.39453 11.2187,-0.625 z m -25.1562,-6.71875 c 1.2073,2.04533 1.3508,4.87088 3.4687,6.28125 1.0214,0.49416 2.2899,-0.1608 3.4063,-0.0937 6.3134,-0.62843 12.6522,-0.96816 18.9687,-1.3125 -1.295,0.73347 -2.9367,0.92126 -4.3125,0.375 -6.2506,0.60425 -12.458,1.79178 -18.75,2 -0.998,2.99535 -0.9831,6.52948 -3.2187,8.96875 -0.2807,0.38568 -0.762,0.62823 -0.75,-0.0312 -0.3064,-1.50928 0.1619,-3.12543 -0.4688,-4.5625 -1.6011,0.6531 -3.3645,1.50868 -5.125,1.3125 -0.1847,-0.45994 0.4032,-1.10027 0.8125,-1.3125 0.9824,-0.53008 2.6048,-1.68656 1.75,-2.96875 -1.3945,-1.58508 -3.6217,-2.15747 -5.0625,-3.65625 -0.2853,-0.59529 0.8282,-0.69527 1.1875,-0.8125 1.7058,-0.21234 3.5657,-0.27504 5.125,0.5 1.3728,0.436 2.2359,-1.11437 2.4375,-2.25 0.2227,-0.77203 0.33,-1.80702 0.5313,-2.4375 z"
-         style="fill:#000000;fill-opacity:1;stroke:none" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path3938-9-8"
-         d="m 1717.6031,761.01391 c -0.2769,-0.27689 -0.3608,-0.86815 -0.4245,-2.98922 -0.041,-1.35444 -0.088,-1.79833 -0.1921,-1.79833 -0.024,0 -0.1668,0.0545 -0.3172,0.12118 -0.8431,0.37358 -2.4188,0.86602 -3.2513,1.01607 -1.7398,0.31356 -2.1828,-0.19263 -1.2608,-1.44061 0.1119,-0.15158 0.2961,-0.32796 0.416,-0.39841 0.9449,-0.55523 1.6714,-1.15929 1.858,-1.54481 0.1279,-0.26422 0.1237,-0.59663 -0.011,-0.86626 -0.1488,-0.29791 -0.608,-0.70083 -1.3197,-1.15794 -0.3345,-0.21487 -0.9878,-0.63558 -1.4518,-0.93491 -0.464,-0.29932 -1.0514,-0.67199 -1.3055,-0.82815 -0.8378,-0.51497 -1.2844,-1.05629 -1.1664,-1.41384 0.1955,-0.59228 1.4067,-0.92587 3.3688,-0.92782 1.5078,-0.002 2.4125,0.12038 2.9544,0.39797 0.4529,0.23204 0.7639,0.29596 1.0984,0.2258 0.8274,-0.17356 1.2665,-1.04914 1.6896,-3.36951 0.1893,-1.03803 0.318,-1.51891 0.4321,-1.6136 0.068,-0.0561 0.094,-0.0451 0.2017,0.0855 0.2076,0.25072 0.9255,1.81788 1.3721,2.99515 0.6254,1.64894 0.9216,2.23607 1.4355,2.84551 0.1922,0.22786 0.5909,0.55884 0.8895,0.73835 l 0.1656,0.0996 1.0412,-0.1133 c 4.4851,-0.48808 9.8443,-0.8927 16.8711,-1.27376 1.2104,-0.0656 2.4091,-0.14066 2.6639,-0.16671 0.6113,-0.0625 1.5438,-0.0604 1.7283,0.004 0.6091,0.21234 -0.4314,0.89363 -1.8366,1.20261 -0.4753,0.10451 -1.508,0.14526 -1.9222,0.0758 -0.1792,-0.03 -0.4577,-0.10013 -0.619,-0.15579 l -0.2933,-0.1012 -1.0318,0.10618 c -1.2942,0.13319 -2.9839,0.33943 -6.2138,0.75847 -5.364,0.69591 -7.4749,0.91492 -10.1966,1.05794 l -1.0866,0.0571 -0.079,0.26028 c -0.044,0.14316 -0.1692,0.68621 -0.2793,1.20678 -0.8359,3.95462 -1.4466,5.66741 -2.4905,6.9853 -0.4224,0.53315 -0.9879,0.98365 -1.2402,0.98782 -0.034,5.7e-4 -0.1232,-0.0593 -0.197,-0.13314 z m 1.235,-8.75291 c 0.206,-0.52975 0.1178,-1.3219 -0.1569,-1.40909 -0.1776,-0.0564 -0.2488,0.0863 -0.2675,0.53586 -0.016,0.37758 0.063,1.2067 0.1245,1.30877 0.041,0.0684 0.1854,-0.14118 0.2999,-0.43554 z m 1.471,0.002 c 0.036,-0.43741 -0.096,-1.38424 -0.194,-1.38424 -0.053,0 -0.098,0.29228 -0.098,0.64212 -4e-4,0.23926 0.055,0.52677 0.1661,0.86043 0.04,0.1208 0.1121,0.0535 0.1263,-0.11831 z m 0.053,-2.23608 c 0.073,-0.14085 0.083,-0.24708 0.064,-0.70987 -0.023,-0.56728 -0.09,-0.85184 -0.2002,-0.85184 -0.035,0 -0.084,0.0373 -0.1085,0.0828 -0.053,0.10088 -0.1315,0.60665 -0.1763,1.14331 -0.03,0.35763 -0.024,0.40455 0.056,0.46319 0.1379,0.10082 0.2707,0.0544 0.3653,-0.12761 z"
-         style="fill:#b2bc5f;fill-opacity:1;stroke:none" />
-    </g>
-    <g
-       id="0dino_dead"
-       inkscape:label="#g4981">
-      <g
-         id="g4769"
-         transform="matrix(-0.37675135,-0.92631443,0.92631443,-0.37675135,1370.3115,2549.9368)">
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 407.15625,144.3125 c -0.8552,0.40215 -0.0668,1.52829 0.1875,2.09375 0.2251,0.69934 1.16145,-0.23184 1.03125,-0.78125 -0.09,-0.57481 -0.55805,-1.37673 -1.21875,-1.3125 z"
-           id="path4771"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 397.40625,140.28125 c -1.2465,0.77592 -1.87565,2.36688 -2.15625,3.75 0.2859,0.14766 1.24795,-0.95999 1.65625,-1.5 0.3217,-0.63661 1.48165,-1.51723 0.78125,-2.25 -0.095,0.0218 -0.18765,-0.033 -0.28125,0 z"
-           id="path4773"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 399.28125,134.9375 c -1.0023,0.68564 -0.9243,2.21958 -1.375,3.25 0.9826,-0.33552 2.3106,-1.72417 1.875,-3.03125 -0.104,-0.16848 -0.3047,-0.28511 -0.5,-0.21875 z m 6.6875,3.03125 c -0.7557,0.5372 -0.22155,1.75205 -0.28125,2.53125 0.089,0.80082 0.0703,2.11859 0.875,0.9375 0.6068,-0.975 0.42835,-2.40878 -0.15625,-3.34375 -0.097,-0.0936 -0.309,-0.19853 -0.4375,-0.125 z"
-           id="path4775"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 423.40625,134.5625 c -1.0595,0.35173 -0.76095,1.80847 -0.59375,2.625 0.6187,-0.55754 1.8127,-1.51892 1.125,-2.4375 -0.1397,-0.13527 -0.33615,-0.21863 -0.53125,-0.1875 z"
-           id="path4777"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 430.59375,133.65625 c -0.9104,0.51358 -0.4591,1.89414 -0.125,2.6875 0.1485,0.55231 0.89305,1.34616 1.34375,0.625 0,-1.04165 -0.1032,-2.21962 -0.6875,-3.125 -0.1213,-0.15082 -0.33965,-0.23333 -0.53125,-0.1875 z"
-           id="path4779"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 439.78125,132.5 c -0.9671,0.27836 -0.0745,1.29121 0.40625,1.59375 0.434,0.79112 2.17405,0.13329 1.40625,-0.71875 -0.4911,-0.45276 -1.1439,-0.86051 -1.8125,-0.875 z"
-           id="path4781"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 431.8125,129.59375 c -0.8696,0.42998 0.3007,1.77934 1,1.34375 0.9738,-0.50558 -0.3859,-1.48326 -1,-1.34375 z"
-           id="path4783"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 420.15625,129.25 c -1.0021,0.347 -1.233,1.7414 -1.5625,2.40625 -0.8128,-0.50096 -1.0549,0.87108 -1.1875,1.4375 -0.427,0.73613 0.14615,0.91551 0.71875,0.65625 0.8005,-0.4421 0.36305,-1.59105 1.21875,-2 0.5207,-0.65237 1.4902,-1.33877 1.3125,-2.28125 -0.1294,-0.14448 -0.2942,-0.27948 -0.5,-0.21875 z m 4.59375,2.3125 c -1.0223,0.41318 -0.9932,1.7902 -1.25,2.6875 0.7114,-0.56676 2.3493,-1.35286 1.8125,-2.5 -0.1171,-0.1676 -0.3687,-0.23208 -0.5625,-0.1875 z"
-           id="path4785"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 400.8125,129.125 c -0.7295,0.89214 -0.7532,2.23085 -1.125,3.3125 -0.2903,0.59157 -0.23995,1.37711 0.53125,1.0625 0.8559,-0.7091 0.66935,-2.0258 1.03125,-3 0.05,-0.42889 0.4366,-1.66433 -0.4375,-1.375 z m 5.3125,0.375 c -0.091,0.012 -0.1844,-0.0635 -0.25,0.0312 -0.8149,0.83243 -0.52585,2.28703 -0.46875,3.34375 0.291,0.64982 0.1394,1.21319 0.0625,1.875 -0.032,0.91744 0.058,1.83618 0.125,2.75 1.1456,-0.85023 1.52115,-2.64674 0.71875,-3.8125 -0.3996,-0.36499 0.2336,-1.23289 0.1875,-1.84375 0.019,-0.72136 0.4567,-1.93454 -0.375,-2.34375 z"
-           id="path4787"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 379.84375,128.75 c -0.9125,0.523 -0.84155,1.82715 -0.90625,2.75 0.8526,0.67591 1.0494,-0.39901 1.3125,-1.03125 0.179,-0.50392 0.53315,-1.78869 -0.40625,-1.71875 z"
-           id="path4789"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 431.46875,127.3125 c 0.2976,-0.004 1.26045,0.16487 0.53125,0.25 -0.1581,0.16265 -0.61895,-0.23325 -0.53125,-0.25 z"
-           id="path4791"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 422.53125,125.875 c -0.9948,0.49255 -1.4496,1.68673 -1.9375,2.625 0.2138,0.7953 1.03665,0.37789 1.28125,-0.15625 0.407,-0.69151 1.40975,-1.42474 1.09375,-2.3125 -0.1261,-0.072 -0.2848,-0.23574 -0.4375,-0.15625 z m 4.40625,1.78125 c -1.0709,0.58372 -1.7095,1.974 -1.625,3.1875 0.1066,0.76539 1.2099,0.0718 1.25,-0.53125 0.1084,-0.90041 1.2746,-1.67951 0.75,-2.59375 -0.1239,-0.008 -0.2483,-0.15247 -0.375,-0.0625 z"
-           id="path4793"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 427.28125,125.84375 c 0.4323,-0.12308 1.20615,0.79669 0.40625,0.5625 -0.285,0.0155 -1.36875,-0.28171 -0.65625,-0.53125 0.083,-0.0157 0.1638,-0.0362 0.25,-0.0312 z"
-           id="path4795"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 423.53125,123.5 c 0.5269,-0.0381 0.85395,1.01038 0.0937,0.59375 -0.2874,-0.004 -0.9333,-0.34156 -0.375,-0.53125 0.086,-0.0352 0.18825,-0.0582 0.28125,-0.0625 z"
-           id="path4797"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 444.15625,122.96875 c -0.849,0.0646 -0.45245,1.08495 0.15625,1.21875 0.5853,0.51843 2.01665,0.64075 2.21875,-0.3125 -0.4008,-0.8163 -1.5753,-0.85481 -2.375,-0.90625 z M 450.375,123.25 c -0.4404,0.0714 -0.5447,0.68847 -1.0625,0.34375 -0.6915,-0.0995 -2.2021,-0.27037 -2.0625,0.8125 0.4262,0.80172 1.49565,0.83217 2.28125,0.71875 0.053,0.64469 0.3534,1.23538 0.5625,1.84375 0.3047,-1.11158 1.3111,-2.40092 0.75,-3.5625 -0.1126,-0.13712 -0.29225,-0.18872 -0.46875,-0.15625 z"
-           id="path4799"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 444.96875,120.4375 c -0.7592,-0.086 -0.8903,0.90396 -0.1875,1.09375 0.6554,0.40106 1.82715,0.38298 2.28125,-0.3125 -0.029,-0.91138 -1.47615,-0.7328 -2.09375,-0.78125 z"
-           id="path4801"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 450,119.53125 c -0.5159,0.23379 -0.39575,1.09988 -0.53125,1.34375 -0.9324,-0.89061 -2.4144,-0.0617 -2.75,1.03125 0.081,0.34499 1.1154,0.25387 1.625,0.3125 0.4278,7.5e-4 0.92505,-0.0669 1.21875,-0.40625 0.056,0.90305 0.0805,2.16943 0.8125,0.78125 0.5677,-0.85478 0.90925,-2.30564 0.0312,-3.0625 -0.1301,-0.0253 -0.28745,-0.0769 -0.40625,0 z"
-           id="path4803"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 380.40625,119.40625 c -0.8172,0.59627 -0.51745,1.89984 -0.71875,2.78125 -0.3953,1.28658 0.49775,0.54481 0.96875,0 0.4514,-0.76734 0.77135,-2.0498 0.0937,-2.75 -0.1039,-0.0253 -0.24095,-0.11167 -0.34375,-0.0312 z"
-           id="path4805"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 415.40625,118.5625 c -0.6994,0.59602 0.3171,1.45751 0.625,2 0.5265,0.571 1.67365,-0.14518 1.09375,-0.84375 -0.3959,-0.49676 -1.00045,-1.32368 -1.71875,-1.15625 z"
-           id="path4807"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 429.46875,116.375 c 0.4283,0.17876 0.5363,0.93997 -0.125,0.625 -0.3682,-0.0434 -0.1179,-0.56596 0.125,-0.625 z"
-           id="path4809"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 416.34375,115.59375 c 0.7912,-0.21554 1.08055,1.01421 0.46875,1.15625 -0.2376,-0.18552 -1.39935,-1.1142 -0.46875,-1.15625 z"
-           id="path4811"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 413.09375,115.28125 c -0.8499,0.32915 -0.0399,1.32054 0.34375,1.71875 0.4777,0.68401 1.02375,1.18334 1.09375,0.0625 0.099,-0.79861 -0.6088,-1.80102 -1.4375,-1.78125 z"
-           id="path4813"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 430.96875,114.4375 c 0.4948,0.40171 -0.91925,0.42503 -0.21875,0.0625 0.078,-0.0443 0.12715,-0.0611 0.21875,-0.0625 z"
-           id="path4815"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 433.625,112.59375 c 0.2198,0.56662 -0.1965,1.48775 -0.75,0.8125 0.02,-0.36725 0.4021,-0.76305 0.75,-0.8125 z"
-           id="path4817"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 414.625,112.53125 c 0.2062,0.39797 -0.24965,0.68795 -0.28125,0.21875 0.034,-0.1136 0.16435,-0.19618 0.28125,-0.21875 z"
-           id="path4819"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 394.1875,112.28125 c -0.7935,0.0405 -0.6041,1.04687 0,1.25 0.4943,0.65694 1.7774,0.35978 1.6875,-0.53125 -0.2552,-0.62821 -1.0937,-0.73678 -1.6875,-0.71875 z"
-           id="path4821"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 407.3125,108.875 c -0.994,0.31142 -1.2538,1.56886 -2.125,2.0625 -0.351,0.40945 -0.4063,0.96932 -0.5625,1.46875 0.6369,-0.31292 2.2131,-0.66514 1.75,-1.6875 -0.62,-0.33214 0.53395,-0.0888 0.78125,-0.375 0.5394,-0.23997 1.10055,-1.42855 0.15625,-1.46875 z m 3.15625,2.5625 c -0.8367,0.53128 0.327,1.52958 0.6875,2.03125 0.5213,1.0465 0.6533,0.15244 0.6875,-0.5 -0.045,-0.67872 -0.6134,-1.58724 -1.375,-1.53125 z"
-           id="path4823"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 412.84375,108.59375 c 0.3081,0.36896 -0.0894,1.21334 -0.3125,1.53125 -0.3935,-0.39664 -0.361,-1.42942 0.3125,-1.53125 z"
-           id="path4825"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 408.15625,108.0625 c -0.7918,0.46937 0.15955,1.40622 0.53125,1.84375 0.8174,1.12489 1.1541,1.12224 0.8125,-0.3125 -0.1379,-0.63088 -0.55935,-1.60463 -1.34375,-1.53125 z"
-           id="path4827"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 437.5625,106.5 c -0.9917,0.74444 -0.7102,2.31849 -0.9375,3.40625 -0.1717,1.02506 0.72475,-0.71552 1.03125,-1.09375 0.3507,-0.63189 0.9478,-1.71182 0.25,-2.28125 0.4768,0.70641 -0.86955,0.95918 -0.0312,-0.0312 -0.09,-0.0333 -0.2207,-0.027 -0.3125,0 z m 1.40625,2.9375 c -0.4612,0.28112 -0.7103,1.31161 -0.25,1.625 1.0606,0.65764 1.2709,-1.8261 0.25,-1.625 z"
-           id="path4829"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 382.15625,105.46875 c -0.7071,1.11979 -0.7744,2.71754 -0.6875,3.9375 -0.6299,-0.14822 -1.30755,0.65495 -0.59375,1.0625 0.9469,0.11372 2.14675,0.32201 3.03125,-0.15625 0.4708,-0.70676 -0.77975,-0.85776 -1.28125,-0.875 -1.1318,0.15692 -0.5341,-0.37445 -0.3125,-1.125 0.1475,-0.89507 0.7889,-1.953 0.375,-2.8125 -0.057,-0.15796 -0.45875,-0.16441 -0.53125,-0.0312 z m 2.96875,3.90625 c -0.7491,-0.17266 -0.93125,0.88627 -0.15625,0.90625 0.7344,0.16144 1.7866,0.34709 2.375,-0.1875 0.1692,-0.98753 -1.65405,-0.60781 -2.21875,-0.71875 z m -3.5,0.46875 c 0.0616,0.0403 0.10472,0.15374 0.0625,0.4375 -0.66712,0.12425 -0.24723,-0.55829 -0.0625,-0.4375 z"
-           id="path4831"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 409.125,104 c 1.1631,-0.0978 2.24875,1.18196 1.46875,2.21875 -0.2646,0.83054 -0.8216,-0.0666 -1.0625,-0.40625 -0.2885,-0.52764 -0.8859,-1.20621 -1,-1.65625 0.1933,-0.0979 0.38025,-0.15457 0.59375,-0.15625 z"
-           id="path4833"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 406.09375,99.28125 c 0.6095,-0.12706 0.8823,0.5519 0.5625,1.03125 -0.4974,-0.13675 -1.3327,-0.20631 -1.5625,-0.65625 0.2497,-0.25639 0.6553,-0.3493 1,-0.375 z"
-           id="path4835"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 402.8125,95.84375 c 0.043,0.006 0.11345,-0.015 0.15625,0 0.8392,0.0704 1.55235,1.02913 1.09375,1.84375 -0.2558,-0.67715 -1.303,-1.16848 -1.25,-1.84375 z"
-           id="path4837"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 394.28125,95.625 c -0.3025,0.36893 -0.60365,0.72482 -0.90625,1.09375 -1.2879,1.89067 -1.33215,4.37214 -1.84375,6.5625 -0.1939,1.49276 -0.70955,2.98438 -0.90625,4.4375 0.1755,0.72083 -0.2468,1.93034 -0.75,2.03125 0.1311,-0.99189 -1.39,-0.94279 -1.8125,-0.28125 -0.868,0.49714 0.61465,0.58293 1.09375,0.65625 0.126,0.0661 -0.94335,0.28068 -1.21875,0.3125 -2.0589,0.26346 -4.2388,0.10926 -6.125,1.03125 -0.7792,0.18917 -2.12725,-0.0315 -2.40625,0.9375 0.3137,1.02828 1.72245,1.0327 2.53125,1.46875 1.134,0.35783 2.58895,0.74858 2.78125,2.125 0.1589,0.76755 0.1429,1.75334 -0.0625,2.40625 -0.5119,-0.26306 -1.3244,-0.22814 -1.6875,-0.0937 -0.3975,-0.53691 -1.13725,-0.68602 -1.71875,-0.5 -0.6246,-0.0736 -1.18105,-0.0583 -0.40625,-0.5625 0.557,-0.8121 0.93395,-2.06347 0.46875,-2.96875 -0.8481,-0.43225 -0.91585,0.97928 -1.03125,1.53125 -0.2749,0.50129 0.1001,1.72597 -0.5,1.8125 -0.6203,-0.23336 -1.25345,0.60157 -0.53125,0.90625 1.1144,0.4245 2.3883,0.59501 3.5625,0.5 0.3126,-0.42441 0.645,0.47642 1.125,0.21875 0.7559,-0.23385 0.64755,0.24608 0.46875,0.8125 -0.245,1.40618 -0.87455,2.89231 -0.46875,4.3125 -0.4347,0.0451 -1.12525,-0.11956 -1.34375,0.375 -0.8048,-0.9071 -2.25235,-1.50845 -3.40625,-1 -0.4871,0.53542 0.4236,0.77836 0.5625,0.96875 -0.08,0.85717 -0.68485,2.11874 0.15625,2.75 0.9126,-0.0754 0.66075,-1.37246 0.78125,-2.03125 -0.2822,-1.06327 0.82185,-0.51717 1.46875,-0.46875 0.5932,0.0921 1.1263,0.5087 1.8125,0.46875 0.6022,0.23359 1.86075,-0.51535 0.90625,-0.96875 -0.417,-0.10495 0.45355,-0.70078 0.46875,-1.03125 0.7245,-1.22783 1.1996,-2.75446 1.9375,-3.875 0.4959,0.53961 1.4054,0.24613 2.0625,0.34375 0.6737,-0.6784 -0.30705,-1.33399 -0.96875,-1.125 -0.2632,-0.0468 -1.05865,0.3622 -0.53125,-0.15625 0.6049,-0.87228 1.53775,-1.59319 2.28125,-2.21875 0.5102,1.22733 0.47435,2.89401 1.78125,3.625 1.6336,1.70554 0.90845,4.41442 2.21875,6.28125 1.4317,-1.54871 1.274,-3.85683 1.5625,-5.8125 0.174,-1.4536 0.0439,-3.03693 0.15625,-4.4375 0.4132,-0.32321 1.31945,-0.15002 1.90625,-0.375 1.4136,-0.34698 2.9653,-0.59788 4.3125,0.0312 0.7524,-0.16637 2.10175,0.16109 2.40625,-0.75 -0.2501,-0.93766 -1.5721,-0.94713 -2.3125,-1.3125 -2.3619,-0.55296 -4.42485,-2.16656 -6.90625,-2.21875 -0.8167,0.53465 0.3656,1.02749 0.875,1.15625 1.0387,0.56514 2.47975,0.48221 3.34375,1.28125 -1.2644,1.19707 -3.2983,0.86929 -4.75,1.71875 0.7138,0.0285 -0.0652,0.65807 0.0937,1.09375 -0.3861,1.47607 0.12905,3.10288 -0.46875,4.5 -0.5567,0.14231 -0.99705,-0.71509 -1.34375,-1.09375 -1.022,-1.3724 -1.6444,-2.99124 -1.9375,-4.65625 -0.3068,-0.93895 -1.49005,-0.56064 -1.90625,0.0937 -0.8302,0.76538 -1.3385,2.00898 -2.375,2.5 0.3693,-1.55917 -0.32665,-3.30215 -1.78125,-4.09375 -0.5765,-0.42326 -1.40685,-0.71757 -1.84375,-1.125 2.0497,-1.46252 4.80845,-0.6917 7.09375,-1.5625 1.0465,-0.31449 1.98985,-1.16098 1.78125,-2.34375 0.3907,-4.47154 1.5425,-8.84716 2.25,-13.28125 z m -5.1875,16.03125 c -0.7048,-0.0956 -0.7959,0.89768 -0.0625,0.90625 0.6534,0.24219 1.59205,0.0833 2.03125,-0.125 0.4097,0.57195 1.59865,0.91665 2.03125,0.25 -0.1011,-0.75485 -1.1666,-0.92288 -1.8125,-0.875 -0.2815,0.45405 -0.46125,-0.22282 -0.90625,-0.125 -0.4221,-0.0374 -0.85775,-0.0494 -1.28125,-0.0312 z m 1.4375,1.53125 c -0.6944,0.0107 -0.4702,0.91088 0.125,0.9375 0.6954,0.24108 1.67255,0.46434 2.21875,-0.15625 -0.2146,-0.9184 -1.64275,-0.6866 -2.34375,-0.78125 z m 19.875,0.5625 c -1.2409,0.32656 -1.69105,1.7194 -2.09375,2.78125 0.8494,-0.75708 2.31755,-1.17339 2.65625,-2.34375 0.01,-0.27802 -0.3047,-0.49508 -0.5625,-0.4375 z m -2.9375,2.96875 c -0.064,0.004 -0.1325,-0.0157 -0.1875,0.0312 -0.781,0.40202 -0.80065,1.4634 -1.09375,2.1875 0.7818,-0.15628 2.61705,-1.61834 1.28125,-2.21875 z m 11.3125,5.90625 c -0.7236,0.29126 -0.0497,1.58969 0.5,1.5625 0.8437,-0.0234 0.6947,-1.17059 0.0625,-1.4375 -0.1532,-0.10209 -0.3758,-0.18638 -0.5625,-0.125 z m -30.46875,2.40625 c -0.6419,-0.10229 -1.19365,0.76731 -0.46875,1.0625 1.0404,0.33138 2.1736,0.20841 3.25,0.28125 -0.6793,-0.86046 -1.64425,-1.49504 -2.78125,-1.34375 z"
-           id="path4839"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 395.9375,94.34375 c -0.10379,0.06062 -0.25325,0.330015 -0.5,0.65625 -1.3323,4.01478 -1.4842,8.34607 -2.4375,12.4375 0.2868,1.37737 -0.2362,2.79724 0,4.1875 1.3251,0.76296 0.8727,-1.06095 1.125,-1.875 0.6045,-4.92028 1.3856,-9.84666 2,-14.75 -0.032,-0.5597 -0.0837,-0.716866 -0.1875,-0.65625 z m 5.65625,4.21875 -0.15625,0.09375 c -0.6797,0.59898 0.34515,1.50612 0.59375,2.09375 0.4963,1.08245 0.86785,1.08649 0.90625,-0.0937 -0.063,-0.83855 -0.51055,-1.81632 -1.34375,-2.09375 z m 2.1875,3.125 c -0.8037,0.22703 -0.0815,1.30773 0.28125,1.6875 0.8373,1.29634 1.06325,1.03928 0.78125,-0.375 -0.098,-0.52972 -0.4299,-1.31699 -1.0625,-1.3125 z m 1.6875,2.5625 c -0.6701,0.64584 0.477,1.48208 0.75,2.09375 0.3258,0.88259 1.39755,-0.068 0.90625,-0.6875 -0.3542,-0.56004 -0.88315,-1.54634 -1.65625,-1.40625 z m -1.78125,1.90625 c -1.0315,0.18554 -1.21565,1.44556 -1.09375,2.3125 0.644,-0.48124 2.14435,-1.05527 1.71875,-2.09375 -0.1482,-0.17215 -0.3997,-0.25158 -0.625,-0.21875 z m -2.65625,2.09375 c -0.8365,0.37997 -0.8484,1.49936 -1.125,2.25 0.7729,-0.30896 2.2356,-1.09553 1.625,-2.125 -0.1316,-0.12675 -0.3256,-0.16174 -0.5,-0.125 z"
-           id="path4841"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 399.65625,89.1875 c 2.0014,0.69481 3.76425,2.00929 5.78125,2.71875 0.4165,0.14061 1.4358,0.85384 0.625,1.21875 -1.092,0.48244 -2.31605,0.45471 -3.46875,0.65625 -1.6462,-0.16963 -1.90425,-2.28791 -2.53125,-3.5 -0.1306,-0.35085 -0.42175,-0.75279 -0.40625,-1.09375 z"
-           id="path4843"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 397.15625,82.8125 0.15625,0.0625 c 0.9844,0.57143 2.5692,0.77538 3,1.96875 0,0.81748 -1.23905,1.88897 -1.84375,0.9375 -0.6655,-0.86398 -0.9621,-1.95764 -1.3125,-2.96875 z"
-           id="path4845"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 394.78125,79.0625 c -1.07126,0.0885 -2.88755,1.02827 -3.59375,1.0625 -0.8851,0.04287 -3.87209,9.986548 -5.375,12.78125 -0.006,0.0119 -0.0249,0.01963 -0.0312,0.03125 l -1.6875,4.34375 c 0.0206,0.0043 0.0419,-0.0044 0.0625,0 -3.0746,6.21431 -5.42445,12.78854 -7.46875,19.40625 -1.5131,5.31008 -2.0768,11.5497 1.125,16.375 0.3136,0.41149 1.21795,0.98466 0.84375,1.5625 -1.4458,0.54799 -3.1324,0.007 -4.4375,-0.6875 -1.6534,-0.90649 -3.27905,-2.23856 -5.21875,-2.375 -1.1526,0.0905 -0.84225,1.58119 -0.40625,2.25 1.1345,1.31364 1.4529,3.14126 2.4375,4.53125 0.4012,1.47635 2.18055,2.67817 1.59375,4.3125 -1.8645,2.1041 -3.29515,4.52103 -4.84375,6.875 -0.7357,0.67833 0.6705,0.67009 1.1875,0.6875 2.4523,-0.14996 4.28925,-2.2342 6.65625,-2.5625 0.7904,0.35036 0.3604,1.6144 0.375,2.28125 -0.2612,2.45548 -1.29975,5.09767 -0.34375,7.5 0.2866,0.98812 1.34835,0.10311 2.03125,0 2.4983,-0.91526 4.7734,-2.42622 6.5,-4.4375 0.5522,-0.37822 0.67155,0.81949 0.90625,1.0625 0.2277,0.51744 0.50105,1.03178 0.90625,1.4375 -0.4374,0.61757 -1.574,1.82201 -0.5625,2.4375 0.5689,0.27211 1.2971,-0.0504 1.5,0.71875 0.5365,0.9992 0.6078,2.18576 1.375,3.09375 0.3879,0.73083 1.39825,0.53766 1.59375,-0.21875 0.7651,-1.50295 0.6906,-3.63233 2.4375,-4.4375 1.2902,-0.59881 2.68605,-1.49798 4.09375,-1.40625 0.59,0.29663 0.84085,-0.7316 1.53125,-0.4375 1.2001,0.76866 1.50055,2.38607 2.34375,3.5 1.2066,1.92697 2.2192,4.05449 3.75,5.71875 0.6559,0.75234 1.86615,0.37469 2.15625,-0.53125 0.6359,-1.38373 0.7459,-2.94128 1.5,-4.28125 0.5201,-1.08965 0.5473,-2.63633 1.5625,-3.40625 0.2892,0.51052 0.88735,0.0288 1.21875,0.5625 1.4788,0.95359 3.1312,1.52557 4.6875,2.3125 0.9202,0.44398 2.5916,0.3566 2.625,-0.96875 -0.098,-1.48219 -0.9981,-2.79361 -1.9375,-3.90625 -0.6304,-0.7957 -1.6613,-1.49209 -1.8125,-2.5625 4.785,0.0619 9.80345,0.89755 14.40625,-0.78125 1.9229,-0.48857 3.7091,-1.45236 5.4375,-2.375 0.9545,-0.56028 1.87375,-1.27507 2.84375,-1.71875 0.4797,-0.10588 0.8657,-0.17878 1.3125,0 0.4074,-0.2725 0.4589,-0.7261 1,-0.90625 2.3005,-1.37764 4.60195,-2.86486 6.40625,-4.875 0.4883,-0.3726 0.9417,-1.22968 1.5625,-1.84375 1.7397,-2.06164 2.81835,-4.58559 4.34375,-6.8125 1.4425,-2.11917 1.74835,-4.72185 1.78125,-7.25 0,-2.79237 -0.0617,-5.68659 -0.9375,-8.34375 -1.5138,-3.56797 -3.07525,-7.28106 -5.96875,-9.96875 -2.5201,-2.37992 -5.87175,-3.52686 -8.90625,-5.0625 -1.9797,-0.83678 -4.35335,-1.44466 -6.34375,-0.28125 -3.4128,1.69661 -5.59695,5.44637 -5.46875,9.28125 -0.2141,2.11031 -0.0191,4.24561 0.3125,6.3125 -0.036,1.23546 0.33985,2.67766 1.28125,3.46875 0.8338,0.21807 1.73675,-0.0126 2.59375,0.15625 -0.1937,-0.37838 -0.81485,-0.85983 -0.78125,-1.25 0.4692,-0.14261 1.49475,-0.10228 1.53125,-0.5625 -0.2,-0.36441 -0.68175,-1.08386 0.0937,-1.03125 0.8142,0.0581 1.1898,-0.10507 0.5625,-0.8125 -0.2137,-0.33681 -0.55575,-1.33957 0.21875,-1 0.7723,0.38689 1.18,0.41522 0.9375,-0.5625 -0.045,-0.43144 0.1613,-1.23863 0.75,-0.84375 0.5961,0.3138 1.11995,1.00704 1.28125,-0.0312 0.4067,-0.6681 0.9087,-1.80654 1.8125,-1.78125 0.4986,0.74424 0.0136,1.80093 -0.15625,2.59375 0.5721,-0.0941 1.9262,-0.0435 1.4375,0.875 -0.3635,0.76526 -1.0035,1.33695 -1.625,1.90625 0.3472,0.36646 1.3354,0.68518 1.375,1.1875 -0.7767,0.49174 -1.68845,0.75308 -2.46875,1.25 0.4143,0.62201 1.11875,1.10039 1.46875,1.71875 -0.7789,0.309 -1.6672,0.2262 -2.5,0.3125 0.3105,0.48233 1.42245,0.95237 1.28125,1.59375 -0.7636,0.36392 -1.6994,0.17097 -2.5,0.0625 -0.067,0.62242 0.19365,1.43115 0.28125,1.875 -0.6976,-0.36489 -1.3926,-1.39007 -1.9375,-0.28125 -0.3431,0.21324 -0.96695,1.32847 -1.28125,0.59375 -0.415,-0.57036 -0.61395,-1.57706 -1.21875,-1.8125 -0.7914,0.0278 -2.2496,0.86925 -2.6875,-0.21875 -0.2894,-0.73969 -0.2908,-1.52816 -0.375,-2.3125 -0.9807,0.28478 -2.7763,0.80834 -3.125,-0.59375 -0.192,-0.59135 -0.14975,-1.2342 -0.15625,-1.875 -0.7775,0.17598 -1.7926,0.92379 -2.5625,0.5 -0.167,-1.10589 0.4192,-2.19721 0.5,-3.3125 -0.6056,0.21211 -1.80575,0.0532 -1.46875,-0.84375 0.1334,-0.56908 1.21215,-1.12937 0.0312,-1.0625 -1.4899,-0.067 -3.2402,-1.30633 -2.6875,-2.96875 0.4197,-0.85269 -0.9091,-0.3163 -1.375,-0.625 -1.0891,-0.27454 -0.3918,-1.63061 -0.3125,-2.34375 0.133,-0.57129 0.0995,-1.15814 -0.0625,-1.71875 -0.7924,0.13974 -1.7464,0.66852 -2.5,0.28125 0.1459,-1.56588 1.38705,-2.92999 1.15625,-4.59375 -1.9668,0.63754 -4.359,-0.53222 -4.6875,-2.65625 -0.1418,-0.73997 -0.0251,-1.4954 0.15625,-2.21875 -0.7938,-0.0333 -2.09635,0.53789 -2.65625,-0.21875 -0.2659,-0.73886 0.2516,-1.88898 -0.375,-2.34375 -0.4426,-0.14948 -1.84395,-0.42093 -0.71875,-0.5625 1.7685,-0.40929 3.60095,-0.79403 5.03125,-1.96875 -2.6639,-2.14964 -5.8787,-3.27942 -8.875,-4.84375 -0.6975,-0.41492 0.1221,-1.31819 0.3125,-1.8125 0.657,-1.06281 1.4574,-2.05582 2.5,-2.75 -2.4082,-0.50067 -4.42185,-2.06464 -6.78125,-2.6875 -0.2281,-1.22582 -0.51595,-0.69746 -1.03125,-1.625 -0.12885,-0.231887 -0.39291,-0.2795 -0.75,-0.25 z m 0.75,2.875 c 0.10402,0.171812 0.13115,0.605998 0.125,1.34375 0.069,0.76664 -0.82995,1.18986 -0.90625,1.96875 -0.1643,0.4491 -0.85175,0.44628 -1.03125,1 -0.5799,0.83966 -0.966,1.78592 -1.375,2.71875 1.0149,-0.7973 2.7262,-1.63754 2.6875,-3.125 0.066,-0.42595 0.9493,-0.68848 1.125,-1.25 0.2333,-0.69474 0.36725,0.53592 0.34375,0.78125 0.1543,1.18692 -0.9515,1.96682 -1.25,2.96875 -0.92,0.008 -1.25165,1.2324 -1.71875,1.875 -0.7948,1.26549 -0.52455,1.65296 0.59375,0.59375 0.5578,-0.63412 1.7068,-1.43107 1.3125,-2.375 0.8389,-0.271 1.2509,-1.00176 1.6875,-1.65625 0.4155,-0.0886 0.48585,0.75596 0.65625,1.03125 0.01,0.394 0.69845,1.3381 -0.0312,1.125 -1.1003,0.47135 -1.36515,1.9443 -1.90625,2.75 -1.0264,0.20954 -1.15215,1.6344 -1.65625,2.375 -0.1751,0.46032 1.02075,-0.42633 1.40625,-0.71875 0.3925,-0.36894 0.96205,-1.19787 0.34375,-1.59375 0.8255,-0.63742 1.8351,-1.22336 2.3125,-2.1875 0.3238,1.59007 1.22565,2.95143 1.78125,4.4375 1.5245,3.17947 4.1078,5.72786 5.9375,8.75 4.4227,6.48759 8.73035,13.07709 13.34375,19.40625 1.5282,1.5904 3.47895,2.75489 5.28125,4.03125 1.7038,1.01106 3.82495,1.92021 5.40625,2.71875 -0.7941,1.09474 -0.31035,2.66289 0.34375,3.71875 1.1566,-0.26423 0.61645,-1.68042 0.71875,-2.5 0.071,-0.31231 -0.31145,-0.97201 -0.15625,-1.03125 1.0774,0.38186 2.189,-0.15305 3.25,0.0312 1.8108,0.75256 2.2802,3.34082 4.3125,3.6875 1.0278,-0.14074 0.5098,-1.47975 -0.125,-1.8125 -0.4417,-0.38973 -1.0815,-0.4444 -1.125,-1.125 -0.1351,-0.54442 -0.8445,-0.97316 -1,-1.28125 0.5935,-0.4332 -0.16435,-1.03817 -0.0312,-1.53125 1.1117,-0.71407 1.53135,-2.04678 2.09375,-3.15625 0.4347,-0.43745 0.23335,-1.10527 0.71875,-1.4375 0,-0.61078 -0.34015,-0.9976 -0.0312,-1.6875 0.5022,-2.97134 1.1147,-6.47992 -0.8125,-9.0625 -2.6362,-1.50472 -5.7994,-0.10811 -7.8125,1.75 -1.0327,0.98063 -2.23165,2.00756 -2.28125,3.53125 -0.1697,0.57507 -0.35795,1.26054 -0.71875,1.71875 -0.3575,-1.30845 -0.45405,-2.71191 -0.65625,-4.0625 -0.069,-2.3143 -0.0107,-4.68602 0.53125,-6.9375 0.8154,-2.12309 2.5613,-3.71998 4.25,-5.15625 0.6499,-0.53658 2.11445,-0.94254 2.34375,0.1875 -0.6228,0.75907 -0.426,1.91968 -0.5,2.6875 -1.2209,0.62161 -1.10675,2.3509 -1.40625,3.5 0.6395,-0.99858 2.01605,-1.90908 1.90625,-3.21875 -0.079,-0.5157 0.6534,-1.03353 0.6875,-1.65625 0.1909,-0.53511 -0.0957,-1.32007 0.6875,-1.40625 0.3012,-0.0803 0.97685,-0.14354 1.09375,0.0312 -0.8418,1.22653 -1.1825,2.76352 -1.6875,4.15625 0.3353,0.72642 1.22905,0.23525 1.21875,-0.4375 0.051,-0.3484 0.1952,-0.86594 -0.1875,-1.0625 0.8217,-0.51233 1.423,-1.57341 1.5625,-2.34375 0.7123,0.40953 1.1348,1.22186 0.6875,2 -0.1995,0.72656 -0.5448,1.79343 0.375,1.3125 0.3723,-0.55316 0.4622,-1.93379 1.375,-2.1875 0.445,0.15092 0.7849,0.7695 1.125,0.84375 -0.7896,0.96908 -0.99665,2.2234 -1.46875,3.34375 -0.204,0.52305 -0.2835,1.11078 0.4375,0.9375 0.8301,-0.19446 0.7836,-1.32599 0.6875,-1.90625 0.5277,-0.5954 1.1034,-1.21251 1.3125,-2 2.2547,1.02943 4.2916,2.65326 5.5,4.84375 1.206,1.78707 2.2655,3.74727 3,5.75 0.096,0.38049 0.28975,0.6281 -0.15625,0.3125 -0.9405,0.0214 -0.63765,1.33252 -0.59375,1.9375 -0.1263,0.8459 0.41195,0.85997 0.90625,0.4375 0.3241,-0.31119 0.4349,-0.78075 0.375,-1.21875 0.4807,0.92109 0.6847,2.01972 0.4375,3 0.7332,1.93576 0.46555,4.1229 0.34375,6.15625 -0.1978,0.27018 -0.0208,1.87059 -0.4375,1.3125 -0.4074,-0.69795 -1.39975,-0.2661 -1.46875,0.46875 -0.2878,0.85486 -0.3,2.52677 0.9375,2.5 -0.6668,1.57301 -1.75245,2.92965 -2.53125,4.46875 -0.2647,0.56422 -0.59525,0.85712 -1.09375,1.03125 -0.1562,1.27846 -1.3217,2.19556 -2.125,3.1875 -1.8886,1.93351 -4.0702,3.97872 -6.5625,4.875 -4.3662,2.231 -8.85745,5.38721 -13.96875,5.96875 -0.7277,0.0414 -1.55785,0.18554 -2.09375,-0.25 -1.0818,0.53177 -2.4594,-0.0572 -3.6875,0.0312 -0.4785,-0.35715 -1.1065,0.22853 -1.6875,-0.0625 -1.1295,-0.33952 -2.6254,0.46629 -3.5625,-0.40625 -0.7594,-1.70428 -0.522,-3.68174 -1.125,-5.4375 0.3793,-0.50075 -0.4214,-0.87032 -0.25,-1.53125 -0.3596,-3.17489 -0.54225,-6.41247 -1.40625,-9.5 -0.5569,-2.66118 -0.9822,-5.53206 -2.875,-7.625 0.6391,6.70103 2.3962,13.28981 2.9375,20 0.1938,0.75714 -0.0125,1.47978 -0.0625,2.0625 0.8975,0.62289 0.8425,1.78711 0.9375,2.78125 0.097,0.79496 0.98345,1.03444 1.15625,1.8125 0.5721,0.90891 1.02795,1.94378 1.96875,2.46875 0.4042,0.33731 -0.12695,0.92931 0.46875,1.15625 0.092,0.44236 0.22765,1.13581 -0.46875,0.90625 -0.5327,-0.10607 -1.4427,-0.1979 -1.625,-0.6875 0.09,-0.70943 -0.8797,-0.96168 -1.0625,-0.375 -0.8165,-0.36654 -1.39445,-1.1519 -2.34375,-1.375 -0.7445,-0.34816 -2.2809,-0.63488 -2.4375,0.53125 0.1434,0.76046 0.21015,1.52865 -0.28125,2.1875 -0.289,1.0657 -0.891,2.05116 -1.125,3.15625 -0.1808,0.61515 -0.0772,-1.00342 -0.71875,-0.71875 -1.1196,0.10307 -2.3082,-0.22892 -2.8125,-1.3125 -1.0698,-1.71289 -2.0689,-3.47533 -3.5,-4.90625 -3.2443,0.57707 -6.2496,2.73992 -9.4375,2.9375 0.5091,-1.04943 0.1149,-2.23163 0,-3.28125 0.8957,-0.53456 0.7407,-2.06669 1.75,-2.34375 0.7679,0.39249 0.97335,-0.68787 0.90625,-1.3125 -0.49,-1.43558 -2.4285,-1.11247 -3.625,-1.3125 -0.5138,-0.0288 -1.2188,-0.10617 -1,-0.8125 -0.2133,-0.63704 -0.3935,-1.64001 0.5625,-1.75 1.5166,-0.1574 2.7449,-1.1181 4.1875,-1.59375 1.2691,-0.60072 2.9552,-1.08386 3.1875,-2.6875 0.3713,-0.91824 0.84835,-1.96065 1.21875,-2.78125 0.3975,-0.2442 0.40945,-0.82093 0.59375,-1.21875 -0.042,-0.52566 0.6731,-0.92998 0.6875,-1.5625 0.1334,-0.4874 -0.5376,-0.68416 -0.0625,-1.15625 1.1314,-2.85628 2.6953,-5.99554 1.75,-9.125 -0.9954,2.41181 -1.4474,5.01396 -2.4375,7.4375 -1.1046,2.93246 -2.2624,5.85646 -3.5,8.71875 -1.5976,1.49804 -3.9265,0.43678 -5.4375,-0.65625 -1.9339,-1.36945 -4.19685,-2.29912 -5.71875,-4.1875 -1.8428,-1.90214 -3.6876,-3.95425 -4.5625,-6.53125 -0.2497,-0.50679 -0.395,-0.88943 0.125,-1.1875 0.297,-0.48359 0.0528,-1.10322 -0.0312,-1.53125 -0.4382,-0.37174 -0.73785,0.21006 -0.78125,0.5625 -0.1877,-0.63336 -0.372,-1.6198 -0.25,-2.09375 0.683,0.5976 1.1293,-0.5023 1.0625,-1.0625 0.073,-0.53269 0.1125,-1.88491 -0.75,-1.4375 -0.2638,0.35178 -0.2905,0.83221 -0.375,1.25 0.0153,-0.77428 0.16559,-1.53972 0.25,-2.34375 0.0434,0.24371 0.2037,0.30854 0.65625,-0.0625 0.6711,-0.30489 0.3512,-1.11004 0.5,-1.59375 0.3279,-0.58643 0.5171,-2.00361 -0.5,-1.9375 -0.3779,0.63917 -0.1167,-1.33642 0.4375,-0.96875 1.0072,-0.0789 0.5527,-1.38964 0.9375,-1.96875 0.2656,-0.71124 -0.5194,-0.76217 -0.5625,-0.78125 1.5504,-4.84216 3.5666,-9.53166 5.4375,-14.25 7.43916,-8.371571 10.95934,-19.921435 11.6875,-18.71875 z m 42.78125,35.375 c 0.2356,0.52044 -0.1811,1.39464 -0.6875,0.8125 0.04,-0.34287 0.3735,-0.71683 0.6875,-0.8125 z m -1,3.34375 c 0.6039,-0.10083 0.6403,1.20883 0,0.75 -0.3238,-0.0404 -1.2118,-0.46109 -0.5,-0.6875 0.1547,-0.0681 0.3315,-0.0721 0.5,-0.0625 z m -0.5625,2.65625 c 0.4877,-0.16791 0.31005,0.76105 -0.0937,0.40625 -0.4985,-0.0325 -0.5805,-0.30349 -0.0625,-0.375 0.056,-0.007 0.099,-0.0332 0.15625,-0.0312 z m -2.0625,2.28125 c 0.4973,-0.1125 1.13675,0.36079 0.46875,0.75 -0.3919,0.68336 -1.0874,-0.0751 -1,-0.59375 0.1288,-0.13037 0.34995,-0.15633 0.53125,-0.15625 z m -63.375,8.75 c 1.6746,-0.0993 2.6924,1.74404 4.375,1.65625 1.684,0.20317 3.93885,-0.6596 5.09375,1 1.7857,1.8174 3.85545,3.46869 6.03125,4.8125 0.7163,0.45291 1.4701,0.76292 2.25,1.09375 -2.2911,1.02277 -5.0091,1.85107 -6.5,4 -0.5657,0.88696 0.41705,1.72033 1.28125,1.71875 1.5291,0.0524 2.9298,0.77715 4.4375,1 0.5103,0.093 0.94105,0.20407 0.40625,0.625 -0.8829,1.11874 -1.40345,2.63581 -1.90625,3.84375 -0.5398,-1.09253 -0.428,-2.99344 -1.875,-3.34375 -0.874,0.004 -1.1301,1.23158 -1.875,1.625 -0.9892,0.84427 -2.2327,1.64677 -3.375,2 0.052,-1.21738 -1.20285,-1.84641 -2.28125,-1.71875 -0.8261,0.0195 -0.2559,-1.21646 -0.3125,-1.71875 0.099,-1.54005 0.98275,-3.24528 0.21875,-4.71875 -0.9679,-0.93503 -2.24625,0.19361 -3.15625,0.59375 -0.7291,0.24975 -1.831,0.88701 -2.5,0.375 0.014,-1.31547 1.43815,-2.07561 1.90625,-3.25 0.7565,-1.16776 1.11655,-2.96895 -0.0937,-3.96875 -1.1059,-1.44901 -1.39875,-3.33975 -2.40625,-4.8125 -0.1753,-0.3492 -0.22435,-0.82182 0.28125,-0.8125 z m 17.8125,23.6875 c 0.6672,-0.0568 0.5111,0.74479 0.25,1.09375 -0.024,-0.32251 -0.386,-0.92402 -0.25,-1.09375 z"
-           id="path4847"
-           transform="translate(1217.6994,663.73334)" />
-        <path
-           sodipodi:type="arc"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="path4849"
-           sodipodi:cx="508.10672"
-           sodipodi:cy="613.70343"
-           sodipodi:rx="2.7779195"
-           sodipodi:ry="2.7779195"
-           d="m 510.88464,613.70343 c 0,1.5342 -1.24372,2.77792 -2.77792,2.77792 -1.5342,0 -2.77792,-1.24372 -2.77792,-2.77792 0,-1.5342 1.24372,-2.77792 2.77792,-2.77792 1.5342,0 2.77792,1.24372 2.77792,2.77792 z"
-           transform="matrix(0.20869011,0.16178522,-0.1409097,0.18176235,1618.8554,591.61169)" />
-        <path
-           transform="matrix(0.20869011,0.16178522,-0.1409097,0.18176235,1635.9395,583.99245)"
-           d="m 510.88464,613.70343 c 0,1.5342 -1.24372,2.77792 -2.77792,2.77792 -1.5342,0 -2.77792,-1.24372 -2.77792,-2.77792 0,-1.5342 1.24372,-2.77792 2.77792,-2.77792 1.5342,0 2.77792,1.24372 2.77792,2.77792 z"
-           sodipodi:ry="2.7779195"
-           sodipodi:rx="2.7779195"
-           sodipodi:cy="613.70343"
-           sodipodi:cx="508.10672"
-           id="path4851"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-        <path
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           d="m 1596.9896,818.35632 c 0.01,-0.52369 -0.063,-0.81171 -0.2639,-1.07879 -0.238,-0.3167 -0.6191,-0.46226 -1.4033,-0.53605 -0.3715,-0.0349 -0.7363,-0.0961 -0.8107,-0.136 -0.2967,-0.15878 -0.2426,-1.17329 0.1894,-3.55312 0.3798,-2.09214 0.2913,-2.92785 -0.3288,-3.1057 -0.2994,-0.0859 -0.7779,0.0759 -1.8462,0.62401 -1.6419,0.84244 -2.8614,1.07539 -3.3643,0.64267 -0.3922,-0.33742 -0.1556,-1.08549 0.6712,-2.12186 1.2243,-1.53463 1.7462,-2.61128 1.7458,-3.60185 -10e-5,-0.58247 -0.1439,-0.97323 -0.5078,-1.38019 -0.5214,-0.58308 -1.2169,-1.9035 -1.7239,-3.27245 -0.1497,-0.40424 -0.3729,-0.88711 -0.4961,-1.07305 -0.3572,-0.53951 -0.5124,-0.88571 -0.5539,-1.23555 -0.035,-0.29758 -0.021,-0.34383 0.1602,-0.5251 0.2637,-0.26372 0.6484,-0.32055 1.2405,-0.18325 0.6074,0.14088 1.1965,0.42127 1.7461,0.83117 0.861,0.6421 1.5647,0.78746 3.4916,0.72116 2.2503,-0.0774 3.0889,0.1717 3.7537,1.11521 0.2436,0.34572 1.1359,1.13528 2.9055,2.57089 1.9004,1.54173 3.3702,2.47146 4.9526,3.13274 0.6845,0.28607 0.8198,0.4683 0.5021,0.67645 -0.092,0.0602 -0.5813,0.2833 -1.0875,0.49573 -2.0598,0.86429 -2.7586,1.21806 -3.8318,1.9397 -1.0578,0.71129 -1.6732,1.42709 -1.6732,1.94619 0,0.45981 0.6916,0.78449 1.8071,0.84838 0.389,0.0223 0.7487,0.0951 1.1377,0.23039 0.3129,0.10879 1.111,0.32935 1.7736,0.49014 1.109,0.26914 1.387,0.35024 1.9352,0.56456 l 0.1951,0.0763 -0.2359,0.24842 c -0.7759,0.8171 -1.5607,2.29026 -2.2271,4.18037 -0.1006,0.28527 -0.1968,0.51868 -0.2139,0.51868 -0.017,0 -0.089,-0.0311 -0.1603,-0.0692 -0.1938,-0.10368 -0.3655,-0.49107 -0.6719,-1.51552 -0.4627,-1.54725 -0.7307,-1.96244 -1.2668,-1.96244 -0.2343,0 -0.2802,0.0306 -0.4762,0.3179 -0.715,1.04812 -2.6961,2.51763 -4.2736,3.17005 -0.2761,0.11418 -0.5495,0.24949 -0.6076,0.3007 -0.1682,0.14819 -0.1883,0.11609 -0.1827,-0.29172 l 0,0 z"
-           id="path4853"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1619.3912,757.46659 c -0.6062,-0.41192 -0.9669,-1.02287 -1.7697,-2.99792 -0.617,-1.51788 -0.6712,-1.88609 -0.2773,-1.88609 0.1132,0 1.1843,0.49877 2.3801,1.10837 1.1959,0.60961 2.537,1.2645 2.9803,1.45531 1.0352,0.44557 1.6974,0.99534 1.6438,1.36471 -0.062,0.425 -0.8271,0.86146 -1.6869,0.96181 -0.4196,0.049 -1.0038,0.14181 -1.2983,0.2063 -0.92,0.20148 -1.4463,0.14478 -1.972,-0.21249 z"
-           id="path4855"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1616.2488,749.97125 c -0.4107,-0.28764 -1.0178,-1.41521 -1.4949,-2.77628 -0.2257,-0.64417 -0.3828,-1.17122 -0.3491,-1.17122 0.1382,0 3.0941,1.4683 3.3081,1.64321 0.7351,0.60097 0.6921,1.39339 -0.1141,2.10128 -0.5101,0.44781 -0.9138,0.50852 -1.35,0.20301 l 0,0 z"
-           id="path4857"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1621.3983,761.44954 c -0.1279,-0.20199 -0.4472,-0.63193 -0.7095,-0.95543 -0.6043,-0.74534 -0.5891,-1.16074 0.042,-1.13185 0.9855,0.0451 1.6297,0.95222 1.3676,1.9257 -0.1675,0.62215 -0.3774,0.67061 -0.6998,0.16158 z"
-           id="path4859"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1623.5615,764.15431 c -1.0459,-0.32225 -1.3184,-0.90968 -0.5784,-1.24687 1.1275,-0.51372 2.1675,0.23749 1.6548,1.19536 -0.161,0.30084 -0.2529,0.30523 -1.0764,0.0515 z"
-           id="path4861"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1627.5609,770.42354 c -0.1159,-0.13156 -0.5771,-0.76572 -1.0247,-1.40925 l -0.814,-1.17004 0.3906,-0.20196 c 0.5179,-0.26782 1.0198,-0.25064 1.7,0.0582 0.9628,0.43713 1.2698,1.54474 0.6734,2.42969 -0.3607,0.53527 -0.6354,0.62236 -0.9253,0.29338 l 0,0 z"
-           id="path4863"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1629.8676,773.87412 c -0.2536,-0.47395 -0.1649,-1.19923 0.19,-1.5542 0.3817,-0.38164 0.5131,-0.404 0.7434,-0.12649 0.3458,0.41672 -0.1267,1.93959 -0.6018,1.93959 -0.1062,0 -0.2554,-0.1165 -0.3316,-0.2589 z"
-           id="path4865"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1632.105,776.99517 c -0.5518,-0.29023 -0.4211,-0.98819 0.185,-0.98819 0.2889,0 0.4105,0.35656 0.2813,0.82515 -0.094,0.34228 -0.1131,0.34885 -0.4663,0.16304 z"
-           id="path4867"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1634.1241,780.52404 c -0.6155,-0.54518 -0.8008,-0.90088 -0.6291,-1.20764 0.1793,-0.3204 1.0724,-0.31126 1.3667,0.014 0.2892,0.31955 0.2828,0.99025 -0.013,1.34613 l -0.2343,0.28204 -0.4906,-0.43453 z"
-           id="path4869"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1635.6921,782.33208 c -0.3123,-0.0859 -0.4456,-0.2291 -0.3866,-0.41509 0.04,-0.12664 0.2608,-0.34083 0.4346,-0.42193 0.2288,-0.10675 0.3663,-0.10248 0.4838,0.015 0.1284,0.12842 0.1498,0.29909 0.076,0.60898 l -0.06,0.25097 -0.1833,0.006 c -0.1009,0.003 -0.2653,-0.0165 -0.3653,-0.044 l 0,0 z"
-           id="path4871"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1638.3455,786.00236 c -0.2332,-0.0556 -0.436,-0.23067 -0.5445,-0.47003 -0.088,-0.19521 -0.087,-0.31951 0.01,-0.50296 0.2437,-0.48255 0.931,-0.40683 1.2046,0.13272 0.1075,0.21194 0.1142,0.33507 0.028,0.52413 -0.072,0.15756 -0.1965,0.25756 -0.388,0.31061 -0.1483,0.0411 -0.1562,0.0412 -0.3059,0.005 l 0,0 z"
-           id="path4873"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1641.9978,788.28729 c -0.5544,-0.0466 -1.0645,-0.18037 -1.3697,-0.35923 -0.3831,-0.22451 -0.3807,-0.5988 0.01,-0.85457 0.3057,-0.20249 0.6792,-0.23807 0.9656,-0.092 0.2038,0.10399 0.3182,0.22321 0.4315,0.44981 0.1459,0.29201 0.2432,0.88633 0.1428,0.87284 -0.023,-0.003 -0.102,-0.0107 -0.1756,-0.0169 l 0,0 z"
-           id="path4875"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1645.6719,790.51679 c -0.539,-0.0362 -0.8896,-0.1131 -1.1784,-0.25835 -0.2869,-0.14433 -0.386,-0.25713 -0.386,-0.43947 0,-0.2565 0.2945,-0.49012 0.7268,-0.57653 0.3746,-0.0749 0.8529,0.12253 1.0856,0.44805 0.1458,0.20397 0.2646,0.45152 0.3218,0.67076 l 0.05,0.19059 -0.1223,-0.005 c -0.067,-0.003 -0.2911,-0.0163 -0.4973,-0.0301 z"
-           id="path4877"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1649.19,791.53056 c -0.3513,-0.23583 -0.5371,-0.39932 -0.5969,-0.52539 -0.1151,-0.24259 0.011,-0.30402 0.6133,-0.29883 0.3876,0.003 0.4979,0.0169 0.7493,0.0924 0.3375,0.10139 0.5803,0.21634 0.6726,0.31846 0.1558,0.17241 -0.133,0.35661 -0.7711,0.49175 -0.2093,0.0443 -0.3918,0.0806 -0.4055,0.0805 -0.014,-4e-5 -0.1315,-0.0716 -0.2617,-0.15895 l 0,0 z"
-           id="path4879"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1652.0829,790.62713 c -0.395,-0.41827 -0.5834,-0.71947 -0.6178,-0.98738 -0.027,-0.21068 0.088,-0.41116 0.305,-0.53181 0.4928,-0.27389 1.3756,-0.14536 1.6631,0.24211 0.2213,0.29836 0.01,0.73555 -0.5696,1.16317 -0.176,0.13049 -0.5139,0.30633 -0.5887,0.30633 -0.01,0 -0.092,-0.0866 -0.192,-0.19242 z"
-           id="path4881"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1645.7887,783.64265 c -0.2515,-0.0547 -0.3864,-0.12195 -0.4779,-0.23834 -0.091,-0.1157 -0.088,-0.21797 0.01,-0.30822 0.091,-0.0858 0.251,-0.095 0.3911,-0.0225 0.1136,0.0588 0.2837,0.29351 0.3512,0.4848 0.055,0.15701 0.058,0.15611 -0.272,0.0843 z"
-           id="path4883"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1646.7802,782.2658 c -0.4304,-0.0628 -0.6023,-0.15131 -0.6023,-0.3099 0,-0.24286 0.4973,-0.42865 0.77,-0.28766 0.1197,0.0619 0.2531,0.28606 0.2838,0.47667 l 0.023,0.14222 -0.1953,-0.005 c -0.1075,-0.002 -0.2331,-0.0101 -0.2791,-0.0168 z"
-           id="path4885"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1646.906,781.06829 c -0.2849,-0.10168 -0.3965,-0.24675 -0.3986,-0.51818 0,-0.30126 0.2683,-0.67737 0.5556,-0.7722 0.2523,-0.0833 0.5214,0.10087 0.7004,0.47918 0.07,0.14736 0.2202,0.66543 0.2213,0.76189 4e-4,0.0355 -0.456,0.097 -0.709,0.0955 -0.1345,-7.5e-4 -0.3008,-0.0216 -0.3697,-0.0462 l 0,0 z"
-           id="path4887"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1648.0747,778.79192 c -0.1818,-0.0649 -0.2571,-0.14414 -0.2571,-0.27083 0,-0.23563 0.362,-0.60185 0.6794,-0.68731 0.4004,-0.10784 0.6235,0.12756 0.6249,0.65955 l 8e-4,0.27201 -0.2524,0.0375 c -0.3326,0.0495 -0.6379,0.0453 -0.7956,-0.0109 z"
-           id="path4889"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1651.0803,777.73457 c -0.404,-0.0534 -0.7001,-0.20087 -0.8032,-0.40009 -0.1738,-0.33608 0.1104,-0.90683 0.5972,-1.19943 0.2618,-0.15734 0.4144,-0.19117 0.5698,-0.12627 0.3072,0.12835 0.3396,0.72055 0.085,1.54587 -0.074,0.24127 -0.052,0.23227 -0.4485,0.17992 z"
-           id="path4891"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1655.4118,778.37364 c -0.3624,-0.10998 -0.6396,-0.48294 -0.5893,-0.79291 0.065,-0.40063 0.5063,-0.59937 0.9098,-0.40972 0.3286,0.15449 0.5266,0.5623 0.4155,0.85572 -0.1036,0.27328 -0.4463,0.43482 -0.736,0.34691 z"
-           id="path4893"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1655.3723,782.33991 c -0.303,-0.10814 -0.4124,-0.26196 -0.3837,-0.53957 0.045,-0.43326 0.5021,-0.96408 0.9385,-1.08925 0.1365,-0.0391 0.3047,0.039 0.3796,0.17631 0.085,0.15502 0.083,0.73351 0,1.17385 l -0.064,0.32627 -0.3712,-0.002 c -0.221,-9.4e-4 -0.4219,-0.0195 -0.4964,-0.0461 l 0,0 z"
-           id="path4895"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1655.4975,785.61081 c -1.1031,-0.24553 -1.6225,-0.53688 -1.6229,-0.91036 -4e-4,-0.34056 0.5473,-0.67539 1.0988,-0.67175 0.7363,0.005 1.0224,0.54426 0.758,1.42909 -0.053,0.17896 -0.07,0.18958 -0.2339,0.15302 z"
-           id="path4897"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1654.5368,787.83972 c -0.4175,-0.0748 -0.7237,-0.17744 -0.8914,-0.29894 -0.2151,-0.15583 -0.2245,-0.30913 -0.031,-0.50036 0.1387,-0.13685 0.2941,-0.21677 0.5511,-0.28336 0.2686,-0.0696 0.5328,-0.0673 0.6784,0.006 0.1465,0.0736 0.2684,0.25288 0.2684,0.39457 0,0.12635 -0.1096,0.48773 -0.1932,0.63719 l -0.058,0.1032 -0.3248,-0.0582 z"
-           id="path4899"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#d3bc5f;fill-opacity:1;stroke:none"
-           d="m 1606.8936,823.27215 c -0.262,-0.6966 -0.5642,-1.73623 -0.518,-1.78242 0.028,-0.0282 0.2165,-0.0513 0.4185,-0.0513 0.4342,0 0.8317,0.33345 0.8317,0.69772 0,0.25349 -0.2788,0.94687 -0.4948,1.23066 -0.1285,0.16879 -0.14,0.16421 -0.2374,-0.0947 z"
-           id="path4901"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#d3bc5f;fill-opacity:1;stroke:none"
-           d="m 1605.5371,822.46758 c -0.1334,-0.24934 0,-0.59033 0.2947,-0.7475 0.177,-0.0948 0.1964,-0.0865 0.1517,0.0652 -0.028,0.0956 -0.08,0.33348 -0.1142,0.52869 -0.071,0.40078 -0.1743,0.44858 -0.3322,0.15366 z"
-           id="path4903"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4905"
-           d="m 1622.9574,824.31269 c 0,-0.67081 -0.4409,-0.96561 -1.4442,-0.96561 -0.6867,0 -1.6477,-0.94768 -2.7146,-2.67708 -0.4088,-0.66257 -1.1494,-1.70301 -1.6459,-2.31207 l -0.9027,-1.10739 -1.5319,0.49081 c -0.8426,0.26994 -2.7115,0.91885 -4.1531,1.44202 -1.4415,0.52317 -2.8872,0.95109 -3.2124,0.95094 -0.5517,-1.8e-4 -0.5915,-0.12179 -0.5915,-1.80702 0,-1.56975 0.1067,-1.96478 0.8134,-3.01144 0.4473,-0.66257 0.9894,-1.20468 1.2047,-1.20468 0.4493,0 0.6933,-1.14359 0.323,-1.51394 -0.1362,-0.13614 -1.1332,-0.39581 -2.2157,-0.57705 -1.9115,-0.32005 -1.9749,-0.35538 -2.2006,-1.22665 -0.3309,-1.27694 -0.1467,-1.53246 1.4552,-2.0183 0.7827,-0.23738 2.4413,-0.94093 3.6857,-1.56345 l 2.2626,-1.13183 1.1516,-2.65381 c 0.6335,-1.4596 1.1011,-2.70444 1.0392,-2.76631 -0.062,-0.0619 0.1246,-0.34956 0.4143,-0.6393 0.3287,-0.3287 0.4662,-0.71767 0.3657,-1.03435 -0.089,-0.27914 0.087,-1.08614 0.3897,-1.79332 0.8314,-1.94059 1.618,-4.90152 1.618,-6.09029 0,-1.49936 -0.3311,-0.93769 -1.1772,1.99727 -0.4039,1.4008 -1.5992,4.71368 -2.6564,7.36195 -1.8523,4.64011 -1.9596,4.83331 -2.9522,5.31806 -1.3864,0.67706 -2.3945,0.35939 -5.9575,-1.87729 -4.2609,-2.67479 -7.6074,-6.33452 -9.1008,-9.95258 -0.9842,-2.38445 -1.1899,-6.59625 -0.5097,-10.43722 0.7813,-4.41188 4.8497,-15.66034 7.7705,-21.48416 0.8276,-1.65023 2.0861,-4.4606 2.7966,-6.24527 1.2028,-3.02128 3.7554,-10.61569 3.7554,-11.17292 3.1043,-0.46618 2.6485,-1.57829 4.0208,-0.65588 0.2897,1.36506 0.5442,3.43526 0.1632,4.0168 -0.6201,0.94637 -0.5407,1.14408 0.1855,0.46187 0.3422,-0.32149 0.7036,-0.50311 0.8031,-0.40361 0.3374,0.33746 0.183,2.11114 -0.2358,2.70919 -0.2293,0.32724 -0.3042,0.59499 -0.1666,0.59499 0.1377,0 0.4239,-0.2615 0.6361,-0.58111 0.2122,-0.31961 0.5092,-0.50489 0.6599,-0.41173 0.1508,0.0932 0.5505,1.10758 0.8883,2.25428 0.8432,2.86214 2.645,6.55866 4.2133,8.64373 0.7198,0.95705 2.6183,3.66759 4.2188,6.02342 10.0175,14.74526 12.855,18.69855 14.1758,19.75023 2.2753,1.81175 4.9699,3.45639 7.4728,4.56085 2.0374,0.89909 2.6458,1.04875 4.2034,1.03409 1.7973,-0.0169 1.8345,-0.003 2.8453,1.08513 1.8537,1.99511 2.5483,2.61595 2.9264,2.61595 0.6965,0 0.398,-1.08162 -0.4282,-1.55177 -0.4408,-0.25082 -0.8022,-0.6121 -0.8031,-0.80284 -7e-4,-0.19074 -0.2951,-0.64019 -0.6537,-0.99879 -0.3586,-0.35859 -0.5554,-0.71164 -0.4374,-0.78456 0.118,-0.0729 0.1586,-0.42484 0.09,-0.78204 -0.081,-0.42382 0.068,-0.8414 0.4284,-1.20193 0.8011,-0.80113 1.8462,-2.98417 2.0122,-4.20296 0.079,-0.57897 0.2839,-2.05688 0.4559,-3.28424 0.5187,-3.70282 -0.2302,-6.9783 -1.6845,-7.36786 -3.4109,-0.91365 -7.8259,1.71532 -9.1297,5.43647 -0.3228,0.92103 -0.7069,1.69237 -0.8537,1.7141 -0.5816,0.0861 -1.0027,-4.37178 -0.7337,-7.76692 0.2966,-3.74344 0.5605,-4.35155 2.9819,-6.87088 2.1501,-2.2372 3.2965,-2.7618 4.1563,-1.90198 0.3105,0.31049 0.3504,0.55046 0.153,0.91938 -0.3415,0.6381 -0.3489,1.95508 -0.01,1.74551 0.1415,-0.0875 0.3374,-0.58596 0.4353,-1.10775 0.2988,-1.59268 1.9159,-1.8922 3.2924,-0.60981 0.5404,0.50354 0.6064,0.75685 0.4728,1.81739 l -0.1551,1.2323 0.539,-1.01742 c 0.6417,-1.21123 1.1201,-1.45067 1.9298,-0.81379 0.6229,0.49002 0.6245,0.50445 0.1431,1.29722 -0.2678,0.44094 -0.4837,0.9824 -0.4798,1.20326 0.01,0.53675 1.3287,-0.95661 1.3287,-1.50403 0,-0.51205 2.187,0.63162 3.7246,1.94773 1.058,0.90563 3.1543,3.96447 4.3743,6.38284 0.9385,1.86035 2.061,5.20188 2.0694,6.16062 0,0.43987 0.078,1.97067 0.1652,3.40176 0.1623,2.66912 -0.3001,6.73924 -0.6932,6.10311 -0.1127,-0.18237 -0.149,-0.54559 -0.081,-0.80715 0.1822,-0.69672 -0.4695,-0.9805 -0.8999,-0.39188 -0.5492,0.75106 -0.4461,1.87567 0.2119,2.31258 0.5693,0.37801 0.5631,0.39702 -1.0039,3.10023 -0.8672,1.49593 -1.7273,2.72486 -1.9114,2.73094 -0.184,0.006 -0.3346,0.26003 -0.3346,0.56433 0,0.34708 -1.0725,1.62177 -2.8779,3.42053 l -2.8778,2.86727 -5.7557,2.98362 c -3.1657,1.64099 -6.4864,3.22771 -7.3795,3.52605 -1.7588,0.58754 -4.7615,1.14263 -5.2816,0.97636 -0.1775,-0.0567 -2.3068,-0.17659 -4.7317,-0.26634 -5.0331,-0.18627 -5.237,-0.26936 -5.5106,-2.24554 -0.094,-0.68242 -0.3376,-2.08405 -0.5404,-3.11473 -0.2028,-1.03067 -0.5565,-3.50027 -0.786,-5.488 -0.6413,-5.55417 -2.6176,-13.39799 -3.2231,-12.79245 -0.077,0.0771 0.2782,2.65571 0.7897,5.73016 1.1842,7.118 1.7234,10.96998 1.882,13.44408 0.069,1.08054 0.2386,2.10452 0.3764,2.27551 0.1378,0.17099 0.3349,0.82226 0.438,1.44725 0.103,0.625 0.2991,1.20539 0.4356,1.28978 0.1366,0.0844 0.4882,0.62377 0.7815,1.19864 0.2933,0.57487 0.9004,1.46336 1.3491,1.97441 0.4487,0.51105 0.8853,1.35768 0.9703,1.8814 0.1335,0.82277 0.082,0.9522 -0.3759,0.9522 -0.8045,0 -2.2344,-0.55783 -2.0781,-0.8107 0.076,-0.12272 0.015,-0.2988 -0.1342,-0.39128 -0.1497,-0.0925 -0.2721,-0.0519 -0.2721,0.0903 0,0.14214 -0.2409,0.19544 -0.5354,0.11843 -0.2945,-0.077 -0.5354,-0.22584 -0.5354,-0.33074 0,-0.32707 -2.5712,-1.41272 -3.1032,-1.31027 -0.3703,0.0713 -0.5529,0.418 -0.6841,1.29885 -0.1697,1.14016 -1.7574,5.61874 -1.9919,5.61874 -0.061,0 -0.1104,-0.28828 -0.1104,-0.64063 z m 2.8648,-14.7801 c 0.1222,-0.36683 -0.6384,-1.35112 -0.8672,-1.12225 -0.2912,0.29116 0.125,1.60235 0.4719,1.48672 0.1694,-0.0565 0.3473,-0.22048 0.3953,-0.36447 z m -11.1894,-3.76548 c 0.8463,-1.27774 0.9107,-1.78298 0.1465,-1.14868 -0.5572,0.46243 -1.5438,2.39849 -1.2223,2.39849 0.1364,0 0.6205,-0.56241 1.0758,-1.24981 z m 9.6591,-2.0454 c 0,-1.34316 -0.3989,-2.18006 -0.6807,-1.4458 -0.2425,0.63183 0.1218,2.91569 0.4342,2.72259 0.1378,-0.0852 0.2487,-0.65972 0.2465,-1.27679 z m -7.3731,-3.18933 c 0.4889,-0.69802 0.5545,-1.63721 0.1039,-1.48699 -0.3815,0.12716 -1.0943,2.08197 -0.7591,2.08197 0.1312,0 0.426,-0.26774 0.6552,-0.59498 z m 32.274,-0.72613 c 0,-0.98362 -0.4337,-2.15909 -0.7965,-2.15909 -0.357,0 -0.355,1.75847 0,2.42697 0.4073,0.76114 0.7937,0.63075 0.7937,-0.26788 z m -25.1645,-0.9702 c 0,-0.65389 -0.1205,-1.18889 -0.2677,-1.18889 -0.1473,0 -0.2678,0.60946 -0.2678,1.35434 0,0.83472 0.1028,1.29086 0.2678,1.18889 0.1472,-0.091 0.2677,-0.70046 0.2677,-1.35434 z m 17.284,0.8307 c 0.4751,-0.72511 0.3197,-1.27747 -0.2932,-1.04228 -0.2202,0.0845 -0.393,0.49133 -0.393,0.92529 0,0.94572 0.1288,0.96767 0.6862,0.11699 z m 17.7856,-2.14402 c 0,-0.47684 -0.93,-1.01277 -1.5502,-0.89332 -0.3936,0.0758 -0.3747,0.1637 0.1478,0.68619 0.6825,0.68243 1.4024,0.78876 1.4024,0.20713 z m -22.994,-1.02948 c 0.1056,-0.39462 0.09,-0.78025 -0.034,-0.85698 -0.2734,-0.169 -0.4001,0.0359 -0.6389,1.03319 -0.241,1.00635 0.4015,0.83807 0.6727,-0.17621 z m -17.5707,-1.43561 c 0.1012,-0.67475 0.2474,-1.39213 0.3249,-1.59417 0.078,-0.20203 0.023,-0.36733 -0.1201,-0.36733 -0.2801,0 -1.1403,2.77369 -1.1262,3.63161 0.016,0.96149 0.7175,-0.31038 0.9214,-1.67011 z m 5.4634,-0.42218 c 0.032,-1.02056 -0.3136,-1.35016 -0.609,-0.58045 -0.2221,0.57881 -0.2046,2.10297 0.031,2.70021 0.1605,0.40685 0.2235,0.35358 0.3699,-0.31274 0.097,-0.44171 0.1907,-1.25488 0.2081,-1.80702 z m 18.4499,2.15504 c 0.3842,-0.38413 0.4283,-1.28499 0.063,-1.28499 -0.2816,0 -0.8126,0.8632 -0.8126,1.32093 0,0.37879 0.3518,0.36193 0.7496,-0.0359 z m 5.9431,-2.37813 c 0,-1.183 -0.091,-1.59848 -0.3346,-1.51863 -0.6496,0.2134 -0.4536,3.14718 0.2102,3.14718 0.068,0 0.1244,-0.73285 0.1244,-1.62855 z m -50.7088,-0.40113 c 0.1938,-1.03255 -0.042,-1.52631 -0.4337,-0.90735 -0.3308,0.52302 -0.3307,2.2109 10e-5,2.00646 0.1415,-0.0875 0.3366,-0.58207 0.4336,-1.09911 z m 39.9738,0.40239 c 0.6275,-0.84882 0.6035,-1.22565 -0.062,-0.9703 -0.406,0.15583 -1.0917,1.79447 -0.7508,1.79447 0.1119,0 0.4776,-0.37088 0.8128,-0.82417 z m 6.7416,-1.23532 c 0.5956,-1.38958 0.6009,-1.42071 0.2416,-1.42071 -0.4022,0 -1.3325,1.64507 -1.3336,2.35824 0,0.89194 0.4878,0.47185 1.092,-0.93753 z m 6.1351,0.98026 c 0,-0.32049 -0.7551,-0.66427 -0.9753,-0.44404 -0.2345,0.23443 0.1632,0.72015 0.5895,0.72015 0.2122,0 0.3858,-0.12425 0.3858,-0.27611 z m -55.1477,-2.28291 c 0,-0.38854 -0.1159,-0.61345 -0.2677,-0.51962 -0.1473,0.091 -0.2677,0.39928 -0.2677,0.68507 0,0.28579 0.1204,0.51961 0.2677,0.51961 0.1472,0 0.2677,-0.30828 0.2677,-0.68506 z m 44.296,-0.37203 c 1.0279,-1.48322 0.708,-2.02519 -0.3408,-0.57739 -0.4645,0.64127 -0.7794,1.27138 -0.6998,1.40022 0.2151,0.34804 0.2463,0.32333 1.0406,-0.82283 z m -41.619,-2.02038 c 0,-1.12496 0.035,-1.17558 0.8701,-1.26327 l 0.87,-0.0914 -1.1463,-0.37212 c -0.8741,-0.28375 -1.2206,-0.29788 -1.459,-0.0595 -0.2384,0.2384 -0.2092,0.31265 0.1231,0.31265 0.3696,0 0.412,0.22989 0.2795,1.51399 -0.1145,1.10945 -0.074,1.46289 0.1532,1.32274 0.1702,-0.10519 0.3094,-0.71862 0.3094,-1.36318 z m 9.6375,-10e-4 c -0.3587,-0.43216 -2.1417,-0.56217 -2.1417,-0.15616 0,0.33863 0.507,0.51165 1.5721,0.53659 0.7732,0.0181 0.855,-0.0365 0.5696,-0.38043 z m 4.9801,-1.91691 c 0.2035,-0.85981 0.4323,-3.0086 0.5084,-4.7751 l 0.1385,-3.21181 0.7336,-0.22988 c 0.4035,-0.12644 2.2596,-0.24721 4.1246,-0.26839 3.0822,-0.035 4.0446,-0.18803 3.6519,-0.58068 -0.178,-0.17798 -6.2086,-2.49984 -7.3934,-2.84657 -0.4873,-0.1426 -1.0295,-0.20485 -1.2047,-0.13831 -0.3189,0.12103 0.4414,0.48795 2.8269,1.36416 0.6994,0.2569 1.2716,0.57954 1.2716,0.71699 0,0.30873 -1.3715,0.93846 -2.8467,1.30709 -0.6086,0.15209 -1.2483,0.4473 -1.4215,0.65604 -0.1733,0.20873 -0.3865,1.48368 -0.474,2.83321 -0.1127,1.73976 -0.2678,2.49546 -0.5329,2.59721 -0.8383,0.32169 -2.6912,-2.3764 -3.3031,-4.80988 -0.4274,-1.69988 -0.9625,-1.65803 -2.5673,0.20078 -1.5407,1.78454 -1.9722,1.86855 -1.9722,0.38396 0,-1.51017 -0.3368,-2.00739 -2.1568,-3.18369 -1.159,-0.74912 -1.4945,-1.09341 -1.2524,-1.28542 0.5371,-0.42606 2.0843,-0.81879 3.9446,-1.00129 3.904,-0.38299 4.6742,-0.96256 4.9058,-3.69158 0.09,-1.06165 0.5334,-3.90348 0.9853,-6.31517 0.4518,-2.41169 0.774,-4.43245 0.7159,-4.49057 -0.058,-0.0581 -0.2486,0.0665 -0.4233,0.27696 -0.3059,0.36869 -1.9871,7.71616 -2.3976,10.47924 -0.11,0.73993 -0.2987,1.50514 -0.4194,1.70048 -0.3624,0.58635 -1.8473,1.07189 -3.8001,1.2426 -1.5483,0.13535 -5.4578,0.91736 -6.7579,1.35175 -0.6849,0.22886 0.191,0.8498 2.2668,1.60687 1.1035,0.40249 2.1811,0.98121 2.3947,1.28606 0.503,0.71815 0.4937,3.53328 -0.019,5.65541 -0.2133,0.88343 -0.3897,2.11823 -0.392,2.744 0,0.95789 -0.089,1.13776 -0.5396,1.13776 -0.2945,0 -0.5354,0.12046 -0.5354,0.2677 0,0.14724 0.4457,0.26771 0.9905,0.26771 0.7593,0 0.917,-0.0735 0.6756,-0.31488 -0.1839,-0.18392 -0.2186,-0.43443 -0.083,-0.60234 0.1273,-0.1581 0.8576,-1.50737 1.623,-2.99837 1.3679,-2.66471 3.4185,-5.15817 3.9646,-4.82068 0.1429,0.0883 0.3934,0.69135 0.5568,1.34012 0.1633,0.64877 0.7119,1.67624 1.2191,2.28327 0.6314,0.75578 1.0219,1.58791 1.2385,2.6398 0.7729,3.7521 1.1034,3.98276 1.7559,1.22544 z m 55.6774,0.82421 c 0.1961,-1.04551 0.055,-1.34727 -0.4724,-1.01385 -0.1939,0.12242 -0.8344,0.22483 -1.4233,0.22759 -1.4487,0.007 -1.5175,0.77103 -0.08,0.89043 0.7041,0.0585 1.0388,0.2339 1.157,0.60623 0.2322,0.73168 0.6097,0.40419 0.8188,-0.7104 z m -73.1405,0.12823 c 0.1978,-0.98929 -0.096,-1.65365 -0.3943,-0.89171 -0.2831,0.72286 -0.2867,1.72224 -0.01,1.72224 0.1288,0 0.309,-0.37378 0.4004,-0.83062 z m 68.7016,-0.78235 c 0,-0.32576 -1.1424,-0.79649 -1.9329,-0.79649 -0.5425,0 -0.5448,0.0162 -0.075,0.53541 0.5003,0.55283 2.0078,0.74886 2.0078,0.26108 z m -26.6773,-0.67118 c -0.083,-0.21614 -0.3228,-0.39299 -0.5331,-0.39299 -0.3011,0 -0.3206,0.1153 -0.092,0.54291 0.3222,0.60204 0.8637,0.47215 0.6249,-0.14992 z m 31.0406,-2.41742 c 0.03,-1.04758 -0.267,-1.48014 -0.6259,-0.9126 -0.2902,0.45896 -0.333,1.62488 -0.083,2.27517 0.1629,0.42446 0.1897,0.42427 0.4288,-0.003 0.1402,-0.25064 0.2665,-0.86247 0.2806,-1.35963 z m -69.9946,0.80715 c 0.4188,-0.9192 0.4045,-2.07085 -0.024,-1.92919 -0.3368,0.11137 -0.7742,2.61106 -0.4568,2.61106 0.094,0 0.3099,-0.30684 0.4808,-0.68187 z m -2.9018,-0.40476 c 0,-0.30317 -0.1205,-0.47676 -0.2677,-0.38576 -0.1473,0.091 -0.2677,0.33904 -0.2677,0.55121 0,0.21217 0.1204,0.38576 0.2677,0.38576 0.1472,0 0.2677,-0.24804 0.2677,-0.55121 z m 71.696,0.0827 c -0.131,-0.69075 -1.3486,-0.74054 -1.9468,-0.0796 -0.4932,0.54496 -0.4888,0.54808 0.7698,0.54808 1.0609,0 1.2514,-0.0758 1.177,-0.46848 z m -3.051,0.0383 c 0.7796,-0.29915 0.4345,-0.64063 -0.6473,-0.64063 -1.029,0 -1.434,0.34428 -0.7362,0.62583 0.4839,0.19526 0.9016,0.19972 1.3835,0.0148 z m -68.3183,-1.37683 c 0.1501,-0.57864 -0.021,-1.13776 -0.349,-1.13776 -0.135,0 -0.2454,0.36141 -0.2454,0.80312 0,0.87041 0.3974,1.09416 0.5944,0.33464 z m 39.0263,0.15493 c 0,-0.44447 -0.8177,-1.29269 -1.2462,-1.29269 -0.4706,0 -0.4549,0.28099 0.057,1.01126 0.4419,0.63091 1.1895,0.80779 1.1895,0.28143 z m -27.8929,-0.77735 c -0.053,-0.15828 -0.1833,-0.27875 -0.29,-0.26771 -0.1068,0.011 -0.4652,0.0285 -0.7965,0.0389 -0.5747,0.018 -0.5778,0.0294 -0.067,0.24889 0.758,0.32574 1.2657,0.3169 1.1534,-0.0201 z m -6.4404,-0.84997 c -0.114,-0.3426 -3.0809,-0.89027 -3.3524,-0.61882 -0.285,0.28497 0.2327,0.53027 1.4895,0.70584 1.9419,0.27128 1.9815,0.26943 1.8629,-0.087 z m 1.673,0.0669 c -0.5238,-0.3385 -1.0709,-0.3385 -1.0709,0 0,0.14723 0.3313,0.26586 0.7362,0.26361 0.5737,-0.003 0.6476,-0.0614 0.3347,-0.26361 z m 65.9898,-1.07083 c 0,-0.4908 -0.1506,-0.94255 -0.3346,-1.00391 -0.232,-0.0773 -0.3346,0.23053 -0.3346,1.00391 0,0.77337 0.1026,1.08124 0.3346,1.0039 0.184,-0.0614 0.3346,-0.51311 0.3346,-1.0039 z m -42.6993,-0.14328 c 0,-0.55886 -0.4669,-0.48493 -0.7937,0.12567 -0.4023,0.75169 -0.3444,0.87558 0.2583,0.55302 0.2945,-0.1576 0.5354,-0.46301 0.5354,-0.67869 z m -29.1765,-0.59292 c 0,-0.25767 0.069,-0.76966 0.1486,-1.13776 0.1053,-0.4867 0.031,-0.42354 -0.2714,0.23152 -0.4843,1.04814 -0.5196,1.37473 -0.1485,1.37473 0.1472,0 0.2693,-0.21082 0.2713,-0.46849 z m 2.6735,-1.51017 c 0,-1.43955 -0.426,-0.92858 -0.6453,0.77397 -0.1588,1.23382 -0.1404,1.29788 0.2365,0.81889 0.2248,-0.28582 0.4088,-1.0026 0.4088,-1.59286 z m 33.1957,1.63666 c 0,-0.45217 -0.7655,-1.53196 -1.086,-1.53196 -0.3763,0 -0.3064,0.47207 0.1798,1.21411 0.4673,0.71324 0.9062,0.86717 0.9062,0.31785 z m -3.7479,-2.62101 c 0,-0.41556 -0.5039,-0.28101 -1.0709,0.28593 -0.818,0.81802 -0.6371,1.17974 0.2678,0.53542 0.4417,-0.31453 0.8031,-0.68414 0.8031,-0.82135 z m -18.2041,-0.51719 c 0,-0.14724 -0.512,-0.26586 -1.1378,-0.26361 -0.8332,0.003 -1.0303,0.0736 -0.7362,0.26361 0.5286,0.3416 1.874,0.3416 1.874,0 z m 3.2125,-0.64063 c 0,-0.38282 -0.5538,-0.69791 -1.2266,-0.69791 -0.4686,0 -0.5043,0.70823 -0.045,0.89354 0.6578,0.26544 1.2716,0.17102 1.2716,-0.19563 z m 16.0624,-0.13283 c 0,-0.39915 -1.0127,-1.51407 -1.203,-1.3245 -0.2117,0.21081 0.6241,1.56255 0.9661,1.56255 0.1303,0 0.2369,-0.10713 0.2369,-0.23805 z m -18.8867,-0.53499 c -0.3932,-0.36735 -1.4591,-0.63067 -1.4591,-0.36045 0,0.40878 0.3277,0.59807 1.0352,0.59807 0.4074,0 0.5766,-0.0949 0.4239,-0.23762 z m -2.1283,-0.29779 c 0.1011,-0.16362 -0.2831,-0.26039 -0.9881,-0.24889 -0.8901,0.0145 -1.0313,0.0714 -0.6182,0.24889 0.7409,0.31836 1.4095,0.31836 1.6063,0 z m 15.2398,-0.67502 c 0.6077,-0.45983 0.3299,-0.90602 -0.312,-0.50107 -0.4882,0.3079 -0.7753,0.91316 -0.427,0.89987 0.1227,-0.005 0.4552,-0.18415 0.739,-0.3988 z m -11.1296,-8.19515 c 0.6202,-4.43688 1.0722,-8.12246 1.0045,-8.19018 -0.4015,-0.40149 -2.2972,9.97194 -2.494,13.64708 -0.2637,4.92446 0.3555,2.65622 1.4895,-5.4569 z m 44.4787,6.98041 c 0,-0.30316 -0.1205,-0.47676 -0.2677,-0.38576 -0.1473,0.091 -0.2677,0.33905 -0.2677,0.55122 0,0.21217 0.1204,0.38576 0.2677,0.38576 0.1472,0 0.2677,-0.24805 0.2677,-0.55122 z m -55.5713,-0.21636 c 0.1624,-0.26282 -2.179,-0.64862 -2.5489,-0.41998 -0.132,0.0816 -0.24,0.26169 -0.24,0.40024 0,0.31655 2.5941,0.33492 2.7889,0.0197 z m 23.5636,-0.19098 c 0.6011,-0.6011 0.2169,-1.05843 -0.4115,-0.48978 -0.2799,0.25327 -0.5088,0.56229 -0.5088,0.68671 0,0.36111 0.4609,0.26249 0.9203,-0.19693 z m -20.463,-0.11227 c -0.5293,-0.34204 -2.1416,-0.34204 -2.1416,0 0,0.14724 0.5722,0.26586 1.2716,0.26361 0.9197,-0.003 1.1605,-0.0759 0.87,-0.26361 z m 2.9448,-0.26771 c 0,-0.14724 -0.3012,-0.26771 -0.6693,-0.26771 -0.3681,0 -0.6692,0.12047 -0.6692,0.26771 0,0.14724 0.3011,0.26771 0.6692,0.26771 0.3681,0 0.6693,-0.12047 0.6693,-0.26771 z m 11.5237,-0.29064 c 0.1643,-0.30708 0.219,-0.63818 0.1214,-0.73577 -0.1816,-0.18161 -0.9368,0.68706 -0.9368,1.07758 0,0.4254 0.5219,0.20663 0.8154,-0.34181 z m 8.0189,0.19828 c 0,-0.19804 -0.2409,-0.57811 -0.5354,-0.84461 -0.6019,-0.54473 -0.7199,-0.15428 -0.2033,0.6729 0.3826,0.61261 0.7387,0.69539 0.7387,0.17171 z m 28.3341,-1.12492 c 0.196,-0.61955 0.1989,-1.89573 -0.3759,-0.7236 -0.089,0.40491 -0.2077,0.88678 -0.2644,1.07083 -0.1914,0.62141 0.327,0.34023 0.6403,-0.34723 z m 2.519,0.006 c 0.146,-0.76341 -0.1922,-1.15182 -0.4402,-0.50559 -0.2346,0.61133 -0.1986,1.18125 0.075,1.18125 0.13,0 0.2946,-0.30404 0.3656,-0.67566 z m -57.7378,-1.64741 c 0.102,-0.88477 0.067,-1.16462 -0.1108,-0.88941 -0.1429,0.22085 -0.3379,1.0039 -0.4335,1.74009 -0.1293,0.99603 -0.101,1.22362 0.1109,0.88941 0.1565,-0.24702 0.3516,-1.03006 0.4334,-1.74009 z m 21.751,0.0825 c 0.101,-0.50918 -0.5042,-0.58108 -0.97,-0.11526 -0.1767,0.17669 -0.3212,0.55279 -0.3212,0.83578 0,0.47341 0.048,0.48262 0.6023,0.11525 0.3313,-0.2196 0.6413,-0.5957 0.6889,-0.83577 z m 29.0619,0.0804 c 0.5227,-0.88477 0.4147,-1.32465 -0.1999,-0.81456 -0.3939,0.32684 -0.7606,1.63621 -0.4583,1.63621 0.095,0 0.3913,-0.36975 0.6582,-0.82165 z m 2.3031,-0.71767 c 0,-0.57368 -0.061,-0.64755 -0.2636,-0.33463 -0.3385,0.52378 -0.3385,1.07083 0,1.07083 0.1472,0 0.2658,-0.33129 0.2636,-0.7362 z m -28.6406,-0.17113 c 0,-0.50346 -0.9789,-1.68162 -1.2077,-1.45365 -0.2081,0.20717 0.6764,1.82555 0.9977,1.82555 0.1155,0 0.21,-0.16735 0.21,-0.3719 z m 29.5665,-1.82932 c 0.2292,-0.32724 0.4167,-0.74888 0.4167,-0.93698 0,-0.6384 -0.4345,-0.34563 -0.8831,0.59499 -0.4963,1.04076 -0.1837,1.27003 0.4664,0.34199 z m -31.8994,-1.28314 c -0.1491,-0.57014 -0.5562,-0.94387 -0.7821,-0.71797 -0.1607,0.16064 0.4891,1.25755 0.7449,1.25755 0.098,0 0.1148,-0.24281 0.037,-0.53958 z m -2.4625,-3.57165 c -0.6958,-0.69575 -0.7457,-0.17209 -0.09,0.94619 0.4421,0.75421 0.4736,0.76584 0.5588,0.20595 0.052,-0.34189 -0.1465,-0.83019 -0.4685,-1.15214 z m -6.5019,-6.11519 c 0.1767,-0.17669 0.3173,-0.56821 0.3124,-0.87005 -0.01,-0.52604 -0.031,-0.52259 -0.5355,0.0832 -0.7759,0.93137 -0.5871,1.5971 0.2231,0.78685 z m -0.9002,-3.34451 c 0.6767,-0.99577 0.7222,-1.47259 0.09,-0.944 -0.544,0.45493 -1.3355,1.93269 -1.0352,1.93269 0.1503,0 0.5755,-0.44491 0.945,-0.98869 z m 3.259,-0.54252 c -0.2296,-0.22879 -1.2344,0.87336 -1.2344,1.354 0,0.16439 0.3249,-0.026 0.722,-0.42311 0.3971,-0.3971 0.6277,-0.816 0.5124,-0.93089 z m -3.6632,-2.11895 c 0.5795,-0.73677 0.73,-1.43629 0.309,-1.43629 -0.2374,0 -1.3604,1.62825 -1.3604,1.97248 0,0.39261 0.5357,0.11941 1.0514,-0.53619 z"
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           sodipodi:nodetypes="sssscsscsssssssscscssssssssssssccsssssssssssssssscscssssssssssscssscssssssscsscssscsscsssssssssssscssssscsssssscscssccscccssccsscccsscscssssccsccccssccscsscccsccccssccsssssssscsccscsssccssccsscsscssscscccssssssscscsscccscsssscssssssssssssssssssssssscsssscscssscscssscccccsccsscscsscscssscccssccssssssssscssccsssssscscccccccssccsscssssssscssccssccsscscssscsssssssssssssssssscssccscscsccssscsscssccsccccsccsscsssssssssscssscssccssccsssssssssssssccsscsssssssssssscssccsssss" />
-      </g>
-      <g
-         id="g4907"
-         transform="matrix(0.99213704,0.12515627,-0.12515627,0.99213704,-52.746636,-135.77221)">
-        <path
-           sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 1593.2094,687.52908 c -2.0468,0.15708 -4.163,1.77167 -4.1227,3.97629 -0.5519,0.98355 -2.0631,0.51153 -2.9046,1.13609 -1.1225,0.75007 -2.0493,1.87018 -3.4668,2.07305 -3.9726,0.8243 -8.1635,-1.11773 -12.0695,0.35723 -3.9418,1.51436 -6.4522,5.29783 -8.3215,8.91884 -1.2598,2.69495 -1.5933,5.99638 -0.5563,8.79586 1.0138,1.25091 0.1776,2.8291 -0.6325,3.9353 -1.1273,1.48888 -1.1946,4.01399 0.6032,5.01867 1.7346,1.18945 3.9736,1.18951 5.9498,1.63971 7.8732,0.77315 30.4383,0.55907 40.4828,-5.19452 2.8186,-2.30891 5.3649,-5.0314 7.326,-8.08142 0.8678,-2.69817 4.0347,-3.27133 6.1196,-4.69074 0.9328,-0.51141 0.3279,-1.75385 -0.4685,-2.03206 -0.6614,-0.44169 -1.6519,-0.59986 -2.1433,-1.13023 1.2455,-0.88616 3.1681,-1.52109 3.5254,-3.19743 -0.075,-1.32516 -1.8114,-1.38869 -2.8109,-1.42889 -1.0149,-1.5e-4 -2.0848,0.18613 -3.0335,-0.18154 -0.5965,-0.80031 0.2886,-1.84941 0.5856,-2.61182 0.6853,-1.24936 1.2835,-2.50616 2.3015,-3.50785 0.5951,-0.49915 0.533,-1.75886 -0.451,-1.57529 -1.8906,0.40409 -3.1864,2.03487 -4.9718,2.72309 -1.8938,1.03052 -4.2769,1.36986 -6.184,0.19325 -1.4512,0.81187 -3.0919,-0.037 -4.1169,-1.13608 -1.0455,-1.18289 -2.5914,-1.41548 -3.9177,-2.17262 -1.1833,-0.65797 -2.7274,-0.74725 -3.8943,-0.26352 -0.4559,-1.11752 -1.6669,-1.67428 -2.8285,-1.56358 z m -0.047,1.01896 c 0.6587,-0.0364 2.023,0.24125 1.751,1.14194 -0.127,0.36886 -0.583,0.81579 -0.8023,0.2401 -0.4612,-0.60731 -1.1472,-1.00378 -1.8739,-1.2005 0.2954,-0.12418 0.5967,-0.15513 0.9252,-0.18154 z m 5.2822,1.58115 c 1.3469,-0.0668 1.4669,1.8358 2.6412,2.03792 0.5213,0.11544 0.6715,-0.91449 1.1068,-0.29866 1.0063,0.65398 1.9972,1.33281 2.7757,2.26631 0.8614,0.0329 1.9421,-0.40039 2.6938,0.006 0.2169,0.205 -0.7752,-0.0245 -1.0189,0.0761 -0.705,-0.12354 -0.9434,0.86344 -0.1933,0.93698 0.8078,0.22394 1.8793,0.4577 2.5533,-0.19326 0.2142,-0.59347 -0.7378,-0.67846 -0.8374,-0.74372 0.399,-0.6477 0.7623,0.75014 1.1478,-0.0293 0.5079,0.11506 1.4164,0.43732 1.628,0.67931 -0.6014,-0.18283 -1.2669,0.61036 -0.5271,0.91355 0.5239,0.24052 1.2657,0.38944 1.628,-0.16397 3.1221,2.52865 4.9087,6.81927 3.9624,10.77821 -0.957,2.34263 -2.3044,4.52561 -3.9331,6.468 -0.3577,-0.74468 -0.7891,-2.06526 -1.7978,-1.94422 -0.698,0.58171 0.2238,1.4937 0.568,2.02621 0.8515,0.56762 0.2626,1.11718 -0.3279,1.61628 -1.3076,1.28274 -6.5265,3.72499 -8.1728,4.53382 -1.3752,0.0193 7.7168,-2.1945 0.092,-0.60433 -0.6411,0.63597 -1.5399,1.29881 -2.4361,0.79643 -0.6813,-0.18224 -1.1807,-0.88938 -1.9267,-0.76715 -0.3569,0.44314 0.6581,0.94163 0.1465,1.0541 -0.373,0.0726 -0.8548,0.53873 -0.8902,-0.0586 -0.2878,-0.64347 -1.2488,-0.37324 -1.1536,0.34551 0.828,0.35039 -0.043,0.45706 -0.4802,0.61489 -2.0672,0.69881 -4.2954,0.55668 -6.3832,1.18294 -5.3455,1.02602 -10.8435,1.27802 -16.2741,1.14779 -2.0669,-0.64516 -4.4774,-0.0308 -6.2836,-1.4231 -0.1994,0.90315 -1.2766,-0.0481 -1.7861,-0.15811 -0.5049,-0.38436 -1.0392,-0.38556 -1.5226,-0.041 -1.2607,0.13311 -1.6672,-1.56127 -1.6162,-2.5474 -0.1136,-1.10141 0.9882,-1.92633 2.0027,-1.45817 4.3478,-0.38151 8.7239,0.0692 12.9584,0.98143 4.123,0.4837 8.3495,0.083 12.2398,-1.35839 5.2148,-1.50053 10.5929,-2.48102 15.7653,-4.07953 0.9212,-0.39801 -0.085,-1.28886 -0.4488,-1.75365 -1.3034,-1.67026 -3.0083,-3.04805 -4.0546,-4.91645 -0.4807,2.02802 -0.9066,4.06481 -1.7685,5.96151 -2.025,-2.09819 -2.7105,-5.08846 -4.275,-7.47824 -0.608,-0.62303 -1.1912,0.32931 -1.0716,0.92527 0,2.75544 0.5094,5.69405 -0.9487,8.20439 -0.5342,1.06066 -1.6436,1.92886 -2.8812,1.74512 -0.7994,-0.85779 -1.4478,-1.88227 -2.0555,-2.89877 -0.4447,0.48627 -0.5892,1.49492 -1.0951,1.79197 -0.8137,-0.76745 -1.3357,-1.78061 -2.0614,-2.62939 -0.7931,1.48965 -0.6748,3.24445 -1.3937,4.74929 -1.389,-2.97546 -0.815,-6.54348 -2.4654,-9.44588 -1.8843,2.94991 -2.5289,6.6047 -4.4917,9.44003 -2.7118,-0.61582 -5.8241,0.54572 -8.2746,-1.01896 -1.2249,-0.97646 -0.9401,-2.7379 -1.8447,-3.94116 -0.2345,-1.13869 -0.7026,-0.71181 -1.1302,0.0293 -0.4447,0.58719 -0.8732,1.58564 -1.2884,1.92666 -1.9911,-4.59036 -0.022,-9.9469 3.2995,-13.36988 1.6229,-1.82304 3.4068,-4.03451 6.0586,-4.134 3.5973,-0.4321 7.1795,0.50999 10.7811,0.34551 2.5736,-2.15928 5.9884,-2.83315 9.1478,-3.68672 0.403,0.0281 1.7577,-0.66549 1.3931,-0.0261 -1.1357,2.14723 0.5956,5.30139 3.1565,4.94255 1.9386,-0.26287 4.0744,-1.93093 3.8943,-4.05242 -0.395,-1.67712 -2.5067,-1.59375 -3.7069,-2.43028 -0.3709,-0.16593 -1.0664,-0.61364 -0.2987,-0.67931 0.4823,-0.11387 0.9825,-0.14395 1.4758,-0.19325 z m 18.6049,2.04963 c -0.2874,1.65831 -1.3249,3.08721 -2.1902,4.49163 -0.6473,-0.58012 -1.9517,-1.3431 -1.5343,-2.36586 0.7369,-0.8533 2.0015,-0.86018 2.7758,-1.66899 0.2969,-0.18521 0.5979,-0.39487 0.9487,-0.45678 z m -13.3754,1.90324 c -0.7243,-0.13689 -1.3235,0.90276 -0.4626,1.15365 0.7797,0.23682 1.6147,0.10511 2.4186,0.23424 -0.2665,-0.88832 -0.9974,-1.51861 -1.956,-1.38789 z m -29.1575,2.05549 c -1.106,0.0244 -2.9506,0.52135 -2.6762,1.96765 0.2725,0.9332 1.5467,-0.29147 2.1843,-0.38651 0.7593,-0.23601 2.0398,-0.0745 2.3249,-0.98382 -0.1279,-0.75528 -1.2927,-0.57454 -1.833,-0.59732 z m 9.1707,1.07752 c -1.5602,0.19335 -2.839,1.28017 -3.7948,2.47713 1.4726,-0.50231 3.1839,-0.75585 4.3862,-1.79197 0.2524,-0.4151 -0.1875,-0.77433 -0.5914,-0.68516 z m -13.6564,0.35136 c -1.3622,0.53372 -1.9479,2.09366 -2.4772,3.34384 0.9894,0.23695 1.708,-0.48617 2.1726,-1.23564 0.3812,-0.47067 1.6194,-1.98619 0.3046,-2.1082 z m 46.837,0.77301 c 0.7248,0.11881 1.4675,0.15737 2.1317,0.48606 0.5054,0.0562 1.4994,-0.17506 1.7744,0.27523 -0.7893,1.14746 -2.2335,1.9265 -3.3732,2.60011 -0.6528,-0.85071 -1.4915,-2.11197 -0.9194,-3.17986 0.1032,-0.10343 0.2433,-0.16009 0.3865,-0.18154 z m -37.7659,2.10234 c -1.0042,0.41987 -1.5875,1.46665 -2.2137,2.30145 0.8472,1.02711 1.7342,-0.32489 2.3425,-0.92527 0.3932,-0.37299 0.8084,-1.43706 -0.1288,-1.37618 z m -12.1339,1.15951 c -1.3007,0.45749 -1.4071,2.2395 -2.0438,3.19157 -2.367,0.50266 -3.1074,4.29427 -1.0423,5.616 2.5616,0.23293 4.2747,-3.44227 2.5942,-5.29977 -0.4044,-0.22815 -0.8677,-0.37271 -1.3352,-0.33965 1.0941,-0.51022 2.6077,-1.37353 2.4303,-2.79336 -0.1017,-0.23193 -0.3311,-0.41455 -0.6032,-0.37479 z m 42.9486,1.44645 c -0.902,0.27258 -0.081,1.22401 0.3983,1.49331 0.506,0.29159 1.2591,1.36211 1.5108,0.35136 0.2249,-1.02937 -1.0372,-1.78352 -1.9091,-1.84467 z m 7.5954,0.22254 c 0.7897,0.15682 2.2427,0.19626 2.3659,1.22978 -0.3302,0.96802 -1.6256,1.49476 -2.4947,1.63385 -0.14,-0.94397 -0.09,-1.96932 0.1288,-2.86363 z m -40.9575,0.38064 c -1.0967,0.45804 -1.2494,1.87892 -1.6456,2.85192 0.831,-0.61572 2.5866,-1.30286 2.2487,-2.61182 -0.1084,-0.20659 -0.383,-0.30498 -0.6031,-0.2401 z m 36.4834,2.14919 c -0.8468,0.37145 0.047,1.30346 0.4041,1.70412 0.3649,0.54454 0.9739,0.99581 1.2591,0.20497 0.2857,-0.88196 -0.8341,-1.92788 -1.6632,-1.90909 z m -37.4673,1.13608 c -1.8892,0.33215 -3.7264,2.50909 -2.9924,4.45064 0.5956,1.3194 2.555,0.79701 3.3028,-0.14055 0.9888,-0.9866 1.6014,-2.87566 0.609,-4.03485 -0.2485,-0.2183 -0.5928,-0.30653 -0.9194,-0.27524 z m 31.6581,0.0703 c -0.8773,0.39491 0.1327,1.28573 0.5352,1.63288 0.4494,0.45335 1.1792,1.24989 1.6725,0.45189 0.2466,-1.00541 -1.0071,-1.5978 -1.7334,-1.99692 -0.1508,-0.0601 -0.3101,-0.11285 -0.4743,-0.0878 z m -12.655,0.73202 c 0.6942,1.29211 1.2467,2.65611 2.2546,3.73619 0.6752,0.84705 0.4595,2.25146 -0.6852,2.52398 -0.6624,0.16645 -1.6146,0.47444 -2.2429,0.12297 -0.3116,-2.04908 1.2042,-4.00932 0.6354,-6.09562 0.011,-0.0889 -0.087,-0.57217 0.038,-0.28752 z m -14.5114,2.95733 c 0.6452,2.03508 1.1381,4.15417 1.3,6.30702 -1.2767,0.24151 -2.7826,0.0701 -3.9411,-0.21668 0.3063,-2.27244 1.816,-4.14686 2.5825,-6.26602 z m -14.939,2.02621 c 0.3574,0.90311 1.0111,2.21155 0.2636,3.07445 -0.5613,0.31765 -1.4722,0.24165 -1.9618,-0.082 0.068,-1.13588 1.0643,-2.13161 1.6982,-2.99247 z m 19.7351,1.84467 c 0.6251,0.23791 1.2405,1.46606 0.5446,1.93837 -0.2971,0.0127 -0.8878,0.28368 -1.0365,0.13469 0.1498,-0.6633 0,-1.62887 0.4919,-2.07306 z m 2.4303,0.69102 c 0.322,-0.0516 1.328,0.47475 0.7906,0.73787 -0.6452,0.39988 -0.9053,-0.28906 -0.7906,-0.73787 z m 10.254,0.25181 c -0.8222,0.10065 0.075,1.27755 0.6266,1.2942 0.7908,0.0115 0.457,-0.98579 -0.1054,-1.12437 -0.15,-0.10587 -0.3319,-0.20755 -0.5212,-0.16983 z m -1.3235,1.61043 c -0.6361,0.8284 1.6317,1.43797 1.2357,0.31037 -0.2762,-0.28482 -0.8982,-0.57602 -1.2357,-0.31037 z m 2.6001,0.19911 c -0.4577,0.70949 0.7823,0.91925 0.814,1.56358 0.3916,0.57394 1.2166,0.0493 0.7379,-0.5212 -0.2054,-0.58148 -0.7676,-1.15827 -1.4464,-1.15365 z m -34.791,0.4802 c -0.8132,0.55134 -0.2899,1.82706 -0.2987,2.63963 -0.07,0.89602 0.9752,-0.16672 1.0834,-0.65441 0.1601,-0.61836 0.1194,-2.05819 -0.7847,-1.98522 z m 30.885,0.37479 c -0.8354,0.52338 0.8086,1.56342 0.7613,0.45677 -0.1293,-0.2907 -0.4249,-0.63365 -0.7613,-0.45677 z m -28.2908,0.11712 c -0.8356,0.5257 -0.2052,1.80292 -0.2326,2.58525 -0.04,0.90606 0.8122,-0.35862 0.9353,-0.79328 0.1723,-0.57492 0.1391,-1.86983 -0.7027,-1.79197 z m 2.8402,0.71444 c -0.3539,0.87141 -0.6051,2.12102 -0.035,2.95733 0.9528,0.26878 0.6987,-1.14651 0.7671,-1.72754 2e-4,-0.46004 0.079,-1.7273 -0.732,-1.22979 z"
-           id="path4909"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           d="m 1593.8347,691.0284 c 0,1.01857 -0.6748,0.66791 -2.1313,1.04437 -1.0213,0.264 -2.1178,0.57394 -1.8934,-1.03278 0.1767,-1.26437 0.8891,-2.12021 2.3054,-1.71438 0.6332,0.18144 1.7193,0.68423 1.7193,1.70279 z"
-           id="path4911"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="sssss" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4913"
-           d="m 1600.2922,694.15317 c -0.405,1.49052 -2.8379,2.84356 -3.5516,2.78538 -1.4917,-0.12161 -2.4986,-1.30002 -2.4986,-2.90369 0,-1.60367 1.4805,-2.74306 2.191,-2.57242 1.7741,0.42608 4.1664,1.56036 3.8592,2.69073 z"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:nodetypes="sssss" />
-        <path
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           d="m 1604.0708,711.86296 c 0,0.33266 -2.2029,0.69045 -2.7607,0.88678 -1.9969,0.70273 -1.9996,-0.25216 -1.6565,-1.03737 0.5165,-1.18206 0.5548,-2.56061 0.9537,-3.53039 0.4658,0.70339 3.4635,3.34831 3.4635,3.68098 z"
-           id="path4919"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ssscs" />
-        <path
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           d="m 1594.3026,690.56575 c -0.1347,-0.0433 -0.2358,-0.13049 -0.4606,-0.39724 -0.1275,-0.15125 -0.3117,-0.34324 -0.4093,-0.42664 -0.4576,-0.39103 -1.0374,-0.63589 -1.866,-0.78813 -0.1361,-0.025 -0.252,-0.0499 -0.2575,-0.0554 -0.023,-0.0229 0.3066,-0.25677 0.5145,-0.36517 0.5312,-0.27708 1.0948,-0.38699 1.7102,-0.33355 0.814,0.0707 1.4763,0.40969 1.7037,0.87211 0.07,0.14187 0.076,0.17412 0.076,0.38194 0,0.21923 0,0.23389 -0.1,0.42864 -0.1188,0.23964 -0.4187,0.59779 -0.5446,0.65041 -0.105,0.0439 -0.2831,0.0599 -0.3667,0.033 z"
-           id="path4921"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1614.0561,696.35701 c -1.5212,-1.36771 -1.4173,-2.395 0.3088,-3.05422 0.3347,-0.12782 1.0105,-0.50194 1.5018,-0.83138 1.6321,-1.09448 1.8565,-0.54937 0.7231,1.75673 -0.7056,1.43564 -1.4519,2.62952 -1.6915,2.70606 -0.081,0.026 -0.4602,-0.23379 -0.8422,-0.57719 z"
-           id="path4923"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1616.8196,701.35585 c -0.8269,-1.26054 -1.03,-2.51721 -0.4934,-3.05373 0.2409,-0.24094 0.3736,-0.26432 1.0373,-0.18286 0.4186,0.0514 0.9117,0.15017 1.0958,0.21953 0.184,0.0694 0.7534,0.15337 1.2653,0.18667 0.6027,0.0392 1.0158,0.13763 1.1723,0.27929 0.2234,0.20214 0.2256,0.24332 0.029,0.5428 -0.1168,0.17824 -0.4034,0.50098 -0.637,0.7172 -0.4871,0.45101 -2.7285,1.99383 -2.8966,1.99383 -0.062,0 -0.3195,-0.31623 -0.5731,-0.70273 z"
-           id="path4925"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1617.0478,705.88012 c -0.088,-0.58882 0,-1.89661 0.1663,-2.59822 0.072,-0.29521 0.1206,-0.3102 0.7412,-0.22788 1.2947,0.17175 2.2441,0.77557 2.2441,1.42732 0,0.59987 -1.5208,1.72019 -2.6332,1.93987 -0.4193,0.0828 -0.4259,0.0759 -0.5184,-0.54109 z"
-           id="path4927"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 1599.6453,712.5736 c -0.045,-0.13014 0.024,-0.54049 0.1529,-0.91189 0.1292,-0.3714 0.3389,-1.18065 0.4659,-1.79833 0.127,-0.61768 0.2692,-1.18715 0.316,-1.2655 0.077,-0.1284 3.1091,2.92618 3.2403,3.26405 0.063,0.16343 -2.9398,0.94829 -3.6287,0.94829 -0.2554,0 -0.5013,-0.10648 -0.5464,-0.23662 z"
-           id="path4929"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 1593.7645,714.38771 c -0.2382,-0.23822 -0.1232,-1.67368 0.2629,-3.28116 0.2897,-1.20605 0.355,-1.90534 0.2606,-2.79215 -0.08,-0.75005 -0.056,-1.18311 0.064,-1.18311 0.1047,0 0.5528,0.6969 0.996,1.54867 0.4431,0.85176 1.0915,1.92309 1.4408,2.38072 1.1137,1.45905 0.7472,2.79746 -0.895,3.26845 -0.7386,0.21181 -1.9432,0.24495 -2.1296,0.0586 z"
-           id="path4931"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 1577.8571,717.21415 -0.732,-0.0756 0.1239,-0.77493 c 0.068,-0.42621 0.6744,-1.95329 1.3472,-3.3935 0.6729,-1.44022 1.2234,-2.7213 1.2234,-2.84684 0,-0.56158 0.445,0.28072 0.7854,1.48659 0.8081,2.86251 1.1683,5.49033 0.7734,5.64188 -0.2831,0.10865 -2.3147,0.0869 -3.5213,-0.0376 l 0,0 z"
-           id="path4933"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 1584.1734,716.25441 c 0,-0.94086 0.342,-1.9298 0.6673,-1.9298 0.4234,0 1.0364,0.96011 1.0364,1.62338 0,0.71434 -0.03,0.74193 -0.9938,0.91585 l -0.7099,0.12809 0,-0.73752 z"
-           id="path4935"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 1587.1085,715.84361 c -0.068,-0.3098 -0.075,-0.64254 -0.015,-0.73942 0.1572,-0.25438 0.7857,-0.0459 1.1821,0.39217 0.329,0.3635 0.3282,0.38625 -0.024,0.64367 -0.5947,0.43488 -1.0062,0.3282 -1.1434,-0.29642 z"
-           id="path4937"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1563.3885,715.99043 c -0.3957,-0.39573 -0.253,-0.83824 0.7576,-2.34928 l 0.9848,-1.47236 0.3329,0.74664 c 0.5285,1.18567 0.6327,2.27606 0.2703,2.82925 -0.2589,0.3951 -0.4587,0.4729 -1.2142,0.4729 -0.4973,0 -1.0065,-0.10222 -1.1314,-0.22715 z"
-           id="path4939"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1599.9036,711.89321 c 0.097,-0.48697 0.3017,-1.34806 0.454,-1.91355 l 0.2768,-1.02814 0.7233,0.60324 c 0.3978,0.33178 1.0609,0.99236 1.4735,1.46795 l 0.7503,0.86471 -1.018,0.25981 c -0.5599,0.14289 -1.4272,0.34341 -1.9275,0.4456 l -0.9095,0.18578 0.1771,-0.8854 0,0 z"
-           id="path4941"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1593.8239,714.12421 c -0.068,-0.11043 0.038,-1.22476 0.2354,-2.4763 0.1975,-1.25153 0.3966,-2.67209 0.4425,-3.1568 0.081,-0.85978 0.1144,-0.82932 1.355,1.24711 1.5337,2.56712 1.6498,3.5743 0.4817,4.17833 -0.8288,0.42861 -2.3036,0.55039 -2.5146,0.20766 z"
-           id="path4943"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1578.0302,717.07571 c -0.6667,-0.0998 -0.7389,-0.19859 -0.587,-0.8036 0.3276,-1.30541 2.3811,-5.93442 2.5785,-5.81245 0.2931,0.18114 1.3119,4.71598 1.3119,5.83934 l 0,0.97077 -1.2716,-0.0401 c -0.6994,-0.0221 -1.6137,-0.0913 -2.0318,-0.15395 z"
-           id="path4945"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1584.3619,715.78792 c 0.1994,-1.22862 0.3266,-1.36481 0.8606,-0.92166 0.6463,0.53639 0.4006,1.71445 -0.3806,1.82488 -0.6008,0.0849 -0.6311,0.0279 -0.48,-0.90322 z"
-           id="path4947"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1587.2232,715.66352 c 0,-0.29447 0.1057,-0.53541 0.2349,-0.53541 0.3511,0 0.8578,0.69202 0.6551,0.89468 -0.3665,0.3665 -0.89,0.15518 -0.89,-0.35927 z"
-           id="path4949"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#d3bc5f;fill-opacity:1;stroke:none"
-           d="m 1563.8657,716.0144 c -0.672,-0.17562 -0.5839,-0.69062 0.3886,-2.27111 l 0.857,-1.39286 0.3356,0.7865 c 0.5184,1.21497 0.4477,2.46069 -0.1581,2.78488 -0.5386,0.28825 -0.6473,0.29532 -1.4231,0.0926 z"
-           id="path4951"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4953"
-           d="m 1601.7824,719.65247 c 0,-0.13597 -0.2955,-0.17305 -0.6567,-0.0824 -0.3822,0.0959 -1.0148,-0.0138 -1.5135,-0.26261 -1.0633,-0.53043 -1.475,-0.5473 -1.0567,-0.0433 0.2672,0.32194 -0.04,0.49756 -1.899,1.08473 -1.2198,0.38534 -3.0652,0.80963 -4.1009,0.94288 -1.0356,0.13325 -2.7865,0.42307 -3.8908,0.64405 -2.7023,0.54076 -6.0557,0.89149 -10.6299,1.1118 -3.6507,0.17582 -6.048,-0.009 -9.4482,-0.72634 -0.6625,-0.13988 -1.5835,-0.29782 -2.0466,-0.35095 -0.4631,-0.0531 -1.0876,-0.22809 -1.3879,-0.38878 -0.3002,-0.16068 -1.022,-0.29215 -1.6038,-0.29215 -0.9532,0 -1.1036,-0.0962 -1.5193,-0.97226 -0.4805,-1.01247 -0.416,-2.60175 0.1275,-3.14527 0.4956,-0.49566 8.6034,-0.31438 11.6504,0.26049 1.8659,0.35204 3.8534,0.50298 6.5589,0.49815 3.7788,-0.007 4.0023,-0.0399 8.4327,-1.25261 2.5031,-0.68511 6.7797,-1.79983 9.5036,-2.47716 5.9493,-1.47934 6.7447,-1.72361 6.6396,-2.03909 -0.1131,-0.33906 -4.3284,-5.28985 -4.5222,-5.31111 -0.087,-0.01 -0.3112,0.66651 -0.4983,1.50233 -0.187,0.83581 -0.5774,2.07062 -0.8675,2.744 l -0.5274,1.22434 -0.6546,-0.80313 c -0.3601,-0.44171 -1.3442,-2.15785 -2.1869,-3.81364 -0.8426,-1.65579 -1.6827,-3.01106 -1.8667,-3.01171 -0.2481,-9.4e-4 -0.3347,0.78266 -0.3347,3.02886 0,3.87351 -0.4652,5.5606 -1.9143,6.94206 -1.442,1.37477 -2.1496,1.33078 -3.2292,-0.20078 -0.467,-0.66258 -0.949,-1.20469 -1.071,-1.20469 -0.1221,0 -0.3592,0.30117 -0.5269,0.66927 -0.1677,0.3681 -0.3982,0.66927 -0.5123,0.66927 -0.114,0 -0.5465,-0.47909 -0.9609,-1.06465 -0.4145,-0.58556 -0.8741,-1.02817 -1.0213,-0.98357 -0.1472,0.0446 -0.468,0.89871 -0.7129,1.89802 -0.2448,0.9993 -0.5681,1.93984 -0.7183,2.09008 -0.3413,0.34129 -0.9251,-1.63059 -1.5197,-5.13334 -0.2357,-1.3883 -0.5928,-2.83392 -0.7935,-3.21249 l -0.3651,-0.6883 -0.6657,1.47239 c -0.3662,0.80982 -1.0393,2.37591 -1.4957,3.4802 -0.4564,1.10429 -1.0995,2.48189 -1.429,3.06133 l -0.599,1.05353 -3.0787,-0.0647 c -4.8267,-0.10142 -5.9547,-0.61445 -6.6762,-3.03647 -0.188,-0.63115 -0.4931,-1.43828 -0.678,-1.7936 -0.3349,-0.64353 -0.3399,-0.64046 -1.3018,0.78781 l -0.9656,1.43386 -0.4601,-1.05552 c -0.6067,-1.39161 -0.6162,-4.84163 -0.019,-6.81123 0.7018,-2.31391 2.2783,-4.72376 4.7464,-7.25529 3.1379,-3.21859 3.636,-3.35984 10.5744,-2.9985 l 5.0865,0.26488 0.9617,-0.63458 c 1.7924,-1.18267 9.5507,-3.71625 10.001,-3.26595 0.082,0.0823 0.013,0.54172 -0.1543,1.02105 -0.6625,1.90047 0.7554,4.03446 2.68,4.03363 2.0668,-9.3e-4 4.16,-1.89111 3.9921,-3.60501 -0.071,-0.72476 -0.3019,-0.91839 -2.1543,-1.80702 -2.5985,-1.24653 -2.6922,-1.81565 -0.2991,-1.81565 0.7312,0 1.1243,0.21348 1.8483,1.00373 0.787,0.85903 0.9916,0.95872 1.4196,0.69148 0.4253,-0.26561 0.7313,-0.13066 2.0486,0.90321 1.5222,1.19473 1.5857,1.2165 3.7202,1.27644 1.469,0.0412 2.5006,0.22189 3.1889,0.55844 0.9808,0.47958 0.9953,0.50611 0.4016,0.73727 -0.5946,0.23153 -0.5974,0.24693 -0.081,0.44631 0.3002,0.11576 0.6878,0.0847 0.882,-0.0708 0.8592,-0.68748 3.7501,3.31515 4.491,6.21822 0.6166,2.41573 0.4142,4.12949 -0.7674,6.49653 -0.9865,1.97609 -2.7644,4.51128 -3.282,4.67989 -0.1555,0.0506 -0.4848,-0.3318 -0.7318,-0.84988 -0.4432,-0.92939 -0.9933,-1.26308 -0.9933,-0.60255 0,0.18668 0.2998,0.78065 0.6663,1.31993 l 0.6662,0.98051 -1.804,1.64388 c -0.9922,0.90414 -2.2559,1.90637 -2.8082,2.22719 -5.624,1.02748 -1.8392,-0.45754 -5.2863,2.02504 z m -31.8612,0.76674 c 0,-1.00617 -0.078,-1.29138 -0.2636,-1.0039 -0.3424,0.52979 -0.3424,2.40936 0,2.40936 0.1472,0 0.2658,-0.63246 0.2636,-1.40546 z m -2.8294,-0.37235 c 0.2026,-0.52807 -0.048,-1.43468 -0.3971,-1.43468 -0.1373,0 -0.2496,0.42164 -0.2496,0.93698 0,0.97848 0.3568,1.25309 0.6467,0.4977 z m -2.5207,-1.04892 c 0,-0.93692 -0.4261,-1.24991 -0.7065,-0.51901 -0.2148,0.55971 0.1303,1.79634 0.4467,1.60079 0.1429,-0.0883 0.2598,-0.57513 0.2598,-1.08178 z m 32.5265,0.68507 c -0.091,-0.14724 -0.2788,-0.2677 -0.4174,-0.2677 -0.1385,0 -0.2519,0.12046 -0.2519,0.2677 0,0.14724 0.1878,0.26771 0.4174,0.26771 0.2295,0 0.3429,-0.12047 0.2519,-0.26771 z m 2.8232,-1.58331 c -0.2811,-0.52511 -0.8154,-0.77325 -0.8154,-0.37865 0,0.26736 0.8711,1.18011 1.0016,1.04956 0.062,-0.0619 -0.022,-0.36383 -0.1862,-0.67091 z m -2.8232,-0.55835 c -0.091,-0.14724 -0.286,-0.2677 -0.4332,-0.2677 -0.1472,0 -0.1932,0.12046 -0.1022,0.2677 0.091,0.14724 0.2859,0.26771 0.4331,0.26771 0.1472,0 0.1933,-0.12047 0.1023,-0.26771 z m 1.2046,-1.30989 c 0,-0.13149 -0.1807,-0.30841 -0.4015,-0.39316 -0.4081,-0.15659 -0.5483,0.12858 -0.2231,0.45375 0.2558,0.25585 0.6246,0.22007 0.6246,-0.0606 z m -22.5859,-5.268 c 0.7361,-0.78055 0.9016,-1.16765 0.9016,-2.10888 0,-1.49886 -0.4887,-1.94898 -1.6114,-1.48396 -2.4248,1.00441 -3.2203,4.54888 -1.0209,4.54888 0.6038,0 1.074,-0.25972 1.7307,-0.95604 z m -9.9831,-1.46768 c 1.4451,-1.13671 1.46,-4.02315 0.023,-4.3839 -1.9494,-0.48925 -3.6189,2.5617 -2.3743,4.33868 0.5208,0.74357 1.4413,0.76126 2.3516,0.0452 z m 42.9278,-1.47666 c -0.7558,-0.65465 -1.5244,-0.85974 -1.5244,-0.40674 0,0.13415 0.3787,0.56258 0.8416,0.95206 0.6215,0.52296 0.919,0.62932 1.1377,0.40673 0.2175,-0.22128 0.096,-0.47437 -0.4549,-0.95205 z m 5.2841,-1.47369 c -0.2566,-0.28352 -0.5683,-0.51549 -0.6927,-0.51549 -0.417,0 -0.2319,0.62872 0.3761,1.27778 0.5095,0.54388 0.6163,0.57443 0.6927,0.19812 0.05,-0.2447 -0.1195,-0.67688 -0.3761,-0.96041 z m -37.0594,-2.15252 c 0,-0.67774 -0.4121,-0.63734 -0.9218,0.0903 -0.6657,0.95034 -0.5407,1.37249 0.2525,0.85279 0.3681,-0.24119 0.6693,-0.6656 0.6693,-0.94315 z m 34.8019,0.2985 c 0,-0.41059 -1.0207,-1.33854 -1.4724,-1.33854 -0.6078,0 -0.4828,0.43262 0.3038,1.0514 0.77,0.60562 1.1686,0.70358 1.1686,0.28714 z m -44.9079,-1.2869 c 0.5019,-0.43103 0.6476,-1.65789 0.1968,-1.65789 -0.3209,0 -1.3321,1.5852 -1.3336,2.09054 0,0.3737 0.3562,0.23775 1.1368,-0.43265 z m 11.7645,-1.30641 c 0.7416,-0.71053 0.9902,-1.4223 0.4967,-1.4223 -0.2603,0 -1.6198,1.65009 -1.6198,1.96614 0,0.34891 0.3867,0.16164 1.1231,-0.54384 z m -9.371,-2.1585 c 1.2714,-1.36318 1.5608,-2.51695 0.4871,-1.94233 -0.5342,0.28587 -1.1799,1.20753 -1.4546,2.07618 -0.2571,0.813 0.135,0.75875 0.9675,-0.13385 z m 13.5663,-1.44116 c 0.7559,-0.31411 1.3743,-0.68508 1.3743,-0.82439 0,-0.37911 -1.6278,0.0442 -2.4763,0.64389 -1.3202,0.93312 -0.8818,1.00493 1.102,0.1805 z m -8.5309,-0.96554 c 0.6626,-0.21399 1.3553,-0.43389 1.5393,-0.48865 0.7516,-0.22361 0.2624,-0.65177 -0.7448,-0.65177 -1.5539,0 -2.9362,0.63719 -2.9362,1.35352 0,0.44825 0.105,0.5327 0.4685,0.37685 0.2577,-0.11047 1.0106,-0.37595 1.6732,-0.58995 z m 30.7863,-2.72863 c 0,-0.34878 -0.9066,-0.59967 -1.4346,-0.39703 -0.7554,0.28988 -0.4808,0.6467 0.4977,0.6467 0.5153,0 0.9369,-0.11235 0.9369,-0.24967 z m 3.7479,-0.018 c 0,-0.14724 -0.5492,-0.26771 -1.2204,-0.26771 -0.7455,0 -1.1561,0.10419 -1.0551,0.26771 0.091,0.14723 0.6402,0.2677 1.2205,0.2677 0.5803,0 1.055,-0.12047 1.055,-0.2677 z"
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           sodipodi:nodetypes="cccsssssssssssssssscsscsscsssssssssssscssscsssscsssscscccssssssssssssssssscscccsscccccssssssssssssssssssssssscssssssssssssssscsssccsscccccsscssssssssccsccccsscssssccssc" />
-        <path
-           transform="matrix(0.99213704,-0.12515627,0.12515627,0.99213704,1350.7884,568.48734)"
-           inkscape:connector-curvature="0"
-           id="path4969"
-           d="m 225.53571,152.60819 -3.52678,-2.00893"
-           style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           transform="matrix(0.99213704,-0.12515627,0.12515627,0.99213704,1350.7884,568.48734)"
-           inkscape:connector-curvature="0"
-           id="path4971"
-           d="m 226.20536,153.76891 5.04464,3.25892"
-           style="fill:#d3bc5f;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-        <path
-           transform="matrix(0.99213704,-0.12515627,0.12515627,0.99213704,1350.7884,568.48734)"
-           inkscape:connector-curvature="0"
-           id="path4973"
-           d="m 224.04,151.27115 -1.62233,-0.92792 0.14912,-0.11169 c 0.28294,-0.2119 0.45056,-0.27129 0.81877,-0.29006 0.29612,-0.0151 0.41287,8.8e-4 0.68335,0.0936 0.91727,0.31431 1.61399,0.98619 1.69024,1.62999 0.0273,0.23097 -0.0109,0.5456 -0.0653,0.53827 -0.0173,-0.002 -0.76151,-0.42179 -1.6538,-0.93215 z"
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none" />
-        <path
-           transform="matrix(0.99213704,-0.12515627,0.12515627,0.99213704,1350.7884,568.48734)"
-           inkscape:connector-curvature="0"
-           id="path4975"
-           d="m 222.2799,152.78395 c -0.38832,-0.0915 -0.52494,-0.28574 -0.52156,-0.74161 0.002,-0.31377 0.16461,-0.92856 0.2451,-0.92856 0.0236,0 0.66183,0.35156 1.4184,0.78125 l 1.37556,0.78125 -0.61664,0.0298 c -0.33915,0.0164 -0.79744,0.0514 -1.01842,0.0778 -0.46359,0.0554 -0.64785,0.0554 -0.88244,1.5e-4 l 0,0 z"
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none" />
-        <path
-           transform="matrix(0.99213704,-0.12515627,0.12515627,0.99213704,1350.7884,568.48734)"
-           inkscape:connector-curvature="0"
-           id="path4977"
-           d="m 229.03681,154.9734 c -1.2869,-0.83349 -2.34856,-1.52418 -2.35925,-1.53487 -0.0359,-0.0359 0.54458,-0.43856 0.79282,-0.55005 0.13504,-0.0607 0.35602,-0.12032 0.49107,-0.13258 0.21129,-0.0192 0.30156,9e-4 0.64732,0.14411 0.78903,0.32681 1.44379,0.69692 2.10421,1.18942 0.50696,0.37807 0.84072,0.73883 1.0055,1.08685 0.14336,0.30277 0.15797,0.48653 0.0578,0.72633 -0.0832,0.19911 -0.33047,0.59151 -0.3708,0.58844 -0.0159,-0.001 -1.08175,-0.68415 -2.36865,-1.51765 l 0,0 z"
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none" />
-        <path
-           transform="matrix(0.99213704,-0.12515627,0.12515627,0.99213704,1350.7884,568.48734)"
-           inkscape:connector-curvature="0"
-           id="path4979"
-           d="m 227.81167,158.16065 c -0.57105,-0.13178 -1.19369,-0.56954 -1.52934,-1.07522 -0.47509,-0.71575 -0.59686,-1.86728 -0.27871,-2.63565 l 0.0605,-0.14614 2.26145,1.46137 2.26145,1.46136 -0.34181,0.20339 c -0.48182,0.28669 -0.99338,0.51483 -1.43556,0.64019 -0.51305,0.14546 -0.69074,0.16161 -0.99799,0.0907 z"
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none" />
-      </g>
-      <path
-         sodipodi:type="arc"
-         style="opacity:0;fill:#d3bc5f;fill-opacity:1;stroke:none"
-         id="path5080"
-         sodipodi:cx="308.57141"
-         sodipodi:cy="181.84926"
-         sodipodi:rx="125"
-         sodipodi:ry="77.142853"
-         d="m 433.57141,181.84926 c 0,42.60482 -55.96441,77.14285 -125,77.14285 -69.03559,0 -125,-34.53803 -125,-77.14285 0,-42.60482 55.96441,-77.14285 125,-77.14285 69.03559,0 125,34.53803 125,77.14285 z"
-         transform="matrix(0.82857143,0,0,1,1249.1688,597.30477)" />
-    </g>
-    <g
-       id="0splash_title"
-       inkscape:label="#g4544">
-      <g
-         style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="text5010">
-        <path
-           style="font-weight:bold;fill:#f4e3d7;-inkscape-font-specification:Sans Bold"
-           d="m 1710.0625,588.65625 c 0,10.38542 0,20.77083 0,31.15625 6.2074,0.0408 14.2886,1.95531 11.5,-7 -3.7388,-7.38615 10.5168,-7.8831 7.0937,-0.375 -2.5193,8.48815 4.0693,7.8682 10.5313,7.375 2.3151,-4.01824 0.347,-12.3197 1,-18 -1.4103,-4.64181 3.1687,-15.27284 -3,-15.15625 -8.393,-2.21588 -9.7387,2.61549 -8.5313,10 -5.0843,4.60228 -9.3497,-1.54698 -7.0937,-7.90625 1.1613,-3.31982 -12.4672,-3.27036 -11.5,-0.0937 z"
-           id="path5015"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-weight:bold;fill:#f4e3d7;-inkscape-font-specification:Sans Bold"
-           d="m 1743.0312,595.9375 c 1.066,7.43205 -2.8129,17.15354 3.9063,22.75 3.2069,2.20375 7.7097,2.21664 11.0625,0.34375 4.3926,1.77597 14.3557,2.35736 11,-6.21875 0,-6.29167 0,-12.58333 0,-18.875 -6.9887,-0.65539 -13.6337,-0.96708 -11,8 0.3236,2.41298 0.7453,10.75868 -3.6562,8.6875 -0.7987,-5.48792 -0.04,-11.14148 -0.2813,-16.6875 -3.0302,0.96973 -11.3436,-2.13248 -11.0313,2 z"
-           id="path5017"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-weight:bold;fill:#f4e3d7;-inkscape-font-specification:Sans Bold"
-           d="m 1786.75,593.46875 c -2.0743,-0.006 -4.0189,1.99557 -5,0.46875 -7.7625,-1.43959 -12.0775,0.56829 -9.9688,9 1.167,5.12476 -2.4386,15.02194 2,16.875 8.451,2.12804 10.3841,-2.26175 8.9688,-10 -0.5784,-2.21353 0.1186,-8.74665 3.6875,-6.65625 0.6672,5.48178 0.1,11.11833 0.2813,16.65625 6.1959,0.18557 13.7337,1.7129 11.0312,-7 0.1363,-6.40465 1.4629,-16.85538 -6.6875,-19.03125 -1.3916,-0.401 -2.8734,-0.46283 -4.3125,-0.3125 z"
-           id="path5019"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-weight:bold;fill:#f4e3d7;-inkscape-font-specification:Sans Bold"
-           d="m 1800.9375,589.71875 c 0.3435,5.04215 -7.0977,7.28737 -2.5,13.21875 4.8121,-0.73676 1.6049,6.21328 2.625,9.46875 0.1072,6.39921 7.2084,8.18887 12.4687,7.40625 7.3481,3.49823 7.3481,-12.49823 0,-9 -3.7472,0.43631 -0.5984,-5.78854 -1.625,-7.875 7.5933,3.74413 9.916,-7.02867 5.2188,-9 -8.8574,3.04486 -1.7469,-9.87806 -11.2188,-6.21875 -1.8716,0.5738 -6.07,-1.56009 -4.9687,2 z"
-           id="path5021"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-weight:bold;fill:#f4e3d7;-inkscape-font-specification:Sans Bold"
-           d="m 1830.4375,593.4375 c -8.9525,-0.16178 -14.8999,9.55454 -12.125,17.71875 2.5753,9.91859 15.2764,10.78618 23.3125,7.625 4.7986,-1.68698 1.993,-8.31542 3.625,-11.96875 0.4967,-8.12343 -6.7922,-14.45221 -14.8125,-13.375 z m 0.9375,8.625 c 3.2218,-0.0115 0.4565,0.91414 -1,0.3125 0.2956,-0.18603 0.7073,-0.2088 1,-0.3125 z m 6.5625,8.75 c -2.5487,0.77991 -5.7966,1.66093 -8.1563,0 2.7188,0 5.4375,0 8.1563,0 z"
-           id="path5023"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-weight:bold;fill:#f4e3d7;-inkscape-font-specification:Sans Bold"
-           d="m 1861.4062,587.40625 c -0.7526,2.11877 1.9149,9.09146 -2.0624,6.40625 -8.5915,-2.81357 -15.7136,6.51627 -14.3438,14.53125 -0.1864,8.03339 8.737,15.03421 16.2188,10.875 3.1272,0.50135 14.0333,3.18482 11.2187,-4.40625 0,-9.80208 0,-19.60417 0,-29.40625 -3.0302,0.96973 -11.3436,-2.13248 -11.0313,2 z m -2.5937,15.0625 c 3.6966,0.35371 3.4838,7.36597 0.75,8.71875 -4.5118,1.32742 -4.6222,-8.76986 -0.75,-8.71875 z"
-           id="path5025"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-weight:bold;fill:#f4e3d7;-inkscape-font-specification:Sans Bold"
-           d="m 1889.4375,588.65625 c 0,10.38542 0,20.77083 0,31.15625 9.7667,-0.36637 23.3421,2.29429 29.25,-7.875 5.6583,-9.25094 0.3733,-23.55929 -11,-24.71875 -6.0231,-1.00204 -12.1713,-0.39338 -18.25,-0.5625 l 0,1 0,1 z m 12.0937,7.65625 c 5.2309,-0.82985 9.0624,4.42659 7.3126,9.28125 -0.3347,3.59056 -6.4635,5.88375 -7.9063,3.53125 0.4034,-4.0029 -0.8003,-9.82797 0.5937,-12.8125 z"
-           id="path5027"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-weight:bold;fill:#f4e3d7;-inkscape-font-specification:Sans Bold"
-           d="m 1922.3125,587.40625 c 0,10.80208 0,21.60417 0,32.40625 6.9887,0.65539 13.6337,0.96708 11,-8 0,-8.80208 0,-17.60417 0,-26.40625 -3.0307,1.00717 -11.3375,-2.21368 -11,2 z"
-           id="path5029"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-weight:bold;fill:#f4e3d7;-inkscape-font-specification:Sans Bold"
-           d="m 1951.0625,593.46875 c -2.0475,10e-4 -3.9998,1.94175 -5,0.46875 -7.7633,-1.42994 -12.1216,0.54504 -10,9 1.1669,5.12476 -2.4386,15.02194 2,16.875 8.455,2.12163 10.4299,-2.23673 9,-10 -0.4868,-2.27026 -0.073,-8.56453 3.6563,-6.75 0.7036,5.53224 0.125,11.17697 0.3124,16.75 6.196,0.18557 13.7338,1.7129 11.0313,-7 0.1592,-6.4108 1.4342,-16.70314 -6.5937,-19.03125 -1.4297,-0.35891 -2.9293,-0.48591 -4.4063,-0.3125 z"
-           id="path5031"
-           inkscape:connector-curvature="0" />
-        <path
-           style="font-weight:bold;fill:#f4e3d7;-inkscape-font-specification:Sans Bold"
-           d="m 1975.5312,593.4375 c -8.8872,-0.17922 -14.8149,9.49827 -12.0937,17.59375 2.8542,12.76482 24.9531,12.45119 27.1875,-0.59375 2.2878,-7.97385 -3.5555,-17.12945 -12.1562,-17 -0.9777,-0.0508 -1.96,-0.055 -2.9376,0 z m 1.4688,8.96875 c 3.7833,0.36371 3.7834,7.71945 0.625,8.90625 -4.5734,1.29652 -4.6111,-9.26385 -0.625,-8.90625 z"
-           id="path5033"
-           inkscape:connector-curvature="0" />
-      </g>
-      <text
-         sodipodi:linespacing="125%"
-         id="text3276"
-         y="617.80212"
-         x="1708.3757"
-         style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           style="font-weight:bold;-inkscape-font-specification:Sans Bold"
-           y="617.80212"
-           x="1708.3757"
-           id="tspan3278"
-           sodipodi:role="line">Hunted Dino</tspan></text>
-    </g>
-    <g
-       id="0splash_head"
-       transform="translate(5.0507623,29.294424)"
-       inkscape:label="#g4426">
-      <g
-         transform="matrix(0.30409787,0,0,0.30409787,1731.2437,737.93577)"
-         id="g4306"
-         inkscape:label="#g3896">
-        <path
-           d="m 226.42857,399.50504 c 0,18.93547 -15.35024,34.28571 -34.28572,34.28571 -18.93547,0 -34.28571,-15.35024 -34.28571,-34.28571 0,-18.93548 15.35024,-34.28572 34.28571,-34.28572 18.93548,0 34.28572,15.35024 34.28572,34.28572 z"
-           sodipodi:ry="34.285713"
-           sodipodi:rx="34.285713"
-           sodipodi:cy="399.50504"
-           sodipodi:cx="192.14285"
-           id="path4308"
-           style="fill:#d3bc5f;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:type="arc"
-           transform="translate(-33.62958,-116.19868)" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4310"
-           d="m 158.51328,317.59207 0,107.14286"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4312"
-           d="m 158.2994,424.2687 -28.6056,49.54636"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 158.80094,424.2687 28.6056,49.54636"
-           id="path4314"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:transform-center-y="-10.245755"
-           inkscape:transform-center-x="21.938845"
-           inkscape:connector-curvature="0"
-           id="path4316"
-           d="M 157.23601,329.21038 115.06405,309.47837"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 160.52091,329.21038 42.17196,-19.73201"
-           id="path4318"
-           inkscape:connector-curvature="0"
-           inkscape:transform-center-x="-21.938845"
-           inkscape:transform-center-y="-10.245755" />
-      </g>
-      <g
-         inkscape:label="#g3896"
-         id="g4376"
-         transform="matrix(0.30409787,0,0,0.30409787,1846.1722,735.72112)">
-        <path
-           transform="translate(-33.62958,-116.19868)"
-           sodipodi:type="arc"
-           style="fill:#d3bc5f;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="path4378"
-           sodipodi:cx="192.14285"
-           sodipodi:cy="399.50504"
-           sodipodi:rx="34.285713"
-           sodipodi:ry="34.285713"
-           d="m 226.42857,399.50504 c 0,18.93547 -15.35024,34.28571 -34.28572,34.28571 -18.93547,0 -34.28571,-15.35024 -34.28571,-34.28571 0,-18.93548 15.35024,-34.28572 34.28571,-34.28572 18.93548,0 34.28572,15.35024 34.28572,34.28572 z" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 158.51328,317.59207 0,107.14286"
-           id="path4380"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 158.2994,424.2687 -28.6056,49.54636"
-           id="path4382"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4384"
-           d="m 158.80094,424.2687 28.6056,49.54636"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="M 157.23601,329.21038 115.06405,309.47837"
-           id="path4386"
-           inkscape:connector-curvature="0"
-           inkscape:transform-center-x="21.938845"
-           inkscape:transform-center-y="-10.245755" />
-        <path
-           inkscape:transform-center-y="-10.245755"
-           inkscape:transform-center-x="-21.938845"
-           inkscape:connector-curvature="0"
-           id="path4388"
-           d="m 160.52091,329.21038 42.17196,-19.73201"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      </g>
-      <g
-         inkscape:label="#g3896"
-         id="g4320"
-         transform="matrix(0.30409787,0,0,0.30409787,1770.0347,729.66443)">
-        <path
-           transform="translate(-33.62958,-116.19868)"
-           sodipodi:type="arc"
-           style="fill:#d3bc5f;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="path4322"
-           sodipodi:cx="192.14285"
-           sodipodi:cy="399.50504"
-           sodipodi:rx="34.285713"
-           sodipodi:ry="34.285713"
-           d="m 226.42857,399.50504 c 0,18.93547 -15.35024,34.28571 -34.28572,34.28571 -18.93547,0 -34.28571,-15.35024 -34.28571,-34.28571 0,-18.93548 15.35024,-34.28572 34.28571,-34.28572 18.93548,0 34.28572,15.35024 34.28572,34.28572 z" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 158.51328,317.59207 0,107.14286"
-           id="path4324"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 158.2994,424.2687 -28.6056,49.54636"
-           id="path4326"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4328"
-           d="m 158.80094,424.2687 28.6056,49.54636"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="M 157.23601,329.21038 115.06405,309.47837"
-           id="path4330"
-           inkscape:connector-curvature="0"
-           inkscape:transform-center-x="21.938845"
-           inkscape:transform-center-y="-10.245755" />
-        <path
-           inkscape:transform-center-y="-10.245755"
-           inkscape:transform-center-x="-21.938845"
-           inkscape:connector-curvature="0"
-           id="path4332"
-           d="m 160.52091,329.21038 42.17196,-19.73201"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      </g>
-      <g
-         transform="matrix(0.30409787,0,0,0.30409787,1806.8547,732.69673)"
-         id="g4334"
-         inkscape:label="#g3896">
-        <path
-           d="m 226.42857,399.50504 c 0,18.93547 -15.35024,34.28571 -34.28572,34.28571 -18.93547,0 -34.28571,-15.35024 -34.28571,-34.28571 0,-18.93548 15.35024,-34.28572 34.28571,-34.28572 18.93548,0 34.28572,15.35024 34.28572,34.28572 z"
-           sodipodi:ry="34.285713"
-           sodipodi:rx="34.285713"
-           sodipodi:cy="399.50504"
-           sodipodi:cx="192.14285"
-           id="path4336"
-           style="fill:#d3bc5f;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:type="arc"
-           transform="translate(-33.62958,-116.19868)" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4338"
-           d="m 158.51328,317.59207 0,107.14286"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4340"
-           d="m 158.2994,424.2687 -28.6056,49.54636"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 158.80094,424.2687 28.6056,49.54636"
-           id="path4342"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:transform-center-y="-10.245755"
-           inkscape:transform-center-x="21.938845"
-           inkscape:connector-curvature="0"
-           id="path4344"
-           d="M 157.23601,329.21038 115.06405,309.47837"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 160.52091,329.21038 42.17196,-19.73201"
-           id="path4346"
-           inkscape:connector-curvature="0"
-           inkscape:transform-center-x="-21.938845"
-           inkscape:transform-center-y="-10.245755" />
-      </g>
-      <g
-         transform="matrix(2.9704872,0.37472152,-0.37472152,2.9704872,-2628.0967,-1915.0369)"
-         id="g4907-3">
-        <path
-           inkscape:connector-curvature="0"
-           id="path4909-3"
-           d="m 1593.2094,687.52908 c -2.0468,0.15708 -4.163,1.77167 -4.1227,3.97629 -0.5519,0.98355 -2.0631,0.51153 -2.9046,1.13609 -1.1225,0.75007 -2.0493,1.87018 -3.4668,2.07305 -3.9726,0.8243 -8.1635,-1.11773 -12.0695,0.35723 -3.9418,1.51436 -6.4522,5.29783 -8.3215,8.91884 -1.2598,2.69495 -1.5933,5.99638 -0.5563,8.79586 1.0138,1.25091 0.1776,2.8291 -0.6325,3.9353 -1.1273,1.48888 -1.1946,4.01399 0.6032,5.01867 1.7346,1.18945 3.9736,1.18951 5.9498,1.63971 7.8732,0.77315 30.4383,0.55907 40.4828,-5.19452 2.8186,-2.30891 5.3649,-5.0314 7.326,-8.08142 0.8678,-2.69817 4.0347,-3.27133 6.1196,-4.69074 0.9328,-0.51141 0.3279,-1.75385 -0.4685,-2.03206 -0.6614,-0.44169 -1.6519,-0.59986 -2.1433,-1.13023 1.2455,-0.88616 3.1681,-1.52109 3.5254,-3.19743 -0.075,-1.32516 -1.8114,-1.38869 -2.8109,-1.42889 -1.0149,-1.5e-4 -2.0848,0.18613 -3.0335,-0.18154 -0.5965,-0.80031 0.2886,-1.84941 0.5856,-2.61182 0.6853,-1.24936 1.2835,-2.50616 2.3015,-3.50785 0.5951,-0.49915 0.533,-1.75886 -0.451,-1.57529 -1.8906,0.40409 -3.1864,2.03487 -4.9718,2.72309 -1.8938,1.03052 -4.2769,1.36986 -6.184,0.19325 -1.4512,0.81187 -3.0919,-0.037 -4.1169,-1.13608 -1.0455,-1.18289 -2.5914,-1.41548 -3.9177,-2.17262 -1.1833,-0.65797 -2.7274,-0.74725 -3.8943,-0.26352 -0.4559,-1.11752 -1.6669,-1.67428 -2.8285,-1.56358 z m -0.047,1.01896 c 0.6587,-0.0364 2.023,0.24125 1.751,1.14194 -0.127,0.36886 -0.583,0.81579 -0.8023,0.2401 -0.4612,-0.60731 -1.1472,-1.00378 -1.8739,-1.2005 0.2954,-0.12418 0.5967,-0.15513 0.9252,-0.18154 z m 5.2822,1.58115 c 1.3469,-0.0668 1.4669,1.8358 2.6412,2.03792 0.5213,0.11544 0.6715,-0.91449 1.1068,-0.29866 1.0063,0.65398 1.9972,1.33281 2.7757,2.26631 0.8614,0.0329 1.9421,-0.40039 2.6938,0.006 0.2169,0.205 -0.7752,-0.0245 -1.0189,0.0761 -0.705,-0.12354 -0.9434,0.86344 -0.1933,0.93698 0.8078,0.22394 1.8793,0.4577 2.5533,-0.19326 0.2142,-0.59347 -0.7378,-0.67846 -0.8374,-0.74372 0.399,-0.6477 0.7623,0.75014 1.1478,-0.0293 0.5079,0.11506 1.4164,0.43732 1.628,0.67931 -0.6014,-0.18283 -1.2669,0.61036 -0.5271,0.91355 0.5239,0.24052 1.2657,0.38944 1.628,-0.16397 3.1221,2.52865 4.9087,6.81927 3.9624,10.77821 -0.957,2.34263 -2.3044,4.52561 -3.9331,6.468 -0.3577,-0.74468 -0.7891,-2.06526 -1.7978,-1.94422 -0.698,0.58171 0.2238,1.4937 0.568,2.02621 0.8515,0.56762 0.2626,1.11718 -0.3279,1.61628 -1.3076,1.28274 -6.5265,3.72499 -8.1728,4.53382 -1.3752,0.0193 7.7168,-2.1945 0.092,-0.60433 -0.6411,0.63597 -1.5399,1.29881 -2.4361,0.79643 -0.6813,-0.18224 -1.1807,-0.88938 -1.9267,-0.76715 -0.3569,0.44314 0.6581,0.94163 0.1465,1.0541 -0.373,0.0726 -0.8548,0.53873 -0.8902,-0.0586 -0.2878,-0.64347 -1.2488,-0.37324 -1.1536,0.34551 0.828,0.35039 -0.043,0.45706 -0.4802,0.61489 -2.0672,0.69881 -4.2954,0.55668 -6.3832,1.18294 -5.3455,1.02602 -10.8435,1.27802 -16.2741,1.14779 -2.0669,-0.64516 -4.4774,-0.0308 -6.2836,-1.4231 -0.1994,0.90315 -1.2766,-0.0481 -1.7861,-0.15811 -0.5049,-0.38436 -1.0392,-0.38556 -1.5226,-0.041 -1.2607,0.13311 -1.6672,-1.56127 -1.6162,-2.5474 -0.1136,-1.10141 0.9882,-1.92633 2.0027,-1.45817 4.3478,-0.38151 8.7239,0.0692 12.9584,0.98143 4.123,0.4837 8.3495,0.083 12.2398,-1.35839 5.2148,-1.50053 10.5929,-2.48102 15.7653,-4.07953 0.9212,-0.39801 -0.085,-1.28886 -0.4488,-1.75365 -1.3034,-1.67026 -3.0083,-3.04805 -4.0546,-4.91645 -0.4807,2.02802 -0.9066,4.06481 -1.7685,5.96151 -2.025,-2.09819 -2.7105,-5.08846 -4.275,-7.47824 -0.608,-0.62303 -1.1912,0.32931 -1.0716,0.92527 0,2.75544 0.5094,5.69405 -0.9487,8.20439 -0.5342,1.06066 -1.6436,1.92886 -2.8812,1.74512 -0.7994,-0.85779 -1.4478,-1.88227 -2.0555,-2.89877 -0.4447,0.48627 -0.5892,1.49492 -1.0951,1.79197 -0.8137,-0.76745 -1.3357,-1.78061 -2.0614,-2.62939 -0.7931,1.48965 -0.6748,3.24445 -1.3937,4.74929 -1.389,-2.97546 -0.815,-6.54348 -2.4654,-9.44588 -1.8843,2.94991 -2.5289,6.6047 -4.4917,9.44003 -2.7118,-0.61582 -5.8241,0.54572 -8.2746,-1.01896 -1.2249,-0.97646 -0.9401,-2.7379 -1.8447,-3.94116 -0.2345,-1.13869 -0.7026,-0.71181 -1.1302,0.0293 -0.4447,0.58719 -0.8732,1.58564 -1.2884,1.92666 -1.9911,-4.59036 -0.022,-9.9469 3.2995,-13.36988 1.6229,-1.82304 3.4068,-4.03451 6.0586,-4.134 3.5973,-0.4321 7.1795,0.50999 10.7811,0.34551 2.5736,-2.15928 5.9884,-2.83315 9.1478,-3.68672 0.403,0.0281 1.7577,-0.66549 1.3931,-0.0261 -1.1357,2.14723 0.5956,5.30139 3.1565,4.94255 1.9386,-0.26287 4.0744,-1.93093 3.8943,-4.05242 -0.395,-1.67712 -2.5067,-1.59375 -3.7069,-2.43028 -0.3709,-0.16593 -1.0664,-0.61364 -0.2987,-0.67931 0.4823,-0.11387 0.9825,-0.14395 1.4758,-0.19325 z m 18.6049,2.04963 c -0.2874,1.65831 -1.3249,3.08721 -2.1902,4.49163 -0.6473,-0.58012 -1.9517,-1.3431 -1.5343,-2.36586 0.7369,-0.8533 2.0015,-0.86018 2.7758,-1.66899 0.2969,-0.18521 0.5979,-0.39487 0.9487,-0.45678 z m -13.3754,1.90324 c -0.7243,-0.13689 -1.3235,0.90276 -0.4626,1.15365 0.7797,0.23682 1.6147,0.10511 2.4186,0.23424 -0.2665,-0.88832 -0.9974,-1.51861 -1.956,-1.38789 z m -29.1575,2.05549 c -1.106,0.0244 -2.9506,0.52135 -2.6762,1.96765 0.2725,0.9332 1.5467,-0.29147 2.1843,-0.38651 0.7593,-0.23601 2.0398,-0.0745 2.3249,-0.98382 -0.1279,-0.75528 -1.2927,-0.57454 -1.833,-0.59732 z m 9.1707,1.07752 c -1.5602,0.19335 -2.839,1.28017 -3.7948,2.47713 1.4726,-0.50231 3.1839,-0.75585 4.3862,-1.79197 0.2524,-0.4151 -0.1875,-0.77433 -0.5914,-0.68516 z m -13.6564,0.35136 c -1.3622,0.53372 -1.9479,2.09366 -2.4772,3.34384 0.9894,0.23695 1.708,-0.48617 2.1726,-1.23564 0.3812,-0.47067 1.6194,-1.98619 0.3046,-2.1082 z m 46.837,0.77301 c 0.7248,0.11881 1.4675,0.15737 2.1317,0.48606 0.5054,0.0562 1.4994,-0.17506 1.7744,0.27523 -0.7893,1.14746 -2.2335,1.9265 -3.3732,2.60011 -0.6528,-0.85071 -1.4915,-2.11197 -0.9194,-3.17986 0.1032,-0.10343 0.2433,-0.16009 0.3865,-0.18154 z m -37.7659,2.10234 c -1.0042,0.41987 -1.5875,1.46665 -2.2137,2.30145 0.8472,1.02711 1.7342,-0.32489 2.3425,-0.92527 0.3932,-0.37299 0.8084,-1.43706 -0.1288,-1.37618 z m -12.1339,1.15951 c -1.3007,0.45749 -1.4071,2.2395 -2.0438,3.19157 -2.367,0.50266 -3.1074,4.29427 -1.0423,5.616 2.5616,0.23293 4.2747,-3.44227 2.5942,-5.29977 -0.4044,-0.22815 -0.8677,-0.37271 -1.3352,-0.33965 1.0941,-0.51022 2.6077,-1.37353 2.4303,-2.79336 -0.1017,-0.23193 -0.3311,-0.41455 -0.6032,-0.37479 z m 42.9486,1.44645 c -0.902,0.27258 -0.081,1.22401 0.3983,1.49331 0.506,0.29159 1.2591,1.36211 1.5108,0.35136 0.2249,-1.02937 -1.0372,-1.78352 -1.9091,-1.84467 z m 7.5954,0.22254 c 0.7897,0.15682 2.2427,0.19626 2.3659,1.22978 -0.3302,0.96802 -1.6256,1.49476 -2.4947,1.63385 -0.14,-0.94397 -0.09,-1.96932 0.1288,-2.86363 z m -40.9575,0.38064 c -1.0967,0.45804 -1.2494,1.87892 -1.6456,2.85192 0.831,-0.61572 2.5866,-1.30286 2.2487,-2.61182 -0.1084,-0.20659 -0.383,-0.30498 -0.6031,-0.2401 z m 36.4834,2.14919 c -0.8468,0.37145 0.047,1.30346 0.4041,1.70412 0.3649,0.54454 0.9739,0.99581 1.2591,0.20497 0.2857,-0.88196 -0.8341,-1.92788 -1.6632,-1.90909 z m -37.4673,1.13608 c -1.8892,0.33215 -3.7264,2.50909 -2.9924,4.45064 0.5956,1.3194 2.555,0.79701 3.3028,-0.14055 0.9888,-0.9866 1.6014,-2.87566 0.609,-4.03485 -0.2485,-0.2183 -0.5928,-0.30653 -0.9194,-0.27524 z m 31.6581,0.0703 c -0.8773,0.39491 0.1327,1.28573 0.5352,1.63288 0.4494,0.45335 1.1792,1.24989 1.6725,0.45189 0.2466,-1.00541 -1.0071,-1.5978 -1.7334,-1.99692 -0.1508,-0.0601 -0.3101,-0.11285 -0.4743,-0.0878 z m -12.655,0.73202 c 0.6942,1.29211 1.2467,2.65611 2.2546,3.73619 0.6752,0.84705 0.4595,2.25146 -0.6852,2.52398 -0.6624,0.16645 -1.6146,0.47444 -2.2429,0.12297 -0.3116,-2.04908 1.2042,-4.00932 0.6354,-6.09562 0.011,-0.0889 -0.087,-0.57217 0.038,-0.28752 z m -14.5114,2.95733 c 0.6452,2.03508 1.1381,4.15417 1.3,6.30702 -1.2767,0.24151 -2.7826,0.0701 -3.9411,-0.21668 0.3063,-2.27244 1.816,-4.14686 2.5825,-6.26602 z m -14.939,2.02621 c 0.3574,0.90311 1.0111,2.21155 0.2636,3.07445 -0.5613,0.31765 -1.4722,0.24165 -1.9618,-0.082 0.068,-1.13588 1.0643,-2.13161 1.6982,-2.99247 z m 19.7351,1.84467 c 0.6251,0.23791 1.2405,1.46606 0.5446,1.93837 -0.2971,0.0127 -0.8878,0.28368 -1.0365,0.13469 0.1498,-0.6633 0,-1.62887 0.4919,-2.07306 z m 2.4303,0.69102 c 0.322,-0.0516 1.328,0.47475 0.7906,0.73787 -0.6452,0.39988 -0.9053,-0.28906 -0.7906,-0.73787 z m 10.254,0.25181 c -0.8222,0.10065 0.075,1.27755 0.6266,1.2942 0.7908,0.0115 0.457,-0.98579 -0.1054,-1.12437 -0.15,-0.10587 -0.3319,-0.20755 -0.5212,-0.16983 z m -1.3235,1.61043 c -0.6361,0.8284 1.6317,1.43797 1.2357,0.31037 -0.2762,-0.28482 -0.8982,-0.57602 -1.2357,-0.31037 z m 2.6001,0.19911 c -0.4577,0.70949 0.7823,0.91925 0.814,1.56358 0.3916,0.57394 1.2166,0.0493 0.7379,-0.5212 -0.2054,-0.58148 -0.7676,-1.15827 -1.4464,-1.15365 z m -34.791,0.4802 c -0.8132,0.55134 -0.2899,1.82706 -0.2987,2.63963 -0.07,0.89602 0.9752,-0.16672 1.0834,-0.65441 0.1601,-0.61836 0.1194,-2.05819 -0.7847,-1.98522 z m 30.885,0.37479 c -0.8354,0.52338 0.8086,1.56342 0.7613,0.45677 -0.1293,-0.2907 -0.4249,-0.63365 -0.7613,-0.45677 z m -28.2908,0.11712 c -0.8356,0.5257 -0.2052,1.80292 -0.2326,2.58525 -0.04,0.90606 0.8122,-0.35862 0.9353,-0.79328 0.1723,-0.57492 0.1391,-1.86983 -0.7027,-1.79197 z m 2.8402,0.71444 c -0.3539,0.87141 -0.6051,2.12102 -0.035,2.95733 0.9528,0.26878 0.6987,-1.14651 0.7671,-1.72754 2e-4,-0.46004 0.079,-1.7273 -0.732,-1.22979 z"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc" />
-        <path
-           sodipodi:nodetypes="sssss"
-           inkscape:connector-curvature="0"
-           id="path4911-0"
-           d="m 1593.8347,691.0284 c 0,1.01857 -0.6748,0.66791 -2.1313,1.04437 -1.0213,0.264 -2.1178,0.57394 -1.8934,-1.03278 0.1767,-1.26437 0.8891,-2.12021 2.3054,-1.71438 0.6332,0.18144 1.7193,0.68423 1.7193,1.70279 z"
-           style="fill:#ffffff;fill-opacity:1;stroke:none" />
-        <path
-           sodipodi:nodetypes="sssss"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           d="m 1600.2922,694.15317 c -0.405,1.49052 -2.8379,2.84356 -3.5516,2.78538 -1.4917,-0.12161 -2.4986,-1.30002 -2.4986,-2.90369 0,-1.60367 1.4805,-2.74306 2.191,-2.57242 1.7741,0.42608 4.1664,1.56036 3.8592,2.69073 z"
-           id="path4913-2"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="ssscs"
-           inkscape:connector-curvature="0"
-           id="path4919-3"
-           d="m 1604.0708,711.86296 c 0,0.33266 -2.2029,0.69045 -2.7607,0.88678 -1.9969,0.70273 -1.9996,-0.25216 -1.6565,-1.03737 0.5165,-1.18206 0.5548,-2.56061 0.9537,-3.53039 0.4658,0.70339 3.4635,3.34831 3.4635,3.68098 z"
-           style="fill:#ffffff;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4921-7"
-           d="m 1594.3026,690.56575 c -0.1347,-0.0433 -0.2358,-0.13049 -0.4606,-0.39724 -0.1275,-0.15125 -0.3117,-0.34324 -0.4093,-0.42664 -0.4576,-0.39103 -1.0374,-0.63589 -1.866,-0.78813 -0.1361,-0.025 -0.252,-0.0499 -0.2575,-0.0554 -0.023,-0.0229 0.3066,-0.25677 0.5145,-0.36517 0.5312,-0.27708 1.0948,-0.38699 1.7102,-0.33355 0.814,0.0707 1.4763,0.40969 1.7037,0.87211 0.07,0.14187 0.076,0.17412 0.076,0.38194 0,0.21923 0,0.23389 -0.1,0.42864 -0.1188,0.23964 -0.4187,0.59779 -0.5446,0.65041 -0.105,0.0439 -0.2831,0.0599 -0.3667,0.033 z"
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4923-5"
-           d="m 1614.0561,696.35701 c -1.5212,-1.36771 -1.4173,-2.395 0.3088,-3.05422 0.3347,-0.12782 1.0105,-0.50194 1.5018,-0.83138 1.6321,-1.09448 1.8565,-0.54937 0.7231,1.75673 -0.7056,1.43564 -1.4519,2.62952 -1.6915,2.70606 -0.081,0.026 -0.4602,-0.23379 -0.8422,-0.57719 z"
-           style="fill:#c87137;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4925-7"
-           d="m 1616.8196,701.35585 c -0.8269,-1.26054 -1.03,-2.51721 -0.4934,-3.05373 0.2409,-0.24094 0.3736,-0.26432 1.0373,-0.18286 0.4186,0.0514 0.9117,0.15017 1.0958,0.21953 0.184,0.0694 0.7534,0.15337 1.2653,0.18667 0.6027,0.0392 1.0158,0.13763 1.1723,0.27929 0.2234,0.20214 0.2256,0.24332 0.029,0.5428 -0.1168,0.17824 -0.4034,0.50098 -0.637,0.7172 -0.4871,0.45101 -2.7285,1.99383 -2.8966,1.99383 -0.062,0 -0.3195,-0.31623 -0.5731,-0.70273 z"
-           style="fill:#c87137;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4927-5"
-           d="m 1617.0478,705.88012 c -0.088,-0.58882 0,-1.89661 0.1663,-2.59822 0.072,-0.29521 0.1206,-0.3102 0.7412,-0.22788 1.2947,0.17175 2.2441,0.77557 2.2441,1.42732 0,0.59987 -1.5208,1.72019 -2.6332,1.93987 -0.4193,0.0828 -0.4259,0.0759 -0.5184,-0.54109 z"
-           style="fill:#c87137;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4929-7"
-           d="m 1599.6453,712.5736 c -0.045,-0.13014 0.024,-0.54049 0.1529,-0.91189 0.1292,-0.3714 0.3389,-1.18065 0.4659,-1.79833 0.127,-0.61768 0.2692,-1.18715 0.316,-1.2655 0.077,-0.1284 3.1091,2.92618 3.2403,3.26405 0.063,0.16343 -2.9398,0.94829 -3.6287,0.94829 -0.2554,0 -0.5013,-0.10648 -0.5464,-0.23662 z"
-           style="fill:#e9c6af;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4931-1"
-           d="m 1593.7645,714.38771 c -0.2382,-0.23822 -0.1232,-1.67368 0.2629,-3.28116 0.2897,-1.20605 0.355,-1.90534 0.2606,-2.79215 -0.08,-0.75005 -0.056,-1.18311 0.064,-1.18311 0.1047,0 0.5528,0.6969 0.996,1.54867 0.4431,0.85176 1.0915,1.92309 1.4408,2.38072 1.1137,1.45905 0.7472,2.79746 -0.895,3.26845 -0.7386,0.21181 -1.9432,0.24495 -2.1296,0.0586 z"
-           style="fill:#e9c6af;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4933-7"
-           d="m 1577.8571,717.21415 -0.732,-0.0756 0.1239,-0.77493 c 0.068,-0.42621 0.6744,-1.95329 1.3472,-3.3935 0.6729,-1.44022 1.2234,-2.7213 1.2234,-2.84684 0,-0.56158 0.445,0.28072 0.7854,1.48659 0.8081,2.86251 1.1683,5.49033 0.7734,5.64188 -0.2831,0.10865 -2.3147,0.0869 -3.5213,-0.0376 l 0,0 z"
-           style="fill:#e9c6af;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4935-7"
-           d="m 1584.1734,716.25441 c 0,-0.94086 0.342,-1.9298 0.6673,-1.9298 0.4234,0 1.0364,0.96011 1.0364,1.62338 0,0.71434 -0.03,0.74193 -0.9938,0.91585 l -0.7099,0.12809 0,-0.73752 z"
-           style="fill:#e9c6af;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4937-6"
-           d="m 1587.1085,715.84361 c -0.068,-0.3098 -0.075,-0.64254 -0.015,-0.73942 0.1572,-0.25438 0.7857,-0.0459 1.1821,0.39217 0.329,0.3635 0.3282,0.38625 -0.024,0.64367 -0.5947,0.43488 -1.0062,0.3282 -1.1434,-0.29642 z"
-           style="fill:#e9c6af;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4939-9"
-           d="m 1563.3885,715.99043 c -0.3957,-0.39573 -0.253,-0.83824 0.7576,-2.34928 l 0.9848,-1.47236 0.3329,0.74664 c 0.5285,1.18567 0.6327,2.27606 0.2703,2.82925 -0.2589,0.3951 -0.4587,0.4729 -1.2142,0.4729 -0.4973,0 -1.0065,-0.10222 -1.1314,-0.22715 z"
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4941-4"
-           d="m 1599.9036,711.89321 c 0.097,-0.48697 0.3017,-1.34806 0.454,-1.91355 l 0.2768,-1.02814 0.7233,0.60324 c 0.3978,0.33178 1.0609,0.99236 1.4735,1.46795 l 0.7503,0.86471 -1.018,0.25981 c -0.5599,0.14289 -1.4272,0.34341 -1.9275,0.4456 l -0.9095,0.18578 0.1771,-0.8854 0,0 z"
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4943-5"
-           d="m 1593.8239,714.12421 c -0.068,-0.11043 0.038,-1.22476 0.2354,-2.4763 0.1975,-1.25153 0.3966,-2.67209 0.4425,-3.1568 0.081,-0.85978 0.1144,-0.82932 1.355,1.24711 1.5337,2.56712 1.6498,3.5743 0.4817,4.17833 -0.8288,0.42861 -2.3036,0.55039 -2.5146,0.20766 z"
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4945-4"
-           d="m 1578.0302,717.07571 c -0.6667,-0.0998 -0.7389,-0.19859 -0.587,-0.8036 0.3276,-1.30541 2.3811,-5.93442 2.5785,-5.81245 0.2931,0.18114 1.3119,4.71598 1.3119,5.83934 l 0,0.97077 -1.2716,-0.0401 c -0.6994,-0.0221 -1.6137,-0.0913 -2.0318,-0.15395 z"
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4947-7"
-           d="m 1584.3619,715.78792 c 0.1994,-1.22862 0.3266,-1.36481 0.8606,-0.92166 0.6463,0.53639 0.4006,1.71445 -0.3806,1.82488 -0.6008,0.0849 -0.6311,0.0279 -0.48,-0.90322 z"
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4949-8"
-           d="m 1587.2232,715.66352 c 0,-0.29447 0.1057,-0.53541 0.2349,-0.53541 0.3511,0 0.8578,0.69202 0.6551,0.89468 -0.3665,0.3665 -0.89,0.15518 -0.89,-0.35927 z"
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4951-5"
-           d="m 1563.8657,716.0144 c -0.672,-0.17562 -0.5839,-0.69062 0.3886,-2.27111 l 0.857,-1.39286 0.3356,0.7865 c 0.5184,1.21497 0.4477,2.46069 -0.1581,2.78488 -0.5386,0.28825 -0.6473,0.29532 -1.4231,0.0926 z"
-           style="fill:#d3bc5f;fill-opacity:1;stroke:none" />
-        <path
-           sodipodi:nodetypes="cccsssssssssssssssscsscsscsssssssssssscssscsssscsssscscccssssssssssssssssscscccsscccccssssssssssssssssssssssscssssssssssssssscsssccsscccccsscssssssssccsccccsscssssccssc"
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           d="m 1601.7824,719.65247 c 0,-0.13597 -0.2955,-0.17305 -0.6567,-0.0824 -0.3822,0.0959 -1.0148,-0.0138 -1.5135,-0.26261 -1.0633,-0.53043 -1.475,-0.5473 -1.0567,-0.0433 0.2672,0.32194 -0.04,0.49756 -1.899,1.08473 -1.2198,0.38534 -3.0652,0.80963 -4.1009,0.94288 -1.0356,0.13325 -2.7865,0.42307 -3.8908,0.64405 -2.7023,0.54076 -6.0557,0.89149 -10.6299,1.1118 -3.6507,0.17582 -6.048,-0.009 -9.4482,-0.72634 -0.6625,-0.13988 -1.5835,-0.29782 -2.0466,-0.35095 -0.4631,-0.0531 -1.0876,-0.22809 -1.3879,-0.38878 -0.3002,-0.16068 -1.022,-0.29215 -1.6038,-0.29215 -0.9532,0 -1.1036,-0.0962 -1.5193,-0.97226 -0.4805,-1.01247 -0.416,-2.60175 0.1275,-3.14527 0.4956,-0.49566 8.6034,-0.31438 11.6504,0.26049 1.8659,0.35204 3.8534,0.50298 6.5589,0.49815 3.7788,-0.007 4.0023,-0.0399 8.4327,-1.25261 2.5031,-0.68511 6.7797,-1.79983 9.5036,-2.47716 5.9493,-1.47934 6.7447,-1.72361 6.6396,-2.03909 -0.1131,-0.33906 -4.3284,-5.28985 -4.5222,-5.31111 -0.087,-0.01 -0.3112,0.66651 -0.4983,1.50233 -0.187,0.83581 -0.5774,2.07062 -0.8675,2.744 l -0.5274,1.22434 -0.6546,-0.80313 c -0.3601,-0.44171 -1.3442,-2.15785 -2.1869,-3.81364 -0.8426,-1.65579 -1.6827,-3.01106 -1.8667,-3.01171 -0.2481,-9.4e-4 -0.3347,0.78266 -0.3347,3.02886 0,3.87351 -0.4652,5.5606 -1.9143,6.94206 -1.442,1.37477 -2.1496,1.33078 -3.2292,-0.20078 -0.467,-0.66258 -0.949,-1.20469 -1.071,-1.20469 -0.1221,0 -0.3592,0.30117 -0.5269,0.66927 -0.1677,0.3681 -0.3982,0.66927 -0.5123,0.66927 -0.114,0 -0.5465,-0.47909 -0.9609,-1.06465 -0.4145,-0.58556 -0.8741,-1.02817 -1.0213,-0.98357 -0.1472,0.0446 -0.468,0.89871 -0.7129,1.89802 -0.2448,0.9993 -0.5681,1.93984 -0.7183,2.09008 -0.3413,0.34129 -0.9251,-1.63059 -1.5197,-5.13334 -0.2357,-1.3883 -0.5928,-2.83392 -0.7935,-3.21249 l -0.3651,-0.6883 -0.6657,1.47239 c -0.3662,0.80982 -1.0393,2.37591 -1.4957,3.4802 -0.4564,1.10429 -1.0995,2.48189 -1.429,3.06133 l -0.599,1.05353 -3.0787,-0.0647 c -4.8267,-0.10142 -5.9547,-0.61445 -6.6762,-3.03647 -0.188,-0.63115 -0.4931,-1.43828 -0.678,-1.7936 -0.3349,-0.64353 -0.3399,-0.64046 -1.3018,0.78781 l -0.9656,1.43386 -0.4601,-1.05552 c -0.6067,-1.39161 -0.6162,-4.84163 -0.019,-6.81123 0.7018,-2.31391 2.2783,-4.72376 4.7464,-7.25529 3.1379,-3.21859 3.636,-3.35984 10.5744,-2.9985 l 5.0865,0.26488 0.9617,-0.63458 c 1.7924,-1.18267 9.5507,-3.71625 10.001,-3.26595 0.082,0.0823 0.013,0.54172 -0.1543,1.02105 -0.6625,1.90047 0.7554,4.03446 2.68,4.03363 2.0668,-9.3e-4 4.16,-1.89111 3.9921,-3.60501 -0.071,-0.72476 -0.3019,-0.91839 -2.1543,-1.80702 -2.5985,-1.24653 -2.6922,-1.81565 -0.2991,-1.81565 0.7312,0 1.1243,0.21348 1.8483,1.00373 0.787,0.85903 0.9916,0.95872 1.4196,0.69148 0.4253,-0.26561 0.7313,-0.13066 2.0486,0.90321 1.5222,1.19473 1.5857,1.2165 3.7202,1.27644 1.469,0.0412 2.5006,0.22189 3.1889,0.55844 0.9808,0.47958 0.9953,0.50611 0.4016,0.73727 -0.5946,0.23153 -0.5974,0.24693 -0.081,0.44631 0.3002,0.11576 0.6878,0.0847 0.882,-0.0708 0.8592,-0.68748 3.7501,3.31515 4.491,6.21822 0.6166,2.41573 0.4142,4.12949 -0.7674,6.49653 -0.9865,1.97609 -2.7644,4.51128 -3.282,4.67989 -0.1555,0.0506 -0.4848,-0.3318 -0.7318,-0.84988 -0.4432,-0.92939 -0.9933,-1.26308 -0.9933,-0.60255 0,0.18668 0.2998,0.78065 0.6663,1.31993 l 0.6662,0.98051 -1.804,1.64388 c -0.9922,0.90414 -2.2559,1.90637 -2.8082,2.22719 -5.624,1.02748 -1.8392,-0.45754 -5.2863,2.02504 z m -31.8612,0.76674 c 0,-1.00617 -0.078,-1.29138 -0.2636,-1.0039 -0.3424,0.52979 -0.3424,2.40936 0,2.40936 0.1472,0 0.2658,-0.63246 0.2636,-1.40546 z m -2.8294,-0.37235 c 0.2026,-0.52807 -0.048,-1.43468 -0.3971,-1.43468 -0.1373,0 -0.2496,0.42164 -0.2496,0.93698 0,0.97848 0.3568,1.25309 0.6467,0.4977 z m -2.5207,-1.04892 c 0,-0.93692 -0.4261,-1.24991 -0.7065,-0.51901 -0.2148,0.55971 0.1303,1.79634 0.4467,1.60079 0.1429,-0.0883 0.2598,-0.57513 0.2598,-1.08178 z m 32.5265,0.68507 c -0.091,-0.14724 -0.2788,-0.2677 -0.4174,-0.2677 -0.1385,0 -0.2519,0.12046 -0.2519,0.2677 0,0.14724 0.1878,0.26771 0.4174,0.26771 0.2295,0 0.3429,-0.12047 0.2519,-0.26771 z m 2.8232,-1.58331 c -0.2811,-0.52511 -0.8154,-0.77325 -0.8154,-0.37865 0,0.26736 0.8711,1.18011 1.0016,1.04956 0.062,-0.0619 -0.022,-0.36383 -0.1862,-0.67091 z m -2.8232,-0.55835 c -0.091,-0.14724 -0.286,-0.2677 -0.4332,-0.2677 -0.1472,0 -0.1932,0.12046 -0.1022,0.2677 0.091,0.14724 0.2859,0.26771 0.4331,0.26771 0.1472,0 0.1933,-0.12047 0.1023,-0.26771 z m 1.2046,-1.30989 c 0,-0.13149 -0.1807,-0.30841 -0.4015,-0.39316 -0.4081,-0.15659 -0.5483,0.12858 -0.2231,0.45375 0.2558,0.25585 0.6246,0.22007 0.6246,-0.0606 z m -22.5859,-5.268 c 0.7361,-0.78055 0.9016,-1.16765 0.9016,-2.10888 0,-1.49886 -0.4887,-1.94898 -1.6114,-1.48396 -2.4248,1.00441 -3.2203,4.54888 -1.0209,4.54888 0.6038,0 1.074,-0.25972 1.7307,-0.95604 z m -9.9831,-1.46768 c 1.4451,-1.13671 1.46,-4.02315 0.023,-4.3839 -1.9494,-0.48925 -3.6189,2.5617 -2.3743,4.33868 0.5208,0.74357 1.4413,0.76126 2.3516,0.0452 z m 42.9278,-1.47666 c -0.7558,-0.65465 -1.5244,-0.85974 -1.5244,-0.40674 0,0.13415 0.3787,0.56258 0.8416,0.95206 0.6215,0.52296 0.919,0.62932 1.1377,0.40673 0.2175,-0.22128 0.096,-0.47437 -0.4549,-0.95205 z m 5.2841,-1.47369 c -0.2566,-0.28352 -0.5683,-0.51549 -0.6927,-0.51549 -0.417,0 -0.2319,0.62872 0.3761,1.27778 0.5095,0.54388 0.6163,0.57443 0.6927,0.19812 0.05,-0.2447 -0.1195,-0.67688 -0.3761,-0.96041 z m -37.0594,-2.15252 c 0,-0.67774 -0.4121,-0.63734 -0.9218,0.0903 -0.6657,0.95034 -0.5407,1.37249 0.2525,0.85279 0.3681,-0.24119 0.6693,-0.6656 0.6693,-0.94315 z m 34.8019,0.2985 c 0,-0.41059 -1.0207,-1.33854 -1.4724,-1.33854 -0.6078,0 -0.4828,0.43262 0.3038,1.0514 0.77,0.60562 1.1686,0.70358 1.1686,0.28714 z m -44.9079,-1.2869 c 0.5019,-0.43103 0.6476,-1.65789 0.1968,-1.65789 -0.3209,0 -1.3321,1.5852 -1.3336,2.09054 0,0.3737 0.3562,0.23775 1.1368,-0.43265 z m 11.7645,-1.30641 c 0.7416,-0.71053 0.9902,-1.4223 0.4967,-1.4223 -0.2603,0 -1.6198,1.65009 -1.6198,1.96614 0,0.34891 0.3867,0.16164 1.1231,-0.54384 z m -9.371,-2.1585 c 1.2714,-1.36318 1.5608,-2.51695 0.4871,-1.94233 -0.5342,0.28587 -1.1799,1.20753 -1.4546,2.07618 -0.2571,0.813 0.135,0.75875 0.9675,-0.13385 z m 13.5663,-1.44116 c 0.7559,-0.31411 1.3743,-0.68508 1.3743,-0.82439 0,-0.37911 -1.6278,0.0442 -2.4763,0.64389 -1.3202,0.93312 -0.8818,1.00493 1.102,0.1805 z m -8.5309,-0.96554 c 0.6626,-0.21399 1.3553,-0.43389 1.5393,-0.48865 0.7516,-0.22361 0.2624,-0.65177 -0.7448,-0.65177 -1.5539,0 -2.9362,0.63719 -2.9362,1.35352 0,0.44825 0.105,0.5327 0.4685,0.37685 0.2577,-0.11047 1.0106,-0.37595 1.6732,-0.58995 z m 30.7863,-2.72863 c 0,-0.34878 -0.9066,-0.59967 -1.4346,-0.39703 -0.7554,0.28988 -0.4808,0.6467 0.4977,0.6467 0.5153,0 0.9369,-0.11235 0.9369,-0.24967 z m 3.7479,-0.018 c 0,-0.14724 -0.5492,-0.26771 -1.2204,-0.26771 -0.7455,0 -1.1561,0.10419 -1.0551,0.26771 0.091,0.14723 0.6402,0.2677 1.2205,0.2677 0.5803,0 1.055,-0.12047 1.055,-0.2677 z"
-           id="path4953-9"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:0.80000001;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 225.53571,152.60819 -3.52678,-2.00893"
-           id="path4969-4"
-           inkscape:connector-curvature="0"
-           transform="matrix(0.99213704,-0.12515627,0.12515627,0.99213704,1350.7884,568.48734)" />
-        <path
-           style="fill:#d3bc5f;fill-opacity:1;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 226.20536,153.76891 5.04464,3.25892"
-           id="path4971-4"
-           inkscape:connector-curvature="0"
-           transform="matrix(0.99213704,-0.12515627,0.12515627,0.99213704,1350.7884,568.48734)" />
-        <path
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           d="m 224.04,151.27115 -1.62233,-0.92792 0.14912,-0.11169 c 0.28294,-0.2119 0.45056,-0.27129 0.81877,-0.29006 0.29612,-0.0151 0.41287,8.8e-4 0.68335,0.0936 0.91727,0.31431 1.61399,0.98619 1.69024,1.62999 0.0273,0.23097 -0.0109,0.5456 -0.0653,0.53827 -0.0173,-0.002 -0.76151,-0.42179 -1.6538,-0.93215 z"
-           id="path4973-0"
-           inkscape:connector-curvature="0"
-           transform="matrix(0.99213704,-0.12515627,0.12515627,0.99213704,1350.7884,568.48734)" />
-        <path
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           d="m 222.2799,152.78395 c -0.38832,-0.0915 -0.52494,-0.28574 -0.52156,-0.74161 0.002,-0.31377 0.16461,-0.92856 0.2451,-0.92856 0.0236,0 0.66183,0.35156 1.4184,0.78125 l 1.37556,0.78125 -0.61664,0.0298 c -0.33915,0.0164 -0.79744,0.0514 -1.01842,0.0778 -0.46359,0.0554 -0.64785,0.0554 -0.88244,1.5e-4 l 0,0 z"
-           id="path4975-6"
-           inkscape:connector-curvature="0"
-           transform="matrix(0.99213704,-0.12515627,0.12515627,0.99213704,1350.7884,568.48734)" />
-        <path
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           d="m 229.03681,154.9734 c -1.2869,-0.83349 -2.34856,-1.52418 -2.35925,-1.53487 -0.0359,-0.0359 0.54458,-0.43856 0.79282,-0.55005 0.13504,-0.0607 0.35602,-0.12032 0.49107,-0.13258 0.21129,-0.0192 0.30156,9e-4 0.64732,0.14411 0.78903,0.32681 1.44379,0.69692 2.10421,1.18942 0.50696,0.37807 0.84072,0.73883 1.0055,1.08685 0.14336,0.30277 0.15797,0.48653 0.0578,0.72633 -0.0832,0.19911 -0.33047,0.59151 -0.3708,0.58844 -0.0159,-0.001 -1.08175,-0.68415 -2.36865,-1.51765 l 0,0 z"
-           id="path4977-8"
-           inkscape:connector-curvature="0"
-           transform="matrix(0.99213704,-0.12515627,0.12515627,0.99213704,1350.7884,568.48734)" />
-        <path
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           d="m 227.81167,158.16065 c -0.57105,-0.13178 -1.19369,-0.56954 -1.52934,-1.07522 -0.47509,-0.71575 -0.59686,-1.86728 -0.27871,-2.63565 l 0.0605,-0.14614 2.26145,1.46137 2.26145,1.46136 -0.34181,0.20339 c -0.48182,0.28669 -0.99338,0.51483 -1.43556,0.64019 -0.51305,0.14546 -0.69074,0.16161 -0.99799,0.0907 z"
-           id="path4979-9"
-           inkscape:connector-curvature="0"
-           transform="matrix(0.99213704,-0.12515627,0.12515627,0.99213704,1350.7884,568.48734)" />
-      </g>
-      <g
-         inkscape:label="#g3896"
-         id="g4348"
-         transform="matrix(0.30409787,0,0,0.30409787,1794.757,746.30662)">
-        <path
-           transform="translate(-33.62958,-116.19868)"
-           sodipodi:type="arc"
-           style="fill:#d3bc5f;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="path4350"
-           sodipodi:cx="192.14285"
-           sodipodi:cy="399.50504"
-           sodipodi:rx="34.285713"
-           sodipodi:ry="34.285713"
-           d="m 226.42857,399.50504 c 0,18.93547 -15.35024,34.28571 -34.28572,34.28571 -18.93547,0 -34.28571,-15.35024 -34.28571,-34.28571 0,-18.93548 15.35024,-34.28572 34.28571,-34.28572 18.93548,0 34.28572,15.35024 34.28572,34.28572 z" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 158.51328,317.59207 0,107.14286"
-           id="path4352"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 158.2994,424.2687 -28.6056,49.54636"
-           id="path4354"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4356"
-           d="m 158.80094,424.2687 28.6056,49.54636"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="M 157.23601,329.21038 115.06405,309.47837"
-           id="path4358"
-           inkscape:connector-curvature="0"
-           inkscape:transform-center-x="21.938845"
-           inkscape:transform-center-y="-10.245755" />
-        <path
-           inkscape:transform-center-y="-10.245755"
-           inkscape:transform-center-x="-21.938845"
-           inkscape:connector-curvature="0"
-           id="path4360"
-           d="m 160.52091,329.21038 42.17196,-19.73201"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      </g>
-      <g
-         transform="matrix(0.30409787,0,0,0.30409787,1761.4883,750.84327)"
-         id="g4362"
-         inkscape:label="#g3896">
-        <path
-           d="m 226.42857,399.50504 c 0,18.93547 -15.35024,34.28571 -34.28572,34.28571 -18.93547,0 -34.28571,-15.35024 -34.28571,-34.28571 0,-18.93548 15.35024,-34.28572 34.28571,-34.28572 18.93548,0 34.28572,15.35024 34.28572,34.28572 z"
-           sodipodi:ry="34.285713"
-           sodipodi:rx="34.285713"
-           sodipodi:cy="399.50504"
-           sodipodi:cx="192.14285"
-           id="path4364"
-           style="fill:#d3bc5f;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:type="arc"
-           transform="translate(-33.62958,-116.19868)" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4366"
-           d="m 158.51328,317.59207 0,107.14286"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4368"
-           d="m 158.2994,424.2687 -28.6056,49.54636"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 158.80094,424.2687 28.6056,49.54636"
-           id="path4370"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:transform-center-y="-10.245755"
-           inkscape:transform-center-x="21.938845"
-           inkscape:connector-curvature="0"
-           id="path4372"
-           d="M 157.23601,329.21038 115.06405,309.47837"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 160.52091,329.21038 42.17196,-19.73201"
-           id="path4374"
-           inkscape:connector-curvature="0"
-           inkscape:transform-center-x="-21.938845"
-           inkscape:transform-center-y="-10.245755" />
-      </g>
-      <g
-         inkscape:label="#g3896"
-         id="0caveman_afraid-3"
-         transform="matrix(0.30409787,0,0,0.30409787,1706.4453,743.11454)">
-        <path
-           transform="translate(-33.62958,-116.19868)"
-           sodipodi:type="arc"
-           style="fill:#d3bc5f;fill-opacity:1;stroke:#000000;stroke-width:5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="path3767-4-4"
-           sodipodi:cx="192.14285"
-           sodipodi:cy="399.50504"
-           sodipodi:rx="34.285713"
-           sodipodi:ry="34.285713"
-           d="m 226.42857,399.50504 c 0,18.93547 -15.35024,34.28571 -34.28572,34.28571 -18.93547,0 -34.28571,-15.35024 -34.28571,-34.28571 0,-18.93548 15.35024,-34.28572 34.28571,-34.28572 18.93548,0 34.28572,15.35024 34.28572,34.28572 z" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 158.51328,317.59207 0,107.14286"
-           id="path3769-0-2"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 158.2994,424.2687 -28.6056,49.54636"
-           id="path3771-6-1"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3773-4-4"
-           d="m 158.80094,424.2687 28.6056,49.54636"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="M 157.23601,329.21038 115.06405,309.47837"
-           id="path3775-7-1"
-           inkscape:connector-curvature="0"
-           inkscape:transform-center-x="21.938845"
-           inkscape:transform-center-y="-10.245755" />
-        <path
-           inkscape:transform-center-y="-10.245755"
-           inkscape:transform-center-x="-21.938845"
-           inkscape:connector-curvature="0"
-           id="path3894-3"
-           d="m 160.52091,329.21038 42.17196,-19.73201"
-           style="fill:none;stroke:#000000;stroke-width:5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      </g>
-    </g>
-    <g
-       id="0play_again_mobile-6"
-       inkscape:label="#g3165"
-       transform="matrix(0.23143297,0,0,0.23143297,1341.4844,582.85144)" />
-    <g
-       id="0splash_play_mobile"
-       inkscape:label="#g4554">
-      <g
-         style="font-size:17.31080437px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="text4919">
-        <path
-           d="m 1787.1562,712.3125 c 1.1334,4.56455 7.0203,4.37558 4.4688,12.625 4.459,7.05346 7.4014,-3.38804 5.7188,-9 7.7659,1.24827 4.7959,-9.00164 -2.5,-5.625 -2.1772,0.79714 -8.7737,-1.86892 -7.6876,2 z"
-           id="path4924"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1800.9375,713.28125 c -3.6245,0.0399 -5.2553,2.47558 -4.2813,6.1875 -2.6837,4.15857 2.0391,9.28004 6.4688,7.46875 6.3612,1.91482 4.8692,-4.23868 4.7812,-8.65625 -0.3552,-3.55516 -3.5879,-5.48412 -6.9687,-5 z"
-           id="path4926"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1813.0625,713.28125 c -5.5079,-0.77879 -7.0619,1.63659 -5.9687,7.1875 -1.9788,5.49884 1.7716,14.78264 5.5624,8.0625 -0.3792,-2.5755 4.5386,-0.63293 5.4688,-3.53125 3.1969,-4.1314 1.0935,-12.39904 -5.0625,-11.71875 z m 0.2187,5.28125 c 2.0459,0.85991 -0.511,5.61001 -0.625,1.65625 0.1009,-0.52775 -0.033,-1.50714 0.625,-1.65625 z"
-           id="path4928"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1823.6562,712.78125 c -3.1761,2.60587 0.7183,6.16985 0.031,10.03125 -0.1631,4.49861 7.2296,5.2839 8.7187,3.125 -1.5097,-6.38157 -4.2234,-4.81762 0,-10.25 -0.3258,-1.75992 -7.6925,-8.79408 -8.75,-2.90625 z"
-           id="path4930"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1835.5,713.28125 c -8.368,0.35543 -7.1405,15.35971 1.375,13.84375 8.2122,-0.63943 7.1364,-14.98631 -1.375,-13.84375 z m 0.4688,5.3125 c 2.1745,0.15748 -0.1015,5.72482 -0.5313,1.875 0.025,-0.60168 -0.092,-1.55065 0.5313,-1.875 z"
-           id="path4932"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1852.4688,713.28125 c -5.5163,-0.7852 -7.0568,1.64641 -5.9688,7.1875 -1.9788,5.49884 1.7717,14.78264 5.5625,8.0625 -0.3667,-2.52891 4.4579,-0.68893 5.4063,-3.5 3.2367,-4.09964 1.1754,-12.4113 -5,-11.75 z m 0.062,5.28125 c 2.1101,0.28814 -0.067,5.50677 -0.4687,2.0625 0,-0.71455 -0.052,-1.60096 0.4687,-2.0625 z"
-           id="path4934"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1857.5312,711.78125 c 1.4103,4.64181 -3.1686,15.27284 3,15.15625 5.4346,-0.47175 1.2446,-10.56797 2.5626,-15.15625 1.884,-3.00481 -7.4808,-2.95197 -5.5626,0 z"
-           id="path4936"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1866.75,713.28125 c -3.8904,-0.0135 -5.0958,2.71342 -4.4062,6.40625 -2.4365,4.1624 2.2191,8.98748 6.5312,7.25 6.3794,1.92263 4.9105,-4.21823 4.8125,-8.65625 -0.2557,-3.51019 -3.6395,-5.50807 -6.9375,-5 z"
-           id="path4938"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1872,716.21875 c 2.0466,4.73975 5.2169,9.46733 0.6875,11.03125 -1.6057,5.05119 6.7075,4.10365 7.7187,0.15625 1.1771,-4.37831 5.7147,-11.10291 4.625,-13.9375 -7.041,-1.51228 -5.4179,6.81664 -9.5312,0 -2.6558,0.42892 -6.3227,-1.54337 -3.5,2.75 z"
-           id="path4940"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-      </g>
-      <text
-         xml:space="preserve"
-         style="font-size:17.31080437px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         x="1789.2108"
-         y="724.9444"
-         id="text2993-5"
-         sodipodi:linespacing="125%"
-         inkscape:export-filename="/home/xymus/projects/mnit/tests/dino/assets/images/play_again_mobile.png"
-         inkscape:export-xdpi="192.10005"
-         inkscape:export-ydpi="192.10005"><tspan
-           sodipodi:role="line"
-           id="tspan2995-6"
-           x="1789.2108"
-           y="724.9444">Tap to play</tspan></text>
-    </g>
-    <g
-       id="0splash_play"
-       inkscape:label="#g4558">
-      <g
-         style="font-size:17.31080437px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="text4960">
-        <path
-           d="m 1795.5625,730.125 c -9.1069,0.0897 -9.978,15.33587 -1.2813,16.875 3.7999,0.81589 9.8014,-0.79896 8.0938,-5.8125 -0.2069,-4.19854 1.6893,-10.43252 -4.0625,-10.875 -0.9024,-0.18535 -1.8242,-0.2748 -2.75,-0.1875 z m 0.875,5.375 c 2.7206,0.2699 7.4569,3.64173 2.6875,5.125 -2.8425,3.20164 -6.8078,-0.72099 -4.75,-4.0625 0.3897,-0.80606 1.2533,-1.08364 2.0625,-1.0625 z"
-           id="path4965"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1800.9375,731.78125 c 1.4103,4.64181 -3.1687,15.27284 3,15.15625 5.4345,-0.47175 1.2445,-10.56797 2.5625,-15.15625 1.8841,-3.00481 -7.4807,-2.95197 -5.5625,0 z"
-           id="path4967"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1805.75,731.78125 c 0.5811,4.80435 -1.2897,12.06053 1,15.15625 7.6804,2.0033 3.565,-7.78917 4.5625,-12.46875 2.3572,-5.31561 -5.2272,-6.80605 -5.5625,-2.6875 z"
-           id="path4970"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1815.9688,733.28125 c -7.9906,0.0633 -8.0534,13.70563 -0.094,13.875 3.218,0.28382 6.9039,-1.054 5.5,-5 0.047,-3.72005 1.1889,-8.96557 -3.8438,-8.875 -0.5182,-0.0589 -1.0434,-0.035 -1.5624,0 z m 0.5624,5.3125 c 2.5449,0.12083 6.4148,2.12326 1.6876,2.90625 -2.5249,1.88303 -4.0085,-2.17241 -1.6876,-2.90625 z"
-           id="path4972"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1820.0312,731.78125 c 1.4103,4.64181 -3.1686,15.27284 3,15.15625 1.2858,-2.90001 12.0049,2.72516 10.9298,-1.38245 -7.6616,-4.13095 -4.7101,-8.04248 1.3203,-11.89343 -4.2241,-2.19589 -12.198,4.47756 -9.6875,-3.88037 -1.8568,0.64654 -6.7891,-1.63161 -5.5626,2 z"
-           id="path4974"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1835.625,732.78125 c -3.1761,2.60587 0.7183,6.16985 0.031,10.03125 -0.1631,4.49861 7.2297,5.2839 8.7188,3.125 -1.5097,-6.38157 -4.2235,-4.81762 0,-10.25 -0.3258,-1.75992 -7.6926,-8.79408 -8.75,-2.90625 z"
-           id="path4976"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1847.4688,733.28125 c -8.3681,0.35543 -7.1405,15.35971 1.375,13.84375 8.2121,-0.63943 7.1363,-14.98631 -1.375,-13.84375 z m 0.4687,5.3125 c 2.1203,0.14832 0.039,5.5821 -0.5313,2.03125 0.04,-0.64802 -0.1387,-1.6642 0.5313,-2.03125 z"
-           id="path4978"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1864.4375,733.28125 c -5.5162,-0.7852 -7.0567,1.64641 -5.9687,7.1875 -1.9788,5.49884 1.7716,14.78264 5.5624,8.0625 -0.3667,-2.52891 4.458,-0.68893 5.4063,-3.5 3.2368,-4.09964 1.1755,-12.4113 -5,-11.75 z m 0.062,5.28125 c 2.0949,0.28259 -0.031,5.51628 -0.4688,2.0625 0,-0.71455 -0.052,-1.60096 0.4688,-2.0625 z"
-           id="path4980"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1869.5,731.78125 c 1.4103,4.64181 -3.1687,15.27284 3,15.15625 5.4345,-0.47175 1.2445,-10.56797 2.5625,-15.15625 1.8841,-3.00481 -7.4807,-2.95197 -5.5625,0 z"
-           id="path4982"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1878.7188,733.28125 c -3.8904,-0.0135 -5.0958,2.71342 -4.4063,6.40625 -2.4426,4.18244 2.2414,8.99168 6.5625,7.25 6.3612,1.91482 4.8692,-4.23868 4.7812,-8.65625 -0.2556,-3.51019 -3.6394,-5.50807 -6.9374,-5 z"
-           id="path4984"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-        <path
-           d="m 1883.9688,736.21875 c 2.0465,4.73975 5.2168,9.46733 0.6874,11.03125 -1.6057,5.05119 6.7076,4.10365 7.7188,0.15625 1.177,-4.37831 5.7147,-11.10291 4.625,-13.9375 -7.041,-1.51228 -5.4179,6.81664 -9.5312,0 -2.6558,0.42892 -6.3228,-1.54337 -3.5,2.75 z"
-           id="path4986"
-           inkscape:connector-curvature="0"
-           style="fill:#f4e3d7" />
-      </g>
-      <text
-         inkscape:export-ydpi="192.10005"
-         inkscape:export-xdpi="192.10005"
-         inkscape:export-filename="/home/xymus/projects/mnit/tests/dino/assets/images/play_again_mobile.png"
-         sodipodi:linespacing="125%"
-         id="text4414"
-         y="744.9444"
-         x="1789.2108"
-         style="font-size:17.31080437px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         xml:space="preserve"><tspan
-           y="744.9444"
-           x="1789.2108"
-           id="tspan4416"
-           sodipodi:role="line">Click to play</tspan></text>
-    </g>
-    <g
-       transform="translate(30.938362,122.78985)"
-       id="g3514">
-      <g
-         id="g4342"
-         inkscape:export-filename="/home/xymus/projects/mnit/tests/dino/icon-36x36.png"
-         inkscape:export-xdpi="48.255318"
-         inkscape:export-ydpi="48.255318">
-        <path
-           transform="matrix(0.93069307,0,0,0.93069307,1215.7779,479.27052)"
-           d="m 439.28572,243.74556 c 0,19.9217 -16.14972,36.07143 -36.07143,36.07143 -19.9217,0 -36.07143,-16.14973 -36.07143,-36.07143 0,-19.9217 16.14973,-36.07143 36.07143,-36.07143 19.92171,0 36.07143,16.14973 36.07143,36.07143 z"
-           sodipodi:ry="36.07143"
-           sodipodi:rx="36.07143"
-           sodipodi:cy="243.74556"
-           sodipodi:cx="403.21429"
-           id="path3572"
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none;opacity:0"
-           sodipodi:type="arc" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3516"
-           d="m 1592.6562,685.5625 c -3.0895,-0.0129 -4.5434,3.28104 -6.0937,4.8125 -2.6546,1.1388 -4.8785,3.66005 -8.2187,2.4375 -10.3839,-2.87206 -19.5499,7.70212 -19.1563,17.46875 0.2365,2.34341 1.9687,4.42162 -0.3125,6.34375 -2.5002,5.01949 3.1687,8.76658 7.6562,8.5625 14.2252,0.96441 29.5278,0.93256 42.5626,-5.25 4.179,-2.64983 6.566,-7.24899 9.6874,-10.71875 2.8713,-0.88702 7.535,-3.95996 4.0938,-7.09375 3.5292,-2.3903 0.6022,-7.34505 -3.25,-6.5 -0.5972,-1.49984 4.683,-5.21162 1.0938,-7.5 -4.5,-1.87313 -8.2526,6.11177 -12.7188,2.21875 -2.5324,2.02255 -3.9309,-2.67735 -6.625,-2.46875 -2.5168,-1.19273 -4.9854,-1.32904 -7.5,-2.34375 -0.4063,0.007 -0.8142,-0.021 -1.2188,0.0312 z m -1,9.5 c 0.6755,5.26995 7.7372,5.56765 10.2813,1.84375 3.0114,1.27742 5.8563,-0.20512 8.125,0.90625 2.8537,-0.4089 4.6172,4.81158 3.7813,6.09375 -0.739,-4.12293 -8.4774,-3.21486 -5.7813,1.1875 -4.6325,-0.71007 -3.387,5.41058 -0.031,6.1875 1.0106,2.22406 -0.081,3.15916 -2.4062,3.9375 -1.7736,2.02164 -7.4715,0.95481 -2.25,0 3.8064,0.17804 4.9405,-4.21278 1.9688,-6.21875 -2.4567,-2.25733 -4.1786,-5.18235 -5.9376,-8.0625 -0.718,3.67746 -1.2605,8.7573 -3.125,3.0625 -1.5556,-3.50776 -6.2672,-0.66895 -5.0937,2.5625 0.055,1.71225 0.4243,6.15498 -1.3437,6.28125 -1.7051,-5.19914 -4.6517,-1.50601 -6.75,-4.09375 -0.7183,-2.77312 -4.1984,-6.63094 -0.1876,-7.875 2.1328,-0.44872 3.7808,-2.34478 3.5313,-4.25 1.6049,-0.7355 3.7185,-1.62228 5.2187,-1.5625 z m -13,3 c -3.178,2.07151 -4.5678,5.69624 -6.4374,8.4375 -3.6034,2.54783 -1.2087,8.64434 2.5624,7.75 -3.0819,0.49427 -7.8915,0.35764 -6.8437,-3.8125 2.53,-2.89433 -0.704,-7.03428 3.0625,-9.09375 1.5107,-1.92506 5.3765,-1.06301 6.9688,-3.375 l 0.6874,0.0937 z m 0.4376,7 c -0.2374,-0.54527 1.2063,-1.14622 0,0 z m 32.4062,3.28125 c 1.9008,1.87015 -0.7336,0.70843 0,0 z M 1592.75,718 c -0.7097,2.28718 -5.5404,1.35621 -7.7188,2.28125 -4.0741,0.16429 -9.3909,1.42787 -12.8437,-0.0312 0.9322,-1.93733 5.2698,0.78996 7.7187,0.0937 4.4406,0.32634 8.8938,-1.53932 12.8438,-2.34375 z"
-           style="fill:#000000;fill-opacity:1;stroke:none" />
-        <path
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           d="m 1593.8347,691.0284 c 0,1.01857 -0.6748,0.66791 -2.1313,1.04437 -1.0213,0.264 -2.1178,0.57394 -1.8934,-1.03278 0.1767,-1.26437 0.8891,-2.12021 2.3054,-1.71438 0.6332,0.18144 1.7193,0.68423 1.7193,1.70279 z"
-           id="path3518"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="sssss" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3520"
-           d="m 1600.2922,694.15317 c -0.405,1.49052 -2.8379,2.84356 -3.5516,2.78538 -1.4917,-0.12161 -2.4986,-1.30002 -2.4986,-2.90369 0,-1.60367 1.4805,-2.74306 2.191,-2.57242 1.7741,0.42608 4.1664,1.56036 3.8592,2.69073 z"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:nodetypes="sssss" />
-        <path
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 1598.0139,694.57909 c 0,0.7673 -0.6442,1.38931 -1.4389,1.38931 -0.7947,0 -1.4389,-0.62201 -1.4389,-1.38931 0,-0.76729 0.6442,-1.38931 1.4389,-1.38931 0.7947,0 1.4389,0.62202 1.4389,1.38931 z"
-           id="path3522"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3524"
-           d="m 1592.8068,691.64793 c 0,0.71185 -0.5308,0.25155 -1.3015,0.48579 -0.3527,0.1072 -0.7359,0.65886 -0.9774,0.42561 -0.2416,-0.23325 -0.391,-0.55548 -0.391,-0.9114 0,-0.71186 0.5976,-1.28892 1.3349,-1.28892 0.7373,0 1.335,0.57706 1.335,1.28892 z"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           sodipodi:nodetypes="ssssss" />
-        <path
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           d="m 1604.0708,711.86296 c 0,0.33266 -2.2029,0.69045 -2.7607,0.88678 -1.9969,0.70273 -1.9996,-0.25216 -1.6565,-1.03737 0.5165,-1.18206 0.5548,-2.56061 0.9537,-3.53039 0.4658,0.70339 3.4635,3.34831 3.4635,3.68098 z"
-           id="path3526"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ssscs" />
-        <path
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           d="m 1594.3026,690.56575 c -0.1347,-0.0433 -0.2358,-0.13049 -0.4606,-0.39724 -0.1275,-0.15125 -0.3117,-0.34324 -0.4093,-0.42664 -0.4576,-0.39103 -1.0374,-0.63589 -1.866,-0.78813 -0.1361,-0.025 -0.252,-0.0499 -0.2575,-0.0554 -0.023,-0.0229 0.3066,-0.25677 0.5145,-0.36517 0.5312,-0.27708 1.0948,-0.38699 1.7102,-0.33355 0.814,0.0707 1.4763,0.40969 1.7037,0.87211 0.07,0.14187 0.076,0.17412 0.076,0.38194 0,0.21923 0,0.23389 -0.1,0.42864 -0.1188,0.23964 -0.4187,0.59779 -0.5446,0.65041 -0.105,0.0439 -0.2831,0.0599 -0.3667,0.033 z"
-           id="path3528"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1614.0561,696.35701 c -1.5212,-1.36771 -1.4173,-2.395 0.3088,-3.05422 0.3347,-0.12782 1.0105,-0.50194 1.5018,-0.83138 1.6321,-1.09448 1.8565,-0.54937 0.7231,1.75673 -0.7056,1.43564 -1.4519,2.62952 -1.6915,2.70606 -0.081,0.026 -0.4602,-0.23379 -0.8422,-0.57719 z"
-           id="path3530"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1616.8196,701.35585 c -0.8269,-1.26054 -1.03,-2.51721 -0.4934,-3.05373 0.2409,-0.24094 0.3736,-0.26432 1.0373,-0.18286 0.4186,0.0514 0.9117,0.15017 1.0958,0.21953 0.184,0.0694 0.7534,0.15337 1.2653,0.18667 0.6027,0.0392 1.0158,0.13763 1.1723,0.27929 0.2234,0.20214 0.2256,0.24332 0.029,0.5428 -0.1168,0.17824 -0.4034,0.50098 -0.637,0.7172 -0.4871,0.45101 -2.7285,1.99383 -2.8966,1.99383 -0.062,0 -0.3195,-0.31623 -0.5731,-0.70273 z"
-           id="path3532"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 1617.0478,705.88012 c -0.088,-0.58882 0,-1.89661 0.1663,-2.59822 0.072,-0.29521 0.1206,-0.3102 0.7412,-0.22788 1.2947,0.17175 2.2441,0.77557 2.2441,1.42732 0,0.59987 -1.5208,1.72019 -2.6332,1.93987 -0.4193,0.0828 -0.4259,0.0759 -0.5184,-0.54109 z"
-           id="path3534"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 1599.6453,712.5736 c -0.045,-0.13014 0.024,-0.54049 0.1529,-0.91189 0.1292,-0.3714 0.3389,-1.18065 0.4659,-1.79833 0.127,-0.61768 0.2692,-1.18715 0.316,-1.2655 0.077,-0.1284 3.1091,2.92618 3.2403,3.26405 0.063,0.16343 -2.9398,0.94829 -3.6287,0.94829 -0.2554,0 -0.5013,-0.10648 -0.5464,-0.23662 z"
-           id="path3536"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 1593.7645,714.38771 c -0.2382,-0.23822 -0.1232,-1.67368 0.2629,-3.28116 0.2897,-1.20605 0.355,-1.90534 0.2606,-2.79215 -0.08,-0.75005 -0.056,-1.18311 0.064,-1.18311 0.1047,0 0.5528,0.6969 0.996,1.54867 0.4431,0.85176 1.0915,1.92309 1.4408,2.38072 1.1137,1.45905 0.7472,2.79746 -0.895,3.26845 -0.7386,0.21181 -1.9432,0.24495 -2.1296,0.0586 z"
-           id="path3538"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 1577.8571,717.21415 -0.732,-0.0756 0.1239,-0.77493 c 0.068,-0.42621 0.6744,-1.95329 1.3472,-3.3935 0.6729,-1.44022 1.2234,-2.7213 1.2234,-2.84684 0,-0.56158 0.445,0.28072 0.7854,1.48659 0.8081,2.86251 1.1683,5.49033 0.7734,5.64188 -0.2831,0.10865 -2.3147,0.0869 -3.5213,-0.0376 l 0,0 z"
-           id="path3540"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 1584.1734,716.25441 c 0,-0.94086 0.342,-1.9298 0.6673,-1.9298 0.4234,0 1.0364,0.96011 1.0364,1.62338 0,0.71434 -0.03,0.74193 -0.9938,0.91585 l -0.7099,0.12809 0,-0.73752 z"
-           id="path3542"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 1587.1085,715.84361 c -0.068,-0.3098 -0.075,-0.64254 -0.015,-0.73942 0.1572,-0.25438 0.7857,-0.0459 1.1821,0.39217 0.329,0.3635 0.3282,0.38625 -0.024,0.64367 -0.5947,0.43488 -1.0062,0.3282 -1.1434,-0.29642 z"
-           id="path3544"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1563.3885,715.99043 c -0.3957,-0.39573 -0.253,-0.83824 0.7576,-2.34928 l 0.9848,-1.47236 0.3329,0.74664 c 0.5285,1.18567 0.6327,2.27606 0.2703,2.82925 -0.2589,0.3951 -0.4587,0.4729 -1.2142,0.4729 -0.4973,0 -1.0065,-0.10222 -1.1314,-0.22715 z"
-           id="path3546"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1599.9036,711.89321 c 0.097,-0.48697 0.3017,-1.34806 0.454,-1.91355 l 0.2768,-1.02814 0.7233,0.60324 c 0.3978,0.33178 1.0609,0.99236 1.4735,1.46795 l 0.7503,0.86471 -1.018,0.25981 c -0.5599,0.14289 -1.4272,0.34341 -1.9275,0.4456 l -0.9095,0.18578 0.1771,-0.8854 0,0 z"
-           id="path3548"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1593.8239,714.12421 c -0.068,-0.11043 0.038,-1.22476 0.2354,-2.4763 0.1975,-1.25153 0.3966,-2.67209 0.4425,-3.1568 0.081,-0.85978 0.1144,-0.82932 1.355,1.24711 1.5337,2.56712 1.6498,3.5743 0.4817,4.17833 -0.8288,0.42861 -2.3036,0.55039 -2.5146,0.20766 z"
-           id="path3550"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1578.0302,717.07571 c -0.6667,-0.0998 -0.7389,-0.19859 -0.587,-0.8036 0.3276,-1.30541 2.3811,-5.93442 2.5785,-5.81245 0.2931,0.18114 1.3119,4.71598 1.3119,5.83934 l 0,0.97077 -1.2716,-0.0401 c -0.6994,-0.0221 -1.6137,-0.0913 -2.0318,-0.15395 z"
-           id="path3552"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1584.3619,715.78792 c 0.1994,-1.22862 0.3266,-1.36481 0.8606,-0.92166 0.6463,0.53639 0.4006,1.71445 -0.3806,1.82488 -0.6008,0.0849 -0.6311,0.0279 -0.48,-0.90322 z"
-           id="path3554"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1587.2232,715.66352 c 0,-0.29447 0.1057,-0.53541 0.2349,-0.53541 0.3511,0 0.8578,0.69202 0.6551,0.89468 -0.3665,0.3665 -0.89,0.15518 -0.89,-0.35927 z"
-           id="path3556"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 1563.8657,716.0144 c -0.672,-0.17562 -0.5839,-0.69062 0.3886,-2.27111 l 0.857,-1.39286 0.3356,0.7865 c 0.5184,1.21497 0.4477,2.46069 -0.1581,2.78488 -0.5386,0.28825 -0.6473,0.29532 -1.4231,0.0926 z"
-           id="path3558"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3560"
-           d="m 1601.7824,719.65247 c 0,-0.13597 -0.2955,-0.17305 -0.6567,-0.0824 -0.3822,0.0959 -1.0148,-0.0138 -1.5135,-0.26261 -1.0633,-0.53043 -1.475,-0.5473 -1.0567,-0.0433 0.2672,0.32194 -0.04,0.49756 -1.899,1.08473 -1.2198,0.38534 -3.0652,0.80963 -4.1009,0.94288 -1.0356,0.13325 -2.7865,0.42307 -3.8908,0.64405 -2.7023,0.54076 -6.0557,0.89149 -10.6299,1.1118 -3.6507,0.17582 -6.048,-0.009 -9.4482,-0.72634 -0.6625,-0.13988 -1.5835,-0.29782 -2.0466,-0.35095 -0.4631,-0.0531 -1.0876,-0.22809 -1.3879,-0.38878 -0.3002,-0.16068 -1.022,-0.29215 -1.6038,-0.29215 -0.9532,0 -1.1036,-0.0962 -1.5193,-0.97226 -0.4805,-1.01247 -0.416,-2.60175 0.1275,-3.14527 0.4956,-0.49566 8.6034,-0.31438 11.6504,0.26049 1.8659,0.35204 3.8534,0.50298 6.5589,0.49815 3.7788,-0.007 4.0023,-0.0399 8.4327,-1.25261 2.5031,-0.68511 6.7797,-1.79983 9.5036,-2.47716 5.9493,-1.47934 6.7447,-1.72361 6.6396,-2.03909 -0.1131,-0.33906 -4.3284,-5.28985 -4.5222,-5.31111 -0.087,-0.01 -0.3112,0.66651 -0.4983,1.50233 -0.187,0.83581 -0.5774,2.07062 -0.8675,2.744 l -0.5274,1.22434 -0.6546,-0.80313 c -0.3601,-0.44171 -1.3442,-2.15785 -2.1869,-3.81364 -0.8426,-1.65579 -1.6827,-3.01106 -1.8667,-3.01171 -0.2481,-9.4e-4 -0.3347,0.78266 -0.3347,3.02886 0,3.87351 -0.4652,5.5606 -1.9143,6.94206 -1.442,1.37477 -2.1496,1.33078 -3.2292,-0.20078 -0.467,-0.66258 -0.949,-1.20469 -1.071,-1.20469 -0.1221,0 -0.3592,0.30117 -0.5269,0.66927 -0.1677,0.3681 -0.3982,0.66927 -0.5123,0.66927 -0.114,0 -0.5465,-0.47909 -0.9609,-1.06465 -0.4145,-0.58556 -0.8741,-1.02817 -1.0213,-0.98357 -0.1472,0.0446 -0.468,0.89871 -0.7129,1.89802 -0.2448,0.9993 -0.5681,1.93984 -0.7183,2.09008 -0.3413,0.34129 -0.9251,-1.63059 -1.5197,-5.13334 -0.2357,-1.3883 -0.5928,-2.83392 -0.7935,-3.21249 l -0.3651,-0.6883 -0.6657,1.47239 c -0.3662,0.80982 -1.0393,2.37591 -1.4957,3.4802 -0.4564,1.10429 -1.0995,2.48189 -1.429,3.06133 l -0.599,1.05353 -3.0787,-0.0647 c -4.8267,-0.10142 -5.9547,-0.61445 -6.6762,-3.03647 -0.188,-0.63115 -0.4931,-1.43828 -0.678,-1.7936 -0.3349,-0.64353 -0.3399,-0.64046 -1.3018,0.78781 l -0.9656,1.43386 -0.4601,-1.05552 c -0.6067,-1.39161 -0.6162,-4.84163 -0.019,-6.81123 0.7018,-2.31391 2.2783,-4.72376 4.7464,-7.25529 3.1379,-3.21859 3.636,-3.35984 10.5744,-2.9985 l 5.0865,0.26488 0.9617,-0.63458 c 1.7924,-1.18267 9.5507,-3.71625 10.001,-3.26595 0.082,0.0823 0.013,0.54172 -0.1543,1.02105 -0.6625,1.90047 0.7554,4.03446 2.68,4.03363 2.0668,-9.3e-4 4.16,-1.89111 3.9921,-3.60501 -0.071,-0.72476 -0.3019,-0.91839 -2.1543,-1.80702 -2.5985,-1.24653 -2.6922,-1.81565 -0.2991,-1.81565 0.7312,0 1.1243,0.21348 1.8483,1.00373 0.787,0.85903 0.9916,0.95872 1.4196,0.69148 0.4253,-0.26561 0.7313,-0.13066 2.0486,0.90321 1.5222,1.19473 1.5857,1.2165 3.7202,1.27644 1.469,0.0412 2.5006,0.22189 3.1889,0.55844 0.9808,0.47958 0.9953,0.50611 0.4016,0.73727 -0.5946,0.23153 -0.5974,0.24693 -0.081,0.44631 0.3002,0.11576 0.6878,0.0847 0.882,-0.0708 0.8592,-0.68748 3.7501,3.31515 4.491,6.21822 0.6166,2.41573 0.4142,4.12949 -0.7674,6.49653 -0.9865,1.97609 -2.7644,4.51128 -3.282,4.67989 -0.1555,0.0506 -0.4848,-0.3318 -0.7318,-0.84988 -0.4432,-0.92939 -0.9933,-1.26308 -0.9933,-0.60255 0,0.18668 0.2998,0.78065 0.6663,1.31993 l 0.6662,0.98051 -1.804,1.64388 c -0.9922,0.90414 -2.2559,1.90637 -2.8082,2.22719 -5.624,1.02748 -1.8392,-0.45754 -5.2863,2.02504 z m -31.8612,0.76674 c 0,-1.00617 -0.078,-1.29138 -0.2636,-1.0039 -0.3424,0.52979 -0.3424,2.40936 0,2.40936 0.1472,0 0.2658,-0.63246 0.2636,-1.40546 z m -2.8294,-0.37235 c 0.2026,-0.52807 -0.048,-1.43468 -0.3971,-1.43468 -0.1373,0 -0.2496,0.42164 -0.2496,0.93698 0,0.97848 0.3568,1.25309 0.6467,0.4977 z m -2.5207,-1.04892 c 0,-0.93692 -0.4261,-1.24991 -0.7065,-0.51901 -0.2148,0.55971 0.1303,1.79634 0.4467,1.60079 0.1429,-0.0883 0.2598,-0.57513 0.2598,-1.08178 z m 32.5265,0.68507 c -0.091,-0.14724 -0.2788,-0.2677 -0.4174,-0.2677 -0.1385,0 -0.2519,0.12046 -0.2519,0.2677 0,0.14724 0.1878,0.26771 0.4174,0.26771 0.2295,0 0.3429,-0.12047 0.2519,-0.26771 z m 2.8232,-1.58331 c -0.2811,-0.52511 -0.8154,-0.77325 -0.8154,-0.37865 0,0.26736 0.8711,1.18011 1.0016,1.04956 0.062,-0.0619 -0.022,-0.36383 -0.1862,-0.67091 z m -2.8232,-0.55835 c -0.091,-0.14724 -0.286,-0.2677 -0.4332,-0.2677 -0.1472,0 -0.1932,0.12046 -0.1022,0.2677 0.091,0.14724 0.2859,0.26771 0.4331,0.26771 0.1472,0 0.1933,-0.12047 0.1023,-0.26771 z m 1.2046,-1.30989 c 0,-0.13149 -0.1807,-0.30841 -0.4015,-0.39316 -0.4081,-0.15659 -0.5483,0.12858 -0.2231,0.45375 0.2558,0.25585 0.6246,0.22007 0.6246,-0.0606 z m -22.5859,-5.268 c 0.7361,-0.78055 0.9016,-1.16765 0.9016,-2.10888 0,-1.49886 -0.4887,-1.94898 -1.6114,-1.48396 -2.4248,1.00441 -3.2203,4.54888 -1.0209,4.54888 0.6038,0 1.074,-0.25972 1.7307,-0.95604 z m -9.9831,-1.46768 c 1.4451,-1.13671 1.46,-4.02315 0.023,-4.3839 -1.9494,-0.48925 -3.6189,2.5617 -2.3743,4.33868 0.5208,0.74357 1.4413,0.76126 2.3516,0.0452 z m 42.9278,-1.47666 c -0.7558,-0.65465 -1.5244,-0.85974 -1.5244,-0.40674 0,0.13415 0.3787,0.56258 0.8416,0.95206 0.6215,0.52296 0.919,0.62932 1.1377,0.40673 0.2175,-0.22128 0.096,-0.47437 -0.4549,-0.95205 z m 5.2841,-1.47369 c -0.2566,-0.28352 -0.5683,-0.51549 -0.6927,-0.51549 -0.417,0 -0.2319,0.62872 0.3761,1.27778 0.5095,0.54388 0.6163,0.57443 0.6927,0.19812 0.05,-0.2447 -0.1195,-0.67688 -0.3761,-0.96041 z m -37.0594,-2.15252 c 0,-0.67774 -0.4121,-0.63734 -0.9218,0.0903 -0.6657,0.95034 -0.5407,1.37249 0.2525,0.85279 0.3681,-0.24119 0.6693,-0.6656 0.6693,-0.94315 z m 34.8019,0.2985 c 0,-0.41059 -1.0207,-1.33854 -1.4724,-1.33854 -0.6078,0 -0.4828,0.43262 0.3038,1.0514 0.77,0.60562 1.1686,0.70358 1.1686,0.28714 z m -44.9079,-1.2869 c 0.5019,-0.43103 0.6476,-1.65789 0.1968,-1.65789 -0.3209,0 -1.3321,1.5852 -1.3336,2.09054 0,0.3737 0.3562,0.23775 1.1368,-0.43265 z m 11.7645,-1.30641 c 0.7416,-0.71053 0.9902,-1.4223 0.4967,-1.4223 -0.2603,0 -1.6198,1.65009 -1.6198,1.96614 0,0.34891 0.3867,0.16164 1.1231,-0.54384 z m -9.371,-2.1585 c 1.2714,-1.36318 1.5608,-2.51695 0.4871,-1.94233 -0.5342,0.28587 -1.1799,1.20753 -1.4546,2.07618 -0.2571,0.813 0.135,0.75875 0.9675,-0.13385 z m 13.5663,-1.44116 c 0.7559,-0.31411 1.3743,-0.68508 1.3743,-0.82439 0,-0.37911 -1.6278,0.0442 -2.4763,0.64389 -1.3202,0.93312 -0.8818,1.00493 1.102,0.1805 z m -8.5309,-0.96554 c 0.6626,-0.21399 1.3553,-0.43389 1.5393,-0.48865 0.7516,-0.22361 0.2624,-0.65177 -0.7448,-0.65177 -1.5539,0 -2.9362,0.63719 -2.9362,1.35352 0,0.44825 0.105,0.5327 0.4685,0.37685 0.2577,-0.11047 1.0106,-0.37595 1.6732,-0.58995 z m 30.7863,-2.72863 c 0,-0.34878 -0.9066,-0.59967 -1.4346,-0.39703 -0.7554,0.28988 -0.4808,0.6467 0.4977,0.6467 0.5153,0 0.9369,-0.11235 0.9369,-0.24967 z m 3.7479,-0.018 c 0,-0.14724 -0.5492,-0.26771 -1.2204,-0.26771 -0.7455,0 -1.1561,0.10419 -1.0551,0.26771 0.091,0.14723 0.6402,0.2677 1.2205,0.2677 0.5803,0 1.055,-0.12047 1.055,-0.2677 z"
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           sodipodi:nodetypes="cccsssssssssssssssscsscsscsssssssssssscssscsssscsssscscccssssssssssssssssscscccsscccccssssssssssssssssssssssscssssssssssssssscsssccsscccccsscssssssssccsccccsscssssccssc" />
-      </g>
-    </g>
-    <g
-       transform="matrix(0.23143297,0,0,0.23143297,969.27692,566.25391)"
-       id="00"
-       inkscape:label="#g3694">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3549"
-         d="m 1861.2812,1087.8438 c -14.5955,-0.3898 -24.2991,15.1003 -23.875,28.5312 -1.494,13.9164 1.1141,31.5738 15.0626,38.2812 13.0068,5.9874 30.4459,-2.762 32.3437,-17.25 3.8645,-14.5657 3.2348,-32.5174 -7.5,-43.9062 -4.3549,-3.8893 -10.1888,-5.9792 -16.0313,-5.6562 z m 0.4688,17.8437 c 6.2356,1.6508 5.1199,10.0839 5.5625,15.0937 -0.2967,5.8244 1.219,14.849 -5.2187,17.8126 -5.7235,-1.3372 -4.8897,-8.9165 -5.4062,-13.4356 -0.2941,-6.4929 -0.9499,-15.271 4.7186,-19.4394 l 0.2813,-0.031 0.062,0 z"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f4e3d7;fill-opacity:1;stroke:none;font-family:Sans" />
-      <path
-         d="m 1861.9664,1099.693 c -3.7984,0 -6.6593,1.8749 -8.5828,5.6245 -1.8992,3.7253 -2.8488,9.3376 -2.8488,16.8369 0,7.475 0.9496,13.0873 2.8488,16.8369 1.9235,3.7254 4.7844,5.588 8.5828,5.588 3.8227,0 6.6836,-1.8626 8.5828,-5.588 1.9235,-3.7496 2.8853,-9.3619 2.8853,-16.8369 0,-7.4993 -0.9618,-13.1116 -2.8853,-16.8369 -1.8992,-3.7496 -4.7601,-5.6245 -8.5828,-5.6245 m 0,-5.8436 c 6.1114,0 10.7742,2.4227 13.9882,7.268 3.2383,4.821 4.8575,11.8333 4.8575,21.037 0,9.1794 -1.6192,16.1917 -4.8575,21.037 -3.214,4.821 -7.8768,7.2315 -13.9882,7.2315 -6.1115,0 -10.7863,-2.4105 -14.0247,-7.2315 -3.214,-4.8453 -4.821,-11.8576 -4.821,-21.037 0,-9.2037 1.607,-16.216 4.821,-21.037 3.2384,-4.8453 7.9132,-7.268 14.0247,-7.268"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="path3644"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="matrix(0.23143297,0,0,0.23143297,969.27692,566.25391)"
-       id="01"
-       inkscape:label="#g3698">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3551"
-         d="m 1914.3125,1088.625 c -7.0568,0.3358 -13.9615,1.1781 -20.7813,2.5938 -8.2456,2.7209 -8.4535,18.442 1.125,18.9687 2.3173,0.3306 4.4818,-0.4787 6.5626,-1.3125 -0.4674,9.369 0.087,18.7508 -0.094,28.125 -5.723,-1.2317 -13.9685,1.8936 -12.4375,9 -0.6365,5.1216 3.1467,10.9774 8.9063,9.4375 11.4455,-0.3506 22.896,0.063 34.3437,-0.062 1.5508,-6.2776 2.246,-16.4192 -5.6563,-18.5312 -2.3853,-1.3941 -7.2184,2.116 -5.9929,-1.9664 0.7552,-14.4644 -0.1235,-29.1344 0.056,-43.5024 -0.8388,-2.4617 -3.7617,-2.9085 -6.0313,-2.75 z"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f4e3d7;fill-opacity:1;stroke:none;font-family:Sans" />
-      <path
-         d="m 1895.0924,1143.1549 12.0525,0 0,-41.5993 -13.1116,2.6297 0,-6.7202 13.0386,-2.6296 7.3775,0 0,48.3194 12.0525,0 0,6.2089 -31.4095,0 0,-6.2089"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="path3646"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="matrix(0.23143297,0,0,0.23143297,969.27692,566.25391)"
-       id="02"
-       inkscape:label="#g3709">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3553"
-         d="m 1954.5938,1087.8125 c -7.7361,0.1393 -15.0454,2.9486 -22.0938,5.9063 2.9504,5.4952 -2.7157,13.8836 4.1562,17.625 5.744,0.9489 10.1682,-4.8136 15.7813,-5.5 5.4292,-2.0643 10.3322,5.9478 5.125,9.2812 -7.6397,9.9106 -19.1613,16.9442 -25,28.2188 -2.6164,7.6317 5.957,14.7096 13.2164,12.2436 11.055,-0.5839 22.1278,0.023 33.1899,-0.2436 1.7515,-6.4499 2.0695,-17.2922 -6.5,-18.6563 -2.758,-0.6325 -13.5028,2.4409 -8.3162,-1.6838 8.7577,-7.9124 18.0465,-19.1891 14.3162,-31.8475 -2.8329,-10.073 -13.8729,-15.7871 -23.875,-15.3437 z"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f4e3d7;fill-opacity:1;stroke:none;font-family:Sans" />
-      <path
-         d="m 1947.7946,1143.1549 25.7485,0 0,6.2089 -34.6235,0 0,-6.2089 c 2.8001,-2.8974 6.6106,-6.781 11.4316,-11.6507 4.8453,-4.894 7.8888,-8.0471 9.1306,-9.4594 2.3618,-2.6539 4.0053,-4.894 4.9306,-6.7201 0.9496,-1.8505 1.4243,-3.6644 1.4244,-5.4419 -10e-5,-2.8974 -1.0227,-5.2592 -3.0679,-7.0854 -2.021,-1.8261 -4.6628,-2.7391 -7.9254,-2.7392 -2.3131,10e-5 -4.7602,0.4018 -7.3411,1.2053 -2.5566,0.8035 -5.2958,2.0209 -8.2176,3.6522 l 0,-7.4506 c 2.9705,-1.193 5.7462,-2.0939 8.3272,-2.7027 2.5809,-0.6086 4.9427,-0.913 7.0854,-0.913 5.6488,0 10.1532,1.4122 13.5134,4.2366 3.36,2.8245 5.04,6.5985 5.0401,11.322 -10e-5,2.2401 -0.4262,4.3706 -1.2783,6.3915 -0.8279,1.9966 -2.3497,4.3584 -4.5653,7.0854 -0.6088,0.7061 -2.5445,2.7514 -5.8071,6.1358 -3.2628,3.3601 -7.8646,8.0715 -13.8056,14.1342"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="path3648"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="matrix(0.23143297,0,0,0.23143297,969.27692,566.25391)"
-       id="03"
-       inkscape:label="#g3713">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3555"
-         d="m 2001.3438,1087.875 c -6.6413,0.2869 -13.0693,1.9981 -19.4063,3.9062 1.826,5.5436 -2.4065,13.8707 4.3437,17.0938 6.9372,0.7324 15.4467,-6.354 21.7813,-0.9062 0.2369,3.8944 -4.6233,3.5325 -7.2187,2.8437 -6.0803,-0.9029 -12.8344,3.912 -11.125,10.5 -0.1227,4.8764 4.3108,9.8358 9.4374,8 4.0153,-1.1985 12.1518,0.419 9.8126,6.0937 -5.3778,5.5433 -14.7768,2.3934 -20.5626,-0.7187 -2.8663,-0.7569 -10.8672,-8.8834 -8.3039,-2.7486 3.1647,6.7812 -3.3568,16.2643 4.2415,21.1861 13.4971,5.3965 32.5554,5.3978 41.375,-7.9688 4.5677,-7.83 3.9958,-18.7663 -2.4063,-25.4374 9.1057,-10.6015 1.8678,-29.373 -12,-30.9376 -3.2368,-0.8512 -6.6206,-1.0301 -9.9687,-0.9062 z"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f4e3d7;fill-opacity:1;stroke:none;font-family:Sans" />
-      <path
-         d="m 2011.417,1119.9631 c 3.5305,0.7548 6.2819,2.3253 8.2541,4.7114 1.9966,2.3861 2.9948,5.3323 2.9949,8.8384 -10e-5,5.3811 -1.8505,9.5446 -5.5515,12.4908 -3.7009,2.9461 -8.9602,4.4192 -15.7777,4.4192 -2.2888,0 -4.6506,-0.2313 -7.0854,-0.6939 -2.4105,-0.4383 -4.9062,-1.1079 -7.4872,-2.0087 l 0,-7.122 c 2.0453,1.1931 4.2854,2.094 6.7202,2.7027 2.4348,0.6087 4.9792,0.9131 7.6332,0.9131 4.6262,0 8.1446,-0.9131 10.5551,-2.7392 2.4348,-1.8261 3.6522,-4.4801 3.6522,-7.962 0,-3.2139 -1.1322,-5.7218 -3.3966,-7.5236 -2.24,-1.8261 -5.3688,-2.7392 -9.3863,-2.7392 l -6.3549,0 0,-6.0628 6.6471,0 c 3.6279,10e-5 6.4036,-0.7182 8.3272,-2.1548 1.9235,-1.4609 2.8852,-3.5548 2.8852,-6.2819 0,-2.8 -0.9983,-4.9427 -2.9948,-6.428 -1.9723,-1.5095 -4.8088,-2.2643 -8.5098,-2.2644 -2.0209,10e-5 -4.1879,0.2192 -6.501,0.6574 -2.3131,0.4383 -4.8575,1.1201 -7.6332,2.0453 l 0,-6.5741 c 2.8,-0.7791 5.4175,-1.3634 7.8523,-1.7531 2.4592,-0.3895 4.7723,-0.5843 6.9393,-0.5843 5.6001,0 10.0315,1.2783 13.2943,3.8348 3.2626,2.5323 4.894,5.9655 4.894,10.2994 0,3.0193 -0.8644,5.5759 -2.5931,7.6698 -1.7288,2.0696 -4.188,3.5062 -7.3776,4.3097"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="path3650"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="matrix(0.23143297,0,0,0.23143297,969.27692,566.25391)"
-       id="04"
-       inkscape:label="#g3717">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3557"
-         d="m 2067.9688,1088.5 c -6.4566,1.2478 -15.8923,-2.333 -19.5938,5.2188 -6.8742,12.7279 -17.4663,23.6403 -22.5,37.2812 -1.572,7.0228 5.2313,13.9814 12.3438,11.875 3.9917,0.1935 9.577,-1.2527 12.6874,-0.094 -2.331,6.4246 2.8647,13.7912 9.875,13.1563 4.8047,0.5137 10.6116,-2.4892 9.7813,-8.0313 0.1948,-2.0256 -1.8022,-5.6463 1.5313,-4.9062 9.2778,-1.7968 8.8762,-18.6589 -1.1563,-18.7812 -2.5581,-0.2345 0.1191,-4.9342 -0.3437,-6.875 -0.5201,-9.6938 -0.1936,-19.5008 -0.2813,-29.25 -0.7813,0.1354 -1.5625,0.2708 -2.3437,0.4062 z m -17,35.8438 c -3.9084,1.4633 1.969,-5.5538 0,0 z"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f4e3d7;fill-opacity:1;stroke:none;font-family:Sans" />
-      <path
-         d="m 2056.9607,1101.2635 -18.6265,29.1085 18.6265,0 0,-29.1085 m -1.9357,-6.428 9.2768,0 0,35.5365 7.7793,0 0,6.1358 -7.7793,0 0,12.856 -7.3411,0 0,-12.856 -24.6162,0 0,-7.1219 22.6805,-34.5504"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="path3652"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="matrix(0.23143297,0,0,0.23143297,969.27692,566.25391)"
-       id="05"
-       inkscape:label="#g3721">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3559"
-         d="m 2109.9375,1088.5938 c -10.4996,1.0059 -21.0465,-0.2572 -31.5625,0.3124 0,14.1876 0,28.3751 0,42.5626 7.3358,-3.1633 17.2764,-9.6845 24.5938,-3.2813 3.7528,5.0113 -2.2292,12.0024 -7.9376,10.0313 -8.8461,-0.3631 -15.8755,-6.5226 -23.375,-10.5313 3.6937,4.6785 5.7134,10.2291 4.1876,16.125 -1.0926,5.5511 2.8253,10.8038 8.5312,11.0937 13.2642,3.9438 31.177,1.3118 37.1562,-12.8124 6.287,-13.9111 -2.7986,-33.2811 -18.7812,-34.4376 -1.5653,-0.5764 -5.5121,0.106 -5.8125,-0.5624 6.6526,-1.7269 15.0485,2.7703 20.9063,-2.3438 3.2745,-4.0311 2.5348,-11.1189 -1.0313,-14.7812 -1.943,-1.4822 -4.5521,-1.4446 -6.875,-1.375 z"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f4e3d7;fill-opacity:1;stroke:none;font-family:Sans" />
-      <path
-         d="m 2084.3893,1094.8355 28.9624,0 0,6.2088 -22.2058,0 0,13.3673 c 1.0714,-0.3652 2.1427,-0.633 3.214,-0.8035 1.0713,-0.1947 2.1427,-0.2921 3.214,-0.2922 6.0871,10e-5 10.9081,1.6679 14.463,5.0036 3.5548,3.3358 5.3322,7.8524 5.3323,13.5499 -1e-4,5.868 -1.8262,10.4333 -5.4784,13.696 -3.6523,3.2384 -8.802,4.8575 -15.4491,4.8575 -2.2888,0 -4.6262,-0.1948 -7.0123,-0.5843 -2.3618,-0.3896 -4.8088,-0.974 -7.3411,-1.7531 l 0,-7.4141 c 2.1914,1.1931 4.4558,2.0818 6.7932,2.6661 2.3375,0.5844 4.8088,0.8766 7.4141,0.8766 4.2123,0 7.548,-1.1079 10.0072,-3.3236 2.4592,-2.2157 3.6888,-5.2227 3.6888,-9.0211 0,-3.7983 -1.2296,-6.8053 -3.6888,-9.0211 -2.4592,-2.2156 -5.7949,-3.3235 -10.0072,-3.3235 -1.9722,0 -3.9444,0.2191 -5.9166,0.6574 -1.9479,0.4383 -3.9445,1.12 -5.9897,2.0453 l 0,-27.392"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="path3654"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="matrix(0.23143297,0,0,0.23143297,969.27692,566.25391)"
-       id="06"
-       inkscape:label="#g3725">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3561"
-         d="m 2150.4062,1087.875 c -17.0218,0.044 -28.4729,17.9964 -27.25,33.8438 -0.7225,13.3171 4.2817,29.7495 18.4376,33.875 13.9967,4.4832 30.9648,-6.0029 31.2812,-21.125 1.8486,-13.5211 -9.0414,-28.0168 -23.2188,-27.25 -4.081,0.7728 -1.5713,-0.6732 0.9063,-1.0626 6.4418,-1.5816 11.5353,4.2341 17.5937,4.5313 4.4021,-1.7187 -0.3406,-6.3667 1.3126,-9.4063 1.0941,-5.408 -1.5872,-11.8349 -7.75,-12 -3.6656,-1.0468 -7.4824,-1.6115 -11.3126,-1.4062 z m -1.7812,37.25 c 6.8705,0.3855 6.766,13.7973 -0.4062,13.4688 -6.3586,-0.3671 -5.9789,-13.7823 0.4062,-13.4688 z"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f4e3d7;fill-opacity:1;stroke:none;font-family:Sans" />
-      <path
-         d="m 2148.6325,1119.1596 c -3.3114,0 -5.941,1.1322 -7.8889,3.3966 -1.9235,2.2644 -2.8853,5.3688 -2.8852,9.3132 -1e-4,3.9201 0.9617,7.0246 2.8852,9.3133 1.9479,2.2644 4.5775,3.3966 7.8889,3.3966 3.3114,0 5.9288,-1.1322 7.8524,-3.3966 1.9478,-2.2887 2.9218,-5.3932 2.9218,-9.3133 0,-3.9444 -0.974,-7.0488 -2.9218,-9.3132 -1.9236,-2.2644 -4.541,-3.3966 -7.8524,-3.3966 m 14.6456,-23.1189 0,6.7202 c -1.8505,-0.8765 -3.7253,-1.5461 -5.6245,-2.0088 -1.8748,-0.4625 -3.7375,-0.6938 -5.5879,-0.6939 -4.8697,10e-5 -8.595,1.6436 -11.176,4.9306 -2.5566,3.2871 -4.0175,8.2541 -4.3827,14.9012 1.4366,-2.1183 3.2383,-3.7374 5.4054,-4.8575 2.167,-1.1443 4.5531,-1.7165 7.1584,-1.7166 5.4784,10e-5 9.8002,1.6679 12.9655,5.0036 3.1896,3.3114 4.7845,7.8281 4.7845,13.5499 0,5.6002 -1.6557,10.0925 -4.9671,13.4769 -3.3114,3.3844 -7.7185,5.0766 -13.2212,5.0766 -6.3062,0 -11.1272,-2.4105 -14.4629,-7.2315 -3.3358,-4.8453 -5.0036,-11.8576 -5.0036,-21.037 0,-8.6193 2.0452,-15.4855 6.1358,-20.5988 4.0905,-5.1374 9.5811,-7.7062 16.4717,-7.7062 1.8504,0 3.7131,0.1826 5.5879,0.5478 1.8992,0.3653 3.8714,0.9131 5.9167,1.6435"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="path3656"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="matrix(0.23143297,0,0,0.23143297,969.27692,566.25391)"
-       id="07"
-       inkscape:label="#g3729">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3563"
-         d="m 2209.75,1088.6562 c -12.648,0.697 -25.3139,-0.1463 -37.9688,0.2188 -0.2216,5.9415 -2.593,15.3639 5,17.8125 6.045,1.3815 12.2835,0.3166 18.4063,0.1563 -6.4395,16.6289 -12.857,33.2666 -19.1875,49.9374 7.165,-3.9545 17.8338,2.508 23,-5.5624 5.9055,-18.923 15.5718,-36.7773 20.125,-56.0626 -0.1789,-4.6758 -5.1961,-7.0393 -9.375,-6.5 z"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f4e3d7;fill-opacity:1;stroke:none;font-family:Sans" />
-      <path
-         d="m 2177.7046,1094.8355 35.0617,0 0,3.1409 -19.7953,51.3874 -7.7063,0 18.6266,-48.3195 -26.1867,0 0,-6.2088"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="path3658"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="matrix(0.23143297,0,0,0.23143297,969.27692,566.25391)"
-       id="08"
-       inkscape:label="#g3733">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3565"
-         d="m 2240.0625,1087.875 c -13.6524,-0.3672 -25.6832,15.5638 -18.7813,28.1562 1.4454,2.2503 3.6077,4.2458 0.6563,6.1876 -8.9965,12.1117 -0.7737,32.8909 14.8437,33.75 12.1353,2.69 28.0745,-2.9229 30.375,-16.4688 1.6379,-6.7464 -0.1803,-14.402 -4.9374,-19.4688 9.0624,-10.4855 2.4513,-29.4066 -11.4376,-31.3437 -3.5021,-0.8444 -7.1009,-0.9227 -10.7187,-0.8125 z m 4.1875,17.6562 c 3.9463,0.4802 3.57,6.7349 -0.5938,6.3126 -3.5408,1.1246 -7.1302,-4.3084 -3.2187,-5.7813 1.1585,-0.469 2.5085,-0.4523 3.8125,-0.5313 z m -1.2188,23.7813 c 5.6435,-1.2668 7.4781,8.7318 1.5938,9.2813 -4.5356,1.7131 -9.4705,-3.9443 -6.0312,-7.6876 1.0869,-1.067 2.8443,-1.5814 4.4374,-1.5937 z"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f4e3d7;fill-opacity:1;stroke:none;font-family:Sans" />
-      <path
-         d="m 2242.9705,1123.4692 c -3.5062,10e-5 -6.2697,0.9375 -8.2906,2.8123 -1.9966,1.8748 -2.9949,4.4557 -2.9949,7.7428 0,3.287 0.9983,5.8679 2.9949,7.7428 2.0209,1.8748 4.7844,2.8122 8.2906,2.8122 3.5062,0 6.2697,-0.9374 8.2906,-2.8122 2.0209,-1.8992 3.0314,-4.4801 3.0314,-7.7428 0,-3.2871 -1.0105,-5.868 -3.0314,-7.7428 -1.9966,-1.8748 -4.7601,-2.8122 -8.2906,-2.8123 m -7.3776,-3.1409 c -3.1653,-0.7791 -5.6366,-2.2522 -7.4141,-4.4193 -1.7531,-2.1669 -2.6296,-4.8087 -2.6296,-7.9254 0,-4.3583 1.5461,-7.8036 4.6384,-10.3359 3.1166,-2.5322 7.3775,-3.7983 12.7829,-3.7983 5.4297,0 9.6906,1.2661 12.7829,3.7983 3.0922,2.5323 4.6384,5.9776 4.6384,10.3359 0,3.1167 -0.8888,5.7585 -2.6661,7.9254 -1.7532,2.1671 -4.2002,3.6402 -7.3411,4.4193 3.5548,0.8279 6.3184,2.447 8.2906,4.8575 1.9966,2.4105 2.9949,5.3567 2.9949,8.8385 0,5.2836 -1.6192,9.3376 -4.8575,12.162 -3.214,2.8244 -7.8281,4.2366 -13.8421,4.2366 -6.0141,0 -10.6403,-1.4122 -13.8786,-4.2366 -3.214,-2.8244 -4.821,-6.8784 -4.821,-12.162 0,-3.4818 0.9983,-6.428 2.9949,-8.8385 1.9965,-2.4105 4.7723,-4.0296 8.3271,-4.8575 m -2.7026,-11.6507 c -1e-4,2.8244 0.8765,5.0279 2.6296,6.6106 1.7774,1.5826 4.2609,2.374 7.4506,2.3739 3.1653,10e-5 5.6366,-0.7913 7.4141,-2.3739 1.8018,-1.5827 2.7026,-3.7862 2.7027,-6.6106 -1e-4,-2.8244 -0.9009,-5.0279 -2.7027,-6.6106 -1.7775,-1.5826 -4.2488,-2.374 -7.4141,-2.374 -3.1897,0 -5.6732,0.7914 -7.4506,2.374 -1.7531,1.5827 -2.6297,3.7862 -2.6296,6.6106"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="path3660"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="matrix(0.23143297,0,0,0.23143297,969.27692,566.25391)"
-       id="09">
-      <path
-         inkscape:connector-curvature="0"
-         id="path3567"
-         d="m 2286.5938,1087.875 c -14.9887,1.0257 -24.7315,18.0548 -20.4063,31.9375 2.4825,10.8425 13.904,18.0445 24.7187,17.1875 -6.8178,3.8694 -13.673,-1.566 -19.7812,-4.0312 -4.7974,0.088 -1.8396,5.3924 -2.0312,8.125 -0.9432,5.0988 -0.4374,12.5024 5.9374,13.5312 14.9007,6.0512 34.5156,-2.1867 38,-18.5625 4.2953,-14.0928 2.888,-31.5143 -7.5624,-42.5313 -5.1553,-4.6235 -12.0868,-6.2491 -18.875,-5.6562 z m 3.1874,17.7812 c 6.5421,0.5339 6.5201,12.455 0.3438,13.5313 -7.0521,0.6189 -7.2159,-13.7981 -0.3438,-13.5313 z"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#f4e3d7;fill-opacity:1;stroke:none;font-family:Sans" />
-      <path
-         d="m 2275.0374,1148.2316 0,-6.7202 c 1.8505,0.8766 3.7253,1.5461 5.6245,2.0087 1.8991,0.4627 3.7618,0.694 5.5879,0.694 4.8697,0 8.5828,-1.6314 11.1394,-4.8941 2.5809,-3.287 4.054,-8.2662 4.4193,-14.9377 -1.4123,2.094 -3.2019,3.701 -5.3689,4.821 -2.167,1.12 -4.5653,1.68 -7.1949,1.68 -5.4541,0 -9.7759,-1.6435 -12.9655,-4.9305 -3.1653,-3.3114 -4.748,-7.828 -4.748,-13.5499 0,-5.6001 1.6557,-10.0924 4.9671,-13.4769 3.3114,-3.3844 7.7184,-5.0766 13.2212,-5.0766 6.3062,0 11.115,2.4227 14.4264,7.268 3.3357,4.821 5.0036,11.8333 5.0036,21.037 0,8.595 -2.0453,15.4613 -6.1358,20.5988 -4.0662,5.1131 -9.5446,7.6697 -16.4352,7.6697 -1.8505,0 -3.7253,-0.1826 -5.6244,-0.5478 -1.8992,-0.3652 -3.8715,-0.9131 -5.9167,-1.6435 m 14.6821,-23.1189 c 3.3113,1e-4 5.9288,-1.1321 7.8523,-3.3966 1.9479,-2.2643 2.9218,-5.3688 2.9219,-9.3132 -1e-4,-3.9201 -0.974,-7.0123 -2.9219,-9.2768 -1.9235,-2.2887 -4.541,-3.4331 -7.8523,-3.4331 -3.3114,0 -5.941,1.1444 -7.8889,3.4331 -1.9235,2.2645 -2.8853,5.3567 -2.8853,9.2768 0,3.9444 0.9618,7.0489 2.8853,9.3132 1.9479,2.2645 4.5775,3.3967 7.8889,3.3966"
-         style="font-size:74.79834747px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
-         id="path3662"
-         inkscape:connector-curvature="0" />
-    </g>
-    <path
-       sodipodi:type="arc"
-       style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.625;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       id="path3587"
-       sodipodi:cx="59.5"
-       sodipodi:cy="226.06699"
-       sodipodi:rx="5.25"
-       sodipodi:ry="5.25"
-       d="m 64.75,226.06699 c 0,2.89949 -2.350505,5.25 -5.25,5.25 -2.899495,0 -5.25,-2.35051 -5.25,-5.25 0,-2.8995 2.350505,-5.25 5.25,-5.25 2.899495,0 5.25,2.3505 5.25,5.25 z"
-       transform="translate(1197.6486,499.99212)" />
-    <g
-       id="0bush"
-       inkscape:label="#g4395"
-       transform="matrix(1.2299966,0,0,1.2299966,-280.64375,-155.00257)">
-      <path
-         id="path3585"
-         transform="translate(1216.2708,585.16711)"
-         d="m 24.34375,94.71875 c -1.812184,0 -3.400287,0.915991 -4.34375,2.3125 -0.36034,-0.07817 -0.741256,-0.09375 -1.125,-0.09375 -0.934291,0 -1.802484,0.259672 -2.5625,0.6875 -0.93487,-0.857464 -2.163597,-1.40625 -3.53125,-1.40625 -2.8995,0 -5.25,2.3505 -5.25,5.25 0,1.37869 0.5370576,2.62573 1.40625,3.5625 -0.2438294,0.43892 -0.40625,0.89675 -0.40625,1.375 0,0.23386 0.064633,0.46163 0.125,0.6875 l 20.15625,0 c 0.05998,-0.22587 0.125,-0.45364 0.125,-0.6875 0,-0.88565 -0.436106,-1.71127 -1.21875,-2.4375 1.141786,-0.96305 1.875,-2.38937 1.875,-4 0,-2.8995 -2.350505,-5.25 -5.25,-5.25 z"
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.625;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3581"
-         transform="translate(1216.2708,585.16711)"
-         d="m 19.9375,96.125 c -2.8995,0 -5.25,2.3505 -5.25,5.25 0,0.77506 0.16725,1.52531 0.46875,2.1875 -0.3005,0.66134 -0.46875,1.38248 -0.46875,2.15625 0,0.47703 0.06828,0.93571 0.1875,1.375 l 10.125,0 c 0.117938,-0.43709 0.1875,-0.90063 0.1875,-1.375 0,-0.77451 -0.16765,-1.49442 -0.46875,-2.15625 0.3021,-0.66274 0.46875,-1.41162 0.46875,-2.1875 0,-2.8995 -2.3505,-5.25 -5.25,-5.25 z"
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.625;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         inkscape:connector-curvature="0" />
-      <path
-         transform="translate(1216.2708,585.16711)"
-         id="path3573"
-         d="m 9.5,100.8125 c -2.899495,0 -5.25,2.3505 -5.25,5.25 0,0.36887 0.1463751,0.68386 0.21875,1.03125 l 15.53125,0 c -0.171291,-2.74481 -2.399519,-4.9375 -5.1875,-4.9375 -0.543656,0 -1.06932,0.0654 -1.5625,0.21875 -0.95242,-0.96851 -2.284341,-1.5625 -3.75,-1.5625 z"
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.625;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path3583"
-         transform="translate(1216.2708,585.16711)"
-         d="m 28.0625,99.9375 c -2.8995,0 -5.25,2.3505 -5.25,5.25 0,0.67776 0.14115,1.31149 0.375,1.90625 l 9.75,0 c 0.233857,-0.59476 0.375,-1.22849 0.375,-1.90625 0,-2.8995 -2.3506,-5.25 -5.25,-5.25 z"
-         style="fill:#008000;fill-opacity:1;stroke:#000000;stroke-width:0.625;stroke-linecap:round;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         inkscape:connector-curvature="0" />
-      <path
-         sodipodi:type="arc"
-         style="opacity:0;fill:#008000;fill-opacity:1;stroke:none"
-         id="path4393"
-         sodipodi:cx="59.5"
-         sodipodi:cy="226.06699"
-         sodipodi:rx="5.25"
-         sodipodi:ry="5.25"
-         d="m 64.75,226.06699 c 0,2.89949 -2.350505,5.25 -5.25,5.25 -2.899495,0 -5.25,-2.35051 -5.25,-5.25 0,-2.8995 2.350505,-5.25 5.25,-5.25 2.899495,0 5.25,2.3505 5.25,5.25 z"
-         transform="matrix(0.96728498,0,0,2.4825138,1176.7025,130.81517)" />
-    </g>
-    <path
-       sodipodi:type="arc"
-       style="opacity:0.7;fill:#000000;fill-opacity:1;filter:url(#filter4348)"
-       id="0shadow"
-       sodipodi:cx="110.50001"
-       sodipodi:cy="115.81698"
-       sodipodi:rx="51.000004"
-       sodipodi:ry="8.5"
-       d="m 161.50001,115.81698 a 51.000004,8.5 0 1 1 -102.000006,0 51.000004,8.5 0 1 1 102.000006,0 z"
-       transform="matrix(-0.64,0,0,0.64,1398.9908,658.86123)"
-       inkscape:label="#path3618" />
-  </g>
-</svg>
diff --git a/examples/mnit_dino/art/icon.svg b/examples/mnit_dino/art/icon.svg
deleted file mode 100644 (file)
index ee2cf30..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="512"
-   height="512"
-   id="svg3619"
-   version="1.1"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="icon.svg">
-  <defs
-     id="defs3621" />
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#ffffff"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0.0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="0.7"
-     inkscape:cx="849.79918"
-     inkscape:cy="298.13105"
-     inkscape:document-units="px"
-     inkscape:current-layer="g4428"
-     showgrid="false"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0"
-     inkscape:window-width="1662"
-     inkscape:window-height="890"
-     inkscape:window-x="2815"
-     inkscape:window-y="1362"
-     inkscape:window-maximized="0" />
-  <metadata
-     id="metadata3624">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-        <dc:title />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Layer 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(-84.913502,-247.8583)">
-    <g
-       transform="matrix(0.18739518,0,0,0.18739518,219.94292,371.32235)"
-       id="0dino"
-       inkscape:label="#g3096">
-      <g
-         id="g4428"
-         transform="matrix(4.2704822,0,0,4.2704822,-1023.4682,-1376.9525)">
-        <path
-           sodipodi:nodetypes="ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 306.59375,177.16066 c -10.92225,0.83824 -22.21496,9.45417 -22,21.21875 -2.94534,5.24854 -11.00925,2.72967 -15.5,6.0625 -5.99004,4.00265 -10.93566,9.97989 -18.5,11.0625 -21.19899,4.39872 -43.56299,-5.96458 -64.40625,1.90625 -21.0351,8.0811 -34.43119,28.27094 -44.40625,47.59375 -6.72268,14.38113 -8.50231,31.99863 -2.96875,46.9375 5.41013,6.67525 0.94783,15.09697 -3.375,21 -6.01574,7.94517 -6.37479,21.41996 3.21875,26.78125 9.25637,6.34728 21.20449,6.34758 31.75,8.75 -0.28469,14.45141 6.23359,29.64999 0.40625,43.5625 -2.59886,5.74683 -9.25843,6.72052 -14.8125,5.53125 -13.29133,-0.74154 -26.91644,0.76394 -40,-0.0937 -2.35827,-2.64991 -9.17401,-2.31838 -7.09375,2.40625 9.42125,15.25227 29.24385,17.93105 41.09375,30.4375 0.68965,2.14932 -3.94872,3.62927 -5.24271,5.50824 -7.28142,6.86748 -17.30185,11.95706 -22.00729,20.96051 -1.09534,4.62691 4.85487,4.69855 7.90625,4.375 11.93593,0.5357 21.68298,-9.32654 33.4375,-9.5 3.9365,1.78412 1.17136,7.34138 2.5,10.65625 1.21354,10.15697 -2.64377,21.03741 1.0625,30.78125 3.07186,3.93897 9.31468,-0.46315 8.5625,-4.71875 2.97468,-15.26145 12.9873,-27.61926 18.20746,-41.84244 -0.16464,-9.81041 5.44632,-20.14087 15.48004,-22.40756 14.12806,-3.6018 29.45735,-1.28412 43.84973,-4.69193 19.84165,-3.06847 40.26936,-7.59611 60.24402,-3.37057 -16.40694,33.16149 -28.88361,68.32036 -39.79291,103.63457 -8.07417,28.33624 -11.16777,61.55362 5.91791,87.30293 1.6736,2.19587 6.52819,5.35396 4.53125,8.4375 -7.71517,2.92425 -16.72294,0.0177 -23.6875,-3.6875 -8.82285,-4.8373 -17.43066,-11.89692 -27.78125,-12.625 -6.15078,0.48289 -4.60808,8.30602 -2.28125,11.875 6.05399,7.01001 7.80865,16.77008 13.0625,24.1875 2.14086,7.87825 11.72528,14.34119 8.59375,23.0625 -9.94978,11.22814 -17.64266,24.18848 -25.90625,36.75 -3.92568,3.61983 3.49083,3.43835 6.25,3.53125 13.08631,-0.80023 22.99422,-11.87312 35.625,-13.625 4.21794,1.86961 1.82848,8.69149 1.90625,12.25 -1.39398,13.10321 -6.9142,27.21165 -1.8125,40.03125 1.52899,5.2729 7.26192,0.5502 10.90625,0 13.33142,-4.88413 25.50501,-12.95466 34.71875,-23.6875 2.94634,-2.01826 3.5288,4.3282 4.78125,5.625 1.21492,2.76122 2.619,5.52247 4.78125,7.6875 -2.33412,3.29558 -8.30401,9.71554 -2.90625,13 3.0361,1.45204 6.94838,-0.2918 8.03125,3.8125 2.86297,5.33208 3.12491,11.71718 7.21875,16.5625 2.07001,3.89994 7.58175,2.75518 8.625,-1.28125 4.08327,-8.02022 3.64653,-19.23458 12.96875,-23.53125 6.88467,-3.19543 14.26891,-8.08327 21.78125,-7.59375 3.1483,1.58289 4.50287,-3.85065 8.1875,-2.28125 6.40391,4.10182 8.08788,12.68843 12.58784,18.63273 6.43888,10.28293 11.77417,21.64249 19.94341,30.52352 3.50011,4.0147 9.92082,2.05315 11.46875,-2.78125 3.39313,-7.38401 4.03843,-15.75572 8.0625,-22.90625 2.77527,-5.81474 2.86428,-14.04769 8.28125,-18.15625 1.54324,2.72431 4.7004,0.1207 6.46875,2.96875 7.89165,5.0887 16.7579,8.11321 25.0625,12.3125 4.91083,2.36924 13.79056,1.9162 13.96875,-5.15625 -0.52412,-7.90946 -5.20568,-14.93758 -10.21875,-20.875 -3.36421,-4.24611 -8.84917,-7.85048 -9.65625,-13.5625 25.53467,0.33007 52.15695,4.77108 76.71875,-4.1875 10.26111,-2.60716 19.79567,-7.86401 29.01875,-12.7875 5.09396,-2.9898 10.1487,-6.75113 15.325,-9.11875 2.56001,-0.565 4.58434,-0.98601 6.96875,-0.0312 2.17422,-1.45412 2.36244,-3.88244 5.25,-4.84375 12.27623,-7.35152 24.62187,-15.30452 34.25,-26.03125 2.60567,-1.98832 5.02411,-6.5144 8.33703,-9.79129 9.28332,-11.00155 15.05406,-24.41898 23.19422,-36.30246 7.69744,-11.30858 9.26201,-25.259 9.4375,-38.75 0.0193,-14.901 -0.33725,-30.37123 -5.00971,-44.55068 -8.07816,-19.03978 -16.29957,-38.82581 -31.74029,-53.16817 -13.44777,-12.69999 -31.33818,-18.77407 -47.53125,-26.96875 -10.56427,-4.46529 -23.31616,-7.77084 -33.9375,-1.5625 -18.21215,9.05363 -29.88875,29.18705 -29.20499,49.65117 -1.14255,11.26128 -0.0972,22.60054 1.67374,33.63008 -0.19084,6.59281 1.78885,14.30971 6.8125,18.53125 4.44935,1.1637 9.3329,-0.11937 13.90625,0.78125 -1.03364,-2.0192 -4.3356,-4.6367 -4.15625,-6.71875 2.50368,-0.76104 7.97391,-0.51196 8.16861,-2.96763 -1.06744,-1.94462 -3.65293,-5.78188 0.48764,-5.50112 4.34517,0.30987 6.31598,-0.47485 2.96875,-4.25 -1.14022,-1.79735 -2.91409,-7.21828 1.21875,-5.40625 4.12105,2.0646 6.35669,2.27989 5.0625,-2.9375 -0.23767,-2.30231 0.73313,-6.66973 3.875,-4.5625 3.18054,1.67453 6.04555,5.32186 6.90625,-0.21875 2.17028,-3.56519 4.89597,-9.57244 9.71875,-9.4375 2.66101,3.97149 -0.0183,9.5505 -0.90625,13.78125 3.05306,-0.50232 10.26416,-0.21426 7.65625,4.6875 -1.93989,4.08364 -5.24602,7.14955 -8.5625,10.1875 1.85273,1.95555 7.00743,3.63195 7.21875,6.3125 -4.14484,2.62405 -8.96122,4.03579 -13.125,6.6875 2.21063,3.31924 5.91348,5.88774 7.78125,9.1875 -4.15667,1.64889 -8.86836,1.25823 -13.3125,1.71875 1.65684,2.57388 7.53466,5.04612 6.78125,8.46875 -4.0749,1.942 -8.97775,0.89151 -13.25,0.3125 -0.35503,3.32144 1.06352,7.66271 1.53125,10.03125 -3.72306,-1.94719 -7.46732,-7.44829 -10.375,-1.53125 -1.831,1.13789 -5.10433,7.10821 -6.78125,3.1875 -2.21479,-3.04363 -3.40836,-8.48071 -6.63596,-9.7371 -4.22327,0.14815 -11.871,4.76179 -14.20779,-1.04415 -1.54454,-3.9472 -1.67551,-8.22077 -2.125,-12.40625 -5.23323,1.51971 -14.70155,4.35704 -16.5625,-3.125 -1.02453,-3.15562 -0.77813,-6.6742 -0.8125,-10.09375 -4.14889,0.93913 -9.61022,5.04274 -13.71875,2.78125 -0.8913,-5.9014 2.22522,-11.76722 2.65625,-17.71875 -3.23138,1.13189 -9.6733,0.28662 -7.875,-4.5 0.71193,-3.03679 6.4562,-6.07558 0.15625,-5.71875 -7.95037,-0.35739 -17.19947,-7.00381 -14.25,-15.875 2.2397,-4.55021 -4.98245,-1.54018 -7.46875,-3.1875 -5.81201,-1.46503 -1.98561,-8.81945 -1.5625,-12.625 0.7098,-3.04861 0.52524,-6.22716 -0.34375,-9.21875 -4.22826,0.7457 -9.41561,3.66034 -13.4375,1.59375 0.77903,-8.35604 7.51278,-15.68417 6.28125,-24.5625 -10.4959,3.40212 -23.30961,-2.75924 -25.0625,-14.09375 -0.75702,-3.94873 -0.18538,-7.98373 0.78125,-11.84375 -4.23624,-0.17757 -11.16849,2.78765 -14.15625,-1.25 -1.41896,-3.94279 1.37519,-10.10446 -1.96875,-12.53125 -2.36203,-0.79768 -9.84241,-2.12396 -3.83771,-2.87939 9.43722,-2.1841 19.29925,-4.22693 26.93146,-10.49561 -14.21494,-11.47114 -31.47987,-17.55848 -47.46875,-25.90625 -3.72253,-2.21416 0.73403,-7.08095 1.75,-9.71875 3.50588,-5.67153 7.78015,-10.92063 13.34375,-14.625 -12.85108,-2.67171 -23.69095,-10.95749 -36.28125,-14.28125 -2.84414,-4.27982 4.18504,-5.40724 6.25,-8.21875 15.04093,-12.32107 28.62882,-26.84914 39.09375,-43.125 4.63085,-14.39832 21.53032,-17.45686 32.65625,-25.03125 4.97765,-2.72905 1.74946,-9.3591 -2.5,-10.84375 -3.52968,-2.35699 -8.81547,-3.20101 -11.4375,-6.03125 6.64626,-4.72881 16.90617,-8.11702 18.8125,-17.0625 -0.40063,-7.07145 -9.66622,-7.41051 -15,-7.625 -5.41547,-8.3e-4 -11.12477,0.99324 -16.1875,-0.96875 -3.18307,-4.27073 1.54002,-9.86908 3.125,-13.9375 3.65713,-6.66673 6.8493,-13.37345 12.28125,-18.71875 3.17572,-2.66362 2.84475,-9.38586 -2.40625,-8.40625 -10.08896,2.15632 -17.004,10.85868 -26.53125,14.53125 -10.10584,5.49919 -22.82307,7.31 -33,1.03125 -7.74406,4.33242 -16.49923,-0.19756 -21.96875,-6.0625 -5.57952,-6.31225 -13.82851,-7.55342 -20.90625,-11.59375 -6.3145,-3.51114 -14.55413,-3.98756 -20.78125,-1.40625 -2.43303,-5.96341 -8.89503,-8.93446 -15.09375,-8.34375 z m -0.25,5.4375 c 3.51485,-0.19416 10.79526,1.28736 9.34375,6.09375 -0.67792,1.96834 -3.11107,4.35329 -4.28125,1.28125 -2.46109,-3.24081 -6.12216,-5.3565 -10,-6.40625 1.57633,-0.66268 3.18405,-0.82781 4.9375,-0.96875 z m 28.1875,8.4375 c 7.18711,-0.35641 7.82773,9.79642 14.09375,10.875 2.7823,0.61601 3.58368,-4.88001 5.90625,-1.59375 5.37038,3.48982 10.65778,7.11232 14.8125,12.09375 4.59626,0.17543 10.36336,-2.13661 14.375,0.0312 1.15718,1.09396 -4.13686,-0.13083 -5.4375,0.40625 -3.76227,-0.65927 -5.03399,4.60758 -1.03125,5 4.3104,1.19505 10.02809,2.44247 13.625,-1.03125 1.14285,-3.16696 -3.93727,-3.62051 -4.46875,-3.96875 2.12914,-3.45634 4.06789,4.00297 6.125,-0.15625 2.71028,0.61399 7.55847,2.33367 8.6875,3.625 -3.20888,-0.97562 -6.76041,3.25707 -2.8125,4.875 2.79579,1.28348 6.75393,2.07818 8.6875,-0.875 16.6603,13.4937 26.19428,36.38979 21.14452,57.51594 -5.10695,12.50101 -12.29686,24.15011 -20.98827,34.51531 -1.90901,-3.97385 -4.21079,-11.02089 -9.59375,-10.375 -3.72474,3.10421 1.19459,7.97086 3.03125,10.8125 4.54361,3.02901 1.40104,5.96166 -1.75,8.625 -6.97737,6.84512 -14.33964,13.6838 -23.125,18 -6.84877,5.76581 -0.74855,14.94174 -0.34375,22.03125 0.3684,4.09102 -4.48957,6.25128 -4.89661,10.40766 -0.87684,2.39656 -4.58286,2.41876 -5.54089,5.37359 -3.09473,4.48069 -5.09887,9.52213 -7.28125,14.5 5.41571,-4.25466 14.488,-8.78121 14.28125,-16.71875 0.3506,-2.273 5.0313,-3.59733 5.96875,-6.59375 1.24533,-3.70739 1.96919,2.84706 1.84375,4.15625 0.82326,6.33375 -4.96947,10.59088 -6.5625,15.9375 -4.9095,0.0451 -6.78881,6.44585 -9.28125,9.875 -4.24137,6.75306 -2.6864,8.80853 3.28125,3.15625 2.97651,-3.38388 8.97926,-7.58789 6.875,-12.625 4.47672,-1.44616 6.79559,-5.35116 9.125,-8.84375 2.21738,-0.47292 2.52781,4.06222 3.4375,5.53125 0.0272,2.1025 3.70704,7.13716 -0.1875,6 -5.87136,2.51528 -7.20618,10.45053 -10.09375,14.75 -5.4771,1.11819 -6.18201,8.71483 -8.87197,12.6669 -0.93445,2.45639 5.47112,-2.29395 7.52822,-3.8544 2.09466,-1.96878 5.17415,-6.5125 1.875,-8.625 4.40481,-3.40152 9.76464,-6.38631 12.3125,-11.53125 1.72763,8.48508 6.56621,15.69482 9.53125,23.625 8.13515,16.96664 21.8139,30.4938 31.57779,46.6209 23.60121,34.61985 46.55375,69.85468 71.17221,103.6291 8.15484,8.48687 18.62905,14.61155 28.24656,21.4226 9.09229,5.3953 20.40882,10.31618 28.84719,14.5774 -4.23737,5.84187 -1.61508,14.24062 1.875,19.875 6.17202,-1.40997 3.17269,-9.00143 3.71875,-13.375 0.37967,-1.66658 -1.60948,-5.18388 -0.78125,-5.5 5.74908,2.03771 11.71321,-0.82715 17.375,0.15625 9.66285,4.01589 12.21758,17.90005 23.0625,19.75 5.4846,-0.75099 2.73083,-7.8806 -0.65625,-9.65625 -2.35731,-2.07974 -5.8299,-2.39937 -6.0625,-6.03125 -0.72045,-2.9052 -4.57613,-5.16847 -5.40625,-6.8125 3.16737,-2.31173 -0.80591,-5.58752 -0.0937,-8.21875 5.93228,-3.81049 8.09239,-10.89203 11.09375,-16.8125 2.31948,-2.33435 1.37846,-5.97708 3.96875,-7.75 -0.0192,-3.25929 -1.8407,-5.34013 -0.1943,-9.02168 2.67985,-15.85602 5.91591,-34.50934 -4.3682,-48.29082 -14.0677,-8.02969 -30.87997,-0.62613 -41.62241,9.28936 -5.51093,5.23295 -12.01919,10.73604 -12.28384,18.86689 -0.90533,3.06876 -1.79334,6.77363 -3.71875,9.21875 -1.9075,-6.98229 -2.45206,-14.44909 -3.53125,-21.65625 -0.36814,-12.34984 -0.0815,-25.04792 2.8125,-37.0625 4.35097,-11.32952 13.67598,-19.89815 22.6875,-27.5625 3.46778,-2.8634 11.27641,-5.03024 12.5,1 -3.32324,4.05062 -2.26143,10.24641 -2.65625,14.34375 -6.51494,3.31712 -5.96417,12.49301 -7.5625,18.625 3.41247,-5.32879 10.77308,-10.19867 10.1875,-17.1875 -0.4209,-2.75194 3.56844,-5.52076 3.75,-8.84375 1.01907,-2.85554 -0.55439,-6.97762 3.625,-7.4375 1.60775,-0.4283 5.18864,-0.74542 5.8125,0.1875 -4.49218,6.54516 -6.27378,14.66172 -8.96875,22.09375 1.78918,3.87645 6.58616,1.37127 6.53125,-2.21875 0.27426,-1.85919 0.91743,-4.60733 -1.125,-5.65625 4.3849,-2.73394 7.66198,-8.48298 8.40625,-12.59375 3.80089,2.18537 6.0629,6.47683 3.67553,10.62927 -1.06425,3.87715 -2.99026,9.6246 1.91822,7.05823 1.98645,-2.95184 2.4729,-10.30235 7.34375,-11.65625 2.37456,0.80538 4.21612,4.04126 6.03125,4.4375 -4.21381,5.1713 -5.35583,11.89645 -7.875,17.875 -1.0885,2.79114 -1.53449,5.98718 2.3125,5.0625 4.43002,-1.03768 4.23151,-7.0598 3.71875,-10.15625 2.81573,-3.17722 5.91567,-6.51642 7.03125,-10.71875 12.03199,5.49341 22.83271,14.09213 29.28125,25.78125 6.43567,9.53637 12.08027,20.03152 16,30.71875 0.50954,2.03041 1.59872,3.43418 -0.78125,1.75 -5.01881,0.11448 -3.35924,7.14663 -3.125,10.375 -0.6743,4.51397 2.14333,4.53571 4.78125,2.28125 1.7297,-1.66058 2.35114,-4.16268 2.03125,-6.5 2.56536,4.91527 3.63153,10.67514 2.3125,15.90625 3.91261,10.32982 2.48922,22.01138 1.83932,32.86201 -1.05529,1.44177 -0.0448,10.08489 -2.27682,7.10674 -2.17392,-3.72451 -7.44407,-1.48388 -7.8125,2.4375 -1.53572,4.56184 -1.63519,13.54906 4.96875,13.40625 -3.55847,8.39408 -9.38083,15.53679 -13.53688,23.74991 -1.41245,3.01085 -3.17839,4.66459 -5.83812,5.59384 -0.83398,6.82223 -7.02594,11.64422 -11.3125,16.9375 -10.07856,10.31781 -21.79416,21.27964 -35.09375,26.0625 -23.29981,11.90528 -47.28104,28.75713 -74.55638,31.86043 -3.88344,0.22066 -8.23969,1.05748 -11.09987,-1.26668 -5.77251,2.83771 -13.16502,-0.37799 -19.71875,0.0937 -2.55311,-1.90584 -5.89981,1.20939 -9,-0.34375 -6.02741,-1.81182 -13.90559,2.40612 -18.90625,-2.25 -4.05216,-9.09455 -2.90714,-19.53695 -6.125,-28.90625 2.02433,-2.67212 -2.25793,-4.59805 -1.34375,-8.125 -1.91851,-16.94221 -2.82669,-34.27393 -7.4375,-50.75 -2.972,-14.20089 -5.18041,-29.48766 -15.28125,-40.65625 3.41036,35.75879 12.6675,70.80906 15.55607,106.61679 1.03417,4.0403 -0.0409,8.02666 -0.32107,11.13622 4.78925,3.32395 4.47693,9.50448 4.98375,14.80949 0.51972,4.24216 5.33878,5.45774 6.26083,9.60968 3.05293,4.85028 5.5002,10.46391 10.52042,13.26532 2.1568,1.79998 -0.7729,4.88272 2.40625,6.09375 0.48946,2.36055 1.34078,6.00624 -2.375,4.78125 -2.84283,-0.56607 -7.84005,-1.04362 -8.8125,-3.65625 0.48021,-3.78577 -4.55575,-5.03698 -5.53125,-1.90625 -4.35723,-1.95599 -7.55964,-6.18448 -12.625,-7.375 -3.9732,-1.85788 -12.07015,-3.41031 -12.90625,2.8125 0.76542,4.05804 1.0284,8.1404 -1.59375,11.65625 -1.54244,5.68692 -4.78267,11.00911 -6.03125,16.90625 -0.96449,3.28263 -0.35628,-5.33161 -3.78125,-3.8125 -5.97459,0.55002 -12.30849,-1.21769 -15,-7 -5.7087,-9.14054 -11.08224,-18.58282 -18.7188,-26.21865 -17.31301,3.07942 -33.3011,14.66441 -50.3125,15.71875 2.71677,-5.60012 0.54878,-11.93013 -0.0625,-17.53125 4.77962,-2.85261 4.08294,-11.08401 9.46875,-12.5625 4.09792,2.09445 5.1707,-3.63552 4.8125,-6.96875 -2.61467,-7.6607 -12.92764,-5.99507 -19.3125,-7.0625 -2.74196,-0.15363 -6.57363,-0.48102 -5.40625,-4.25 -1.1381,-3.39943 -2.16352,-8.78803 2.9375,-9.375 8.09322,-0.83994 14.64601,-5.89927 22.34375,-8.4375 6.77259,-3.20561 15.82297,-5.94247 17.0625,-14.5 1.98133,-4.90002 4.49197,-10.43351 6.46875,-14.8125 2.12123,-1.30311 2.14156,-4.31461 3.125,-6.4375 -0.22604,-2.80511 3.70439,-5.03093 3.78125,-8.40625 0.7118,-2.60091 -2.83428,-3.57927 -0.29898,-6.09852 6.03776,-15.24199 14.31216,-32.0142 9.26773,-48.71398 -5.31159,12.87015 -7.78617,26.69105 -13.06987,39.62383 -5.89418,15.64855 -11.95096,31.3833 -18.55513,46.65742 -8.5254,7.99398 -20.99612,2.29109 -29.05932,-3.5417 -10.31941,-7.30779 -22.3932,-12.32296 -30.5144,-22.39997 -9.83394,-10.15041 -19.7265,-21.05664 -24.39503,-34.80833 -1.33218,-2.70435 -2.08736,-4.75315 0.6875,-6.34375 1.5849,-2.58059 0.29136,-5.93467 -0.15625,-8.21875 -2.33842,-1.98372 -3.98715,1.11926 -4.21875,3 -1.00171,-3.37983 -1.96361,-8.59586 -1.3125,-11.125 3.64453,3.18899 6.04358,-2.72936 5.6875,-5.71875 0.39082,-2.84262 0.57121,-9.98128 -4.03125,-7.59375 -1.40768,1.87721 -1.48674,4.36433 -1.9375,6.59375 0.1663,-8.37257 1.1645,-17.81491 2.6875,-25.3125 0.95674,2.98173 -0.1825,4.85695 -1.03125,7.53125 -0.4313,3.43082 -1.70508,8.89747 3.125,4.9375 3.5811,-1.62698 1.86251,-5.85627 2.65625,-8.4375 1.74973,-3.1294 2.77131,-10.66529 -2.65625,-10.3125 -2.01651,3.4108 -0.64508,-7.14951 2.3125,-5.1875 5.37444,-0.42098 3.00905,-7.50342 5.0625,-10.59375 1.41732,-3.79541 -2.76952,-4.02318 -3,-4.125 8.27391,-25.83928 19.05409,-50.9247 29.03781,-76.10325 19.72954,-34.89625 31.95585,-73.35522 43.43094,-111.678 -3.42158,3.39374 -8.21775,6.93082 -13,4.25 -3.63547,-0.97249 -6.30064,-4.74604 -10.28125,-4.09375 -1.90465,2.36473 3.51177,5.02482 0.78125,5.625 -1.99038,0.38726 -4.56127,2.87484 -4.75,-0.3125 -1.53574,-3.43377 -6.66427,-1.99176 -6.15625,1.84375 4.41851,1.86976 -0.23221,2.439 -2.5625,3.28125 -11.03092,3.72906 -22.92162,2.97062 -34.0625,6.3125 -28.5252,5.47522 -57.86444,6.81996 -86.84375,6.125 -11.02962,-3.44241 -23.89312,-0.16399 -33.53125,-7.59375 -1.06428,4.81949 -6.81261,-0.25662 -9.53125,-0.84375 -2.69431,-2.05102 -5.54589,-2.05747 -8.125,-0.21875 -6.72763,0.71031 -8.89669,-8.33146 -8.625,-13.59375 -0.60577,-5.87746 5.27372,-10.27952 10.6875,-7.78125 23.20108,-2.03589 46.5535,0.36915 69.14994,5.23719 22.00171,2.58119 44.55564,0.44272 65.31524,-7.24878 27.82792,-8.00732 56.52735,-13.23949 84.12857,-21.76966 4.91602,-2.12393 -0.45427,-6.87774 -2.39487,-9.35804 -6.95502,-8.91305 -16.05336,-16.26537 -21.63638,-26.23571 -2.56551,10.82214 -4.838,21.69108 -9.4375,31.8125 -10.80589,-11.19661 -14.46417,-27.15365 -22.8125,-39.90625 -3.24456,-3.32468 -6.35703,1.75729 -5.71875,4.9375 -0.0234,14.70391 2.71828,30.38527 -5.0625,43.78125 -2.85067,5.66002 -8.7705,10.293 -15.375,9.3125 -4.26576,-4.57744 -7.72582,-10.04436 -10.96875,-15.46875 -2.37287,2.59491 -3.14379,7.97735 -5.84375,9.5625 -4.34197,-4.09535 -7.12792,-9.50188 -11,-14.03125 -4.23239,7.94926 -3.60104,17.31343 -7.4375,25.34375 -7.41219,-15.87803 -4.34886,-34.9181 -13.15625,-50.40625 -10.05518,15.74169 -13.49506,35.24478 -23.96875,50.375 -14.47152,-3.28618 -31.07953,2.91213 -44.15625,-5.4375 -6.53655,-5.21066 -5.01631,-14.61027 -9.84375,-21.03125 -1.25119,-6.07644 -3.74952,-3.79845 -6.03125,0.15625 -2.37302,3.13344 -4.65961,8.46149 -6.875,10.28125 -10.6254,-24.49561 -0.11788,-53.07978 17.60688,-71.34589 8.66058,-9.72832 18.17988,-21.52944 32.33062,-22.06036 19.19647,-2.30582 38.31235,2.7215 57.53125,1.84375 13.73353,-11.5226 31.95641,-15.11857 48.8155,-19.6735 2.15077,0.14992 9.38015,-3.55128 7.4345,-0.139 -6.06069,11.4583 3.17821,28.28989 16.84375,26.375 10.34517,-1.40273 21.74223,-10.30404 20.78125,-21.625 -2.10786,-8.94961 -13.37641,-8.50477 -19.78125,-12.96875 -1.97907,-0.88542 -5.69056,-3.27456 -1.59375,-3.625 2.57346,-0.60767 5.24275,-0.76815 7.875,-1.03125 z m 99.28125,10.9375 c -1.53343,8.84926 -7.06986,16.4743 -11.6875,23.96875 -3.4544,-3.09571 -10.41511,-7.16723 -8.1875,-12.625 3.93233,-4.55344 10.68091,-4.5902 14.8125,-8.90625 1.58463,-0.98832 3.19069,-2.10717 5.0625,-2.4375 z m -71.375,10.15625 c -3.86525,-0.73048 -7.06298,4.81743 -2.46875,6.15625 4.16071,1.26376 8.61666,0.5609 12.90625,1.25 -1.42183,-4.74038 -5.32238,-8.1038 -10.4375,-7.40625 z m -155.59375,10.96875 c -5.90224,0.1301 -15.7455,2.78211 -14.28125,10.5 1.45404,4.97987 8.25374,-1.55533 11.65625,-2.0625 4.0518,-1.25942 10.88502,-0.39761 12.40625,-5.25 -0.68243,-4.03039 -6.89798,-3.06593 -9.78125,-3.1875 z m 48.9375,5.75 c -8.32535,1.03176 -15.14949,6.83139 -20.25,13.21875 7.8583,-2.68049 16.99028,-4.03343 23.40625,-9.5625 1.34664,-2.21512 -1.00067,-4.13208 -3.15625,-3.65625 z m -72.875,1.875 c -7.26868,2.84807 -10.3943,11.17239 -13.21875,17.84375 5.27944,1.26447 9.11449,-2.59435 11.59375,-6.59375 2.03419,-2.51165 8.64159,-10.59895 1.625,-11.25 z m 249.9375,4.125 c 3.86773,0.63402 7.83074,0.83976 11.375,2.59375 2.69741,0.30004 8.00137,-0.93417 9.46875,1.46875 -4.21169,6.12322 -11.91826,10.28039 -18,13.875 -3.48378,-4.53967 -7.95959,-11.27016 -4.90625,-16.96875 0.55078,-0.55195 1.29801,-0.85427 2.0625,-0.96875 z M 231.3125,246.06691 c -5.35848,2.24055 -8.47124,7.82653 -11.8125,12.28125 4.52057,5.48098 9.25376,-1.73369 12.5,-4.9375 2.09851,-1.9904 4.31413,-7.6686 -0.6875,-7.34375 z m -64.75,6.1875 c -6.94127,2.44131 -7.50904,11.95071 -10.90625,17.03125 -12.63105,2.68235 -16.58231,22.91556 -5.5625,29.96875 13.66951,1.24297 22.81127,-18.36906 13.84375,-28.28125 -2.15787,-1.21747 -4.63054,-1.98889 -7.125,-1.8125 5.83821,-2.72266 13.91559,-7.32959 12.96875,-14.90625 -0.54249,-1.23766 -1.767,-2.21216 -3.21875,-2 z m 229.1875,7.71875 c -4.81358,1.45456 -0.43052,6.53169 2.125,7.96875 2.70053,1.55601 6.71891,7.26868 8.0625,1.875 1.1999,-5.49308 -5.535,-9.51746 -10.1875,-9.84375 z m 40.53125,1.1875 c 4.21429,0.83685 11.96776,1.04734 12.625,6.5625 -1.76213,5.16566 -8.67465,7.97656 -13.3125,8.71875 -0.74713,-5.03732 -0.48106,-10.5089 0.6875,-15.28125 z m -218.5625,2.03125 c -5.85208,2.44425 -6.66682,10.02648 -8.78125,15.21875 4.43431,-3.2857 13.80313,-6.95249 12,-13.9375 -0.57884,-1.10246 -2.04374,-1.62746 -3.21875,-1.28125 z m 194.6875,11.46875 c -4.51909,1.9822 0.24904,6.95565 2.15625,9.09375 1.9471,2.90583 5.19676,5.31395 6.71875,1.09375 1.52456,-4.70639 -4.45084,-10.28779 -8.875,-10.1875 z m -199.9375,6.0625 c -10.08144,1.77244 -19.88513,13.38928 -15.96875,23.75 3.17872,7.04073 13.63466,4.25309 17.625,-0.75 5.27666,-5.26484 8.54578,-15.34542 3.25,-21.53125 -1.32648,-1.16491 -3.16354,-1.63573 -4.90625,-1.46875 z m 168.9375,0.375 c -4.68151,2.10733 0.70795,6.86107 2.85606,8.71357 2.39831,2.41919 6.29242,6.66979 8.92519,2.41143 1.31589,-5.3652 -5.37442,-8.5264 -9.25,-10.65625 -0.80493,-0.3207 -1.65507,-0.6022 -2.53125,-0.46875 z m -67.53125,3.90625 c 3.70489,6.89511 6.65321,14.17388 12.03125,19.9375 3.60319,4.52015 2.45226,12.01454 -3.65625,13.46875 -3.535,0.88825 -8.61582,2.53178 -11.96875,0.65625 -1.66281,-10.93456 6.42594,-21.39504 3.39056,-32.52819 0.0596,-0.47422 -0.46333,-3.05328 0.20319,-1.53431 z m -77.4375,15.78125 c 3.44327,10.85981 6.07358,22.16796 6.9375,33.65625 -6.81299,1.28877 -14.84882,0.37398 -21.03125,-1.15625 1.63453,-12.12649 9.69106,-22.12898 13.78125,-33.4375 z m -79.71875,10.8125 c 1.9071,4.81928 5.39511,11.80154 1.40625,16.40625 -2.99499,1.69509 -7.8562,1.28951 -10.46875,-0.4375 0.36501,-6.0614 5.67955,-11.37496 9.0625,-15.96875 z m 105.3125,9.84375 c 3.33591,1.26957 6.61991,7.82336 2.90625,10.34375 -1.58543,0.068 -4.73744,1.51378 -5.53125,0.71875 0.79928,-3.5396 -0.0195,-8.69218 2.625,-11.0625 z M 275,325.12941 c 1.71829,-0.27525 7.08682,2.53341 4.21875,3.9375 -3.44292,2.13389 -4.83056,-1.54251 -4.21875,-3.9375 z m 54.71875,1.34375 c -4.38772,0.53711 0.40065,6.81738 3.34375,6.90625 4.21963,0.0616 2.43859,-5.2605 -0.5625,-6 -0.80041,-0.56493 -1.77127,-1.10754 -2.78125,-0.90625 z m -7.0625,8.59375 c -3.39452,4.42059 8.707,7.67345 6.59375,1.65625 -1.47348,-1.5199 -4.79309,-3.07384 -6.59375,-1.65625 z m 13.875,1.0625 c -2.4425,3.78608 4.17425,4.9054 4.34375,8.34375 2.08963,3.06277 6.49187,0.26307 3.9375,-2.78125 -1.09609,-3.10297 -4.09613,-6.18092 -7.71875,-6.15625 z m -185.65625,2.5625 c -4.33925,2.94216 -1.547,9.74977 -1.59362,14.08589 -0.37431,4.78145 5.20399,-0.88965 5.78112,-3.49214 0.85467,-3.29972 0.63721,-10.98312 -4.1875,-10.59375 z m 164.8125,2 c -4.45805,2.79291 4.31492,8.34291 4.0625,2.4375 -0.69006,-1.5513 -2.26752,-3.3814 -4.0625,-2.4375 z m -150.96875,0.625 c -4.45886,2.80528 -1.09529,9.62097 -1.24132,13.7957 -0.21166,4.83506 4.33399,-1.91368 4.99132,-4.2332 0.91931,-3.06791 0.74232,-9.97796 -3.75,-9.5625 z m 15.15625,3.8125 c -1.88869,4.6501 -3.22892,11.31842 -0.1875,15.78125 5.08443,1.43429 3.72842,-6.11816 4.09375,-9.21875 0.001,-2.45489 0.41884,-9.21741 -3.90625,-6.5625 z M 343,355.81691 c -1.80165,20.00655 -12.99588,37.58005 -18.1875,56.71875 -5.2202,10.26477 -18.86854,9.22936 -28.68715,9.12994 -10.00467,-0.64666 -20.21514,-0.63054 -29.9691,1.24506 -22.35798,-0.9429 -44.46517,7.40222 -66.65625,4.40625 -12.9875,-17.82012 -12.71545,-42.73896 -28.84375,-58.8125 12.72044,4.33348 26.76738,2.48052 40.125,3.09375 20.74698,-0.43842 41.76915,-0.78593 62.19868,-4.34748 22.68548,-7.19112 47.70638,-2.87165 70.05132,-11.68377 z m 41.15625,3.46875 c 5.25305,3.04934 13.7011,4.13183 16,10.5 -0.0182,4.36234 -6.49216,10.01483 -9.71875,4.9375 -3.55112,-4.61047 -5.25519,-10.44814 -7.125,-15.84375 z m -15.875,18 c -1.53274,-0.35758 1.85052,-1.78219 0,0 z m 4.15625,13.65625 c -2.19676,-0.14303 2.60041,-2.85396 0,0 z m 24.3125,1.9375 c 10.68001,3.70768 20.14286,10.83911 30.90625,14.625 2.22255,0.75037 7.67039,4.52149 3.34375,6.46875 -5.82746,2.57447 -12.41129,2.33081 -18.5625,3.40625 -8.78456,-0.90517 -10.15392,-12.12564 -13.5,-18.59375 -0.69685,-1.87224 -2.27031,-4.0868 -2.1875,-5.90625 z m -217.375,7.375 c 6.44269,10.9145 7.26073,25.97378 18.5625,33.5 5.45041,2.63697 12.18979,-0.86477 18.14678,-0.50692 33.69074,-3.35351 67.64639,-5.12431 101.35322,-6.96183 -6.91023,3.91402 -15.81475,4.94622 -23.15625,2.03125 -33.35511,3.22447 -66.36151,9.5139 -99.9375,10.625 -5.32584,15.98416 -5.35095,34.92075 -17.28125,47.9375 -1.49753,2.0581 -4.09548,3.33188 -4.03125,-0.1875 -1.63528,-8.05403 0.92818,-16.76885 -2.4375,-24.4375 -8.5438,3.48511 -17.91822,8.07815 -27.3125,7.03125 -0.98551,-2.45436 2.19124,-5.92999 4.375,-7.0625 5.24231,-2.82867 13.81154,-8.84533 9.25,-15.6875 -7.44123,-8.45847 -19.3422,-11.6583 -27.03125,-19.65625 -1.52228,-3.17665 4.3953,-3.56192 6.3125,-4.1875 9.10289,-1.13312 19.08516,-1.60457 27.40625,2.53125 7.32602,2.32665 11.98631,-5.84619 13.0625,-11.90625 1.18824,-4.11983 1.64422,-9.6981 2.71875,-13.0625 z m 197.09375,7.15625 c -1.29212,-0.28384 1.5593,-1.54318 0,0 z m -2.25,16.59375 c -7.10975,21.42415 -7.88193,44.51061 -12.96875,66.34375 1.5305,7.35011 -1.3567,14.86239 -0.0937,22.28125 7.07143,4.07139 4.76599,-5.64143 6.11259,-9.98546 3.22584,-26.25615 7.37416,-52.52132 10.65253,-78.68707 -0.33944,-5.9735 -1.0694,-3.43376 -3.70267,0.0475 z m -188.1875,-2.40625 c -3.62156,2.22748 -2.1149,7.74311 -2.9375,11.3125 2.14577,1.19455 1.85537,1.72698 0.90625,3.40625 -0.55877,3.54378 -0.83271,8.86921 2.875,10.59375 4.08077,-1.95107 1.8657,-8.00902 1.0625,-11.4375 -0.40706,-1.62241 2.58666,-3.60645 1.84375,-6.15625 -0.14733,-2.62118 0.14111,-8.27686 -3.75,-7.71875 z m 177.125,11.5625 c -6.87304,10.08922 -7.07733,23.35736 -9.80709,35.04578 -1.03487,7.96584 -3.76815,15.85615 -4.81791,23.61047 0.93677,3.84655 -1.37702,10.27401 -4.0625,10.8125 0.69987,-5.29307 -7.40749,-5.06277 -9.66194,-1.53257 -4.63196,2.65289 3.29244,3.17255 5.84944,3.56382 0.67218,0.3529 -4.96763,1.45518 -6.4375,1.625 -10.9867,1.40594 -22.6476,0.59016 -32.71334,5.51016 -4.15808,1.00947 -11.36033,-0.11839 -12.84916,5.05234 1.67384,5.48725 9.26669,5.56194 13.58273,7.88884 6.05125,1.90948 13.76589,3.95368 14.79227,11.29866 0.84773,4.09593 0.8129,9.39087 -0.28125,12.875 -2.73191,-1.40375 -7.09356,-1.27962 -9.03125,-0.5625 -2.12147,-2.8651 -6.11572,-3.61763 -9.21875,-2.625 -3.3329,-0.39255 -6.22841,-0.40355 -2.09375,-3.09375 2.97219,-4.33361 4.88874,-10.98162 2.40625,-15.8125 -4.52599,-2.3066 -4.91544,5.24201 -5.53125,8.1875 -1.46717,2.67502 0.60845,9.28824 -2.59375,9.75 -3.31038,-1.24529 -6.66609,3.18663 -2.8125,4.8125 5.94687,2.26531 12.7342,3.16322 19,2.65625 1.66811,-2.26483 3.40747,2.50001 5.96875,1.125 4.03373,-1.24792 3.39152,1.25866 2.4375,4.28125 -1.30718,7.50381 -4.66572,15.4214 -2.5,23 -2.31972,0.2406 -5.86533,-0.63915 -7.03125,2 -4.29437,-4.84056 -12.09259,-7.99451 -18.25,-5.28125 -2.59934,2.85718 2.29031,4.234 3.03125,5.25 -0.42507,4.57409 -3.64456,11.16263 0.84375,14.53125 4.8703,-0.40234 3.41953,-7.17203 4.0625,-10.6875 -1.50588,-5.67399 4.50625,-2.86646 7.95828,-2.6081 3.16553,0.49125 5.96536,2.72878 9.62747,2.5156 3.21322,1.2465 9.97645,-2.76927 4.883,-5.18875 -2.22504,-0.56006 2.44994,-3.70525 2.53125,-5.46875 3.8661,-6.55205 6.31186,-14.70794 10.25,-20.6875 2.64606,2.87955 7.55621,1.26032 11.0625,1.78125 3.59503,-3.62011 -1.75052,-6.99021 -5.28125,-5.875 -1.40491,-0.2499 -5.62691,1.86036 -2.8125,-0.90625 3.22834,-4.65478 8.25129,-8.47427 12.21875,-11.8125 2.72248,6.54942 2.52639,15.50542 9.5,19.40625 8.71777,9.10127 4.8207,23.44421 11.8125,33.40625 7.64003,-8.26443 6.89793,-20.59514 8.4375,-31.03125 0.92855,-7.75683 0.18208,-16.11989 0.78125,-23.59375 2.20483,-1.72474 6.96227,-0.79947 10.09375,-2 7.54339,-1.85161 15.90451,-3.16993 23.09375,0.1875 4.01511,-0.88783 11.12491,0.7681 12.75,-4.09375 -1.33435,-5.00367 -8.26695,-4.97004 -12.21808,-6.91977 -12.60376,-2.95078 -23.66535,-11.67674 -36.90692,-11.95523 -4.35797,2.85309 1.9056,5.60155 4.62383,6.28862 5.54293,3.01581 13.20333,2.44745 17.81367,6.71138 -6.74726,6.38799 -17.50342,4.71701 -25.25,9.25 3.80885,0.15228 -0.44295,3.51086 0.40528,5.83578 -2.06044,7.87678 0.84758,16.615 -2.34278,24.07047 -2.97082,0.7594 -5.42791,-3.91143 -7.27801,-5.93203 -5.45369,-7.32359 -8.78303,-15.90171 -10.34699,-24.78672 -1.63746,-5.01053 -7.87284,-3.08597 -10.09375,0.40625 -4.43038,4.08432 -7.18744,10.72353 -12.71875,13.34375 1.97076,-8.32021 -1.70619,-17.58826 -9.46875,-21.8125 -3.07649,-2.25864 -7.57503,-3.76331 -9.90625,-5.9375 10.93808,-7.8045 25.71103,-3.75941 37.90625,-8.40625 5.58418,-1.67824 10.60976,-6.18424 9.49679,-12.49589 2.08497,-23.86157 8.16491,-47.21737 11.94071,-70.87911 -1.61458,1.96875 -3.22917,3.9375 -4.84375,5.90625 z m 51.1875,-4.71875 c 4.47783,0.37588 8.35344,5.43414 5.90625,9.78125 -1.36521,-3.61351 -6.87667,-6.17778 -6.59375,-9.78125 0.23234,0.0316 0.45902,-0.0798 0.6875,0 z m -236.9375,5.875 c -4.66336,2.94497 -1.56418,9.91397 -1.16258,14.27211 0.12386,5.30883 3.2992,-1.40697 4.56883,-3.58461 1.63666,-3.27971 1.88384,-11.14748 -3.40625,-10.6875 z M 406.25,443.41066 c -3.62713,3.19635 1.86068,8.02043 3.1875,11.15625 2.64846,5.77629 4.67002,5.92296 4.875,-0.375 -0.33823,-4.47479 -2.86657,-9.67579 -7.3125,-11.15625 z m 24.78125,3.4375 c 3.25272,-0.67804 4.79984,2.91078 3.09375,5.46875 -2.65448,-0.72979 -7.08632,-1.16148 -8.3125,-3.5625 1.33228,-1.36815 3.37963,-1.76907 5.21875,-1.90625 z m -12.3125,12.84375 c -4.28845,1.21149 -0.37402,6.84844 1.5625,8.875 4.46823,6.9177 5.6301,5.54708 4.125,-2 -0.52025,-2.82671 -2.31175,-6.899 -5.6875,-6.875 z m 28.625,12.28125 c 6.20705,-0.52167 11.85006,6.34239 7.6875,11.875 -1.412,4.43204 -4.24569,-0.43761 -5.53125,-2.25 -1.53993,-2.81565 -4.82871,-6.44223 -5.4375,-8.84375 1.03158,-0.52246 2.14215,-0.7723 3.28125,-0.78125 z m -19.53125,1.25 c -3.57602,3.44642 2.41088,8.01465 3.86776,11.27869 1.73857,4.70981 7.53516,-0.34797 4.91349,-3.65369 -1.88987,-2.98859 -4.65593,-8.37253 -8.78125,-7.625 z m -124.46875,6.625 c -3.77316,5.97555 -4.08832,14.48991 -3.625,21 -3.36126,-0.79093 -7.0594,3.4502 -3.25,5.625 5.0526,0.60688 11.49879,1.77086 16.21875,-0.78125 2.51227,-3.77149 -4.10503,-4.59551 -6.78125,-4.6875 -6.03968,0.83736 -2.93338,-2.07965 -1.75068,-6.08483 0.78732,-4.77638 4.20955,-10.35986 2.00068,-14.94642 -0.30313,-0.84293 -2.42551,-0.83546 -2.8125,-0.125 z m 114.9375,3.6875 c -5.50413,0.99011 -6.58801,7.59248 -5.9375,12.21875 3.43617,-2.56806 11.45847,-5.5521 9.1875,-11.09375 -0.79124,-0.91861 -2.0479,-1.30019 -3.25,-1.125 z m 180.78125,1.8125 c -5.29197,3.97253 -3.7732,12.26838 -4.98579,18.07305 -0.91635,5.47001 3.88134,-3.80472 5.51704,-5.82305 1.87133,-3.37198 4.9111,-9.11758 1.1875,-12.15625 2.544,3.76961 -4.62805,5.22283 -0.15625,-0.0625 -0.48263,-0.17779 -1.07253,-0.17612 -1.5625,-0.0312 z m -156.96875,8.25 c -4.22573,2.50468 0.92281,7.47771 2.90625,9.8125 4.36237,6.0028 6.10363,6.12499 4.28125,-1.53125 -0.73607,-3.36659 -3.00167,-8.67283 -7.1875,-8.28125 z m -37.96875,1.0625 c -4.46371,2.02762 -4.5241,8.05684 -6,12.0625 4.12444,-1.64872 11.8212,-5.91268 8.5625,-11.40625 -0.70221,-0.67638 -1.6317,-0.85229 -2.5625,-0.65625 z m 204.78125,0.90625 c -1.29323,-0.0765 1.27734,-1.75145 0,0 z m -141.71875,1 c 1.64433,1.96889 -0.52812,6.39725 -1.71875,8.09375 -2.10002,-2.11663 -1.87541,-7.55034 1.71875,-8.09375 z m -29.65625,1.5 c -5.30408,1.66182 -6.69477,8.30329 -11.34375,10.9375 -1.87274,2.18496 -2.13495,5.17863 -2.96875,7.84375 3.39913,-1.66982 11.90886,-3.5131 9.4375,-8.96875 -3.30873,-1.77241 2.74286,-0.59802 4.0625,-2.125 2.87839,-1.2806 5.85173,-7.473 0.8125,-7.6875 z m -118.3125,2.59375 c -3.99732,-0.92135 -4.94829,4.73713 -0.8125,4.84375 3.91899,0.86151 9.51643,1.79024 12.65625,-1.0625 0.9029,-5.26976 -8.83033,-3.18924 -11.84375,-3.78125 z m 287.375,0.40625 c -2.46074,1.50017 -3.86281,6.98388 -1.40625,8.65625 5.65972,3.5094 6.85436,-9.7294 1.40625,-8.65625 z m -305.78125,4.46875 c -4.74683,0.88403 0.90113,-6.05693 0,0 z m 153.65625,6.1875 c -4.46446,2.83509 1.63886,8.07295 3.5625,10.75 2.78212,5.58448 3.50498,0.88786 3.6875,-2.59375 -0.24135,-3.6219 -3.18582,-8.45502 -7.25,-8.15625 z m -114.0625,1.125 c -3.76077,-0.51043 -4.3514,4.73552 -0.4375,4.78125 3.48691,1.29239 8.53087,0.54883 10.875,-0.5625 2.18627,3.05209 8.56673,4.8387 10.875,1.28125 -0.53931,-4.02813 -6.3037,-4.943 -9.75,-4.6875 -1.50221,2.42298 -2.40665,-1.14698 -4.78125,-0.625 -2.2523,-0.19946 -4.52122,-0.284 -6.78125,-0.1875 z m 27.125,3.25 c -4.2344,0.21592 -3.17039,5.66602 0.0312,6.75 2.6378,3.50564 9.51086,1.91111 9.03125,-2.84375 -1.36168,-3.35231 -5.89395,-4.00247 -9.06245,-3.90625 z m 109,1.375 c 1.10065,2.12366 -1.23782,3.75381 -1.40625,1.25 0.18135,-0.6062 0.7825,-1.12955 1.40625,-1.25 z m 101.40625,0.40625 c 1.17277,3.02366 -1.01487,7.85332 -3.96875,4.25 0.10492,-1.95978 2.11224,-3.98612 3.96875,-4.25 z m -229.84375,3.15625 c -3.70571,0.057 -2.6426,4.858 0.53125,5 3.71051,1.2865 9.05372,2.40541 11.96875,-0.90625 -1.14547,-4.90085 -8.75922,-3.58867 -12.5,-4.09375 z m 105.9375,3 c -6.62158,1.74258 -8.88235,9.17737 -11.03125,14.84375 4.53268,-4.04005 12.22393,-6.28583 14.03125,-12.53125 0.0538,-1.48357 -1.6242,-2.6198 -3,-2.3125 z m 109.84375,3.59375 c 2.64079,2.1437 -5.01889,2.37216 -1.28125,0.4375 0.41373,-0.23644 0.79247,-0.43026 1.28125,-0.4375 z m -95.40625,4.53125 c -4.53537,1.75647 -0.23543,7.03131 1.8125,9.15625 2.54876,3.65013 5.53256,6.29388 5.90625,0.3125 0.52535,-4.26162 -3.29633,-9.57425 -7.71875,-9.46875 z m 17.34375,1.75 c 4.22205,-1.15021 5.76487,5.39827 2.5,6.15625 -1.26815,-0.99 -7.46586,-5.93184 -2.5,-6.15625 z m 70.03125,4.125 c 2.28514,0.95396 2.81041,5.02453 -0.71875,3.34375 -1.96455,-0.23166 -0.57769,-3.02869 0.71875,-3.34375 z M 437.5,539.97316 c -4.16761,2.14528 -4.31042,7.79225 -5.875,11.65625 4.17208,-0.83397 14.00343,-8.60856 6.875,-11.8125 -0.33944,0.0216 -0.70633,-0.0942 -1,0.15625 z m 165.4375,3.09375 c 1.25715,2.77725 -0.86026,7.45023 -3.5625,4.34375 0.21559,-1.82964 1.88681,-3.83324 3.5625,-4.34375 z m -106.78125,3.9375 c 0.5699,2.35272 -3.37752,0.47806 -0.15625,-0.0625 l 0.15625,-0.0312 z m -15.40625,2.625 c -3.73242,3.18053 1.79453,7.82382 3.4375,10.71875 2.80972,3.04703 8.78185,-0.80347 5.6875,-4.53125 -2.11286,-2.65086 -5.29191,-7.08095 -9.125,-6.1875 z m -186.6875,4.625 c -4.36096,3.18188 -2.73813,10.109 -3.8125,14.8125 -2.10908,6.86558 2.51785,2.84484 5.03125,-0.0625 2.40865,-4.09477 4.11748,-10.85731 0.5,-14.59375 -0.55454,-0.13511 -1.17033,-0.58553 -1.71875,-0.15625 z m 371.25,0.65625 c -2.75265,1.24755 -2.058,5.85491 -2.78125,7.15625 -4.97541,-4.75255 -12.80362,-0.42713 -14.5945,5.40556 0.43175,1.84097 5.84364,1.40661 8.56325,1.71944 2.28275,0.004 4.93245,-0.2831 6.5,-2.09375 0.30167,4.81894 0.43647,11.43903 4.34375,4.03125 3.02955,-4.56137 4.83994,-12.2424 0.15625,-16.28125 -0.69455,-0.13494 -1.55361,-0.34809 -2.1875,0.0625 z m -26.71875,4.75 c -4.05128,-0.45886 -4.782,4.92475 -1.03125,5.9375 3.49701,2.1402 9.73323,2.02382 12.15625,-1.6875 -0.15672,-4.86339 -7.82903,-3.99142 -11.125,-4.25 z m -40.84375,1.125 c 3.22251,-0.53806 3.4168,6.44849 0,4 -1.7277,-0.21553 -6.45476,-2.32305 -2.65625,-3.53125 0.82526,-0.36323 1.75735,-0.51978 2.65625,-0.46875 z m -98.875,10.5625 c -3.86107,1.55428 -0.27701,8.42631 2.65625,8.28125 4.50206,-0.12489 3.56036,-6.13816 0.1875,-7.5625 -0.81767,-0.54478 -1.84762,-1.04627 -2.84375,-0.71875 z m 135.28125,1.875 c -4.53093,0.3445 -2.43575,5.75475 0.8125,6.46875 3.12351,2.76652 10.85905,3.46185 11.9375,-1.625 -2.13904,-4.35601 -8.48281,-4.5693 -12.75,-4.84375 z m 33.1875,1.4375 c -2.35003,0.38075 -2.79976,3.71451 -5.5625,1.875 -3.69003,-0.53086 -11.86993,-1.46607 -11.125,4.3125 2.27457,4.27823 8.08901,4.48025 12.28125,3.875 0.28258,3.44025 1.82171,6.56601 2.9375,9.8125 1.62601,-5.93179 6.99434,-12.73893 4,-18.9375 -0.60043,-0.73169 -1.58952,-1.11075 -2.53125,-0.9375 z m -72.59375,0.4375 c 2.60262,-0.89604 1.56107,3.92458 -0.59375,2.03125 -2.66033,-0.1732 -3.07376,-1.52465 -0.3125,-1.90625 0.30172,-0.0395 0.60056,-0.13539 0.90625,-0.125 z m -70.6875,0.96875 c 2.81175,-0.20335 4.6507,5.34826 0.59375,3.125 -1.5332,-0.0189 -5.04131,-1.80026 -2.0625,-2.8125 0.46021,-0.1878 0.97261,-0.28979 1.46875,-0.3125 z m -187.8125,8.1875 c -3.42546,-0.54582 -6.3685,4.11231 -2.5,5.6875 5.55153,1.76836 11.53744,1.0488 17.28125,1.4375 -3.62462,-4.59168 -8.71406,-7.93233 -14.78125,-7.125 z m -28.53125,0.0312 c 4.34104,0.2434 -0.0521,2.42498 0,0 z m 275.90625,2.84375 c 2.65377,-0.60034 6.18958,1.92303 2.625,4 -2.09131,3.6466 -5.93542,-0.32589 -5.46875,-3.09375 0.68725,-0.69566 1.87592,-0.90667 2.84375,-0.90625 z m -39.46875,1.4375 c 2.30722,-0.65679 6.45594,4.21845 2.1875,2.96875 -1.5208,0.0827 -7.302,-1.41839 -3.5,-2.75 0.44379,-0.0836 0.85245,-0.24548 1.3125,-0.21875 z m -25.40625,0.2188 c -5.30856,2.62841 -7.6152,8.8681 -10.21875,13.875 1.14103,4.24397 5.50681,2.00662 6.8125,-0.84375 2.17159,-3.6901 7.40517,-7.60638 5.71875,-12.34375 -0.67296,-0.38395 -1.49724,-1.11169 -2.3125,-0.6875 z m 47.6875,7.53125 c 1.58838,-0.0223 6.85987,0.8582 2.96875,1.3125 -0.84362,0.86798 -3.43658,-1.22314 -2.96875,-1.3125 z m -24.09375,1.84375 c -5.71492,3.11488 -9.13872,10.55567 -8.6875,17.03125 0.56858,4.08439 6.50466,0.46806 6.71875,-2.75 0.57877,-4.80488 6.73695,-9.09007 3.9375,-13.96875 -0.66125,-0.0423 -1.29287,-0.79281 -1.96875,-0.3125 z M 671.5,604.19191 c -0.59519,3.60102 -0.29365,-1.55658 0,0 z M 291,604.03566 c -4.86959,2.79091 -4.40445,9.7941 -4.75,14.71875 4.54988,3.60686 5.47078,-2.2199 6.875,-5.59375 0.95529,-2.68906 2.88785,-9.4982 -2.125,-9.125 z m 111.9375,1.96875 c -3.89267,4.76072 -4.11521,11.98387 -6.0989,17.75586 -1.54912,3.15683 -1.23531,7.298 2.88015,5.61914 4.56735,-3.78395 3.59977,-10.86386 5.53125,-16.0625 0.26734,-2.28872 2.35223,-8.85645 -2.3125,-7.3125 z m 103.15625,0.6875 c -5.34757,1.85174 -6.58525,9.32714 -8.34375,12.875 -4.33705,-2.67327 -5.57356,4.60244 -6.28125,7.625 -2.27863,3.92825 0.78833,4.97722 3.84375,3.59375 4.27158,-2.35919 1.99631,-8.56774 6.5625,-10.75 2.77894,-3.48128 7.88592,-7.18934 6.9375,-12.21875 -0.69041,-0.77095 -1.62058,-1.44905 -2.71875,-1.125 z m -76.21875,1.59375 c -4.34887,4.44211 -2.67981,12.14226 -2.375,17.78125 1.55253,3.46766 0.59714,6.46838 0.1875,10 -0.17347,4.89573 0.29944,9.7798 0.65625,14.65625 6.11326,-4.53708 8.2193,-14.18539 3.9375,-20.40625 -2.13249,-1.94768 1.17793,-6.57256 0.93205,-9.83231 0.10037,-3.84939 2.53743,-10.29651 -1.9008,-12.48019 -0.48827,0.0643 -1.08768,-0.22489 -1.4375,0.28125 z m 138.5,0.1875 c -4.64064,2.29452 1.48694,9.63691 5.21875,7.3125 5.1967,-2.69796 -1.94179,-8.05696 -5.21875,-7.3125 z m -37.65625,10.59375 c -5.45532,2.20486 -5.31726,9.46173 -6.6875,14.25 3.79586,-3.02438 12.427,-7.15975 9.5625,-13.28125 -0.62469,-0.89441 -1.84122,-1.20662 -2.875,-0.96875 z m 80.09375,5.03125 c -5.16109,1.48541 -0.31405,6.88557 2.25,8.5 2.31641,4.22166 11.56634,0.64051 7.46875,-3.90625 -2.62049,-2.41609 -6.15112,-4.51642 -9.71875,-4.59375 z m -114.25,1.5625 c -0.12241,-0.0373 0.16555,-0.19514 0,0 z m 65.28125,4.53125 c -4.85848,2.74065 -2.50157,10.14138 -0.71875,14.375 0.79251,2.94728 4.81401,7.19205 7.21875,3.34375 -0.0185,-5.5586 -0.60082,-11.88739 -3.71875,-16.71875 -0.64745,-0.80485 -1.75869,-1.24454 -2.78125,-1 z m -316.28125,3.75 c 8.93627,-0.53015 14.27109,9.1872 23.25,8.71875 8.9864,1.08419 21.02475,-3.41867 27.1875,5.4375 9.52903,9.69822 20.54525,18.51653 32.15625,25.6875 3.82253,2.41687 7.96309,4.10958 12.125,5.875 -12.22577,5.45782 -26.79399,9.78261 -34.75,21.25 -3.0186,4.73312 2.29471,9.25839 6.90625,9.25 8.16009,0.2794 15.6109,4.02954 23.65625,5.21875 2.72314,0.49624 4.94769,1.19127 2.09375,3.4375 -4.71125,5.96995 -7.53559,14.05402 -10.21875,20.5 -2.88019,-5.83008 -2.24714,-16.00563 -9.96875,-17.875 -4.66392,0.02 -5.99384,6.61936 -9.96875,8.71875 -5.27876,4.50531 -11.93541,8.80256 -18.03125,10.6875 0.27861,-6.49631 -6.40167,-9.93122 -12.15625,-9.25 -4.40824,0.10417 -1.37203,-6.43501 -1.67385,-9.11534 0.52969,-8.21823 5.31351,-17.39673 1.23635,-25.25966 -5.16525,-4.98963 -12.01899,1.14597 -16.875,3.28125 -3.89081,1.33275 -9.83641,4.60725 -13.40625,1.875 0.0755,-7.01973 7.75196,-10.9831 10.25,-17.25 4.0366,-6.23154 5.93018,-15.91476 -0.53125,-21.25 -5.90149,-7.73239 -7.53022,-17.76595 -12.90625,-25.625 -0.93561,-1.86346 -1.07323,-4.36225 1.625,-4.3125 z m 184.4375,1.75 c -2.08536,0.38559 0.24007,-3.0296 0,0 z m 93.40625,-0.5625 c -5.65399,1.87695 -4.01747,9.54898 -3.125,13.90625 3.30145,-2.97526 9.70061,-8.12944 6.03125,-13.03125 -0.74564,-0.72184 -1.86526,-1.0411 -2.90625,-0.875 z m -128.625,1.96875 c -5.34858,3.65877 -4.89894,11.78856 -7.30397,17.28717 5.24376,-1.79041 12.31574,-9.24968 9.99147,-16.22467 -0.55499,-0.89907 -1.64522,-1.41662 -2.6875,-1.0625 z m 35.65625,16.21875 c -4.03268,2.86666 -1.1976,9.27345 -1.5159,13.43153 0.47381,4.27343 0.34792,11.24614 4.6409,4.94347 3.23775,-5.2029 2.27585,-12.79192 -0.84375,-17.78125 -0.51948,-0.49967 -1.59572,-0.98613 -2.28125,-0.59375 z m -45.75,12.25 c -6.65142,4.14054 -9.89927,12.67638 -11.39685,20.05714 1.52594,0.78795 6.53085,-5.20669 8.70935,-8.08839 1.71713,-3.39713 7.98767,-8.12095 4.25,-12.03125 -0.50551,0.11661 -1.0631,-0.11362 -1.5625,0.0625 z m 52,21.5625 c -4.5638,2.14598 -0.32559,8.04503 1.03125,11.0625 1.2011,3.73192 6.28841,-1.1619 5.59375,-4.09375 -0.4803,-3.06736 -3.09948,-7.31148 -6.625,-6.96875 z m -95.59375,3.125 c -3.03765,1.59209 1.74918,-2.41803 0,0 z m -66.96875,45.3125 -0.0312,0 z m 66.46875,24.6875 c 3.56002,-0.30307 2.67439,4.04409 1.28125,5.90625 -0.12792,-1.72104 -2.00743,-5.00053 -1.28125,-5.90625 z"
-           id="path3056"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           d="m 309.93053,195.83415 c 0,5.43538 -3.60073,3.56418 -11.37309,5.5731 -5.45041,1.40878 -11.30165,3.06272 -10.10385,-5.51128 0.94257,-6.74707 4.74427,-11.31411 12.30218,-9.14847 3.37899,0.96821 9.17476,3.65127 9.17476,9.08665 z"
-           id="path3869"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="sssss" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3914"
-           d="m 344.39006,212.50892 c -2.16128,7.95384 -15.14436,15.17413 -18.95257,14.86366 -7.96005,-0.64895 -13.33366,-6.93732 -13.33366,-15.49501 0,-8.55769 7.9007,-14.63784 11.69217,-13.72724 9.46698,2.27369 22.23314,8.32653 20.59406,14.35859 z"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:nodetypes="sssss" />
-        <path
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           d="m 332.23215,214.78176 c 0,4.09454 -3.43782,7.41379 -7.67856,7.41379 -4.24077,0 -7.67859,-3.31925 -7.67859,-7.41379 0,-4.09454 3.43782,-7.41379 7.67859,-7.41379 4.24074,0 7.67856,3.31925 7.67856,7.41379 z"
-           id="path3874"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3876"
-           d="m 304.44516,199.14013 c 0,3.79867 -2.83226,1.34237 -6.94514,2.59237 -1.88216,0.57203 -3.92668,3.51586 -5.21582,2.27117 -1.28914,-1.24469 -2.08649,-2.96421 -2.08649,-4.86354 0,-3.79867 3.1894,-6.87808 7.12374,-6.87808 3.93431,0 7.12371,3.07941 7.12371,6.87808 z"
-           style="fill:#000000;fill-opacity:1;stroke:none"
-           sodipodi:nodetypes="ssssss" />
-        <path
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           d="m 364.55359,307.01392 c 0,1.7752 -11.7552,3.68451 -14.73215,4.73215 -10.65591,3.75 -10.6702,-1.34559 -8.83928,-5.53572 2.75626,-6.30783 2.96069,-13.66423 5.08928,-18.83929 2.48573,3.7535 18.48215,17.86766 18.48215,19.64286 z"
-           id="path3878"
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ssscs" />
-        <path
-           sodipodi:type="arc"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           id="path3883"
-           sodipodi:cx="508.10672"
-           sodipodi:cy="613.70343"
-           sodipodi:rx="2.7779195"
-           sodipodi:ry="2.7779195"
-           d="m 510.88464,613.70343 c 0,1.5342 -1.24372,2.77792 -2.77792,2.77792 -1.5342,0 -2.77792,-1.24372 -2.77792,-2.77792 0,-1.5342 1.24372,-2.77792 2.77792,-2.77792 1.5342,0 2.77792,1.24372 2.77792,2.77792 z"
-           transform="matrix(1.1136365,0.86333713,-0.75193878,0.96994141,404.73812,-467.8684)" />
-        <path
-           transform="matrix(1.1136365,0.86333713,-0.75193878,0.96994141,495.90439,-508.52704)"
-           d="m 510.88464,613.70343 c 0,1.5342 -1.24372,2.77792 -2.77792,2.77792 -1.5342,0 -2.77792,-1.24372 -2.77792,-2.77792 0,-1.5342 1.24372,-2.77792 2.77792,-2.77792 1.5342,0 2.77792,1.24372 2.77792,2.77792 z"
-           sodipodi:ry="2.7779195"
-           sodipodi:rx="2.7779195"
-           sodipodi:cy="613.70343"
-           sodipodi:cx="508.10672"
-           id="path3896"
-           style="fill:#ffffff;fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-        <path
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           d="m 288.05562,742.11273 c 0.0388,-2.79455 -0.3373,-4.33149 -1.40851,-5.75672 -1.27023,-1.69003 -3.3037,-2.46681 -7.48849,-2.86056 -1.98218,-0.18651 -3.92903,-0.51308 -4.32633,-0.72571 -1.58325,-0.84733 -1.2946,-6.26109 1.01096,-18.96058 2.02686,-11.16434 1.55471,-15.62393 -1.75463,-16.57303 -1.59757,-0.45818 -4.15095,0.40486 -9.85185,3.32991 -8.76181,4.49556 -15.26922,5.73865 -17.95312,3.42954 -2.09285,-1.80059 -0.83002,-5.79254 3.58195,-11.32292 6.53316,-8.18929 9.31795,-13.93466 9.31629,-19.22064 -9.8e-4,-3.10823 -0.76824,-5.19345 -2.71003,-7.36514 -2.78209,-3.1115 -6.49396,-10.15766 -9.19928,-17.4628 -0.79886,-2.15714 -1.99006,-4.7339 -2.64713,-5.72615 -1.90648,-2.879 -2.73469,-4.72644 -2.95579,-6.59328 -0.18807,-1.58798 -0.1128,-1.83481 0.85452,-2.80212 1.40728,-1.40729 3.46032,-1.71056 6.61967,-0.97786 3.24157,0.75177 6.38492,2.24803 9.31785,4.43537 4.59443,3.42646 8.35,4.20215 18.63221,3.84834 12.00846,-0.4132 16.4833,0.91625 20.03109,5.95114 1.29998,1.84488 6.06166,6.0582 15.50463,13.71909 10.14093,8.22715 17.98436,13.18847 26.42857,16.71728 3.65294,1.52655 4.3748,2.49898 2.67961,3.60972 -0.4905,0.32138 -3.10211,1.51181 -5.80357,2.64538 -10.99133,4.61213 -14.7206,6.49996 -20.44747,10.35088 -5.64467,3.79565 -8.92857,7.61541 -8.92857,10.38549 0,2.45368 3.69038,4.18627 9.64285,4.52722 2.076,0.1189 3.99544,0.50758 6.07143,1.22941 1.66965,0.58054 5.92857,1.75755 9.46429,2.61556 5.91824,1.43618 7.40175,1.86896 10.32701,3.01265 l 1.04129,0.40712 -1.25881,1.32564 c -4.14052,4.36031 -8.32868,12.22156 -11.88469,22.30777 -0.53671,1.52233 -1.05046,2.76786 -1.14166,2.76786 -0.0912,0 -0.47615,-0.16609 -0.85546,-0.36908 -1.03376,-0.55326 -1.95015,-2.62047 -3.58506,-8.08728 -2.46922,-8.25662 -3.89943,-10.47221 -6.76001,-10.47221 -1.25059,0 -1.49557,0.16354 -2.54125,1.69643 -3.81539,5.59309 -14.38719,13.43486 -22.80565,16.91639 -1.47321,0.60927 -2.93229,1.33134 -3.2424,1.60461 -0.89742,0.79081 -1.00464,0.61953 -0.97446,-1.55672 l 0,0 z"
-           id="path3932"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="cssscsscsssssssscscsssssssssssssccsssssssssssssssscsscsscsssssssssssscssscsssscsssscscccssssssssssssssssscssssssssssssssssssscscssssssssssscssscssssssscsscssscsscsssssssssssscssssscsssssscsssscsscccssccsscccsscccssscccsscccssccssssccsscccsssccsssssssscsccccsscccscccssssscssscscccsscsssscscsscccscsssscssssssssssssssssssssssscsssscscssscccssssccccsccsssscsscccssscccssccssssssssscssccsssssssscccscccssccsscsssssssssscsssccsscccssccssssssssssssssssssssscsscsccccssccssssscsscccssccsscssssssssssssssccsccssccssssscssscsssscsscsssssssssssscssccsssssssscscccssssssssssssssssssssssscssssssssssssssscsscccssscccsssccsssssssscsccccssccsssscsscccssssccsssssssss"
-           style="fill:#d3bc5f;fill-opacity:1;stroke:none"
-           d="m 426.62796,773.89785 c 0,-3.5797 -2.35283,-5.15284 -7.70671,-5.15284 -3.66459,0 -8.79263,-5.05712 -14.48607,-14.28572 -2.1813,-3.53571 -6.13369,-9.0878 -8.78308,-12.33795 l -4.81705,-5.9094 -8.17497,2.61913 c -4.49623,1.44051 -14.46906,4.90331 -22.16182,7.6951 -7.69276,2.7918 -15.40704,5.07532 -17.14286,5.07452 -2.94374,-10e-4 -3.15601,-0.64994 -3.15601,-9.64285 0,-8.37666 0.56936,-10.48469 4.34034,-16.06997 2.38719,-3.53572 5.28005,-6.42858 6.42857,-6.42858 2.39795,0 3.69993,-6.10258 1.72363,-8.07888 -0.72644,-0.72644 -6.04704,-2.11213 -11.82357,-3.07932 -10.20027,-1.70787 -10.53851,-1.89641 -11.7433,-6.5458 -1.76571,-6.81414 -0.78256,-8.17767 7.7658,-10.77024 4.17683,-1.26677 13.02744,-5.02114 19.66802,-8.34306 l 12.07377,-6.03984 6.1456,-14.16157 c 3.38008,-7.78887 5.87545,-14.43173 5.54528,-14.76191 -0.33018,-0.33018 0.6647,-1.86536 2.21085,-3.4115 1.75401,-1.75402 2.4879,-3.82968 1.95154,-5.51959 -0.47279,-1.48961 0.4631,-5.79603 2.07974,-9.56977 4.43626,-10.3556 8.63373,-26.15603 8.63373,-32.49969 0,-8.00107 -1.76656,-5.00381 -6.2818,10.65806 -2.15504,7.47514 -8.53396,25.15371 -14.17537,39.28571 -9.88449,24.76109 -10.4568,25.79206 -15.7538,28.37886 -7.39826,3.61297 -12.7778,1.9178 -31.79112,-10.01781 -22.73762,-14.27356 -40.59574,-33.803 -48.56497,-53.11013 -5.25205,-12.7242 -6.34954,-35.19967 -2.71966,-55.69632 4.16941,-23.54318 25.87958,-83.56852 41.46566,-114.64628 4.41645,-8.80614 11.13203,-23.80319 14.92352,-33.32676 6.41861,-16.12246 20.0404,-56.64866 20.0404,-59.62223 0,-0.72557 -1.577,-0.92341 -3.50443,-0.43965 -2.03972,0.51192 -5.41543,-0.0737 -8.07663,-1.40136 -5.67393,-2.83053 -7.87107,-2.92057 -5.639,-0.23109 1.42579,1.71797 -0.21486,2.65513 -10.1337,5.78849 -6.50919,2.05626 -16.35673,4.32041 -21.88343,5.03147 -5.52668,0.71106 -14.86996,2.25764 -20.76281,3.43687 -14.4203,2.88566 -32.315,4.7573 -56.72438,5.93292 -19.48135,0.93825 -32.27409,-0.0452 -50.41848,-3.87598 -3.53571,-0.74647 -8.45041,-1.58924 -10.92155,-1.8728 -2.47114,-0.28355 -5.80387,-1.21712 -7.40608,-2.07461 -1.60221,-0.85747 -5.45355,-1.55904 -8.55854,-1.55904 -5.08662,0 -5.88912,-0.51356 -8.10742,-5.18827 -2.56384,-5.40289 -2.22009,-13.88376 0.68029,-16.78415 2.64504,-2.64503 45.91061,-1.67765 62.17044,1.39007 9.95679,1.87855 20.56266,2.68406 35,2.65826 20.16534,-0.036 21.35788,-0.2132 45,-6.6843 13.35715,-3.65598 36.17857,-9.60451 50.71429,-13.21893 31.74723,-7.89421 35.99164,-9.19774 35.43048,-10.88122 -0.60311,-1.80933 -23.09771,-28.22834 -24.13172,-28.34175 -0.46426,-0.0509 -1.66078,3.55667 -2.65892,8.01686 -0.99814,4.46019 -3.08131,11.04948 -4.62926,14.64286 l -2.81444,6.53342 -3.49341,-4.28571 c -1.92139,-2.35714 -7.17266,-11.51501 -11.6695,-20.35082 -4.49685,-8.8358 -8.97966,-16.06795 -9.9618,-16.07143 -1.32377,-0.005 -1.78572,4.17654 -1.78572,16.16296 0,20.67026 -2.48255,29.67311 -10.21525,37.045 -7.69529,7.33624 -11.47126,7.10146 -17.23205,-1.07142 -2.4922,-3.53572 -5.06416,-6.42858 -5.71547,-6.42858 -0.65131,0 -1.91646,1.60715 -2.81145,3.57143 -0.89499,1.96429 -2.12523,3.57143 -2.73386,3.57143 -0.60864,0 -2.91617,-2.55659 -5.12784,-5.68132 -2.21167,-3.12473 -4.66408,-5.48661 -5.44979,-5.24862 -0.78572,0.23799 -2.49761,4.79577 -3.80422,10.1284 -1.3066,5.33263 -3.03159,10.35163 -3.8333,11.15334 -1.82126,1.82127 -4.9364,-8.70131 -8.10955,-27.3931 -1.25766,-7.40844 -3.1632,-15.12272 -4.23454,-17.14286 l -1.94787,-3.67298 -3.55272,7.85714 c -1.95399,4.32143 -5.54561,12.67857 -7.98136,18.57143 -2.43576,5.89286 -5.86719,13.24416 -7.6254,16.33623 l -3.19676,5.62194 -16.42857,-0.34518 c -25.75685,-0.54119 -31.77622,-3.27892 -35.62631,-16.20355 -1.0033,-3.36805 -2.63149,-7.67511 -3.6182,-9.57124 -1.78703,-3.43408 -1.8141,-3.4177 -6.94685,4.204 l -5.15283,7.65152 -2.45539,-5.63258 c -3.23724,-7.42608 -3.28794,-25.83647 -0.1001,-36.34685 3.74512,-12.34779 12.15789,-25.20747 25.32825,-38.71653 16.74484,-17.17545 19.40291,-17.92917 56.42858,-16.00098 l 27.14285,1.41353 5.13206,-3.38632 c 9.56469,-6.31112 50.96559,-19.83112 53.36851,-17.42818 0.43892,0.43891 0.0684,2.8908 -0.82318,5.44865 -3.53536,10.14152 4.03056,21.52916 14.30098,21.52475 11.02945,-0.005 22.1994,-10.09156 21.30322,-19.23749 -0.37896,-3.86755 -1.6108,-4.90083 -11.49587,-9.64283 -13.8664,-6.65188 -14.36669,-9.68889 -1.59605,-9.68889 3.9019,0 5.99966,1.13922 9.86298,5.35625 4.19951,4.58402 5.29165,5.11601 7.57515,3.68994 2.26956,-1.41736 3.90289,-0.69726 10.93217,4.81979 8.123,6.37546 8.46166,6.49166 19.852,6.81149 7.8395,0.22012 13.34429,1.18411 17.01723,2.98005 5.23385,2.55915 5.31096,2.70072 2.14286,3.9343 -3.17296,1.23548 -3.18776,1.31766 -0.4292,2.38164 1.6016,0.61775 3.66983,0.45174 4.70653,-0.37777 4.5849,-3.66861 20.01134,17.69068 23.9655,33.18239 3.29037,12.8911 2.21001,22.03629 -4.09542,34.66756 -5.264,10.54504 -14.75145,24.07359 -17.51361,24.97337 -0.82964,0.27025 -2.5871,-1.77061 -3.90546,-4.53525 -2.36503,-4.95951 -5.3004,-6.74019 -5.3004,-3.21538 0,0.99618 1.59996,4.16578 3.55546,7.04356 l 3.55546,5.23233 -9.62689,8.77226 c -5.29478,4.82474 -12.03828,10.17298 -14.98557,11.885 -6.73454,3.91197 -7.53131,6.43174 -5.32351,16.83537 1.54585,7.2844 1.47461,8.80251 -0.55873,11.90579 -3.309,5.05015 -2.88533,6.10515 0.98977,2.4647 1.82614,-1.71559 3.75471,-2.68479 4.28571,-2.15379 1.8008,1.8008 0.97693,11.2657 -1.25841,14.4571 -1.22313,1.74626 -1.62297,3.17501 -0.88854,3.17501 0.73444,0 2.26187,-1.39544 3.39431,-3.10098 1.13244,-1.70554 2.7171,-2.69424 3.52146,-2.19712 0.80437,0.49713 2.93738,5.91043 4.74004,12.02956 4.4994,15.27329 14.11453,34.99907 22.4835,46.12569 3.84136,5.10714 13.97214,19.57143 22.51284,32.14285 53.45682,78.68539 68.59855,99.78142 75.64649,105.39352 12.14163,9.66807 26.52131,18.44436 39.87731,24.33814 10.87245,4.79783 14.11867,5.59646 22.43053,5.51824 9.59119,-0.0903 9.78983,-0.0144 15.18356,5.79055 9.89218,10.64655 13.59838,13.95955 15.6163,13.95955 3.71671,0 2.12408,-5.77188 -2.28492,-8.28072 -2.35217,-1.33846 -4.28074,-3.26635 -4.28571,-4.2842 -0.004,-1.01786 -1.57466,-3.41629 -3.48821,-5.32985 -1.91356,-1.91355 -2.96406,-3.79757 -2.33445,-4.18668 0.62962,-0.38913 0.84662,-2.26707 0.48223,-4.1732 -0.43234,-2.26166 0.36174,-4.48997 2.28566,-6.41389 4.27507,-4.27507 9.85228,-15.92446 10.73771,-22.42834 0.42062,-3.08957 1.51543,-10.97616 2.43295,-17.52574 2.76804,-19.7594 -1.2281,-37.2384 -8.9889,-39.31722 -18.20165,-4.87553 -41.76129,9.1535 -48.71912,29.0107 -1.72214,4.91493 -3.77208,9.03106 -4.55541,9.14697 -3.10375,0.45926 -5.35095,-23.32915 -3.91532,-41.4467 1.58292,-19.9762 2.99122,-23.22124 15.91213,-36.66521 11.47387,-11.93839 17.59143,-14.73782 22.17969,-10.14956 1.65684,1.65684 1.86991,2.93742 0.81633,4.90607 -1.82236,3.40512 -1.86198,10.43295 -0.0524,9.31463 0.75528,-0.4668 1.80063,-3.12687 2.32298,-5.9113 1.59443,-8.49907 10.22369,-10.09738 17.56906,-3.25413 2.88417,2.68702 3.23589,4.03877 2.52339,9.69815 l -0.82789,6.57594 2.87646,-5.42927 c 3.4244,-6.4635 5.97707,-7.74125 10.29765,-4.34267 3.32438,2.61494 3.33286,2.69191 0.7638,6.92242 -1.42887,2.35295 -2.58101,5.24238 -2.56031,6.42095 0.0503,2.86428 7.09019,-5.10475 7.09019,-8.02597 0,-2.73246 11.67052,3.37054 19.87555,10.39372 5.64592,4.8327 16.83252,21.15565 23.34287,34.06082 5.00816,9.92743 10.99802,27.7589 11.0432,32.87504 0.0207,2.3473 0.41746,10.51609 0.8816,18.15286 0.86566,14.24328 -1.60147,35.96273 -3.69945,32.56813 -0.60147,-0.9732 -0.79495,-2.91146 -0.42993,-4.30723 0.97224,-3.7179 -2.50517,-5.23223 -4.80199,-2.09116 -2.93063,4.00787 -2.3808,10.00913 1.13065,12.34064 3.03804,2.01718 3.00518,2.11863 -5.35715,16.54379 -4.62765,7.9828 -9.2175,14.54073 -10.19964,14.57319 -0.98214,0.0324 -1.78571,1.3876 -1.78571,3.01141 0,1.85214 -5.72296,8.65429 -15.35715,18.25306 l -15.35721,15.30067 -30.71429,15.92153 c -16.89285,8.75684 -34.61344,17.2241 -39.3791,18.81613 -9.3854,3.13531 -25.40878,6.09742 -28.18431,5.21018 -0.94726,-0.3028 -12.3096,-0.94238 -25.24963,-1.42128 -26.85853,-0.99403 -27.94664,-1.43743 -29.40626,-11.98292 -0.50404,-3.64164 -1.80185,-11.12118 -2.88403,-16.62118 -1.08217,-5.5 -2.96961,-18.67858 -4.19432,-29.28572 -3.42215,-29.63883 -13.96832,-71.49593 -17.19969,-68.26456 -0.41163,0.41163 1.48474,14.17169 4.21416,30.57792 6.31917,37.98393 9.19667,58.5393 10.043,71.74188 0.36961,5.76612 1.27361,11.2304 2.00887,12.14286 0.73527,0.91247 1.7869,4.38782 2.33696,7.72299 0.55005,3.33517 1.59621,6.43235 2.32478,6.88264 0.72859,0.45029 2.60516,3.32863 4.17019,6.39633 1.56503,3.06771 4.8046,7.80894 7.19907,10.53608 2.39446,2.72715 4.72463,7.24502 5.17814,10.03973 0.7125,4.39059 0.43979,5.08127 -2.0063,5.08127 -4.29298,0 -11.92337,-2.97674 -11.08938,-4.32615 0.40474,-0.65489 0.0826,-1.5945 -0.71599,-2.08802 -0.79853,-0.49351 -1.45187,-0.2767 -1.45187,0.48183 0,0.75853 -1.28572,1.04293 -2.85714,0.63199 -1.57143,-0.41095 -2.85715,-1.20516 -2.85715,-1.76492 0,-1.74535 -13.72065,-7.53875 -16.55945,-6.99205 -1.97618,0.38057 -2.95056,2.23061 -3.65046,6.9311 -0.90596,6.08422 -9.37846,29.98337 -10.62943,29.98337 -0.32407,0 -0.58923,-1.53837 -0.58926,-3.41859 z m 15.28712,-78.87133 c 0.6525,-1.95748 -3.40626,-7.20998 -4.6276,-5.98865 -1.55372,1.55371 0.66714,8.55064 2.51817,7.93362 0.90405,-0.30135 1.8533,-1.17658 2.10943,-1.94497 z M 382.2049,674.93277 c 4.51635,-6.81843 4.86019,-9.51456 0.78175,-6.12976 -2.97337,2.46767 -8.2382,12.79914 -6.52235,12.79914 0.72765,0 3.31092,-3.00123 5.7406,-6.66938 z m 51.54405,-10.91493 c -0.0261,-7.16753 -2.12872,-11.63347 -3.63229,-7.71525 -1.29381,3.37165 0.65003,15.55903 2.31727,14.52862 0.73529,-0.45444 1.32705,-3.52046 1.31502,-6.81337 z M 394.4041,646.99857 c 2.60899,-3.72486 2.95895,-8.73669 0.55406,-7.93506 -2.0358,0.6786 -5.8391,11.11007 -4.05071,11.11007 0.70004,0 2.27353,-1.42876 3.49665,-3.17501 z m 172.22386,-3.87485 c 0,-5.2489 -2.31401,-11.52157 -4.25036,-11.52157 -1.90507,0 -1.89428,9.38372 0.0149,12.95106 2.17376,4.0617 4.23546,3.36587 4.23546,-1.42949 z m -134.28571,-5.17731 c 0,-3.48934 -0.64286,-6.34426 -1.42857,-6.34426 -0.78572,0 -1.42858,3.25223 -1.42858,7.22717 0,4.45433 0.5481,6.88842 1.42858,6.34426 0.78571,-0.4856 1.42857,-3.73783 1.42857,-7.22717 z m 92.23305,4.43286 c 2.53533,-3.86939 1.70619,-6.81698 -1.56452,-5.56189 -1.17506,0.45091 -2.0971,2.62186 -2.0971,4.93761 0,5.04666 0.6872,5.16382 3.66162,0.62428 z m 94.9098,-11.44115 c 0,-2.54457 -4.96301,-5.40444 -8.27274,-4.76704 -2.10014,0.40446 -1.99904,0.87357 0.78914,3.66176 3.64163,3.64163 7.4836,4.20907 7.4836,1.10528 z m -122.70325,-5.49365 c 0.56317,-2.10578 0.48191,-4.16366 -0.18055,-4.57308 -1.45921,-0.90185 -2.1353,0.1914 -3.40957,5.51343 -1.2858,5.37019 2.14257,4.4722 3.59012,-0.94035 z m -93.76295,-7.66082 c 0.53998,-3.60073 1.32025,-7.42888 1.73396,-8.507 0.41372,-1.07811 0.12529,-1.96021 -0.64096,-1.96021 -1.49502,0 -6.0852,14.80131 -6.00994,19.37943 0.0843,5.1308 3.82886,-1.6563 4.91694,-8.91222 z m 29.15433,-2.25293 c 0.17182,-5.446 -1.67341,-7.20485 -3.24957,-3.09744 -1.18524,3.0887 -1.09206,11.2221 0.16509,14.40917 0.8564,2.17109 1.19263,1.8868 1.97384,-1.66887 0.51789,-2.35714 1.01767,-6.69643 1.11064,-9.64286 z m 98.45473,11.5 c 2.04986,-2.04985 2.28539,-6.85714 0.33597,-6.85714 -1.5025,0 -4.33597,4.60634 -4.33597,7.04894 0,2.02133 1.87687,1.93133 4,-0.1918 z m 31.71429,-12.69047 c 0,-6.31287 -0.48856,-8.52998 -1.78572,-8.10386 -3.46638,1.13873 -2.42075,16.79433 1.12169,16.79433 0.36521,0 0.66403,-3.91071 0.66403,-8.69047 z m -270.59813,-2.14054 c 1.03368,-5.51004 -0.22596,-8.14486 -2.31482,-4.8419 -1.76507,2.79098 -1.76468,11.79803 4.8e-4,10.70711 0.75528,-0.4668 1.79672,-3.10614 2.31434,-5.86521 z m 213.31241,2.14728 c 3.34886,-4.52957 3.22052,-6.54048 -0.33044,-5.17785 -2.16697,0.83155 -5.82579,9.57587 -4.00676,9.57587 0.59709,0 2.54882,-1.9791 4.3372,-4.39802 z m 35.97537,-6.59208 c 3.17853,-7.41522 3.20679,-7.58133 1.28935,-7.58133 -2.146,0 -7.11036,8.77859 -7.11652,12.58431 -0.007,4.75969 2.60332,2.51796 5.82717,-5.00298 z m 32.73892,5.23098 c 0,-1.71024 -4.02946,-3.54475 -5.20466,-2.36955 -1.25101,1.25101 0.87093,3.84295 3.14612,3.84295 1.1322,0 2.05854,-0.66302 2.05854,-1.4734 z M 279.4851,600.80355 c 0,-2.07337 -0.61834,-3.27357 -1.42857,-2.77283 -0.78571,0.4856 -1.42857,2.13069 -1.42857,3.65575 0,1.52505 0.64286,2.77282 1.42857,2.77282 0.78572,0 1.42857,-1.64508 1.42857,-3.65574 z m 236.37778,-1.98523 c 5.48505,-7.91495 3.77798,-10.8071 -1.81866,-3.08117 -2.47893,3.42206 -4.15947,6.78449 -3.73453,7.47204 1.14784,1.85725 1.31461,1.72538 5.55319,-4.39087 z m -222.09206,-10.7814 c 0,-6.00314 0.18606,-6.27328 4.64286,-6.7412 l 4.64285,-0.48745 -6.11728,-1.98578 c -4.66449,-1.51418 -6.51352,-1.58954 -7.78572,-0.31734 -1.27218,1.27219 -1.11618,1.66843 0.65693,1.66843 1.97226,0 2.19874,1.22674 1.49152,8.07913 -0.61105,5.92034 -0.3926,7.80643 0.8175,7.05856 0.90824,-0.56133 1.65134,-3.83479 1.65134,-7.27435 z m 51.42857,-0.006 c -1.91394,-2.30617 -11.42857,-2.99994 -11.42857,-0.83333 0,1.80703 2.7051,2.73034 8.3892,2.8634 4.12598,0.0966 4.56241,-0.19491 3.03937,-2.03007 z m 26.5756,-10.22924 c 1.08584,-4.5882 2.30669,-16.05485 2.71297,-25.48143 l 0.73873,-17.13925 3.91493,-1.22671 c 2.1532,-0.6747 12.05778,-1.31919 22.01018,-1.4322 16.44723,-0.18674 21.58299,-1.00339 19.48765,-3.09873 -0.94972,-0.94971 -33.13103,-13.3399 -39.45379,-15.19017 -2.60041,-0.76097 -5.49327,-1.09313 -6.42857,-0.7381 -1.70166,0.6459 2.35573,2.60387 15.08516,7.27961 3.73214,1.37089 6.78571,3.09262 6.78571,3.82606 0,1.64753 -7.31854,5.00796 -15.19073,6.9751 -3.24775,0.81156 -6.66137,2.38692 -7.58581,3.5008 -0.92443,1.11387 -2.06253,7.9174 -2.5291,15.11893 -0.60147,9.28391 -1.42899,13.31654 -2.84402,13.85954 -4.47347,1.71663 -14.36078,-12.68123 -17.6261,-25.66707 -2.28095,-9.0711 -5.13647,-8.84778 -13.7001,1.07143 -8.22145,9.52289 -10.52414,9.9712 -10.52414,2.04894 0,-8.05877 -1.7975,-10.71208 -11.50938,-16.98918 -6.18495,-3.99752 -7.97505,-5.83476 -6.68338,-6.85939 2.86616,-2.2736 11.12242,-4.36933 21.0499,-5.34323 20.83302,-2.04374 24.94299,-5.1365 26.1785,-19.69944 0.48065,-5.6653 2.84678,-20.83019 5.25805,-33.69974 2.41127,-12.86955 4.13037,-23.65295 3.82023,-23.96309 -0.31016,-0.31016 -1.32648,0.35492 -2.25849,1.47793 -1.63287,1.96747 -10.60386,41.17586 -12.79479,55.92054 -0.58671,3.94849 -1.59384,8.03193 -2.23808,9.07433 -1.93379,3.12893 -9.8575,5.71992 -20.27847,6.6309 -8.26223,0.72226 -29.12463,4.8953 -36.06212,7.21337 -3.65498,1.22127 1.0193,4.53479 12.09617,8.57475 5.88893,2.14781 11.63939,5.23607 12.77879,6.8628 2.68426,3.83231 2.63459,18.85472 -0.0999,30.17908 -1.13831,4.71429 -2.0797,11.30357 -2.09197,14.64286 -0.0187,5.11161 -0.474,6.07143 -2.87946,6.07143 -1.57142,0 -2.85714,0.64285 -2.85714,1.42857 0,0.78571 2.37857,1.42857 5.28572,1.42857 4.05171,0 4.89342,-0.39229 3.60541,-1.6803 -0.98144,-0.98144 -1.16677,-2.31829 -0.44561,-3.21429 0.67908,-0.84368 4.57634,-8.0438 8.66058,-16.00025 7.29933,-14.21972 18.24234,-27.52565 21.15637,-25.72467 0.76236,0.47115 2.09937,3.68924 2.97112,7.15128 0.87175,3.46204 3.7993,8.94496 6.50565,12.18426 3.36955,4.03308 5.4529,8.4736 6.60912,14.08681 4.1242,20.02239 5.88791,21.25327 9.3701,6.53935 z m 297.11199,4.39822 c 1.04665,-5.57915 0.29627,-7.18944 -2.52112,-5.4102 -1.03441,0.65325 -4.45218,1.19978 -7.59504,1.21448 -7.73077,0.0361 -8.09757,4.11447 -0.42737,4.75164 3.75721,0.31213 5.54367,1.24814 6.17428,3.23504 1.23923,3.90447 3.25342,2.15687 4.36925,-3.79096 z m -390.3011,0.68429 c 1.05582,-5.27916 -0.5117,-8.82441 -2.10394,-4.75844 -1.51077,3.85741 -1.52965,9.1904 -0.0326,9.1904 0.6875,0 1.64891,-1.9946 2.13649,-4.43245 z m 366.61351,-4.17483 c 0,-1.73836 -6.09591,-4.25036 -10.31441,-4.25036 -2.89506,0 -2.90719,0.0866 -0.39988,2.85715 2.66976,2.95005 10.71429,3.99611 10.71429,1.39321 z M 502.8413,575.12782 c -0.44261,-1.1534 -1.72287,-2.0971 -2.84501,-2.0971 -1.60699,0 -1.711,0.61526 -0.48977,2.89716 1.71937,3.21267 4.60861,2.51951 3.33478,-0.80006 z m 165.64228,-12.90013 c 0.15845,-5.5902 -1.42466,-7.89845 -3.33999,-4.86988 -1.54889,2.44914 -1.77726,8.67088 -0.44564,12.14101 0.86917,2.26503 1.01221,2.26405 2.28801,-0.0157 0.74849,-1.33747 1.4224,-4.60242 1.49762,-7.25544 z m -373.5135,4.30725 c 2.23495,-4.90517 2.15864,-11.05073 -0.12786,-10.29476 -1.7974,0.59427 -4.13126,13.9334 -2.43783,13.9334 0.49929,0 1.65383,-1.63739 2.56566,-3.63864 z m -15.48498,-2.15996 c 0,-1.6178 -0.64285,-2.54414 -1.42857,-2.05854 -0.78571,0.4856 -1.42857,1.80925 -1.42857,2.94145 0,1.1322 0.64286,2.05855 1.42857,2.05855 0.78572,0 1.42857,-1.32366 1.42857,-2.94146 z m 382.59253,0.44146 c -0.69903,-3.68606 -7.19661,-3.95173 -10.38847,-0.42476 -2.63181,2.90811 -2.60844,2.92476 4.10786,2.92476 5.6613,0 6.67798,-0.40469 6.28061,-2.5 z m -16.2808,0.2043 c 4.16,-1.59635 2.31856,-3.41859 -3.45458,-3.41859 -5.49083,0 -7.652,1.83717 -3.92857,3.3396 2.58225,1.04197 4.81152,1.06582 7.38315,0.079 z m -364.568,-7.34716 c 0.80085,-3.08777 -0.11458,-6.07143 -1.86277,-6.07143 -0.72024,0 -1.30953,1.92857 -1.30953,4.28572 0,4.64475 2.12112,5.83874 3.1723,1.78571 z m 208.25627,0.82677 c 0,-2.37181 -4.3635,-6.8982 -6.64998,-6.8982 -2.51116,0 -2.42713,1.49943 0.30241,5.39642 2.35815,3.36672 6.34757,4.31058 6.34757,1.50178 z m -148.84524,-4.1482 c -0.28154,-0.84464 -0.97797,-1.4875 -1.54761,-1.42857 -0.56965,0.0589 -2.48215,0.15233 -4.25,0.20756 -3.067,0.0959 -3.08337,0.15665 -0.35715,1.32815 4.04509,1.73823 6.75418,1.69108 6.15476,-0.10714 z m -34.36787,-4.53571 c -0.60821,-1.82822 -16.44089,-4.75077 -17.88944,-3.30222 -1.5207,1.52072 1.24153,2.8297 7.94831,3.76662 10.36246,1.44761 10.57393,1.43773 9.94113,-0.4644 z m 8.9274,0.35714 c -2.79504,-1.8063 -5.71429,-1.8063 -5.71429,0 0,0.78571 1.76786,1.41873 3.92858,1.4067 3.06134,-0.017 3.45552,-0.32759 1.78571,-1.4067 z m 352.14286,-5.71429 c 0,-2.61904 -0.80357,-5.02975 -1.78572,-5.35714 -1.2381,-0.4127 -1.78571,1.23016 -1.78571,5.35714 0,4.12699 0.54761,5.76985 1.78571,5.35715 0.98215,-0.32739 1.78572,-2.7381 1.78572,-5.35715 z M 439.4851,543.69475 c 0,-2.98227 -2.49161,-2.58776 -4.23545,0.67063 -2.14675,4.01123 -1.83796,4.67236 1.37831,2.95106 1.57143,-0.841 2.85714,-2.47076 2.85714,-3.62169 z m -155.69478,-3.16403 c 0.0114,-1.375 0.36743,-4.10714 0.79266,-6.07143 0.56222,-2.59718 0.16721,-2.26017 -1.44809,1.23545 -2.58457,5.5932 -2.77289,7.33598 -0.79264,7.33598 0.78571,0 1.43734,-1.125 1.44807,-2.5 z m 14.26621,-8.05875 c 0,-7.68189 -2.27311,-4.95518 -3.44313,4.13018 -0.84787,6.58402 -0.74917,6.9259 1.26165,4.36982 1.19981,-1.52518 2.18148,-5.35018 2.18148,-8.5 z m 177.14286,8.73377 c 0,-2.41296 -4.08474,-8.17502 -5.79529,-8.17502 -2.00805,0 -1.63495,2.51907 0.95959,6.47883 2.49386,3.80612 4.8357,4.62754 4.8357,1.69619 z m -20,-13.98657 c 0,-2.21755 -2.6889,-1.49955 -5.71429,1.52584 -4.36521,4.36521 -3.40008,6.29546 1.42858,2.85714 2.35714,-1.67843 4.28571,-3.65078 4.28571,-4.38298 z m -97.14286,-2.75988 c 0,-0.78571 -2.73214,-1.41872 -6.07143,-1.4067 -4.44637,0.016 -5.49787,0.39255 -3.92857,1.4067 2.8207,1.82288 10,1.82288 10,0 z m 17.14286,-3.41858 c 0,-2.04287 -2.95506,-3.72427 -6.54541,-3.72427 -2.50046,0 -2.69093,3.77931 -0.2403,4.76817 3.51048,1.41651 6.78571,0.91266 6.78571,-1.0439 z m 85.71429,-0.70887 c 0,-2.12995 -5.40396,-8.07952 -6.41975,-7.06792 -1.12963,1.12496 3.33029,8.33823 5.15547,8.33823 0.69535,0 1.26428,-0.57164 1.26428,-1.27031 z m -100.78572,-2.85485 c -2.0981,-1.96028 -7.78571,-3.36544 -7.78571,-1.92348 0,2.18136 1.74834,3.1915 5.52381,3.1915 2.17413,0 3.0772,-0.50626 2.2619,-1.26802 z m -11.35714,-1.58912 c 0.5396,-0.8731 -1.51066,-1.38953 -5.27283,-1.32816 -4.74989,0.0774 -5.50323,0.3808 -3.2986,1.32816 3.95354,1.6989 7.52146,1.6989 8.57143,0 z m 81.32428,-3.6021 c 3.24338,-2.45378 1.76082,-4.83479 -1.66491,-2.67389 -2.60481,1.64307 -4.13729,4.87293 -2.27841,4.80199 0.65475,-0.025 2.42925,-0.98265 3.94332,-2.1281 z m -59.39068,-43.73193 c 3.30956,-23.67659 5.7217,-43.34402 5.36031,-43.7054 -2.14247,-2.14246 -12.25891,53.21343 -13.309,72.82514 -1.40705,26.27851 1.89695,14.17443 7.94869,-29.11974 z m 237.35211,37.24971 c 0,-1.6178 -0.64285,-2.54414 -1.42857,-2.05854 -0.78571,0.4856 -1.42857,1.80926 -1.42857,2.94146 0,1.1322 0.64286,2.05854 1.42857,2.05854 0.78572,0 1.42857,-1.32366 1.42857,-2.94146 z m -296.54578,-1.15458 c 0.86678,-1.40252 -11.62796,-3.46122 -13.60206,-2.24116 -0.7044,0.43534 -1.28073,1.39646 -1.28073,2.1358 0,1.68924 13.84332,1.78724 14.88279,0.10528 z m 125.74258,-1.01913 c 3.20765,-3.20765 1.15733,-5.64813 -2.19577,-2.61363 -1.49341,1.35154 -2.71531,3.00056 -2.71531,3.6645 0,1.927 2.4595,1.40071 4.91108,-1.05087 z m -109.1968,-0.59912 c -2.82437,-1.82525 -11.42857,-1.82525 -11.42857,0 0,0.78572 3.05357,1.41873 6.78572,1.4067 4.90781,-0.0159 6.1927,-0.40511 4.64285,-1.4067 z m 15.71429,-1.42857 c 0,-0.78571 -1.60714,-1.42857 -3.57143,-1.42857 -1.96429,0 -3.57143,0.64286 -3.57143,1.42857 0,0.78572 1.60714,1.42857 3.57143,1.42857 1.96429,0 3.57143,-0.64285 3.57143,-1.42857 z m 61.49406,-1.55093 c 0.87701,-1.63871 1.1685,-3.40555 0.64774,-3.92631 -0.96914,-0.96916 -4.99894,3.66633 -4.99894,5.75028 0,2.27006 2.78491,1.10265 4.3512,-1.82397 z m 42.79165,1.05806 c 0,-1.0568 -1.28571,-3.085 -2.85714,-4.50713 -3.21201,-2.90683 -3.84156,-0.82324 -1.08493,3.59082 2.04157,3.26907 3.94207,3.71082 3.94207,0.91631 z m 151.19926,-6.00291 c 1.04613,-3.30616 1.06182,-10.11622 -2.00564,-3.86136 -0.47346,2.16071 -1.10839,4.73214 -1.41096,5.71428 -1.02159,3.31603 1.74513,1.81556 3.4166,-1.85292 z m 13.44261,0.0331 c 0.77878,-4.07383 -1.02601,-6.14647 -2.34932,-2.698 -1.25185,3.26226 -1.05979,6.30353 0.39805,6.30353 0.69413,0 1.5722,-1.62249 1.95127,-3.60553 z m -308.10711,-8.79116 c 0.54424,-4.72137 0.35806,-6.21477 -0.59171,-4.74617 -0.76222,1.17857 -1.80315,5.35714 -2.31319,9.28571 -0.69006,5.3151 -0.53864,6.52958 0.59171,4.74618 0.83548,-1.31818 1.87642,-5.49675 2.31319,-9.28572 z m 116.06999,0.44029 c 0.5388,-2.71712 -2.6904,-3.1008 -5.17618,-0.61503 -0.94285,0.94286 -1.71428,2.94984 -1.71428,4.45996 0,2.52628 0.25683,2.57542 3.21428,0.61502 1.76786,-1.17185 3.42215,-3.17882 3.67618,-4.45995 z m 155.08358,0.42893 c 2.78899,-4.72139 2.21276,-7.06875 -1.06703,-4.34676 -2.1016,1.74417 -4.05858,8.73137 -2.4455,8.73137 0.50736,0 2.08799,-1.97309 3.51253,-4.38461 z m 12.2898,-3.82968 c -0.017,-3.06134 -0.32758,-3.45552 -1.4067,-1.78571 -1.8063,2.79504 -1.8063,5.71429 0,5.71429 0.78572,0 1.41873,-1.76786 1.4067,-3.92858 z m -152.83527,-0.9132 c 0,-2.68664 -5.22337,-8.97367 -6.44479,-7.75715 -1.11001,1.10555 3.60999,9.74175 5.32423,9.74175 0.6163,0 1.12056,-0.89307 1.12056,-1.9846 z m 157.77614,-9.76184 c 1.22312,-1.74624 2.22386,-3.99624 2.22386,-5 0,-3.4067 -2.3187,-1.84443 -4.7123,3.17502 -2.64846,5.55387 -0.98029,6.77728 2.48844,1.82498 z m -170.22518,-6.84724 c -0.79562,-3.04246 -2.9681,-5.0368 -4.17356,-3.83133 -0.85723,0.85723 2.6103,6.71073 3.97536,6.71073 0.52315,0 0.61234,-1.29573 0.1982,-2.8794 z m -13.14062,-19.05946 c -3.71273,-3.71273 -3.97935,-0.91831 -0.48177,5.04919 2.3589,4.0247 2.52719,4.08673 2.98177,1.09901 0.27759,-1.82444 -0.78195,-4.43017 -2.5,-6.1482 z m -34.69605,-32.63257 c 0.94285,-0.94286 1.6929,-3.03214 1.66675,-4.64286 -0.0456,-2.80715 -0.16401,-2.78874 -2.85714,0.44397 -4.1405,4.97009 -3.13336,8.52263 1.19039,4.19889 z m -4.80363,-17.84736 c 3.61081,-5.31378 3.85377,-7.8582 0.48101,-5.03747 -2.90274,2.42762 -7.12641,10.3134 -5.52394,10.3134 0.80181,0 3.07113,-2.37417 5.04293,-5.27593 z m 17.39061,-2.89507 c -1.2252,-1.2209 -6.58698,4.66053 -6.58698,7.22537 0,0.87725 1.73377,-0.13871 3.85281,-2.25783 2.11904,-2.11905 3.34943,-4.35444 2.73417,-4.96754 z m -19.54781,-11.30737 c 3.09265,-3.93167 3.89565,-7.66449 1.64877,-7.66449 -1.2669,0 -7.25937,8.68882 -7.25937,10.52576 0,2.09507 2.8587,0.6372 5.6106,-2.86127 z m -185.63248,-29.4502 c -0.0157,-5.36921 -0.41531,-6.8912 -1.40669,-5.35714 -1.82704,2.82714 -1.82704,12.85714 0,12.85714 0.78571,0 1.41872,-3.375 1.40669,-7.5 z m -15.09857,-1.98697 c 1.08136,-2.81797 -0.25748,-7.65589 -2.11868,-7.65589 -0.73276,0 -1.3323,2.25 -1.3323,5 0,5.2215 1.90413,6.68692 3.45098,2.65589 z m -13.45098,-5.59734 c 0,-4.99975 -2.27365,-6.66993 -3.77033,-2.76963 -1.14615,2.98681 0.69523,9.58584 2.38364,8.54234 0.76268,-0.47136 1.38669,-3.06909 1.38669,-5.77271 z m 173.57143,3.65574 c -0.4856,-0.78572 -1.48783,-1.42857 -2.22717,-1.42857 -0.73935,0 -1.34426,0.64285 -1.34426,1.42857 0,0.78571 1.00223,1.42857 2.22717,1.42857 1.22494,0 1.82986,-0.64286 1.34426,-1.42857 z m 15.06548,-8.44907 c -1.49965,-2.80213 -4.3512,-4.1263 -4.3512,-2.02056 0,1.42669 4.6484,6.29743 5.34509,5.60074 0.33037,-0.33038 -0.11686,-1.94147 -0.99389,-3.58018 z m -15.06548,-2.9795 c -0.4856,-0.78572 -1.52576,-1.42857 -2.31147,-1.42857 -0.78572,0 -1.03128,0.64285 -0.54568,1.42857 0.4856,0.78571 1.52576,1.42857 2.31148,1.42857 0.78571,0 1.03127,-0.64286 0.54567,-1.42857 z m 6.42857,-6.99002 c 0,-0.70165 -0.96429,-1.64576 -2.14286,-2.09802 -2.17754,-0.8356 -2.9257,0.68614 -1.19047,2.42137 1.36527,1.36528 3.33333,1.17437 3.33333,-0.32335 z m -120.52583,-28.1117 c 3.92834,-4.16525 4.81154,-6.23097 4.81154,-11.25365 0,-7.9984 -2.60827,-10.40037 -8.59906,-7.9189 -12.93985,5.35986 -17.18485,24.27427 -5.44793,24.27427 3.22211,0 5.73102,-1.38594 9.23545,-5.10172 z m -53.27269,-7.83202 c 7.71146,-6.06584 7.79098,-21.46877 0.12078,-23.39387 -10.40226,-2.6108 -19.31165,13.67006 -12.66982,23.1526 2.77921,3.96788 7.69136,4.06232 12.54904,0.24127 z m 229.076,-7.87993 c -4.0329,-3.49341 -8.13462,-4.58782 -8.13462,-2.17047 0,0.71587 2.02092,3.00208 4.49095,5.08048 3.31653,2.79067 4.90427,3.35827 6.07143,2.17047 1.16033,-1.18085 0.51494,-2.53141 -2.42776,-5.08048 z m 28.19776,-7.86405 c -1.36923,-1.51297 -3.03271,-2.75085 -3.69666,-2.75085 -2.22491,0 -1.23732,3.35507 2.00713,6.81868 2.71865,2.90229 3.28867,3.06531 3.69665,1.05721 0.2653,-1.3058 -0.6379,-3.61207 -2.00712,-5.12504 z M 219.4851,267.15214 c 0,-3.61662 -2.19907,-3.40106 -4.91899,0.48216 -3.55208,5.07131 -2.88501,7.32406 1.34757,4.55077 1.96428,-1.28705 3.57142,-3.55187 3.57142,-5.03293 z m 185.71429,1.59287 c 0,-2.19102 -5.44703,-7.14286 -7.85714,-7.14286 -3.24369,0 -2.5766,2.30859 1.62123,5.6106 4.10857,3.2318 6.23591,3.75452 6.23591,1.53226 z m -239.64286,-6.86728 c 2.67832,-2.30011 3.45565,-8.84701 1.05043,-8.84701 -1.71254,0 -7.10882,8.45912 -7.11652,11.15574 -0.006,1.99418 1.90041,1.26873 6.06609,-2.30873 z m 62.77898,-6.97142 c 3.95756,-3.79159 5.28416,-7.58987 2.65087,-7.58987 -1.3895,0 -8.64413,8.80545 -8.64413,10.49198 0,1.86191 2.06379,0.86256 5.99326,-2.90211 z m -50.00652,-11.51844 c 6.78474,-7.27435 8.32867,-13.43123 2.59916,-10.3649 -2.85044,1.52552 -6.29611,6.44375 -7.76198,11.07918 -1.37194,4.33839 0.7202,4.04894 5.16282,-0.71428 z m 72.39418,-7.69047 c 4.03335,-1.67618 7.33336,-3.65583 7.33336,-4.39922 0,-2.02307 -8.68636,0.23559 -13.21428,3.43602 -7.04482,4.97942 -4.70522,5.36261 5.88092,0.9632 z m -45.52378,-5.15242 c 3.53571,-1.14197 7.23214,-2.31539 8.21429,-2.60759 4.01086,-1.1933 1.4,-3.4781 -3.97446,-3.4781 -8.29221,0 -15.6684,3.40027 -15.6684,7.22281 0,2.39201 0.56024,2.84268 2.5,2.01104 1.375,-0.58952 5.39286,-2.00619 8.92857,-3.14816 z M 369.4851,215.98413 c 0,-1.8612 -4.83791,-3.20003 -7.65588,-2.11867 -4.03103,1.54685 -2.56562,3.45098 2.65588,3.45098 2.75,0 5,-0.59954 5,-1.33231 z m 20,-0.0963 c 0,-0.78572 -2.9308,-1.42858 -6.51288,-1.42858 -3.97814,0 -6.16926,0.55599 -5.62997,1.42858 0.4856,0.78571 3.4164,1.42857 6.51288,1.42857 3.09649,0 5.62997,-0.64286 5.62997,-1.42857 z"
-           id="path3934"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           d="m 312.42748,193.36531 c -0.71883,-0.23109 -1.25836,-0.69635 -2.4582,-2.11983 -0.68032,-0.80713 -1.66311,-1.83164 -2.18397,-2.2767 -2.44208,-2.08664 -5.53569,-3.39328 -9.95737,-4.20566 -0.72664,-0.1335 -1.34495,-0.26651 -1.374,-0.29556 -0.12218,-0.12218 1.63591,-1.37021 2.74508,-1.94868 2.83498,-1.47855 5.84243,-2.06508 9.12649,-1.77992 4.34368,0.37716 7.87777,2.18624 9.0915,4.65389 0.37235,0.75703 0.40669,0.92913 0.40669,2.03814 0,1.16988 -0.0182,1.2481 -0.53335,2.28734 -0.63384,1.27879 -2.23419,3.19001 -2.90628,3.47082 -0.56018,0.23406 -1.51037,0.31961 -1.95659,0.17616 z"
-           id="path3936"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           d="m 172.69128,490.43165 c -1.47756,-1.47757 -1.92568,-4.63274 -2.26552,-15.95145 -0.21701,-7.22773 -0.46997,-9.59645 -1.02484,-9.59645 -0.12841,0 -0.89015,0.29099 -1.69277,0.64664 -4.49897,1.99358 -12.90768,4.62137 -17.35022,5.42208 -9.2837,1.67327 -11.64774,-1.02792 -6.728,-7.68753 0.59756,-0.80888 1.58049,-1.75012 2.22021,-2.12605 5.04207,-2.96289 8.91904,-6.18632 9.91495,-8.24361 0.68255,-1.40996 0.6601,-3.18378 -0.0585,-4.62263 -0.79396,-1.58976 -3.24431,-3.73983 -7.04209,-6.17911 -1.78523,-1.14664 -5.27154,-3.39169 -7.74736,-4.98899 -2.47581,-1.5973 -5.6107,-3.58597 -6.96641,-4.41926 -4.47087,-2.74804 -6.85405,-5.63674 -6.22436,-7.5447 1.04309,-3.1606 7.50661,-4.94076 17.97701,-4.95116 8.04584,-0.008 12.87379,0.64236 15.76551,2.12371 2.41709,1.23822 4.07625,1.5793 5.86116,1.20492 4.41559,-0.92618 6.75853,-5.59857 9.01636,-17.98078 1.01005,-5.53927 1.69733,-8.10536 2.30622,-8.61069 0.36065,-0.29931 0.49905,-0.24063 1.07612,0.45628 1.10787,1.33794 4.93886,9.70079 7.32179,15.9831 3.33763,8.79926 4.91827,11.93235 7.66057,15.18455 1.02528,1.21593 3.15302,2.98214 4.74652,3.94003 l 0.88388,0.53133 5.55584,-0.6046 c 23.93377,-2.60453 52.53238,-4.7637 90.02984,-6.79718 6.45867,-0.35025 12.85549,-0.75059 14.21518,-0.88964 3.26208,-0.3336 8.23839,-0.32236 9.22287,0.0208 3.25032,1.13307 -2.30201,4.76864 -9.80099,6.41751 -2.53623,0.55766 -8.04713,0.77511 -10.25719,0.40472 -0.9561,-0.16024 -2.44257,-0.53435 -3.30325,-0.83136 l -1.56489,-0.54002 -5.50618,0.56661 c -6.90651,0.71071 -15.92329,1.8113 -33.15911,4.04744 -28.62357,3.71355 -39.88798,4.88228 -54.41206,5.64547 l -5.79846,0.30469 -0.42232,1.38896 c -0.23228,0.76393 -0.90275,3.66181 -1.48994,6.43973 -4.46074,21.10314 -7.71955,30.24311 -13.29047,37.27577 -2.25372,2.84505 -5.27185,5.24908 -6.61794,5.27136 -0.1843,0.003 -0.65732,-0.31669 -1.05116,-0.71052 z m 6.59034,-46.70833 c 1.09934,-2.82692 0.6287,-7.05407 -0.83719,-7.51933 -0.9477,-0.30078 -1.32788,0.46063 -1.42778,2.8595 -0.0839,2.01491 0.33715,6.43937 0.66464,6.98402 0.21944,0.36496 0.98947,-0.75336 1.60033,-2.32419 z m 7.84953,0.0104 c 0.19318,-2.33412 -0.51487,-7.38674 -1.03514,-7.38674 -0.28276,0 -0.52182,1.5597 -0.5252,3.42656 -0.002,1.27677 0.29389,2.81103 0.88646,4.59152 0.21453,0.64462 0.59801,0.28534 0.67388,-0.63134 z m 0.28514,-11.93243 c 0.39056,-0.7516 0.44149,-1.31851 0.34031,-3.78807 -0.12403,-3.02721 -0.48078,-4.54569 -1.06797,-4.54569 -0.18987,0 -0.45056,0.19888 -0.57932,0.44194 -0.28516,0.53834 -0.70141,3.23725 -0.94095,6.10104 -0.15963,1.90844 -0.12938,2.15883 0.29859,2.47177 0.73575,0.538 1.44458,0.29037 1.94934,-0.68099 z"
-           id="path3938"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 407.59723,417.18589 c -3.23485,-2.19814 -5.15936,-5.45834 -9.44358,-15.99785 -3.29255,-8.09992 -3.58137,-10.06479 -1.47943,-10.06479 0.60406,0 6.31951,2.66159 12.70099,5.91465 6.38147,3.25305 13.53819,6.74774 15.9038,7.76596 5.52412,2.37772 9.05779,5.31144 8.77185,7.28254 -0.329,2.26795 -4.41393,4.59702 -9.00187,5.13253 -2.2391,0.26135 -5.35681,0.75674 -6.92824,1.10086 -4.90978,1.07518 -7.71782,0.77262 -10.52352,-1.1339 z"
-           id="path3944"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 390.82849,377.18836 c -2.19143,-1.53494 -5.4312,-7.55197 -7.97693,-14.81511 -1.20485,-3.4375 -2.04323,-6.25 -1.86306,-6.25 0.73722,0 16.511,7.83535 17.65277,8.76871 3.92306,3.20697 3.69343,7.43557 -0.6089,11.21307 -2.72167,2.38966 -4.87625,2.71367 -7.20388,1.08333 l 0,0 z"
-           id="path3946"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 417.83857,224.26929 c -8.1177,-7.29852 -7.56348,-12.7805 1.64774,-16.2983 1.78595,-0.68205 5.39217,-2.67848 8.01383,-4.43649 8.70968,-5.84049 9.90709,-2.9316 3.85887,9.37447 -3.76527,7.66103 -7.74764,14.03197 -9.02646,14.4404 -0.43351,0.13845 -2.4558,-1.24759 -4.49398,-3.08008 z"
-           id="path3948"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 432.58538,250.94468 c -4.41267,-6.72664 -5.49629,-13.43262 -2.63323,-16.29569 1.2857,-1.28569 1.99375,-1.4105 5.53572,-0.97577 2.2338,0.27417 4.86502,0.80134 5.84717,1.17147 0.98214,0.37014 4.02054,0.81841 6.75199,0.99615 3.21653,0.20931 5.42069,0.73441 6.25603,1.49039 1.1919,1.07865 1.20379,1.29842 0.15666,2.89654 -0.6232,0.95113 -2.1527,2.67336 -3.39889,3.82719 -2.59938,2.40673 -14.56031,10.63972 -15.45743,10.63972 -0.32891,0 -1.70502,-1.6875 -3.05802,-3.75 z"
-           id="path3950"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 433.80307,275.0876 c -0.47119,-3.14212 -0.0246,-10.12091 0.88728,-13.86489 0.38368,-1.57535 0.64383,-1.65534 3.95519,-1.21607 6.90923,0.91654 11.97521,4.13868 11.97521,7.61666 0,3.2011 -8.11516,9.17947 -14.05165,10.35173 -2.2372,0.44178 -2.27228,0.40517 -2.76603,-2.88743 z"
-           id="path3952"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 418.30811,438.44016 c -0.68267,-1.07787 -2.38645,-3.37217 -3.78619,-5.09845 -3.22504,-3.97741 -3.14347,-6.19412 0.22226,-6.03994 5.25928,0.24093 8.69693,5.08135 7.29811,10.27617 -0.89398,3.31999 -2.0138,3.57856 -3.73418,0.86222 z"
-           id="path3954"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 429.85171,452.8737 c -5.5816,-1.71968 -7.03576,-4.85435 -3.08663,-6.6537 6.01669,-2.74138 11.56613,1.26728 8.83054,6.37878 -0.85918,1.60539 -1.34944,1.62885 -5.74391,0.27492 z"
-           id="path3956"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 451.1937,486.32827 c -0.6187,-0.70205 -3.07949,-4.08613 -5.46842,-7.52019 l -4.34351,-6.24374 2.08402,-1.07769 c 2.76372,-1.42917 5.44213,-1.33752 9.07188,0.31044 5.13785,2.33266 6.77608,8.24322 3.59368,12.96559 -1.92491,2.85637 -3.39057,3.32109 -4.93765,1.56559 l 0,0 z"
-           id="path3958"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 463.50303,504.74164 c -1.35355,-2.52912 -0.88043,-6.39946 1.01383,-8.29371 2.03654,-2.03655 2.73769,-2.15586 3.96671,-0.67499 1.84557,2.22378 -0.67578,10.35031 -3.2113,10.35031 -0.5664,0 -1.36257,-0.62172 -1.76924,-1.38161 z"
-           id="path3960"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 475.44218,521.39657 c -2.94433,-1.54874 -2.2468,-5.27332 0.98758,-5.27332 1.54139,0 2.19006,1.90276 1.5011,4.40327 -0.50325,1.82653 -0.6036,1.86161 -2.48868,0.87005 z"
-           id="path3962"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 486.21711,540.22774 c -3.28462,-2.90928 -4.27353,-4.80741 -3.35744,-6.44436 0.95682,-1.70976 5.7225,-1.66095 7.29323,0.0747 1.5432,1.70521 1.50939,5.28432 -0.0679,7.18339 l -1.25,1.50505 -2.61793,-2.31877 z"
-           id="path3964"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 494.58396,549.87602 c -1.66612,-0.45844 -2.37766,-1.22255 -2.06265,-2.21505 0.21449,-0.6758 1.39182,-1.81877 2.31925,-2.25157 1.22068,-0.56964 1.95433,-0.54687 2.58134,0.0802 0.68528,0.68528 0.79949,1.59607 0.40751,3.2497 l -0.31747,1.33929 -0.97855,0.0323 c -0.5382,0.0178 -1.41544,-0.0879 -1.94943,-0.23483 l 0,0 z"
-           id="path3966"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 508.74381,569.46176 c -1.24479,-0.29684 -2.32701,-1.23089 -2.9061,-2.50822 -0.47224,-1.04166 -0.46492,-1.70499 0.0296,-2.68394 1.30087,-2.57505 4.96836,-2.17099 6.42857,0.70825 0.57358,1.13099 0.60901,1.78801 0.15081,2.79692 -0.38184,0.84079 -1.04842,1.37442 -2.07046,1.6575 -0.79137,0.2192 -0.83372,0.21996 -1.63246,0.0295 l 0,0 z"
-           id="path3968"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 528.23342,581.65491 c -2.95847,-0.24859 -5.68069,-0.96254 -7.30933,-1.91699 -2.04429,-1.19803 -2.03158,-3.19535 0.029,-4.56023 1.63138,-1.08059 3.62446,-1.27042 5.1528,-0.49079 1.08779,0.55489 1.69809,1.19111 2.30254,2.40032 0.77892,1.55823 1.29809,4.72976 0.76246,4.65773 -0.12277,-0.0165 -0.54464,-0.057 -0.9375,-0.09 l 0,0 z"
-           id="path3970"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 547.83969,593.55222 c -2.8765,-0.19336 -4.74737,-0.60353 -6.28835,-1.37866 -1.53109,-0.77015 -2.05981,-1.3721 -2.05981,-2.34512 0,-1.36876 1.57152,-2.61548 3.87807,-3.07655 1.99914,-0.39963 4.55183,0.65385 5.79345,2.39092 0.77801,1.08846 1.4118,2.40947 1.7173,3.57938 l 0.26559,1.01706 -0.65269,-0.0263 c -0.35898,-0.0145 -1.55308,-0.0868 -2.65356,-0.16077 z"
-           id="path3972"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 566.61327,598.96201 c -1.8749,-1.25848 -2.86609,-2.1309 -3.18534,-2.80367 -0.61428,-1.2945 0.0586,-1.62232 3.27296,-1.59462 2.06846,0.0178 2.65684,0.0904 3.99815,0.49326 1.80133,0.54102 3.09704,1.15446 3.5895,1.69941 0.83138,0.92002 -0.70994,1.90296 -4.11484,2.62414 -1.11699,0.23658 -2.09085,0.42994 -2.16415,0.4297 -0.0733,-2.5e-4 -0.70163,-0.38195 -1.39628,-0.84822 l 0,0 z"
-           id="path3974"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 582.05046,594.14104 c -2.10746,-2.23205 -3.113,-3.83933 -3.29638,-5.26897 -0.14421,-1.1243 0.46933,-2.19408 1.62763,-2.83794 2.62929,-1.46154 7.34042,-0.77566 8.87447,1.29201 1.18123,1.59214 0.0389,3.9251 -3.0392,6.20701 -0.93935,0.69637 -2.74261,1.63467 -3.14156,1.63467 -0.0305,0 -0.49176,-0.46205 -1.02496,-1.02678 z"
-           id="path3976"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 548.46266,556.86963 c -1.34182,-0.29183 -2.06152,-0.65078 -2.55005,-1.27185 -0.48568,-0.61744 -0.47228,-1.16317 0.0404,-1.64479 0.48723,-0.45772 1.33952,-0.5068 2.08716,-0.12018 0.60632,0.31354 1.51369,1.56628 1.87386,2.58709 0.29561,0.83785 0.31112,0.83305 -1.45135,0.44973 z"
-           id="path3978"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 553.75398,549.52233 c -2.2967,-0.33533 -3.21428,-0.80743 -3.21428,-1.65373 0,-1.29598 2.65404,-2.28745 4.10906,-1.53503 0.63854,0.3302 1.3508,1.52647 1.51449,2.54365 l 0.12213,0.75893 -1.04249,-0.0243 c -0.57336,-0.0134 -1.24337,-0.0537 -1.48891,-0.0895 z"
-           id="path3980"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 554.42525,543.13205 c -1.52038,-0.54262 -2.11586,-1.31675 -2.12708,-2.76522 -0.0125,-1.6076 1.43167,-3.61463 2.96496,-4.12066 1.34612,-0.44426 2.78204,0.53824 3.73709,2.55706 0.37199,0.78632 1.17511,3.55091 1.18108,4.06568 0.002,0.18956 -2.43338,0.51751 -3.78314,0.5094 -0.71769,-0.004 -1.6055,-0.11513 -1.97291,-0.24626 l 0,0 z"
-           id="path3982"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 560.66181,530.98458 c -0.97049,-0.34612 -1.37211,-0.76914 -1.37211,-1.44521 0,-1.2574 1.93164,-3.21167 3.62523,-3.66771 2.13711,-0.57546 3.32746,0.68072 3.33513,3.51957 l 0.004,1.4515 -1.34658,0.20028 c -1.77534,0.26405 -3.40423,0.24163 -4.24559,-0.0584 z"
-           id="path3984"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 576.70041,525.34223 c -2.15593,-0.2847 -3.73613,-1.07188 -4.2859,-2.13502 -0.92739,-1.79338 0.5891,-4.83909 3.18689,-6.40052 1.3969,-0.83963 2.21139,-1.02014 3.04025,-0.67382 1.63928,0.68493 1.81252,3.84511 0.45222,8.24925 -0.39767,1.28751 -0.27794,1.23948 -2.39346,0.96011 z"
-           id="path3986"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 599.81498,528.75254 c -1.93413,-0.5869 -3.41344,-2.57712 -3.14501,-4.23123 0.34693,-2.1379 2.70189,-3.19845 4.85493,-2.1864 1.7538,0.82438 2.81045,3.00061 2.21719,4.5664 -0.55253,1.4583 -2.38119,2.32032 -3.92711,1.85123 z"
-           id="path3988"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 599.60382,549.91777 c -1.61673,-0.57702 -2.20047,-1.39786 -2.04757,-2.87927 0.23862,-2.31201 2.67933,-5.14464 5.00838,-5.8126 0.72816,-0.20883 1.62589,0.20811 2.02571,0.94082 0.45139,0.82723 0.44342,3.91428 -0.0162,6.26407 l -0.34054,1.74107 -1.98089,-0.008 c -1.17936,-0.005 -2.25119,-0.10431 -2.64891,-0.24626 l 0,0 z"
-           id="path3990"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 600.27184,567.37237 c -5.88629,-1.31023 -8.65784,-2.86498 -8.66005,-4.858 -0.002,-1.81733 2.92055,-3.60406 5.86346,-3.58467 3.92934,0.0259 5.45615,2.90436 4.04507,7.62609 -0.28539,0.95498 -0.37205,1.01166 -1.24848,0.81658 z"
-           id="path3992"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#c87137;fill-opacity:1;stroke:none"
-           d="m 595.14571,579.26652 c -2.22795,-0.39892 -3.86205,-0.9469 -4.75703,-1.59523 -1.14797,-0.83158 -1.19822,-1.64963 -0.16402,-2.67009 0.74011,-0.73027 1.5696,-1.15677 2.94081,-1.51208 1.43342,-0.37144 2.84341,-0.35928 3.62067,0.0312 0.78128,0.39252 1.43213,1.34941 1.43213,2.10553 0,0.67427 -0.58477,2.60267 -1.03111,3.40026 l -0.30818,0.55072 -1.73327,-0.31035 z"
-           id="path3994"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 340.93764,310.80616 c -0.24091,-0.69448 0.12631,-2.88425 0.81603,-4.86616 0.68973,-1.98191 1.80858,-6.30031 2.48633,-9.59645 0.67775,-3.29614 1.4366,-6.33503 1.68633,-6.7531 0.4093,-0.68519 16.59097,15.61504 17.29132,17.41801 0.33877,0.87212 -15.68815,5.06039 -19.36423,5.06039 -1.36277,0 -2.67487,-0.56821 -2.91578,-1.26269 z"
-           id="path4008"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 309.55586,320.48679 c -1.2712,-1.2712 -0.65731,-8.93125 1.40323,-17.50931 1.54596,-6.43587 1.8942,-10.1675 1.39047,-14.89975 -0.42605,-4.00251 -0.30042,-6.31346 0.34323,-6.31346 0.55839,0 2.95003,3.71888 5.31475,8.26416 2.36472,4.54529 5.82464,10.26222 7.68871,12.70429 5.94315,7.78594 3.98735,14.92815 -4.77611,17.44147 -3.94123,1.13033 -10.36972,1.30716 -11.36428,0.3126 z"
-           id="path4010"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 224.66899,335.5696 -3.9063,-0.40329 0.66126,-4.13527 c 0.36369,-2.27439 3.59887,-10.42336 7.18929,-18.10881 3.59043,-7.68545 6.52805,-14.52169 6.52805,-15.19164 0,-2.99673 2.37488,1.49804 4.19149,7.93295 4.31228,15.27523 6.23459,29.29812 4.12714,30.10683 -1.51092,0.57979 -12.35232,0.46396 -18.79093,-0.20077 l 0,0 z"
-           id="path4012"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 258.37479,330.44811 c 0,-5.02074 1.82488,-10.29804 3.56104,-10.29804 2.25955,0 5.53034,5.12348 5.53034,8.66291 0,3.81195 -0.15973,3.95914 -5.3033,4.88725 l -3.78808,0.68352 0,-3.93564 z"
-           id="path4014"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#e9c6af;fill-opacity:1;stroke:none"
-           d="m 274.03757,328.25594 c -0.3631,-1.6532 -0.39877,-3.4288 -0.0793,-3.94578 0.83892,-1.35741 4.19308,-0.2447 6.30846,2.09277 1.75546,1.93976 1.75095,2.06116 -0.12765,3.43483 -3.17367,2.32064 -5.36946,1.75138 -6.10156,-1.58182 z"
-           id="path4016"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 147.46004,329.03941 c -2.11174,-2.11174 -1.35023,-4.47307 4.04289,-12.53646 l 5.25507,-7.85698 1.77624,3.98428 c 2.82072,6.32714 3.3766,12.14579 1.44237,15.0978 -1.38145,2.10835 -2.44742,2.52355 -6.47894,2.52355 -2.65399,0 -5.37093,-0.54549 -6.03763,-1.21219 z"
-           id="path4018"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 342.31628,307.17539 c 0.51972,-2.59863 1.60977,-7.19372 2.42232,-10.21131 l 1.47737,-5.48652 3.85963,3.21909 c 2.12279,1.7705 5.66122,5.29555 7.86316,7.83345 l 4.00355,4.61435 -5.43212,1.38644 c -2.98766,0.76253 -7.61613,1.83257 -10.28549,2.37785 l -4.85338,0.99142 0.94496,-4.72477 0,0 z"
-           id="path4020"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 309.87267,319.08067 c -0.36286,-0.58929 0.20258,-6.53571 1.25652,-13.21429 1.05395,-6.67857 2.11647,-14.25914 2.36115,-16.84571 0.43402,-4.58802 0.61058,-4.42551 7.2306,6.65497 8.18443,13.69899 8.80415,19.0736 2.57094,22.29692 -4.42288,2.28716 -12.29302,2.93705 -13.41921,1.10811 z"
-           id="path4022"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 225.59298,334.83082 c -3.55812,-0.53284 -3.94302,-1.05972 -3.13271,-4.28824 1.74838,-6.96609 12.70654,-31.66796 13.7597,-31.01708 1.564,0.96661 7.00097,25.16595 7.00097,31.16058 l 0,5.1803 -6.78572,-0.21404 c -3.73214,-0.11773 -8.61115,-0.48741 -10.84224,-0.82152 z"
-           id="path4024"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 259.38096,327.95878 c 1.06395,-6.5563 1.74251,-7.28308 4.59197,-4.91825 3.44888,2.86232 2.13783,9.14884 -2.03088,9.73811 -3.20577,0.45316 -3.36741,0.14895 -2.56109,-4.81986 z"
-           id="path4026"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#f4e3d7;fill-opacity:1;stroke:none"
-           d="m 274.64951,327.29496 c 0,-1.57143 0.56414,-2.85715 1.25365,-2.85715 1.87335,0 4.57733,3.69283 3.49586,4.7743 -1.95578,1.95578 -4.74951,0.82807 -4.74951,-1.91715 z"
-           id="path4028"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#d3bc5f;fill-opacity:1;stroke:none"
-           d="m 150.00665,329.16735 c -3.58625,-0.93719 -3.11608,-3.68535 2.07342,-12.11936 l 4.57341,-7.43275 1.79072,4.197 c 2.7663,6.48349 2.38893,13.13101 -0.84363,14.86102 -2.87417,1.53821 -3.45408,1.57594 -7.59392,0.49409 z"
-           id="path4030"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#d3bc5f;fill-opacity:1;stroke:none"
-           d="m 340.90644,768.34518 c -1.39847,-3.7173 -3.01076,-9.26507 -2.76425,-9.51158 0.15059,-0.15059 1.15539,-0.27379 2.23288,-0.27379 2.31729,0 4.43855,1.7794 4.43855,3.72324 0,1.35272 -1.48774,5.05283 -2.64053,6.56721 -0.68568,0.90074 -0.74697,0.8763 -1.26665,-0.50508 z"
-           id="path4032"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#d3bc5f;fill-opacity:1;stroke:none"
-           d="m 333.66775,764.05176 c -0.71211,-1.33059 0.005,-3.15022 1.57219,-3.98891 0.94499,-0.50575 1.04814,-0.46145 0.80957,0.34764 -0.15037,0.50998 -0.42446,1.77955 -0.60908,2.82127 -0.37904,2.13869 -0.93043,2.39375 -1.77268,0.82 z"
-           id="path4034"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3850"
-           d="m 426.62796,773.89785 c 0,-3.5797 -2.35283,-5.15284 -7.70671,-5.15284 -3.66459,0 -8.79263,-5.05712 -14.48607,-14.28572 -2.1813,-3.53571 -6.13369,-9.0878 -8.78308,-12.33795 l -4.81705,-5.9094 -8.17497,2.61913 c -4.49623,1.44051 -14.46906,4.90331 -22.16182,7.6951 -7.69276,2.7918 -15.40704,5.07532 -17.14286,5.07452 -2.94374,-10e-4 -3.15601,-0.64994 -3.15601,-9.64285 0,-8.37666 0.56936,-10.48469 4.34034,-16.06997 2.38719,-3.53572 5.28005,-6.42858 6.42857,-6.42858 2.39795,0 3.69993,-6.10258 1.72363,-8.07888 -0.72644,-0.72644 -6.04704,-2.11213 -11.82357,-3.07932 -10.20027,-1.70787 -10.53851,-1.89641 -11.7433,-6.5458 -1.76571,-6.81414 -0.78256,-8.17767 7.7658,-10.77024 4.17683,-1.26677 13.02744,-5.02114 19.66802,-8.34306 l 12.07377,-6.03984 6.1456,-14.16157 c 3.38008,-7.78887 5.87545,-14.43173 5.54528,-14.76191 -0.33018,-0.33018 0.6647,-1.86536 2.21085,-3.4115 1.75401,-1.75402 2.4879,-3.82968 1.95154,-5.51959 -0.47279,-1.48961 0.4631,-5.79603 2.07974,-9.56977 4.43626,-10.3556 8.63373,-26.15603 8.63373,-32.49969 0,-8.00107 -1.76656,-5.00381 -6.2818,10.65806 -2.15504,7.47514 -8.53396,25.15371 -14.17537,39.28571 -9.88449,24.76109 -10.4568,25.79206 -15.7538,28.37886 -7.39826,3.61297 -12.7778,1.9178 -31.79112,-10.01781 -22.73762,-14.27356 -40.59574,-33.803 -48.56497,-53.11013 -5.25205,-12.7242 -6.34954,-35.19967 -2.71966,-55.69632 4.16941,-23.54318 25.87958,-83.56852 41.46566,-114.64628 4.41645,-8.80614 11.13203,-23.80319 14.92352,-33.32676 6.41861,-16.12246 20.0404,-56.64866 20.0404,-59.62223 0,-0.72557 -1.577,-0.92341 -3.50443,-0.43965 -2.03972,0.51192 -5.41543,-0.0737 -8.07663,-1.40136 -5.67393,-2.83053 -7.87107,-2.92057 -5.639,-0.23109 1.42579,1.71797 -0.21486,2.65513 -10.1337,5.78849 -6.50919,2.05626 -16.35673,4.32041 -21.88343,5.03147 -5.52668,0.71106 -14.86996,2.25764 -20.76281,3.43687 -14.4203,2.88566 -32.315,4.7573 -56.72438,5.93292 -19.48135,0.93825 -32.27409,-0.0452 -50.41848,-3.87598 -3.53571,-0.74647 -8.45041,-1.58924 -10.92155,-1.8728 -2.47114,-0.28355 -5.80387,-1.21712 -7.40608,-2.07461 -1.60221,-0.85747 -5.45355,-1.55904 -8.55854,-1.55904 -5.08662,0 -5.88912,-0.51356 -8.10742,-5.18827 -2.56384,-5.40289 -2.22009,-13.88376 0.68029,-16.78415 2.64504,-2.64503 45.91061,-1.67765 62.17044,1.39007 9.95679,1.87855 20.56266,2.68406 35,2.65826 20.16534,-0.036 21.35788,-0.2132 45,-6.6843 13.35715,-3.65598 36.17857,-9.60451 50.71429,-13.21893 31.74723,-7.89421 35.99164,-9.19774 35.43048,-10.88122 -0.60311,-1.80933 -23.09771,-28.22834 -24.13172,-28.34175 -0.46426,-0.0509 -1.66078,3.55667 -2.65892,8.01686 -0.99814,4.46019 -3.08131,11.04948 -4.62926,14.64286 l -2.81444,6.53342 -3.49341,-4.28571 c -1.92139,-2.35714 -7.17266,-11.51501 -11.6695,-20.35082 -4.49685,-8.8358 -8.97966,-16.06795 -9.9618,-16.07143 -1.32377,-0.005 -1.78572,4.17654 -1.78572,16.16296 0,20.67026 -2.48255,29.67311 -10.21525,37.045 -7.69529,7.33624 -11.47126,7.10146 -17.23205,-1.07142 -2.4922,-3.53572 -5.06416,-6.42858 -5.71547,-6.42858 -0.65131,0 -1.91646,1.60715 -2.81145,3.57143 -0.89499,1.96429 -2.12523,3.57143 -2.73386,3.57143 -0.60864,0 -2.91617,-2.55659 -5.12784,-5.68132 -2.21167,-3.12473 -4.66408,-5.48661 -5.44979,-5.24862 -0.78572,0.23799 -2.49761,4.79577 -3.80422,10.1284 -1.3066,5.33263 -3.03159,10.35163 -3.8333,11.15334 -1.82126,1.82127 -4.9364,-8.70131 -8.10955,-27.3931 -1.25766,-7.40844 -3.1632,-15.12272 -4.23454,-17.14286 l -1.94787,-3.67298 -3.55272,7.85714 c -1.95399,4.32143 -5.54561,12.67857 -7.98136,18.57143 -2.43576,5.89286 -5.86719,13.24416 -7.6254,16.33623 l -3.19676,5.62194 -16.42857,-0.34518 c -25.75685,-0.54119 -31.77622,-3.27892 -35.62631,-16.20355 -1.0033,-3.36805 -2.63149,-7.67511 -3.6182,-9.57124 -1.78703,-3.43408 -1.8141,-3.4177 -6.94685,4.204 l -5.15283,7.65152 -2.45539,-5.63258 c -3.23724,-7.42608 -3.28794,-25.83647 -0.1001,-36.34685 3.74512,-12.34779 12.15789,-25.20747 25.32825,-38.71653 16.74484,-17.17545 19.40291,-17.92917 56.42858,-16.00098 l 27.14285,1.41353 5.13206,-3.38632 c 9.56469,-6.31112 50.96559,-19.83112 53.36851,-17.42818 0.43892,0.43891 0.0684,2.8908 -0.82318,5.44865 -3.53536,10.14152 4.03056,21.52916 14.30098,21.52475 11.02945,-0.005 22.1994,-10.09156 21.30322,-19.23749 -0.37896,-3.86755 -1.6108,-4.90083 -11.49587,-9.64283 -13.8664,-6.65188 -14.36669,-9.68889 -1.59605,-9.68889 3.9019,0 5.99966,1.13922 9.86298,5.35625 4.19951,4.58402 5.29165,5.11601 7.57515,3.68994 2.26956,-1.41736 3.90289,-0.69726 10.93217,4.81979 8.123,6.37546 8.46166,6.49166 19.852,6.81149 7.8395,0.22012 13.34429,1.18411 17.01723,2.98005 5.23385,2.55915 5.31096,2.70072 2.14286,3.9343 -3.17296,1.23548 -3.18776,1.31766 -0.4292,2.38164 1.6016,0.61775 3.66983,0.45174 4.70653,-0.37777 4.5849,-3.66861 20.01134,17.69068 23.9655,33.18239 3.29037,12.8911 2.21001,22.03629 -4.09542,34.66756 -5.264,10.54504 -14.75145,24.07359 -17.51361,24.97337 -0.82964,0.27025 -2.5871,-1.77061 -3.90546,-4.53525 -2.36503,-4.95951 -5.3004,-6.74019 -5.3004,-3.21538 0,0.99618 1.59996,4.16578 3.55546,7.04356 l 3.55546,5.23233 -9.62689,8.77226 c -5.29478,4.82474 -12.03828,10.17298 -14.98557,11.885 -6.73454,3.91197 -7.53131,6.43174 -5.32351,16.83537 1.54585,7.2844 1.47461,8.80251 -0.55873,11.90579 -3.309,5.05015 -2.88533,6.10515 0.98977,2.4647 1.82614,-1.71559 3.75471,-2.68479 4.28571,-2.15379 1.8008,1.8008 0.97693,11.2657 -1.25841,14.4571 -1.22313,1.74626 -1.62297,3.17501 -0.88854,3.17501 0.73444,0 2.26187,-1.39544 3.39431,-3.10098 1.13244,-1.70554 2.7171,-2.69424 3.52146,-2.19712 0.80437,0.49713 2.93738,5.91043 4.74004,12.02956 4.4994,15.27329 14.11453,34.99907 22.4835,46.12569 3.84136,5.10714 13.97214,19.57143 22.51284,32.14285 53.45682,78.68539 68.59855,99.78142 75.64649,105.39352 12.14163,9.66807 26.52131,18.44436 39.87731,24.33814 10.87245,4.79783 14.11867,5.59646 22.43053,5.51824 9.59119,-0.0903 9.78983,-0.0144 15.18356,5.79055 9.89218,10.64655 13.59838,13.95955 15.6163,13.95955 3.71671,0 2.12408,-5.77188 -2.28492,-8.28072 -2.35217,-1.33846 -4.28074,-3.26635 -4.28571,-4.2842 -0.004,-1.01786 -1.57466,-3.41629 -3.48821,-5.32985 -1.91356,-1.91355 -2.96406,-3.79757 -2.33445,-4.18668 0.62962,-0.38913 0.84662,-2.26707 0.48223,-4.1732 -0.43234,-2.26166 0.36174,-4.48997 2.28566,-6.41389 4.27507,-4.27507 9.85228,-15.92446 10.73771,-22.42834 0.42062,-3.08957 1.51543,-10.97616 2.43295,-17.52574 2.76804,-19.7594 -1.2281,-37.2384 -8.9889,-39.31722 -18.20165,-4.87553 -41.76129,9.1535 -48.71912,29.0107 -1.72214,4.91493 -3.77208,9.03106 -4.55541,9.14697 -3.10375,0.45926 -5.35095,-23.32915 -3.91532,-41.4467 1.58292,-19.9762 2.99122,-23.22124 15.91213,-36.66521 11.47387,-11.93839 17.59143,-14.73782 22.17969,-10.14956 1.65684,1.65684 1.86991,2.93742 0.81633,4.90607 -1.82236,3.40512 -1.86198,10.43295 -0.0524,9.31463 0.75528,-0.4668 1.80063,-3.12687 2.32298,-5.9113 1.59443,-8.49907 10.22369,-10.09738 17.56906,-3.25413 2.88417,2.68702 3.23589,4.03877 2.52339,9.69815 l -0.82789,6.57594 2.87646,-5.42927 c 3.4244,-6.4635 5.97707,-7.74125 10.29765,-4.34267 3.32438,2.61494 3.33286,2.69191 0.7638,6.92242 -1.42887,2.35295 -2.58101,5.24238 -2.56031,6.42095 0.0503,2.86428 7.09019,-5.10475 7.09019,-8.02597 0,-2.73246 11.67052,3.37054 19.87555,10.39372 5.64592,4.8327 16.83252,21.15565 23.34287,34.06082 5.00816,9.92743 10.99802,27.7589 11.0432,32.87504 0.0207,2.3473 0.41746,10.51609 0.8816,18.15286 0.86566,14.24328 -1.60147,35.96273 -3.69945,32.56813 -0.60147,-0.9732 -0.79495,-2.91146 -0.42993,-4.30723 0.97224,-3.7179 -2.50517,-5.23223 -4.80199,-2.09116 -2.93063,4.00787 -2.3808,10.00913 1.13065,12.34064 3.03804,2.01718 3.00518,2.11863 -5.35715,16.54379 -4.62765,7.9828 -9.2175,14.54073 -10.19964,14.57319 -0.98214,0.0324 -1.78571,1.3876 -1.78571,3.01141 0,1.85214 -5.72296,8.65429 -15.35715,18.25306 l -15.35721,15.30067 -30.71429,15.92153 c -16.89285,8.75684 -34.61344,17.2241 -39.3791,18.81613 -9.3854,3.13531 -25.40878,6.09742 -28.18431,5.21018 -0.94726,-0.3028 -12.3096,-0.94238 -25.24963,-1.42128 -26.85853,-0.99403 -27.94664,-1.43743 -29.40626,-11.98292 -0.50404,-3.64164 -1.80185,-11.12118 -2.88403,-16.62118 -1.08217,-5.5 -2.96961,-18.67858 -4.19432,-29.28572 -3.42215,-29.63883 -13.96832,-71.49593 -17.19969,-68.26456 -0.41163,0.41163 1.48474,14.17169 4.21416,30.57792 6.31917,37.98393 9.19667,58.5393 10.043,71.74188 0.36961,5.76612 1.27361,11.2304 2.00887,12.14286 0.73527,0.91247 1.7869,4.38782 2.33696,7.72299 0.55005,3.33517 1.59621,6.43235 2.32478,6.88264 0.72859,0.45029 2.60516,3.32863 4.17019,6.39633 1.56503,3.06771 4.8046,7.80894 7.19907,10.53608 2.39446,2.72715 4.72463,7.24502 5.17814,10.03973 0.7125,4.39059 0.43979,5.08127 -2.0063,5.08127 -4.29298,0 -11.92337,-2.97674 -11.08938,-4.32615 0.40474,-0.65489 0.0826,-1.5945 -0.71599,-2.08802 -0.79853,-0.49351 -1.45187,-0.2767 -1.45187,0.48183 0,0.75853 -1.28572,1.04293 -2.85714,0.63199 -1.57143,-0.41095 -2.85715,-1.20516 -2.85715,-1.76492 0,-1.74535 -13.72065,-7.53875 -16.55945,-6.99205 -1.97618,0.38057 -2.95056,2.23061 -3.65046,6.9311 -0.90596,6.08422 -9.37846,29.98337 -10.62943,29.98337 -0.32407,0 -0.58923,-1.53837 -0.58926,-3.41859 z m 15.28712,-78.87133 c 0.6525,-1.95748 -3.40626,-7.20998 -4.6276,-5.98865 -1.55372,1.55371 0.66714,8.55064 2.51817,7.93362 0.90405,-0.30135 1.8533,-1.17658 2.10943,-1.94497 z M 382.2049,674.93277 c 4.51635,-6.81843 4.86019,-9.51456 0.78175,-6.12976 -2.97337,2.46767 -8.2382,12.79914 -6.52235,12.79914 0.72765,0 3.31092,-3.00123 5.7406,-6.66938 z m 51.54405,-10.91493 c -0.0261,-7.16753 -2.12872,-11.63347 -3.63229,-7.71525 -1.29381,3.37165 0.65003,15.55903 2.31727,14.52862 0.73529,-0.45444 1.32705,-3.52046 1.31502,-6.81337 z M 394.4041,646.99857 c 2.60899,-3.72486 2.95895,-8.73669 0.55406,-7.93506 -2.0358,0.6786 -5.8391,11.11007 -4.05071,11.11007 0.70004,0 2.27353,-1.42876 3.49665,-3.17501 z m 172.22386,-3.87485 c 0,-5.2489 -2.31401,-11.52157 -4.25036,-11.52157 -1.90507,0 -1.89428,9.38372 0.0149,12.95106 2.17376,4.0617 4.23546,3.36587 4.23546,-1.42949 z m -134.28571,-5.17731 c 0,-3.48934 -0.64286,-6.34426 -1.42857,-6.34426 -0.78572,0 -1.42858,3.25223 -1.42858,7.22717 0,4.45433 0.5481,6.88842 1.42858,6.34426 0.78571,-0.4856 1.42857,-3.73783 1.42857,-7.22717 z m 92.23305,4.43286 c 2.53533,-3.86939 1.70619,-6.81698 -1.56452,-5.56189 -1.17506,0.45091 -2.0971,2.62186 -2.0971,4.93761 0,5.04666 0.6872,5.16382 3.66162,0.62428 z m 94.9098,-11.44115 c 0,-2.54457 -4.96301,-5.40444 -8.27274,-4.76704 -2.10014,0.40446 -1.99904,0.87357 0.78914,3.66176 3.64163,3.64163 7.4836,4.20907 7.4836,1.10528 z m -122.70325,-5.49365 c 0.56317,-2.10578 0.48191,-4.16366 -0.18055,-4.57308 -1.45921,-0.90185 -2.1353,0.1914 -3.40957,5.51343 -1.2858,5.37019 2.14257,4.4722 3.59012,-0.94035 z m -93.76295,-7.66082 c 0.53998,-3.60073 1.32025,-7.42888 1.73396,-8.507 0.41372,-1.07811 0.12529,-1.96021 -0.64096,-1.96021 -1.49502,0 -6.0852,14.80131 -6.00994,19.37943 0.0843,5.1308 3.82886,-1.6563 4.91694,-8.91222 z m 29.15433,-2.25293 c 0.17182,-5.446 -1.67341,-7.20485 -3.24957,-3.09744 -1.18524,3.0887 -1.09206,11.2221 0.16509,14.40917 0.8564,2.17109 1.19263,1.8868 1.97384,-1.66887 0.51789,-2.35714 1.01767,-6.69643 1.11064,-9.64286 z m 98.45473,11.5 c 2.04986,-2.04985 2.28539,-6.85714 0.33597,-6.85714 -1.5025,0 -4.33597,4.60634 -4.33597,7.04894 0,2.02133 1.87687,1.93133 4,-0.1918 z m 31.71429,-12.69047 c 0,-6.31287 -0.48856,-8.52998 -1.78572,-8.10386 -3.46638,1.13873 -2.42075,16.79433 1.12169,16.79433 0.36521,0 0.66403,-3.91071 0.66403,-8.69047 z m -270.59813,-2.14054 c 1.03368,-5.51004 -0.22596,-8.14486 -2.31482,-4.8419 -1.76507,2.79098 -1.76468,11.79803 4.8e-4,10.70711 0.75528,-0.4668 1.79672,-3.10614 2.31434,-5.86521 z m 213.31241,2.14728 c 3.34886,-4.52957 3.22052,-6.54048 -0.33044,-5.17785 -2.16697,0.83155 -5.82579,9.57587 -4.00676,9.57587 0.59709,0 2.54882,-1.9791 4.3372,-4.39802 z m 35.97537,-6.59208 c 3.17853,-7.41522 3.20679,-7.58133 1.28935,-7.58133 -2.146,0 -7.11036,8.77859 -7.11652,12.58431 -0.007,4.75969 2.60332,2.51796 5.82717,-5.00298 z m 32.73892,5.23098 c 0,-1.71024 -4.02946,-3.54475 -5.20466,-2.36955 -1.25101,1.25101 0.87093,3.84295 3.14612,3.84295 1.1322,0 2.05854,-0.66302 2.05854,-1.4734 z M 279.4851,600.80355 c 0,-2.07337 -0.61834,-3.27357 -1.42857,-2.77283 -0.78571,0.4856 -1.42857,2.13069 -1.42857,3.65575 0,1.52505 0.64286,2.77282 1.42857,2.77282 0.78572,0 1.42857,-1.64508 1.42857,-3.65574 z m 236.37778,-1.98523 c 5.48505,-7.91495 3.77798,-10.8071 -1.81866,-3.08117 -2.47893,3.42206 -4.15947,6.78449 -3.73453,7.47204 1.14784,1.85725 1.31461,1.72538 5.55319,-4.39087 z m -222.09206,-10.7814 c 0,-6.00314 0.18606,-6.27328 4.64286,-6.7412 l 4.64285,-0.48745 -6.11728,-1.98578 c -4.66449,-1.51418 -6.51352,-1.58954 -7.78572,-0.31734 -1.27218,1.27219 -1.11618,1.66843 0.65693,1.66843 1.97226,0 2.19874,1.22674 1.49152,8.07913 -0.61105,5.92034 -0.3926,7.80643 0.8175,7.05856 0.90824,-0.56133 1.65134,-3.83479 1.65134,-7.27435 z m 51.42857,-0.006 c -1.91394,-2.30617 -11.42857,-2.99994 -11.42857,-0.83333 0,1.80703 2.7051,2.73034 8.3892,2.8634 4.12598,0.0966 4.56241,-0.19491 3.03937,-2.03007 z m 26.5756,-10.22924 c 1.08584,-4.5882 2.30669,-16.05485 2.71297,-25.48143 l 0.73873,-17.13925 3.91493,-1.22671 c 2.1532,-0.6747 12.05778,-1.31919 22.01018,-1.4322 16.44723,-0.18674 21.58299,-1.00339 19.48765,-3.09873 -0.94972,-0.94971 -33.13103,-13.3399 -39.45379,-15.19017 -2.60041,-0.76097 -5.49327,-1.09313 -6.42857,-0.7381 -1.70166,0.6459 2.35573,2.60387 15.08516,7.27961 3.73214,1.37089 6.78571,3.09262 6.78571,3.82606 0,1.64753 -7.31854,5.00796 -15.19073,6.9751 -3.24775,0.81156 -6.66137,2.38692 -7.58581,3.5008 -0.92443,1.11387 -2.06253,7.9174 -2.5291,15.11893 -0.60147,9.28391 -1.42899,13.31654 -2.84402,13.85954 -4.47347,1.71663 -14.36078,-12.68123 -17.6261,-25.66707 -2.28095,-9.0711 -5.13647,-8.84778 -13.7001,1.07143 -8.22145,9.52289 -10.52414,9.9712 -10.52414,2.04894 0,-8.05877 -1.7975,-10.71208 -11.50938,-16.98918 -6.18495,-3.99752 -7.97505,-5.83476 -6.68338,-6.85939 2.86616,-2.2736 11.12242,-4.36933 21.0499,-5.34323 20.83302,-2.04374 24.94299,-5.1365 26.1785,-19.69944 0.48065,-5.6653 2.84678,-20.83019 5.25805,-33.69974 2.41127,-12.86955 4.13037,-23.65295 3.82023,-23.96309 -0.31016,-0.31016 -1.32648,0.35492 -2.25849,1.47793 -1.63287,1.96747 -10.60386,41.17586 -12.79479,55.92054 -0.58671,3.94849 -1.59384,8.03193 -2.23808,9.07433 -1.93379,3.12893 -9.8575,5.71992 -20.27847,6.6309 -8.26223,0.72226 -29.12463,4.8953 -36.06212,7.21337 -3.65498,1.22127 1.0193,4.53479 12.09617,8.57475 5.88893,2.14781 11.63939,5.23607 12.77879,6.8628 2.68426,3.83231 2.63459,18.85472 -0.0999,30.17908 -1.13831,4.71429 -2.0797,11.30357 -2.09197,14.64286 -0.0187,5.11161 -0.474,6.07143 -2.87946,6.07143 -1.57142,0 -2.85714,0.64285 -2.85714,1.42857 0,0.78571 2.37857,1.42857 5.28572,1.42857 4.05171,0 4.89342,-0.39229 3.60541,-1.6803 -0.98144,-0.98144 -1.16677,-2.31829 -0.44561,-3.21429 0.67908,-0.84368 4.57634,-8.0438 8.66058,-16.00025 7.29933,-14.21972 18.24234,-27.52565 21.15637,-25.72467 0.76236,0.47115 2.09937,3.68924 2.97112,7.15128 0.87175,3.46204 3.7993,8.94496 6.50565,12.18426 3.36955,4.03308 5.4529,8.4736 6.60912,14.08681 4.1242,20.02239 5.88791,21.25327 9.3701,6.53935 z m 297.11199,4.39822 c 1.04665,-5.57915 0.29627,-7.18944 -2.52112,-5.4102 -1.03441,0.65325 -4.45218,1.19978 -7.59504,1.21448 -7.73077,0.0361 -8.09757,4.11447 -0.42737,4.75164 3.75721,0.31213 5.54367,1.24814 6.17428,3.23504 1.23923,3.90447 3.25342,2.15687 4.36925,-3.79096 z m -390.3011,0.68429 c 1.05582,-5.27916 -0.5117,-8.82441 -2.10394,-4.75844 -1.51077,3.85741 -1.52965,9.1904 -0.0326,9.1904 0.6875,0 1.64891,-1.9946 2.13649,-4.43245 z m 366.61351,-4.17483 c 0,-1.73836 -6.09591,-4.25036 -10.31441,-4.25036 -2.89506,0 -2.90719,0.0866 -0.39988,2.85715 2.66976,2.95005 10.71429,3.99611 10.71429,1.39321 z M 502.8413,575.12782 c -0.44261,-1.1534 -1.72287,-2.0971 -2.84501,-2.0971 -1.60699,0 -1.711,0.61526 -0.48977,2.89716 1.71937,3.21267 4.60861,2.51951 3.33478,-0.80006 z m 165.64228,-12.90013 c 0.15845,-5.5902 -1.42466,-7.89845 -3.33999,-4.86988 -1.54889,2.44914 -1.77726,8.67088 -0.44564,12.14101 0.86917,2.26503 1.01221,2.26405 2.28801,-0.0157 0.74849,-1.33747 1.4224,-4.60242 1.49762,-7.25544 z m -373.5135,4.30725 c 2.23495,-4.90517 2.15864,-11.05073 -0.12786,-10.29476 -1.7974,0.59427 -4.13126,13.9334 -2.43783,13.9334 0.49929,0 1.65383,-1.63739 2.56566,-3.63864 z m -15.48498,-2.15996 c 0,-1.6178 -0.64285,-2.54414 -1.42857,-2.05854 -0.78571,0.4856 -1.42857,1.80925 -1.42857,2.94145 0,1.1322 0.64286,2.05855 1.42857,2.05855 0.78572,0 1.42857,-1.32366 1.42857,-2.94146 z m 382.59253,0.44146 c -0.69903,-3.68606 -7.19661,-3.95173 -10.38847,-0.42476 -2.63181,2.90811 -2.60844,2.92476 4.10786,2.92476 5.6613,0 6.67798,-0.40469 6.28061,-2.5 z m -16.2808,0.2043 c 4.16,-1.59635 2.31856,-3.41859 -3.45458,-3.41859 -5.49083,0 -7.652,1.83717 -3.92857,3.3396 2.58225,1.04197 4.81152,1.06582 7.38315,0.079 z m -364.568,-7.34716 c 0.80085,-3.08777 -0.11458,-6.07143 -1.86277,-6.07143 -0.72024,0 -1.30953,1.92857 -1.30953,4.28572 0,4.64475 2.12112,5.83874 3.1723,1.78571 z m 208.25627,0.82677 c 0,-2.37181 -4.3635,-6.8982 -6.64998,-6.8982 -2.51116,0 -2.42713,1.49943 0.30241,5.39642 2.35815,3.36672 6.34757,4.31058 6.34757,1.50178 z m -148.84524,-4.1482 c -0.28154,-0.84464 -0.97797,-1.4875 -1.54761,-1.42857 -0.56965,0.0589 -2.48215,0.15233 -4.25,0.20756 -3.067,0.0959 -3.08337,0.15665 -0.35715,1.32815 4.04509,1.73823 6.75418,1.69108 6.15476,-0.10714 z m -34.36787,-4.53571 c -0.60821,-1.82822 -16.44089,-4.75077 -17.88944,-3.30222 -1.5207,1.52072 1.24153,2.8297 7.94831,3.76662 10.36246,1.44761 10.57393,1.43773 9.94113,-0.4644 z m 8.9274,0.35714 c -2.79504,-1.8063 -5.71429,-1.8063 -5.71429,0 0,0.78571 1.76786,1.41873 3.92858,1.4067 3.06134,-0.017 3.45552,-0.32759 1.78571,-1.4067 z m 352.14286,-5.71429 c 0,-2.61904 -0.80357,-5.02975 -1.78572,-5.35714 -1.2381,-0.4127 -1.78571,1.23016 -1.78571,5.35714 0,4.12699 0.54761,5.76985 1.78571,5.35715 0.98215,-0.32739 1.78572,-2.7381 1.78572,-5.35715 z M 439.4851,543.69475 c 0,-2.98227 -2.49161,-2.58776 -4.23545,0.67063 -2.14675,4.01123 -1.83796,4.67236 1.37831,2.95106 1.57143,-0.841 2.85714,-2.47076 2.85714,-3.62169 z m -155.69478,-3.16403 c 0.0114,-1.375 0.36743,-4.10714 0.79266,-6.07143 0.56222,-2.59718 0.16721,-2.26017 -1.44809,1.23545 -2.58457,5.5932 -2.77289,7.33598 -0.79264,7.33598 0.78571,0 1.43734,-1.125 1.44807,-2.5 z m 14.26621,-8.05875 c 0,-7.68189 -2.27311,-4.95518 -3.44313,4.13018 -0.84787,6.58402 -0.74917,6.9259 1.26165,4.36982 1.19981,-1.52518 2.18148,-5.35018 2.18148,-8.5 z m 177.14286,8.73377 c 0,-2.41296 -4.08474,-8.17502 -5.79529,-8.17502 -2.00805,0 -1.63495,2.51907 0.95959,6.47883 2.49386,3.80612 4.8357,4.62754 4.8357,1.69619 z m -20,-13.98657 c 0,-2.21755 -2.6889,-1.49955 -5.71429,1.52584 -4.36521,4.36521 -3.40008,6.29546 1.42858,2.85714 2.35714,-1.67843 4.28571,-3.65078 4.28571,-4.38298 z m -97.14286,-2.75988 c 0,-0.78571 -2.73214,-1.41872 -6.07143,-1.4067 -4.44637,0.016 -5.49787,0.39255 -3.92857,1.4067 2.8207,1.82288 10,1.82288 10,0 z m 17.14286,-3.41858 c 0,-2.04287 -2.95506,-3.72427 -6.54541,-3.72427 -2.50046,0 -2.69093,3.77931 -0.2403,4.76817 3.51048,1.41651 6.78571,0.91266 6.78571,-1.0439 z m 85.71429,-0.70887 c 0,-2.12995 -5.40396,-8.07952 -6.41975,-7.06792 -1.12963,1.12496 3.33029,8.33823 5.15547,8.33823 0.69535,0 1.26428,-0.57164 1.26428,-1.27031 z m -100.78572,-2.85485 c -2.0981,-1.96028 -7.78571,-3.36544 -7.78571,-1.92348 0,2.18136 1.74834,3.1915 5.52381,3.1915 2.17413,0 3.0772,-0.50626 2.2619,-1.26802 z m -11.35714,-1.58912 c 0.5396,-0.8731 -1.51066,-1.38953 -5.27283,-1.32816 -4.74989,0.0774 -5.50323,0.3808 -3.2986,1.32816 3.95354,1.6989 7.52146,1.6989 8.57143,0 z m 81.32428,-3.6021 c 3.24338,-2.45378 1.76082,-4.83479 -1.66491,-2.67389 -2.60481,1.64307 -4.13729,4.87293 -2.27841,4.80199 0.65475,-0.025 2.42925,-0.98265 3.94332,-2.1281 z m -59.39068,-43.73193 c 3.30956,-23.67659 5.7217,-43.34402 5.36031,-43.7054 -2.14247,-2.14246 -12.25891,53.21343 -13.309,72.82514 -1.40705,26.27851 1.89695,14.17443 7.94869,-29.11974 z m 237.35211,37.24971 c 0,-1.6178 -0.64285,-2.54414 -1.42857,-2.05854 -0.78571,0.4856 -1.42857,1.80926 -1.42857,2.94146 0,1.1322 0.64286,2.05854 1.42857,2.05854 0.78572,0 1.42857,-1.32366 1.42857,-2.94146 z m -296.54578,-1.15458 c 0.86678,-1.40252 -11.62796,-3.46122 -13.60206,-2.24116 -0.7044,0.43534 -1.28073,1.39646 -1.28073,2.1358 0,1.68924 13.84332,1.78724 14.88279,0.10528 z m 125.74258,-1.01913 c 3.20765,-3.20765 1.15733,-5.64813 -2.19577,-2.61363 -1.49341,1.35154 -2.71531,3.00056 -2.71531,3.6645 0,1.927 2.4595,1.40071 4.91108,-1.05087 z m -109.1968,-0.59912 c -2.82437,-1.82525 -11.42857,-1.82525 -11.42857,0 0,0.78572 3.05357,1.41873 6.78572,1.4067 4.90781,-0.0159 6.1927,-0.40511 4.64285,-1.4067 z m 15.71429,-1.42857 c 0,-0.78571 -1.60714,-1.42857 -3.57143,-1.42857 -1.96429,0 -3.57143,0.64286 -3.57143,1.42857 0,0.78572 1.60714,1.42857 3.57143,1.42857 1.96429,0 3.57143,-0.64285 3.57143,-1.42857 z m 61.49406,-1.55093 c 0.87701,-1.63871 1.1685,-3.40555 0.64774,-3.92631 -0.96914,-0.96916 -4.99894,3.66633 -4.99894,5.75028 0,2.27006 2.78491,1.10265 4.3512,-1.82397 z m 42.79165,1.05806 c 0,-1.0568 -1.28571,-3.085 -2.85714,-4.50713 -3.21201,-2.90683 -3.84156,-0.82324 -1.08493,3.59082 2.04157,3.26907 3.94207,3.71082 3.94207,0.91631 z m 151.19926,-6.00291 c 1.04613,-3.30616 1.06182,-10.11622 -2.00564,-3.86136 -0.47346,2.16071 -1.10839,4.73214 -1.41096,5.71428 -1.02159,3.31603 1.74513,1.81556 3.4166,-1.85292 z m 13.44261,0.0331 c 0.77878,-4.07383 -1.02601,-6.14647 -2.34932,-2.698 -1.25185,3.26226 -1.05979,6.30353 0.39805,6.30353 0.69413,0 1.5722,-1.62249 1.95127,-3.60553 z m -308.10711,-8.79116 c 0.54424,-4.72137 0.35806,-6.21477 -0.59171,-4.74617 -0.76222,1.17857 -1.80315,5.35714 -2.31319,9.28571 -0.69006,5.3151 -0.53864,6.52958 0.59171,4.74618 0.83548,-1.31818 1.87642,-5.49675 2.31319,-9.28572 z m 116.06999,0.44029 c 0.5388,-2.71712 -2.6904,-3.1008 -5.17618,-0.61503 -0.94285,0.94286 -1.71428,2.94984 -1.71428,4.45996 0,2.52628 0.25683,2.57542 3.21428,0.61502 1.76786,-1.17185 3.42215,-3.17882 3.67618,-4.45995 z m 155.08358,0.42893 c 2.78899,-4.72139 2.21276,-7.06875 -1.06703,-4.34676 -2.1016,1.74417 -4.05858,8.73137 -2.4455,8.73137 0.50736,0 2.08799,-1.97309 3.51253,-4.38461 z m 12.2898,-3.82968 c -0.017,-3.06134 -0.32758,-3.45552 -1.4067,-1.78571 -1.8063,2.79504 -1.8063,5.71429 0,5.71429 0.78572,0 1.41873,-1.76786 1.4067,-3.92858 z m -152.83527,-0.9132 c 0,-2.68664 -5.22337,-8.97367 -6.44479,-7.75715 -1.11001,1.10555 3.60999,9.74175 5.32423,9.74175 0.6163,0 1.12056,-0.89307 1.12056,-1.9846 z m 157.77614,-9.76184 c 1.22312,-1.74624 2.22386,-3.99624 2.22386,-5 0,-3.4067 -2.3187,-1.84443 -4.7123,3.17502 -2.64846,5.55387 -0.98029,6.77728 2.48844,1.82498 z m -170.22518,-6.84724 c -0.79562,-3.04246 -2.9681,-5.0368 -4.17356,-3.83133 -0.85723,0.85723 2.6103,6.71073 3.97536,6.71073 0.52315,0 0.61234,-1.29573 0.1982,-2.8794 z m -13.14062,-19.05946 c -3.71273,-3.71273 -3.97935,-0.91831 -0.48177,5.04919 2.3589,4.0247 2.52719,4.08673 2.98177,1.09901 0.27759,-1.82444 -0.78195,-4.43017 -2.5,-6.1482 z m -34.69605,-32.63257 c 0.94285,-0.94286 1.6929,-3.03214 1.66675,-4.64286 -0.0456,-2.80715 -0.16401,-2.78874 -2.85714,0.44397 -4.1405,4.97009 -3.13336,8.52263 1.19039,4.19889 z m -4.80363,-17.84736 c 3.61081,-5.31378 3.85377,-7.8582 0.48101,-5.03747 -2.90274,2.42762 -7.12641,10.3134 -5.52394,10.3134 0.80181,0 3.07113,-2.37417 5.04293,-5.27593 z m 17.39061,-2.89507 c -1.2252,-1.2209 -6.58698,4.66053 -6.58698,7.22537 0,0.87725 1.73377,-0.13871 3.85281,-2.25783 2.11904,-2.11905 3.34943,-4.35444 2.73417,-4.96754 z m -19.54781,-11.30737 c 3.09265,-3.93167 3.89565,-7.66449 1.64877,-7.66449 -1.2669,0 -7.25937,8.68882 -7.25937,10.52576 0,2.09507 2.8587,0.6372 5.6106,-2.86127 z m -185.63248,-29.4502 c -0.0157,-5.36921 -0.41531,-6.8912 -1.40669,-5.35714 -1.82704,2.82714 -1.82704,12.85714 0,12.85714 0.78571,0 1.41872,-3.375 1.40669,-7.5 z m -15.09857,-1.98697 c 1.08136,-2.81797 -0.25748,-7.65589 -2.11868,-7.65589 -0.73276,0 -1.3323,2.25 -1.3323,5 0,5.2215 1.90413,6.68692 3.45098,2.65589 z m -13.45098,-5.59734 c 0,-4.99975 -2.27365,-6.66993 -3.77033,-2.76963 -1.14615,2.98681 0.69523,9.58584 2.38364,8.54234 0.76268,-0.47136 1.38669,-3.06909 1.38669,-5.77271 z m 173.57143,3.65574 c -0.4856,-0.78572 -1.48783,-1.42857 -2.22717,-1.42857 -0.73935,0 -1.34426,0.64285 -1.34426,1.42857 0,0.78571 1.00223,1.42857 2.22717,1.42857 1.22494,0 1.82986,-0.64286 1.34426,-1.42857 z m 15.06548,-8.44907 c -1.49965,-2.80213 -4.3512,-4.1263 -4.3512,-2.02056 0,1.42669 4.6484,6.29743 5.34509,5.60074 0.33037,-0.33038 -0.11686,-1.94147 -0.99389,-3.58018 z m -15.06548,-2.9795 c -0.4856,-0.78572 -1.52576,-1.42857 -2.31147,-1.42857 -0.78572,0 -1.03128,0.64285 -0.54568,1.42857 0.4856,0.78571 1.52576,1.42857 2.31148,1.42857 0.78571,0 1.03127,-0.64286 0.54567,-1.42857 z m 6.42857,-6.99002 c 0,-0.70165 -0.96429,-1.64576 -2.14286,-2.09802 -2.17754,-0.8356 -2.9257,0.68614 -1.19047,2.42137 1.36527,1.36528 3.33333,1.17437 3.33333,-0.32335 z m -120.52583,-28.1117 c 3.92834,-4.16525 4.81154,-6.23097 4.81154,-11.25365 0,-7.9984 -2.60827,-10.40037 -8.59906,-7.9189 -12.93985,5.35986 -17.18485,24.27427 -5.44793,24.27427 3.22211,0 5.73102,-1.38594 9.23545,-5.10172 z m -53.27269,-7.83202 c 7.71146,-6.06584 7.79098,-21.46877 0.12078,-23.39387 -10.40226,-2.6108 -19.31165,13.67006 -12.66982,23.1526 2.77921,3.96788 7.69136,4.06232 12.54904,0.24127 z m 229.076,-7.87993 c -4.0329,-3.49341 -8.13462,-4.58782 -8.13462,-2.17047 0,0.71587 2.02092,3.00208 4.49095,5.08048 3.31653,2.79067 4.90427,3.35827 6.07143,2.17047 1.16033,-1.18085 0.51494,-2.53141 -2.42776,-5.08048 z m 28.19776,-7.86405 c -1.36923,-1.51297 -3.03271,-2.75085 -3.69666,-2.75085 -2.22491,0 -1.23732,3.35507 2.00713,6.81868 2.71865,2.90229 3.28867,3.06531 3.69665,1.05721 0.2653,-1.3058 -0.6379,-3.61207 -2.00712,-5.12504 z M 219.4851,267.15214 c 0,-3.61662 -2.19907,-3.40106 -4.91899,0.48216 -3.55208,5.07131 -2.88501,7.32406 1.34757,4.55077 1.96428,-1.28705 3.57142,-3.55187 3.57142,-5.03293 z m 185.71429,1.59287 c 0,-2.19102 -5.44703,-7.14286 -7.85714,-7.14286 -3.24369,0 -2.5766,2.30859 1.62123,5.6106 4.10857,3.2318 6.23591,3.75452 6.23591,1.53226 z m -239.64286,-6.86728 c 2.67832,-2.30011 3.45565,-8.84701 1.05043,-8.84701 -1.71254,0 -7.10882,8.45912 -7.11652,11.15574 -0.006,1.99418 1.90041,1.26873 6.06609,-2.30873 z m 62.77898,-6.97142 c 3.95756,-3.79159 5.28416,-7.58987 2.65087,-7.58987 -1.3895,0 -8.64413,8.80545 -8.64413,10.49198 0,1.86191 2.06379,0.86256 5.99326,-2.90211 z m -50.00652,-11.51844 c 6.78474,-7.27435 8.32867,-13.43123 2.59916,-10.3649 -2.85044,1.52552 -6.29611,6.44375 -7.76198,11.07918 -1.37194,4.33839 0.7202,4.04894 5.16282,-0.71428 z m 72.39418,-7.69047 c 4.03335,-1.67618 7.33336,-3.65583 7.33336,-4.39922 0,-2.02307 -8.68636,0.23559 -13.21428,3.43602 -7.04482,4.97942 -4.70522,5.36261 5.88092,0.9632 z m -45.52378,-5.15242 c 3.53571,-1.14197 7.23214,-2.31539 8.21429,-2.60759 4.01086,-1.1933 1.4,-3.4781 -3.97446,-3.4781 -8.29221,0 -15.6684,3.40027 -15.6684,7.22281 0,2.39201 0.56024,2.84268 2.5,2.01104 1.375,-0.58952 5.39286,-2.00619 8.92857,-3.14816 z M 369.4851,215.98413 c 0,-1.8612 -4.83791,-3.20003 -7.65588,-2.11867 -4.03103,1.54685 -2.56562,3.45098 2.65588,3.45098 2.75,0 5,-0.59954 5,-1.33231 z m 20,-0.0963 c 0,-0.78572 -2.9308,-1.42858 -6.51288,-1.42858 -3.97814,0 -6.16926,0.55599 -5.62997,1.42858 0.4856,0.78571 3.4164,1.42857 6.51288,1.42857 3.09649,0 5.62997,-0.64286 5.62997,-1.42857 z"
-           style="fill:#b2bc5f;fill-opacity:1;stroke:none"
-           sodipodi:nodetypes="cssscsscsssssssscscsssssssssssssccsssssssssssssssscsscsscsssssssssssscssscsssscsssscscccssssssssssssssssscssssssssssssssssssscscssssssssssscssscssssssscsscssscsscsssssssssssscssssscsssssscsssscsscccssccsscccsscccssscccsscccssccssssccsscccsssccsssssssscsccccsscccscccssssscssscscccsscsssscscsscccscsssscssssssssssssssssssssssscsssscscssscccssssccccsccsssscsscccssscccssccssssssssscssccsssssssscccscccssccsscsssssssssscsssccsscccssccssssssssssssssssssssscsscsccccssccssssscsscccssccsscssssssssssssssccsccssccssssscssscsssscsscsssssssssssscssccsssssssscscccssssssssssssssssssssssscssssssssssssssscsscccssscccsssccsssssssscsccccssccsssscsscccssssccsssssssss" />
-      </g>
-    </g>
-  </g>
-</svg>
diff --git a/examples/mnit_dino/assets/images/0.png b/examples/mnit_dino/assets/images/0.png
deleted file mode 100644 (file)
index 1c71a2c..0000000
Binary files a/examples/mnit_dino/assets/images/0.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/1.png b/examples/mnit_dino/assets/images/1.png
deleted file mode 100644 (file)
index ace37b6..0000000
Binary files a/examples/mnit_dino/assets/images/1.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/2.png b/examples/mnit_dino/assets/images/2.png
deleted file mode 100644 (file)
index 73447e6..0000000
Binary files a/examples/mnit_dino/assets/images/2.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/3.png b/examples/mnit_dino/assets/images/3.png
deleted file mode 100644 (file)
index b17f046..0000000
Binary files a/examples/mnit_dino/assets/images/3.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/4.png b/examples/mnit_dino/assets/images/4.png
deleted file mode 100644 (file)
index 6286125..0000000
Binary files a/examples/mnit_dino/assets/images/4.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/5.png b/examples/mnit_dino/assets/images/5.png
deleted file mode 100644 (file)
index b1969b8..0000000
Binary files a/examples/mnit_dino/assets/images/5.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/6.png b/examples/mnit_dino/assets/images/6.png
deleted file mode 100644 (file)
index 5dc8b4d..0000000
Binary files a/examples/mnit_dino/assets/images/6.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/7.png b/examples/mnit_dino/assets/images/7.png
deleted file mode 100644 (file)
index 175c014..0000000
Binary files a/examples/mnit_dino/assets/images/7.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/8.png b/examples/mnit_dino/assets/images/8.png
deleted file mode 100644 (file)
index f40379d..0000000
Binary files a/examples/mnit_dino/assets/images/8.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/9.png b/examples/mnit_dino/assets/images/9.png
deleted file mode 100644 (file)
index d794791..0000000
Binary files a/examples/mnit_dino/assets/images/9.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/blood.png b/examples/mnit_dino/assets/images/blood.png
deleted file mode 100644 (file)
index 29219a2..0000000
Binary files a/examples/mnit_dino/assets/images/blood.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/bush.png b/examples/mnit_dino/assets/images/bush.png
deleted file mode 100644 (file)
index 205d906..0000000
Binary files a/examples/mnit_dino/assets/images/bush.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/caveman.png b/examples/mnit_dino/assets/images/caveman.png
deleted file mode 100644 (file)
index 34725c7..0000000
Binary files a/examples/mnit_dino/assets/images/caveman.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/caveman_afraid.png b/examples/mnit_dino/assets/images/caveman_afraid.png
deleted file mode 100644 (file)
index 69621ef..0000000
Binary files a/examples/mnit_dino/assets/images/caveman_afraid.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/caveman_ready.png b/examples/mnit_dino/assets/images/caveman_ready.png
deleted file mode 100644 (file)
index 1951752..0000000
Binary files a/examples/mnit_dino/assets/images/caveman_ready.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/dino.png b/examples/mnit_dino/assets/images/dino.png
deleted file mode 100644 (file)
index 266e562..0000000
Binary files a/examples/mnit_dino/assets/images/dino.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/dino_dead.png b/examples/mnit_dino/assets/images/dino_dead.png
deleted file mode 100644 (file)
index 798bef1..0000000
Binary files a/examples/mnit_dino/assets/images/dino_dead.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/javelin.png b/examples/mnit_dino/assets/images/javelin.png
deleted file mode 100644 (file)
index c441f60..0000000
Binary files a/examples/mnit_dino/assets/images/javelin.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/life.png b/examples/mnit_dino/assets/images/life.png
deleted file mode 100644 (file)
index fc0d383..0000000
Binary files a/examples/mnit_dino/assets/images/life.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/life_empty.png b/examples/mnit_dino/assets/images/life_empty.png
deleted file mode 100644 (file)
index f4c020f..0000000
Binary files a/examples/mnit_dino/assets/images/life_empty.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/play_again.png b/examples/mnit_dino/assets/images/play_again.png
deleted file mode 100644 (file)
index 2f5ac97..0000000
Binary files a/examples/mnit_dino/assets/images/play_again.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/play_again_mobile.png b/examples/mnit_dino/assets/images/play_again_mobile.png
deleted file mode 100644 (file)
index cce475b..0000000
Binary files a/examples/mnit_dino/assets/images/play_again_mobile.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/shadow.png b/examples/mnit_dino/assets/images/shadow.png
deleted file mode 100644 (file)
index 98e64d9..0000000
Binary files a/examples/mnit_dino/assets/images/shadow.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/splash_head.png b/examples/mnit_dino/assets/images/splash_head.png
deleted file mode 100644 (file)
index 180aeab..0000000
Binary files a/examples/mnit_dino/assets/images/splash_head.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/splash_play.png b/examples/mnit_dino/assets/images/splash_play.png
deleted file mode 100644 (file)
index 542b181..0000000
Binary files a/examples/mnit_dino/assets/images/splash_play.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/splash_play_mobile.png b/examples/mnit_dino/assets/images/splash_play_mobile.png
deleted file mode 100644 (file)
index 8a76387..0000000
Binary files a/examples/mnit_dino/assets/images/splash_play_mobile.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/splash_text.png b/examples/mnit_dino/assets/images/splash_text.png
deleted file mode 100644 (file)
index 00d6157..0000000
Binary files a/examples/mnit_dino/assets/images/splash_text.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/splash_title.png b/examples/mnit_dino/assets/images/splash_title.png
deleted file mode 100644 (file)
index 58266e5..0000000
Binary files a/examples/mnit_dino/assets/images/splash_title.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/you_lost.png b/examples/mnit_dino/assets/images/you_lost.png
deleted file mode 100644 (file)
index 9c053fd..0000000
Binary files a/examples/mnit_dino/assets/images/you_lost.png and /dev/null differ
diff --git a/examples/mnit_dino/assets/images/you_won.png b/examples/mnit_dino/assets/images/you_won.png
deleted file mode 100644 (file)
index 70f5715..0000000
Binary files a/examples/mnit_dino/assets/images/you_won.png and /dev/null differ
diff --git a/examples/mnit_dino/org.nitlanguage.dino.txt b/examples/mnit_dino/org.nitlanguage.dino.txt
deleted file mode 100644 (file)
index df5e48d..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Categories:Nit,Games
-License:Apache2
-Web Site:http://nitlanguage.org
-Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/examples/mnit_dino
-Issue Tracker:https://github.com/nitlang/nit/issues
-
-Summary:Tactical arcade game
-Description:
-You're being hunted by puny cavemen! Defend yourself.
-.
diff --git a/examples/mnit_dino/package.ini b/examples/mnit_dino/package.ini
deleted file mode 100644 (file)
index efa6693..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[package]
-name=mnit_dino
-tags=game
-maintainer=Alexis Laferrière <alexis.laf@xymus.net>
-license=Apache-2.0
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/examples/mnit_dino/
-git=https://github.com/nitlang/nit.git
-git.directory=examples/mnit_dino/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
-apk=http://nitlanguage.org/fdroid/apk/dino.apk
diff --git a/examples/mnit_dino/src/dino.nit b/examples/mnit_dino/src/dino.nit
deleted file mode 100644 (file)
index 27ced99..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# App for the Dino game, manages App lifecyle and inputs
-module dino is
-       app_version(0, 2, git_revision)
-       app_name("mnit Dino")
-end
-
-import mnit
-
-import graphism
-import fancy_dino
-import splash
-
-redef class App
-       var cavemen_at_first_level = 6
-       var cavemen_incr = 4
-
-       var game : nullable Game = null
-       var score = new Ref[Int](0)
-       var imgs : nullable ImageSet = null
-       var splash : nullable SplashScreen = null
-
-       redef fun on_create
-       do
-               super
-
-               maximum_fps = 80.0
-
-               var display = display
-               assert display != null
-
-               # load only splash images
-               splash = new SplashScreen( self )
-               splash.draw( display, false )
-
-               # load other images
-               imgs = new ImageSet( self )
-
-               splash.draw( display, true )
-       end
-
-       redef fun frame_core( display )
-       do
-               var game = game
-               if game != null then
-                       var turn = game.do_turn
-                       game.draw( display, imgs.as(not null), turn )
-               else
-                       splash.draw( display, true )
-               end
-       end
-
-       redef fun input( input_event )
-       do
-               if input_event isa QuitEvent then # close window button
-                       quit = true # orders system to quit
-                       return true # this event has been handled
-
-               else if input_event isa PointerEvent then
-                       if game == null then
-                               # start from splash
-                               game = new Game( cavemen_at_first_level, score )
-                       else if game.over and game.ready_to_start_over then
-                               # play next game
-                               var next_nbr_caveman = game.nbr_wanted_cavemen
-                               if game.won then
-                                       next_nbr_caveman += cavemen_incr
-                               else
-                                       score = new Ref[Int](0)
-                                       next_nbr_caveman = cavemen_at_first_level
-                               end
-                               game = new Game( next_nbr_caveman, score )
-                       else
-                               # normal play
-                               game.dino.going_to = (new ScreenPos( input_event.x, input_event.y )).to_game( display.as(not null) )
-                       end
-                       return true
-
-               else if input_event isa KeyEvent then
-                       return false
-               end
-
-               return false # unknown event, can be handled by something else
-       end
-end
diff --git a/examples/mnit_dino/src/dino_android.nit b/examples/mnit_dino/src/dino_android.nit
deleted file mode 100644 (file)
index ebf1eaf..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2012-2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-module dino_android is
-       app_namespace "org.nitlanguage.dino"
-end
-
-import dino
-
-import mnit::android
-import android::portrait
-import android::vibration
-
-redef class ImageSet
-       redef fun start_over_path do return "images/play_again_mobile.png"
-end
-
-redef class SplashScreen
-       redef fun splash_play_path do return "images/splash_play_mobile.png"
-end
-
-redef class Display
-       redef fun top_offset do return 92
-end
-
-redef class Dino
-       # When hit, vibrate
-       redef fun hit(hitter, dmg)
-       do
-               app.vibrator.vibrate 25
-               super
-       end
-end
-
-redef class Caveman
-       # When crushed, vibrate a little
-       redef fun die(turn)
-       do
-               app.vibrator.vibrate 10
-               super
-       end
-end
diff --git a/examples/mnit_dino/src/fancy_dino.nit b/examples/mnit_dino/src/fancy_dino.nit
deleted file mode 100644 (file)
index 0a486b3..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Improves dino appearance
-module fancy_dino
-
-import graphism
-
-redef class Dino
-       var turning_angle = 0.0
-       var turning = false
-       var was_going_left = false
-
-       var turning_step = 0.1
-
-       redef fun do_turn( turn )
-       do
-               super
-
-               if not turning then
-                       if going_left != was_going_left then
-                               turning = true
-
-                               if going_left then
-                                       turning_angle = 0.0
-                               else # going right
-                                       turning_angle = pi
-                               end
-                       end
-               end
-
-               was_going_left = going_left
-       end
-
-       redef fun draw( display, imgs, turn )
-       do
-               var spos = pos.to_screen( display )
-               var img : Image
-               if is_alive then
-                       img = imgs.dino_img
-               else
-                       img = imgs.dino_dead_img
-               end
-               var img_radius = (img.width/2).to_f
-
-               display.blit_centered( imgs.dino_shadow, spos.x.to_i, spos.y.to_i )
-
-               if turning then
-                       if going_left then
-                               turning_angle += turning_step
-                       else
-                               turning_angle -= turning_step
-                       end
-
-                       var adx = turning_angle.cos * img_radius
-                       var ady = turning_angle.sin * img_radius # * 0.3
-
-                       var dx = spos.x - adx
-                       var dy = spos.y - ady - (img.height/2).to_f
-                       var ax = spos.x + adx
-                       var ay = spos.y + ady - (img.height/2).to_f
-                       var bx = ax
-                       var by = ay + img.height.to_f
-                       var cx = dx
-                       var cy = dy + img.height.to_f
-
-                       display.blit_stretched( img, ax, ay, bx, by, cx, cy, dx, dy )
-
-                       if (going_left and turning_angle >= pi) or 
-                               (going_right and turning_angle <= 0.0)then
-                               turning = false
-                       end
-               else
-                       var dx = spos.x + img_radius
-                       var dy = spos.y - (img.height/2).to_f
-                       var ax = spos.x - img_radius
-                       var ay = dy
-                       var bx = ax
-                       var by = dy + img.height.to_f
-                       var cx = dx
-                       var cy = by
-
-                       if going_left then
-                               display.blit_stretched( img, ax, ay, bx, by, cx, cy, dx, dy )
-                       else
-                               display.blit_stretched( img, dx, dy, cx, cy, bx, by, ax, ay )
-                       end
-               end
-       end
-end
diff --git a/examples/mnit_dino/src/game_logic.nit b/examples/mnit_dino/src/game_logic.nit
deleted file mode 100644 (file)
index 63b6d53..0000000
+++ /dev/null
@@ -1,386 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Entire game logic for the Dino game
-# Depends only on Nit `core` library
-module game_logic
-
-interface Turnable
-       fun do_turn( turn : Turn ) is abstract
-end
-
-class Game
-       var nbr_wanted_cavemen : Int
-
-       var dino = new Dino
-       var cavemen = new Array[Caveman]
-       var javelins_in_air = new Array[Javelin]
-       var items_on_ground = new Array[Entity]
-       var entities = new Array[Entity].with_items(dino)
-       var turn_nbr = 0
-
-       var over_since = 0
-
-       var score: Ref[Int]
-
-       var random_radius_min = 200
-       var random_radius_max = 400
-       protected var random_radius_diff : Int =
-               random_radius_max - random_radius_min
-
-       var entities_sorter = new EntitiesSorter
-
-       init( cavemen_nbr : Int, score: Ref[Int] )
-       do
-               srand_from(cavemen_nbr)
-
-               self.score = score
-
-               nbr_wanted_cavemen = cavemen_nbr
-
-               for n in [0..nbr_wanted_cavemen[ do
-                       var man = new Caveman
-                       cavemen.add( man )
-                       entities.add( man )
-
-                       var radius = (random_radius_min + random_radius_diff.rand).to_f
-                       var angle = (2.0*pi).rand
-                       man.pos.x = ( angle.cos * radius ).to_i
-                       man.pos.y = ( angle.sin * radius ).to_i
-               end
-
-               for b in 24.times do
-                       var bush = new Bush
-                       bush.pos = new GamePos([-300..300[.rand, [-400..400[.rand)
-                       items_on_ground.add bush
-                       entities.add bush
-               end
-       end
-
-       fun do_turn : Turn
-       do
-               turn_nbr += 1
-               var turn = new Turn( self )
-
-               dino.do_turn( turn )
-               for man in cavemen do
-                       man.do_turn( turn )
-                       if not man.is_alive then
-                               cavemen.remove( man )
-                               score.item += 1
-                       end
-               end
-
-               for j in javelins_in_air do
-                       j.do_turn( turn )
-                       if j.hit_dino then
-                               javelins_in_air.remove( j )
-                               entities.remove( j )
-                       else if j.hit_ground then
-                               javelins_in_air.remove( j )
-                               items_on_ground.add( j )
-                       end
-               end
-
-               if over and over_since == 0 then
-                       over_since = turn.nbr
-               end
-
-               # sort for blitting, firsts and in the back
-               entities_sorter.sort entities
-
-               return turn
-       end
-
-       fun add_javelin( j : Javelin )
-       do
-               javelins_in_air.add( j )
-               entities.add( j )
-       end
-
-       fun over : Bool do return dino.life <= 0 or cavemen.is_empty
-       fun won : Bool do return cavemen.is_empty and dino.is_alive
-       fun lost : Bool do return not won
-
-       fun ready_to_start_over : Bool do return over_since + 80 < turn_nbr
-end
-
-class Turn
-       var game : Game
-       var nbr : Int
-
-       init ( g : Game )
-       do
-               game = g
-               nbr = game.turn_nbr
-       end
-end
-
-class GamePos
-       var x : Int
-       var y : Int
-
-       init copy( src : GamePos )
-       do
-               init(src.x, src.y)
-       end
-
-       fun squared_dist_with( other : GamePos ) : Int
-       do
-               var dx = other.x - x
-               var dy = other.y - y
-
-               return dx*dx + dy*dy
-       end
-
-       redef fun to_s do return "<{x}|{y}>"
-end
-
-class Entity
-       super Turnable
-
-       fun run_over_distance_x: Int do return 50
-       fun run_over_distance_y: Int do return 16
-
-       var pos = new GamePos( 0, 0 )
-
-       fun squared_dist_with_dino( game : Game ) : Int
-       do
-               return pos.squared_dist_with( game.dino.pos )
-       end
-
-       fun under_dino(game: Game): Bool
-       do
-               var dy = pos.y - game.dino.pos.y
-               if dy.abs > run_over_distance_y then return false
-
-               var dx = pos.x - game.dino.pos.x
-               return dx.abs <= run_over_distance_x
-       end
-end
-
-class MovingEntity
-       super Entity
-
-       var going_to : nullable GamePos = null is writable
-
-       fun speed : Int is abstract
-
-       var going_left = false
-       var going_right = false
-
-       redef fun do_turn( t )
-       do
-               if going_to != null then
-                       var ds = pos.squared_dist_with( going_to.as(not null) )
-                       if ds < speed*speed then
-                               going_to = null # is there
-                       else
-                               var dx = going_to.x - pos.x
-                               var dy = going_to.y - pos.y
-                               var a = atan2( dy.to_f, dx.to_f )
-                               var mx = a.cos*speed.to_f
-                               var my = a.sin*speed.to_f
-
-                               pos.x += mx.to_i
-                               pos.y += my.to_i
-
-                               going_left = mx < 0.0
-                               going_right = mx > 0.0
-                       end
-               end
-       end
-end
-
-class MortalEntity
-       super Entity
-
-       fun is_alive : Bool is abstract
-end
-
-class Dino
-       super MovingEntity
-       super MortalEntity
-
-       #var running_until = 0
-       var total_life = 20
-       var life : Int = total_life
-
-       redef fun speed do return 8
-
-       redef fun is_alive do return life > 0
-
-       fun hit( hitter : Entity, damage : Int )
-       do
-               if is_alive then
-                       life -= damage
-               end
-       end
-
-       redef fun do_turn( t )
-       do
-               if is_alive then
-                       super
-               end
-
-               for i in t.game.items_on_ground do
-                       if i.under_dino(t.game) then
-                               t.game.items_on_ground.remove i
-                               t.game.entities.remove i
-                       end
-               end
-       end
-end
-
-class Caveman
-       super MovingEntity
-       super MortalEntity
-
-       var afraid_until = 0
-       var cannot_throw_until = 0
-
-       var throw_distance : Int = 400*40+10.rand
-       var fear_distance : Int = 300*20+8.rand
-       var flee_distance : Int = 600*60+16.rand
-
-       var fear_duration : Int = 80+40.rand
-       var throw_period : Int = 40+8.rand
-
-       var variance_angle: Float = 2.0*pi.rand
-       var variance_dist: Int = throw_distance.to_f.sqrt.to_i-4
-       var variance_x: Int = (variance_angle.cos*variance_dist.to_f).to_i
-       var variance_y: Int = (variance_angle.sin*variance_dist.to_f).to_i
-
-       redef var is_alive : Bool = true
-
-       redef var speed: Int = 3+3.rand
-
-       fun is_afraid( turn : Turn ) : Bool do return turn.nbr < afraid_until
-       fun can_throw( turn : Turn ) : Bool do return cannot_throw_until < turn.nbr
-       fun die(turn: Turn) do is_alive = false
-
-       redef fun do_turn( t )
-       do
-               if is_alive then
-                       if under_dino(t.game) then
-                               if t.game.dino.is_alive then die(t)
-                               return
-                       else if is_afraid( t ) then
-                               # going to destination
-                       else if t.game.dino.life <= 0 then
-                               # dino is dead, chill
-                       else
-                               var dwd = squared_dist_with_dino( t.game )
-                               if dwd < fear_distance then
-                                       afraid_until = t.nbr + fear_duration
-
-                                       var dino_pos = t.game.dino.pos
-                                       var dx = dino_pos.x - pos.x
-                                       var dy = dino_pos.y - pos.y
-                                       var a = atan2( dy.to_f, dx.to_f )
-                                       a += pi # get opposite
-                                       a += [-100..100[.rand.to_f*pi/3.0/100.0
-                                       var x = a.cos*flee_distance.to_f
-                                       var y = a.sin*flee_distance.to_f
-                                       going_to = new GamePos( x.to_i, y.to_i )
-                               else if dwd < throw_distance then
-                                       if can_throw( t ) then
-                                               cannot_throw_until = t.nbr + throw_period
-                                               var javelin = new Javelin( pos, t.game.dino.pos )
-                                               t.game.add_javelin( javelin )
-                                               going_to = null
-                                       end
-                               else
-                                       # get closer to dino
-                                       var dino_pos = t.game.dino.pos
-                                       going_to = new GamePos(dino_pos.x+variance_x, dino_pos.y+variance_y)
-                               end
-                       end
-
-                       super
-               end
-       end
-end
-
-class Javelin
-       super Entity
-
-       var z = 400
-       var angle : Float = pi/2.0
-
-       var thrown_angle_xy : Float
-       #var thrown_angle_z
-       var speed_z = 60
-
-       var hit_ground = false
-       var hit_dino = false
-
-       var speed : Int = 10+2.rand
-       var hit_dino_distance = 128
-       var hit_damage = 1
-       var gravity : Int = -3
-
-       init ( from : GamePos, to : GamePos )
-       do
-               var dx = to.x-from.x
-               var dy = to.y-from.y
-               thrown_angle_xy = atan2( dy.to_f, dx.to_f )
-               pos = new GamePos.copy( from )
-       end
-
-       redef fun do_turn( t )
-       do
-               var dwd = squared_dist_with_dino( t.game )
-               if dwd < hit_dino_distance and t.game.dino.is_alive then
-                       t.game.dino.hit( self, hit_damage )
-                       hit_dino = true
-               else
-                       if z <= 0 then
-                               hit_ground = true
-                               if thrown_angle_xy.cos > 0.0 then
-                                       angle = pi*5.0/8.0+(pi/4.0).rand
-                               else
-                                       # left of the screen
-                                       angle = pi*9.0/8.0+(pi/4.0).rand
-                               end
-                       else
-                               # in the air
-                               speed_z += gravity
-                               z += speed_z
-
-                               var mx = (thrown_angle_xy.cos * speed.to_f).to_i
-                               pos.x += mx
-                               pos.y += (thrown_angle_xy.sin * speed.to_f).to_i
-
-                               if mx > 0 then
-                                       angle = atan2( (speed_z/10).to_f, -1.0*speed.to_f )-pi/2.0
-                               else
-                                       angle = atan2( (speed_z/10).to_f, speed.to_f )-pi/2.0
-                               end
-                       end
-               end
-       end
-end
-
-class Bush super Entity end
-
-# Sort entities on screen in order of Y, entities in the back are drawn first
-class EntitiesSorter
-       super Comparator
-       redef type COMPARED: Entity
-
-       redef fun compare(a, b) do return b.pos.y <=> a.pos.y
-end
diff --git a/examples/mnit_dino/src/graphism.nit b/examples/mnit_dino/src/graphism.nit
deleted file mode 100644 (file)
index d7e54a4..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Graphism for the Dino game
-# Uses the Display interface from MNit.
-module graphism
-
-import mnit # for Display
-
-import game_logic
-
-redef class GamePos
-       fun to_screen( d : Display ) : ScreenPos
-       do
-               var x = x+d.width/2
-               var y = d.height/2-y
-               return new ScreenPos( x.to_f, y.to_f )
-       end
-end
-
-class ScreenPos
-       var x : Float
-       var y : Float
-
-       fun to_game( d : Display ) : GamePos
-       do
-               var x = x.to_i-d.width/2
-               var y = d.height/2-y.to_i
-               return new GamePos( x, y )
-       end
-end
-
-redef class Entity
-       fun draw( display : Display, imgs : ImageSet, turn : Turn ) is abstract
-end
-
-redef class Dino
-       # Notice: This method only implements the basic drawing feature, it is
-       # redefed in `fancy_dino`. If the `fancy_dino` module is imported by
-       # user methods, this code is dead and will never be executed.
-       redef fun draw( display, imgs, turn )
-       do
-               var spos = pos.to_screen( display )
-               var img : Image
-               if is_alive then
-                       img = imgs.dino_img
-               else
-                       img = imgs.dino_dead_img
-               end
-               display.blit_centered( img, spos.x.to_i, spos.y.to_i )
-       end
-end
-
-redef class Caveman
-       redef fun draw( display, imgs, turn )
-       do
-               var man_pos = pos.to_screen( display )
-               var img : Image
-
-               if not is_alive then
-                       img = imgs.blood_img
-               else if is_afraid( turn ) then
-                       img = imgs.caveman_afraid_img
-               else if can_throw( turn ) then
-                       img = imgs.caveman_ready_img
-               else
-                       img = imgs.caveman_img
-               end
-
-               display.blit_centered( img, man_pos.x.to_i, man_pos.y.to_i )
-       end
-end
-
-redef class Javelin
-       redef fun draw( display, imgs, turn )
-       do
-               var spos = pos.to_screen( display )
-               spos.y -= z.to_f/10.0
-               display.blit_rotated( imgs.javelin_img, spos.x, spos.y, angle )
-       end
-end
-
-redef class Bush
-       redef fun draw( display, imgs, turn )
-       do
-               var spos = pos.to_screen( display )
-               var img = imgs.bush_img
-               display.blit_centered( img, spos.x.to_i, spos.y.to_i )
-       end
-end
-
-class ImageSet
-       var javelin_img : Image
-
-       var dino_img : Image
-       var dino_dead_img : Image
-       var dino_shadow : Image
-
-       var caveman_img : Image
-       var caveman_afraid_img : Image
-       var caveman_ready_img : Image
-       var blood_img : Image
-       var bush_img : Image
-
-       var life_img : Image
-       var life_empty_img : Image
-
-       var you_won_img : Image
-       var you_lost_img : Image
-       var start_over_img : Image
-       fun start_over_path : String is abstract
-
-       var numbers: NumberImages
-
-       init ( app : App )
-       do
-               javelin_img = app.load_image( "images/javelin.png" )
-
-               dino_img = app.load_image( "images/dino.png" )
-               dino_dead_img = app.load_image( "images/dino_dead.png" )
-               dino_shadow = app.load_image( "images/shadow.png" )
-
-               caveman_img = app.load_image( "images/caveman.png" )
-               caveman_afraid_img = app.load_image( "images/caveman_afraid.png" )
-               caveman_ready_img = app.load_image( "images/caveman_ready.png" )
-               blood_img = app.load_image( "images/blood.png" )
-               bush_img = app.load_image( "images/bush.png" )
-
-               life_img = app.load_image( "images/life.png" )
-               life_empty_img = app.load_image( "images/life_empty.png" )
-
-               you_won_img = app.load_image( "images/you_won.png" )
-               you_lost_img = app.load_image( "images/you_lost.png" )
-               start_over_img = app.load_image( start_over_path )
-
-               numbers = app.load_numbers("images/#.png")
-       end
-end
-
-redef class Game
-       fun draw( display : Display, imgs : ImageSet, turn : Turn )
-       do
-               display.clear(0.05, 0.45, 0.1)
-
-               # entities (dino, cavemen and javelins)
-               for e in entities do
-                       e.draw( display, imgs, turn )
-               end
-
-               # life
-               var life_out_of_ten = 10 * dino.life / dino.total_life
-               if dino.life*10 % dino.total_life != 0 then
-                       life_out_of_ten += 1
-               end
-
-               for life in [0..life_out_of_ten[ do
-                       display.blit_centered( imgs.life_img, display.width*(life+1)/11, display.top_offset )
-               end
-
-               for empty in [life_out_of_ten..10[ do
-                       display.blit_centered( imgs.life_empty_img, display.width*(empty+1)/11, display.top_offset )
-               end
-
-               # display score
-               display.blit_number(imgs.numbers, score.item,  display.width/11, display.top_offset+32)
-
-               # game over messages
-               if over then
-                       var concl_img : Image
-                       if won then
-                               concl_img = imgs.you_won_img
-                       else
-                               concl_img = imgs.you_lost_img
-                       end
-                       display.blit_centered( concl_img, display.width/2, 60+display.top_offset )
-
-                       if ready_to_start_over then
-                               display.blit_centered( imgs.start_over_img, display.width/2, 100+display.top_offset )
-                       end
-               end
-       end
-end
-
-redef interface Display
-       fun top_offset: Int do return 48
-end
diff --git a/examples/mnit_dino/src/splash.nit b/examples/mnit_dino/src/splash.nit
deleted file mode 100644 (file)
index 49936de..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-module splash
-
-import graphism
-
-class SplashScreen
-       var splash_title : Image
-       var splash_text : Image
-       var splash_head : Image
-       var splash_play : Image
-       fun splash_play_path : String is abstract
-
-       init( app : App )
-       do
-               splash_title = app.load_image( "images/splash_title.png" )
-               splash_text = app.load_image( "images/splash_text.png" )
-               splash_head = app.load_image( "images/splash_head.png" )
-               splash_play = app.load_image( splash_play_path )
-       end
-
-       # manages entire display draw (including flipping)
-       fun draw( display : Display, ready : Bool )
-       do
-               var dc = display.width/2
-
-               display.begin
-
-               display.clear( 0.0, 0.5, 0.1 )
-
-               display.blit_centered(splash_head, dc, display.height/2+64+display.top_offset)
-               display.blit_centered(splash_title, dc, 32+display.top_offset)
-               display.blit_centered(splash_text, dc, 128+display.top_offset)
-
-               if ready then display.blit_centered( splash_play, dc, display.height-64 )
-
-               display.finish
-       end
-end
diff --git a/examples/mnit_dino/tools/svg-to-pngs b/examples/mnit_dino/tools/svg-to-pngs
deleted file mode 100755 (executable)
index 1d3182a..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-#!/bin/bash
-
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This script extracts pngs from a single svg for all objects with ids
-# beginning by 0. Requires Inkscape.
-
-# there are some trick used do to inconsistency in inkscape input and output values
-# the document must be resized to fit all objects
-
-dir=`dirname $0`
-log=$dir/`basename $0 .sh`.log
-
-echo $0 executed at `date` > $log
-
-if [ $# -ne 2 ]
-then
-       echo "Usage: $0 source.svg destination/folder/"
-       exit
-fi
-
-sourceFile="$1"
-destinationFolder="$2"
-if [ ! -f $sourceFile ]
-then
-       echo "Source file \"$sourceFile\" not found."
-       exit
-fi
-
-if [ ! -d $destinationFolder ]
-then
-       echo "Destination folder \"$destinationFolder\" not found, creating it."
-       mkdir -p $destinationFolder
-fi
-
-
-query=`inkscape --query-all $sourceFile`
-min_x=10000
-min_y=10000
-for line in $query; do
-       ld=(${line//,/ })
-
-       x=${ld[1]}
-       y=${ld[2]}
-       w=${ld[3]}
-       h=${ld[4]}
-       # remove e notation
-       if echo $y | grep e &> /dev/null; then
-               y=0
-       fi
-       if echo $x | grep e &> /dev/null; then
-               x=0
-       fi
-
-       echo "$x < $min_x" | bc &> /dev/null
-       if [ $? ]; then
-               min_x=$x
-       fi
-
-       y=`echo $y-$h|bc`
-       echo "$y < $min_y" | bc &> /dev/null
-       if [ $? ]; then
-               min_y=$y
-       fi
-done
-
-full_h=`inkscape "-f$sourceFile" -C -H 2>> $log`
-
-for line in $query; do #`inkscape --query-all $sourceFile | grep ^0`; do
-       if echo $line | grep ^0 &> /dev/null; then
-               ld=(${line//,/ })
-               id=${ld[0]} #${line:0: $[`expr index "$line" ,` - 1] }
-               name=${line:1: $[`expr index "$line" ,` - 2] }
-
-               x=${ld[1]}
-               y=${ld[2]}
-               w=${ld[3]}
-               h=${ld[4]}
-
-               # remove e notation
-               if echo $y | grep e &> /dev/null; then
-                       y=0
-               fi
-               if echo $x | grep e &> /dev/null; then
-                       x=0
-               fi
-
-               # corrected dim for pow(2)
-               i=`bc <<!
-                       i=1
-                       while (i<$w || i<$h){
-                               i=i*2
-                       }
-                       print i
-!`
-               echo "found $i for $w $h" &>> $log
-               cw=$i
-               ch=$i
-               dw=`echo \($cw-$w\)/2|bc`
-               dh=`echo \($ch-$h\)/2|bc`
-               cx=`echo $x + \($cw-$w\)/2|bc`
-               cy=`echo $y + \($ch-$h\)/2|bc`
-
-               # corrects value of y.
-               y=`echo $full_h - $y | bc`
-
-               echo "x=$x y=$y w=$w h=$h" &>> $log
-               echo "cx=$cx cy=$cy cw=$cw ch=$ch" &>> $log
-               i=`echo "$i * 2" | bc`
-               inkscape -z -C "-f$sourceFile" "-i$id" -j "-a`echo $x-$dw|bc`:`echo $y-$h-$dh|bc`:`echo $x+$w+$dw|bc`:`echo $y+$dh|bc`" "-e$destinationFolder/$name.png" -b#000000 -y0.0 -d180 -w$i -h$i &>> $log
-       fi
-done
index 5f88218..e7f9ce3 100644 (file)
@@ -16,7 +16,7 @@
 
 # Example of a procedural program (without explicit class definition).
 # This program manipulates arrays of integers.
-module procedural_array
+module procedural_array is example
 
 # The sum of the elements of `a'.
 # Uses a 'for' control structure.
diff --git a/examples/shoot/Makefile b/examples/shoot/Makefile
deleted file mode 100644 (file)
index a42ffde..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-default: linux
-
-linux:
-       mkdir -p bin
-       ../../bin/nitc -o bin/shoot src/shoot_linux.nit
-
-android:
-       mkdir -p bin
-       ../../bin/nitc -o bin/shoot.apk src/shoot_android.nit
-
-android-release:
-       mkdir -p bin
-       ../../bin/nitc -o bin/shoot.apk src/shoot_android.nit --release
-
-null:
-       mkdir -p bin
-       ../../bin/nitc -o bin/shoot_null src/shoot_null.nit
-
-images:
-       mkdir -p assets/images
-       ../mnit_dino/tools/svg-to-pngs art/ships.svg assets/
-
-clean:
-       rm -rf bin
diff --git a/examples/shoot/README.md b/examples/shoot/README.md
deleted file mode 100644 (file)
index 9dae94d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-A multi-platform shoot'em up in space
-
-This unfinished game is an example of the use of `mnit` and `scene2d` to develop a simple multi-platform game.
diff --git a/examples/shoot/art/bio.png b/examples/shoot/art/bio.png
deleted file mode 100644 (file)
index db53c55..0000000
Binary files a/examples/shoot/art/bio.png and /dev/null differ
diff --git a/examples/shoot/art/blue.png b/examples/shoot/art/blue.png
deleted file mode 100644 (file)
index 703d02f..0000000
Binary files a/examples/shoot/art/blue.png and /dev/null differ
diff --git a/examples/shoot/art/fighter.png b/examples/shoot/art/fighter.png
deleted file mode 100755 (executable)
index f22213b..0000000
Binary files a/examples/shoot/art/fighter.png and /dev/null differ
diff --git a/examples/shoot/art/ships.svg b/examples/shoot/art/ships.svg
deleted file mode 100644 (file)
index 6d90fee..0000000
+++ /dev/null
@@ -1,41377 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Inkscape (http://www.inkscape.org/) -->
-
-<svg
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://creativecommons.org/ns#"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:svg="http://www.w3.org/2000/svg"
-   xmlns="http://www.w3.org/2000/svg"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   width="474.69882"
-   height="235.80357"
-   id="svg2"
-   sodipodi:version="0.32"
-   inkscape:version="0.48.4 r9939"
-   sodipodi:docname="ships.svg"
-   inkscape:output_extension="org.inkscape.output.svg.inkscape"
-   version="1.0">
-  <sodipodi:namedview
-     id="base"
-     pagecolor="#000000"
-     bordercolor="#666666"
-     borderopacity="1.0"
-     inkscape:pageopacity="0"
-     inkscape:pageshadow="2"
-     inkscape:zoom="3.75088"
-     inkscape:cx="124.92249"
-     inkscape:cy="119.38962"
-     inkscape:document-units="px"
-     inkscape:current-layer="layer1"
-     inkscape:window-width="2114"
-     inkscape:window-height="1209"
-     inkscape:window-x="2606"
-     inkscape:window-y="1192"
-     showguides="true"
-     inkscape:guide-bbox="true"
-     showgrid="false"
-     inkscape:window-maximized="0"
-     fit-margin-top="0"
-     fit-margin-left="0"
-     fit-margin-right="0"
-     fit-margin-bottom="0" />
-  <defs
-     id="defs4">
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient12044">
-      <stop
-         style="stop-color:#ffff00;stop-opacity:1;"
-         offset="0"
-         id="stop12046" />
-      <stop
-         style="stop-color:#ffff00;stop-opacity:0;"
-         offset="1"
-         id="stop12048" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6416">
-      <stop
-         id="stop6418"
-         offset="0"
-         style="stop-color:#ff6600;stop-opacity:1;" />
-      <stop
-         style="stop-color:#ff6600;stop-opacity:0.70247936;"
-         offset="0.44047621"
-         id="stop6420" />
-      <stop
-         id="stop6422"
-         offset="1"
-         style="stop-color:#ff6600;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6637">
-      <stop
-         style="stop-color:#ff0000;stop-opacity:0.70394737;"
-         offset="0"
-         id="stop6639" />
-      <stop
-         style="stop-color:#ff0000;stop-opacity:0;"
-         offset="1"
-         id="stop6641" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6629">
-      <stop
-         style="stop-color:#000000;stop-opacity:1;"
-         offset="0"
-         id="stop6631" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop6633" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5859">
-      <stop
-         id="stop5861"
-         offset="0"
-         style="stop-color:#f8f8f8;stop-opacity:0.02631579;" />
-      <stop
-         style="stop-color:#fbfafa;stop-opacity:0.06578948;"
-         offset="0.79569894"
-         id="stop5863" />
-      <stop
-         id="stop5865"
-         offset="1"
-         style="stop-color:#fffcfc;stop-opacity:0.125;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient151220">
-      <stop
-         style="stop-color:#f8f8f8;stop-opacity:0.21710527;"
-         offset="0"
-         id="stop151224" />
-      <stop
-         id="stop151238"
-         offset="0.38709676"
-         style="stop-color:#fbfafa;stop-opacity:0.10526316;" />
-      <stop
-         style="stop-color:#fffcfc;stop-opacity:0.01315789;"
-         offset="1"
-         id="stop151226" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient151184">
-      <stop
-         style="stop-color:#0094ff;stop-opacity:0.01960784;"
-         offset="0"
-         id="stop151186" />
-      <stop
-         id="stop151192"
-         offset="0.62851465"
-         style="stop-color:#5fb2ee;stop-opacity:0.11764706;" />
-      <stop
-         id="stop151196"
-         offset="0.84938312"
-         style="stop-color:#00b6ff;stop-opacity:0.05882353;" />
-      <stop
-         style="stop-color:#9ce2fb;stop-opacity:0.15789473;"
-         offset="0.87043709"
-         id="stop151218" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop151188" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient48271">
-      <stop
-         style="stop-color:#745429;stop-opacity:1;"
-         offset="0"
-         id="stop48273" />
-      <stop
-         id="stop48279"
-         offset="0.47311828"
-         style="stop-color:#8d5a04;stop-opacity:1;" />
-      <stop
-         style="stop-color:#00ff00;stop-opacity:1;"
-         offset="1"
-         id="stop48275" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5289">
-      <stop
-         id="stop5291"
-         offset="0"
-         style="stop-color:#9e8563;stop-opacity:1;" />
-      <stop
-         id="stop5293"
-         offset="1"
-         style="stop-color:#776a5e;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5268">
-      <stop
-         id="stop5271"
-         offset="0"
-         style="stop-color:#ff0000;stop-opacity:0.78823531;" />
-      <stop
-         id="stop5273"
-         offset="1"
-         style="stop-color:#ffffff;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5199">
-      <stop
-         style="stop-color:#265436;stop-opacity:1;"
-         offset="0"
-         id="stop5201" />
-      <stop
-         style="stop-color:#7bc818;stop-opacity:1;"
-         offset="1"
-         id="stop5203" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4962">
-      <stop
-         style="stop-color:#ff6600;stop-opacity:1;"
-         offset="0"
-         id="stop4964" />
-      <stop
-         id="stop4982"
-         offset="0.60714287"
-         style="stop-color:#ff6600;stop-opacity:0.70247936;" />
-      <stop
-         style="stop-color:#ff6600;stop-opacity:0;"
-         offset="1"
-         id="stop4966" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4946">
-      <stop
-         style="stop-color:#0000ff;stop-opacity:0;"
-         offset="0"
-         id="stop4948" />
-      <stop
-         id="stop4956"
-         offset="0.47959185"
-         style="stop-color:#0005ff;stop-opacity:0.36078431;" />
-      <stop
-         id="stop4954"
-         offset="0.80484694"
-         style="stop-color:#000bff;stop-opacity:0.74380165;" />
-      <stop
-         style="stop-color:#0017ff;stop-opacity:0.36078431;"
-         offset="0.87802935"
-         id="stop4958" />
-      <stop
-         style="stop-color:#0023ff;stop-opacity:0;"
-         offset="1"
-         id="stop4950" />
-    </linearGradient>
-    <inkscape:perspective
-       sodipodi:type="inkscape:persp3d"
-       inkscape:vp_x="0 : 526.18109 : 1"
-       inkscape:vp_y="372.04724 : 1350.7874 : 1"
-       inkscape:vp_z="744.09448 : 526.18109 : 1"
-       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
-       id="perspective1793" />
-    <linearGradient
-       id="linearGradient5345">
-      <stop
-         style="stop-color:#436265;stop-opacity:1;"
-         offset="0"
-         id="stop5347" />
-      <stop
-         style="stop-color:#575757;stop-opacity:1;"
-         offset="1"
-         id="stop5349" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4795">
-      <stop
-         id="stop4797"
-         offset="0"
-         style="stop-color:#a2600d;stop-opacity:0.64285713;" />
-      <stop
-         id="stop4799"
-         offset="1"
-         style="stop-color:#ab540b;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient12020">
-      <stop
-         style="stop-color:#000000;stop-opacity:0.65306121;"
-         offset="0"
-         id="stop12026" />
-      <stop
-         style="stop-color:#404040;stop-opacity:0;"
-         offset="1"
-         id="stop12028" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient11491">
-      <stop
-         style="stop-color:#c97814;stop-opacity:0.14117648;"
-         offset="0"
-         id="stop11493" />
-      <stop
-         style="stop-color:#5d3e00;stop-opacity:0.70408165;"
-         offset="1"
-         id="stop11495" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       id="linearGradient4466">
-      <stop
-         style="stop-color:#ff0000;stop-opacity:1;"
-         offset="0"
-         id="stop4468" />
-      <stop
-         style="stop-color:#ff0000;stop-opacity:0;"
-         offset="1"
-         id="stop4470" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6297">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop6299" />
-      <stop
-         id="stop6309"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop6305"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop6307" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop6301" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6373">
-      <stop
-         id="stop6375"
-         offset="0"
-         style="stop-color:#787878;stop-opacity:0;" />
-      <stop
-         style="stop-color:#404040;stop-opacity:0.3764706;"
-         offset="0.56713724"
-         id="stop6383" />
-      <stop
-         id="stop6385"
-         offset="0.76563531"
-         style="stop-color:#393939;stop-opacity:0.5529412;" />
-      <stop
-         id="stop6377"
-         offset="1"
-         style="stop-color:#404040;stop-opacity:0.41960785;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5665">
-      <stop
-         style="stop-color:#002726;stop-opacity:0.86734694;"
-         offset="0"
-         id="stop5667" />
-      <stop
-         id="stop5746"
-         offset="0.44444445"
-         style="stop-color:#1e393a;stop-opacity:0.70408165;" />
-      <stop
-         style="stop-color:#002328;stop-opacity:0;"
-         offset="1"
-         id="stop5669" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4082">
-      <stop
-         id="stop4084"
-         offset="0"
-         style="stop-color:#000000;stop-opacity:1;" />
-      <stop
-         id="stop4086"
-         offset="1"
-         style="stop-color:#000000;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3830">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0.78823531;"
-         offset="0"
-         id="stop3832" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop3834" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4040">
-      <stop
-         id="stop4042"
-         offset="0"
-         style="stop-color:#878787;stop-opacity:0.09183674;" />
-      <stop
-         id="stop4051"
-         offset="0.33333334"
-         style="stop-color:#fefefe;stop-opacity:0.29591838;" />
-      <stop
-         id="stop4046"
-         offset="1"
-         style="stop-color:#b8b8b8;stop-opacity:0;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3668">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3527">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop3529" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop3531" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3411">
-      <stop
-         id="stop3413"
-         offset="0"
-         style="stop-color:#735732;stop-opacity:1;" />
-      <stop
-         id="stop3415"
-         offset="1"
-         style="stop-color:#9b6f4a;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3384">
-      <stop
-         style="stop-color:#ad8147;stop-opacity:1;"
-         offset="0"
-         id="stop3386" />
-      <stop
-         style="stop-color:#7d6754;stop-opacity:1;"
-         offset="1"
-         id="stop3388" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient4342">
-      <stop
-         style="stop-color:#878787;stop-opacity:0.07058824;"
-         offset="0"
-         id="stop4344" />
-      <stop
-         id="stop3802"
-         offset="0.74074072"
-         style="stop-color:#ffffff;stop-opacity:0.26274511;" />
-      <stop
-         style="stop-color:#444444;stop-opacity:0.05882353;"
-         offset="1"
-         id="stop4346" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7260">
-      <stop
-         style="stop-color:#3f3f3f;stop-opacity:1;"
-         offset="0"
-         id="stop7262" />
-      <stop
-         style="stop-color:#838393;stop-opacity:1;"
-         offset="1"
-         id="stop7264" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient5266">
-      <stop
-         id="stop5268"
-         offset="0"
-         style="stop-color:#000000;stop-opacity:1;" />
-      <stop
-         id="stop5270"
-         offset="1"
-         style="stop-color:#838383;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6114">
-      <stop
-         id="stop6116"
-         offset="0"
-         style="stop-color:#436265;stop-opacity:1;" />
-      <stop
-         id="stop6118"
-         offset="1"
-         style="stop-color:#575757;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient19892">
-      <stop
-         style="stop-color:#9595ff;stop-opacity:1;"
-         offset="0"
-         id="stop19894" />
-      <stop
-         style="stop-color:#2626a0;stop-opacity:1;"
-         offset="1"
-         id="stop19896" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient13997">
-      <stop
-         style="stop-color:#567e81;stop-opacity:1;"
-         offset="0"
-         id="stop13999" />
-      <stop
-         style="stop-color:#757575;stop-opacity:1;"
-         offset="1"
-         id="stop14001" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient14982"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient14990"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient15006"
-       cx="330.59082"
-       cy="472.31458"
-       fx="330.59082"
-       fy="472.31458"
-       r="55.343937"
-       gradientTransform="matrix(0.8005602,0,0,1.2253526,159.52117,-127.50996)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient15010"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.8005602,0,0,1.2253526,742.50186,-127.50996)"
-       cx="290.20245"
-       cy="463.33759"
-       fx="290.20245"
-       fy="463.33759"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient17937"
-       cx="215.5"
-       cy="354.86218"
-       fx="215.5"
-       fy="354.86218"
-       r="23"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient18919"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,0.5641026,217.45312,168.06813)" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient19898"
-       cx="584"
-       cy="406.02884"
-       fx="584"
-       fy="406.02884"
-       r="27.833334"
-       gradientTransform="matrix(1,0,0,0.257485,0,301.4825)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient19903"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6768671,4.0093962e-7,-9.0603215e-8,0.1529565,58.421469,327.66517)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient3187"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7745834,0,0,1.3803735,182.90611,-105.06106)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6112"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36"
-       gradientTransform="matrix(0.9980831,0,0,0.3771819,131.61052,138.14082)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6126"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9142603,0,0,0.3773041,159.76123,173.43464)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6130"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9142603,0,0,0.3773041,159.76123,214.78137)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6134"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9142603,0,0,0.3773041,159.76123,256.1281)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6136"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9142603,0,0,0.3773041,159.76123,132.08791)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6169"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8005602,0,0,1.2253526,159.52117,-127.50996)"
-       cx="330.59082"
-       cy="472.31458"
-       fx="330.59082"
-       fy="472.31458"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6171"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.8005602,0,0,1.2253526,742.50186,-127.50996)"
-       cx="290.20245"
-       cy="463.33759"
-       fx="290.20245"
-       fy="463.33759"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6173"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,0.5641026,217.45312,168.06813)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient6175"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6768671,4.0093962e-7,-9.0603215e-8,0.1529565,58.421469,327.66517)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6177"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7745834,0,0,1.3803735,182.90611,-105.06106)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6179"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9142603,0,0,0.3773041,159.76123,132.08791)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6181"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9142603,0,0,0.3773041,159.76123,173.43464)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6183"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9142603,0,0,0.3773041,159.76123,214.78137)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6185"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9142603,0,0,0.3773041,159.76123,256.1281)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       r="27.833334"
-       fy="405.45587"
-       fx="579.92432"
-       cy="405.45587"
-       cx="579.92432"
-       gradientTransform="matrix(0.6768671,4.0093962e-7,-9.0603215e-8,0.1529565,57.801674,327.66517)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient6245"
-       xlink:href="#linearGradient19892"
-       inkscape:collect="always" />
-    <radialGradient
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,0.257485,0,301.4825)"
-       r="27.833334"
-       fy="406.02884"
-       fx="584"
-       cy="406.02884"
-       cx="584"
-       id="radialGradient6243"
-       xlink:href="#linearGradient19892"
-       inkscape:collect="always" />
-    <radialGradient
-       gradientTransform="matrix(1,0,0,0.5641026,217,168.06813)"
-       gradientUnits="userSpaceOnUse"
-       r="26"
-       fy="436.61215"
-       fx="238.5"
-       cy="436.61215"
-       cx="238.5"
-       id="radialGradient6241"
-       xlink:href="#linearGradient13997"
-       inkscape:collect="always" />
-    <radialGradient
-       gradientUnits="userSpaceOnUse"
-       r="23"
-       fy="354.86218"
-       fx="215.5"
-       cy="354.86218"
-       cx="215.5"
-       id="radialGradient6239"
-       xlink:href="#linearGradient13997"
-       inkscape:collect="always" />
-    <radialGradient
-       r="55.343937"
-       fy="463.33759"
-       fx="290.20245"
-       cy="463.33759"
-       cx="290.20245"
-       gradientTransform="matrix(-0.8005602,0,0,1.2253526,742.50186,-127.50996)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient6237"
-       xlink:href="#linearGradient13997"
-       inkscape:collect="always" />
-    <radialGradient
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8005602,0,0,1.2253526,159.52117,-127.50996)"
-       r="55.343937"
-       fy="472.31458"
-       fx="330.59082"
-       cy="472.31458"
-       cx="330.59082"
-       id="radialGradient6235"
-       xlink:href="#linearGradient13997"
-       inkscape:collect="always" />
-    <radialGradient
-       r="26.856915"
-       fy="238.11044"
-       fx="448.25"
-       cy="238.11044"
-       cx="448.25"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient6232"
-       xlink:href="#linearGradient13997"
-       inkscape:collect="always" />
-    <radialGradient
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       r="26.856915"
-       fy="238.11044"
-       fx="448.25"
-       cy="238.11044"
-       cx="448.25"
-       id="radialGradient6229"
-       xlink:href="#linearGradient13997"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient6223">
-      <stop
-         id="stop6225"
-         offset="0"
-         style="stop-color:#465b5c;stop-opacity:1;" />
-      <stop
-         id="stop6227"
-         offset="1"
-         style="stop-color:#757575;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6217">
-      <stop
-         id="stop6219"
-         offset="0"
-         style="stop-color:#9595ff;stop-opacity:1;" />
-      <stop
-         id="stop6221"
-         offset="1"
-         style="stop-color:#2626a0;stop-opacity:1;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6263"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6265"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6267"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8005602,0,0,1.2253526,159.52117,-127.50996)"
-       cx="330.59082"
-       cy="472.31458"
-       fx="330.59082"
-       fy="472.31458"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6269"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.8005602,0,0,1.2253526,742.50186,-127.50996)"
-       cx="290.20245"
-       cy="463.33759"
-       fx="290.20245"
-       fy="463.33759"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6271"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,0.5641026,217.45312,168.06813)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient6273"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6768671,4.0093962e-7,-9.0603215e-8,0.1529565,58.421469,327.66517)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6295"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6297"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6299"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6301"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6303"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8005602,0,0,1.2253526,159.52117,-127.50996)"
-       cx="330.59082"
-       cy="472.31458"
-       fx="330.59082"
-       fy="472.31458"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6305"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.8005602,0,0,1.2253526,742.50186,-127.50996)"
-       cx="290.20245"
-       cy="463.33759"
-       fx="290.20245"
-       fy="463.33759"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6307"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,0.5641026,217.45312,168.06813)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient6309"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6768671,4.0093962e-7,-9.0603215e-8,0.1529565,58.421469,327.66517)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6344"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6346"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6360"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6362"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6368"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6370"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6374"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6376"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6378"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6380"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6382"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6420"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6422"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6444"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6446"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6448"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6450"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6452"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6454"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6456"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6458"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6485"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6487"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6489"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6491"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6497"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6499"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6517"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6521"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient6526"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.3714703e-7,0.4003521,-0.09047043,-5.3589821e-8,286.09862,354.27728)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6529"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5914781,-0.3336543,0,380.49679,448.34102)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6546"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6554"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6556"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6583"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6587"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6591"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient3300"
-       cx="509.5"
-       cy="578.36218"
-       fx="509.5"
-       fy="578.36218"
-       r="21.9"
-       gradientTransform="matrix(1,0,0,0.4748858,-83.5,367.46899)"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5266"
-       id="linearGradient5264"
-       x1="482.60001"
-       y1="577.375"
-       x2="504.39999"
-       y2="577.375"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3762977,0,0,0.4300455,13.67597,311.64689)" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient6254"
-       cx="444"
-       cy="639.11218"
-       fx="444"
-       fy="639.11218"
-       r="6.9000001"
-       gradientTransform="matrix(1,0,0,1.0362319,0,-23.156238)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient6257"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3416303,0.2221786,-0.4075222,0.6266217,325.17001,60.81554)"
-       cx="444"
-       cy="639.11218"
-       fx="444"
-       fy="639.11218"
-       r="6.9000001" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7245"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6047108,0,0,0.2871686,-99.106423,393.85697)"
-       cx="514.30835"
-       cy="571.51276"
-       fx="514.30835"
-       fy="571.51276"
-       r="21.9" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient7260"
-       id="linearGradient7258"
-       x1="386.85001"
-       y1="642.125"
-       x2="434.89999"
-       y2="642.125"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.10723035,0,0,0.10723035,-783.50383,260.77742)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient7260"
-       id="linearGradient2339"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6047108,0,0,0.6047108,300.85457,312.63003)"
-       x1="386.85001"
-       y1="642.125"
-       x2="434.89999"
-       y2="642.125" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient3341"
-       cx="530.25"
-       cy="697.73718"
-       fx="530.25"
-       fy="697.73718"
-       r="13.25"
-       gradientTransform="matrix(0.7115278,0,0,0.06058435,410.33233,351.52581)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient3345"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5476071,-2.0292886e-8,0,0.1034865,23.705533,740.69711)"
-       cx="530.25"
-       cy="697.73718"
-       fx="530.25"
-       fy="697.73718"
-       r="13.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient3355"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7115278,0,0,0.06058435,410.33233,351.52581)"
-       cx="530.25"
-       cy="697.73718"
-       fx="530.25"
-       fy="697.73718"
-       r="13.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient3357"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5476071,-2.0292886e-8,0,0.1034865,23.705533,740.69711)"
-       cx="530.25"
-       cy="697.73718"
-       fx="530.25"
-       fy="697.73718"
-       r="13.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient3363"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5476071,-2.0292886e-8,0,0.1034865,421.49187,-594.61619)"
-       cx="530.25"
-       cy="697.73718"
-       fx="530.25"
-       fy="697.73718"
-       r="13.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient2359"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient2363"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient3350"
-       gradientUnits="userSpaceOnUse"
-       cx="553"
-       cy="702.11218"
-       fx="553"
-       fy="702.11218"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="radialGradient4352"
-       cx="418"
-       cy="898.36218"
-       fx="418"
-       fy="898.36218"
-       r="81.5"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient4366"
-       gradientUnits="userSpaceOnUse"
-       cx="553"
-       cy="702.11218"
-       fx="553"
-       fy="702.11218"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient4368"
-       gradientUnits="userSpaceOnUse"
-       cx="553"
-       cy="702.11218"
-       fx="553"
-       fy="702.11218"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient4370"
-       gradientUnits="userSpaceOnUse"
-       cx="553"
-       cy="702.11218"
-       fx="553"
-       fy="702.11218"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient4372"
-       gradientUnits="userSpaceOnUse"
-       cx="553"
-       cy="702.11218"
-       fx="553"
-       fy="702.11218"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient4379"
-       gradientUnits="userSpaceOnUse"
-       cx="554.89978"
-       cy="704.69049"
-       fx="554.89978"
-       fy="704.69049"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient4384"
-       gradientUnits="userSpaceOnUse"
-       cx="554.7157"
-       cy="705.05341"
-       fx="554.7157"
-       fy="705.05341"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient3404"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,-0.8690065,39.8,1742.914)"
-       cx="165.22531"
-       cy="919.27032"
-       fx="165.22531"
-       fy="919.27032"
-       r="10.188715" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient3406"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,0.8690065,39.8,123.01025)"
-       cx="165.22531"
-       cy="919.27032"
-       fx="165.22531"
-       fy="919.27032"
-       r="10.188715" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient3408"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.3685534,-0.01362661,0.00443901,0.4458206,-53.152144,514.08233)"
-       cx="186.91013"
-       cy="948.8396"
-       fx="186.91013"
-       fy="948.8396"
-       r="4.91535" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5266"
-       id="radialGradient3435"
-       cx="211.84375"
-       cy="1004.0294"
-       fx="211.84375"
-       fy="1004.0294"
-       r="18.500017"
-       gradientTransform="matrix(1,0,0,0.5405406,0,458.36229)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5266"
-       id="radialGradient3437"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,0.5405406,0,458.36229)"
-       cx="211.84375"
-       cy="1004.0294"
-       fx="211.84375"
-       fy="1004.0294"
-       r="18.500017" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5266"
-       id="radialGradient3439"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,0.5405406,0,458.36229)"
-       cx="211.84375"
-       cy="1004.0294"
-       fx="211.84375"
-       fy="1004.0294"
-       r="18.500017" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5266"
-       id="radialGradient3441"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,0.5405406,0,458.36229)"
-       cx="211.84375"
-       cy="1004.0294"
-       fx="211.84375"
-       fy="1004.0294"
-       r="18.500017" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5266"
-       id="radialGradient3444"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3459467,0,0,0.1869982,652.49157,13.205572)"
-       cx="211.84375"
-       cy="1004.0294"
-       fx="211.84375"
-       fy="1004.0294"
-       r="18.500017" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5266"
-       id="radialGradient3447"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3459467,0,0,0.1869982,145.36335,811.06049)"
-       cx="211.84375"
-       cy="1004.0294"
-       fx="211.84375"
-       fy="1004.0294"
-       r="18.500017" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5266"
-       id="radialGradient3453"
-       cx="546.89893"
-       cy="791.65961"
-       fx="546.89893"
-       fy="791.65961"
-       r="9.25"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1517795,0,0,1,-630.75179,0)" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5266"
-       id="radialGradient3466"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3459467,0,0,0.1869982,145.36335,811.06049)"
-       cx="211.84375"
-       cy="1004.0294"
-       fx="211.84375"
-       fy="1004.0294"
-       r="18.500017" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient2396"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.17732501,0,0,0.15409659,-749.84229,174.93229)"
-       cx="165.22531"
-       cy="919.27032"
-       fx="165.22531"
-       fy="919.27032"
-       r="10.188715" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3543"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04170237,-0.00560045,0.0213067,0.15865499,-1048.7199,175.2858)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3626"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,472.04697,-214.2122)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3644"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,538.45368,-426.30597)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3648"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-625.49295,-66.647129)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3810">
-      <path
-         style="fill:url(#linearGradient3814);fill-opacity:1;stroke:#000000;stroke-width:1.34942758;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1027.9051,-131.01738 c -6.4158,4.84408 -10.7989,12.56805 -9.806,17.23882 0.056,0.26188 0.1156,0.52868 0.202,0.76035 l 3.0585,14.386949 -0.035,0.02625 29.1552,137.145515 4.2397,19.94383 0.035,-0.02625 2.8751,13.524252 c 0.022,0.28199 0.076,0.549254 0.1324,0.812825 0.9929,4.670771 6.9881,4.529527 13.4039,-0.314472 0.015,-0.01109 0.055,-0.04132 0.07,-0.05248 l -0.022,-0.101499 c 25.4134,-19.187543 42.8509,-49.807536 38.9064,-68.3621187 -0.2226,-1.0471377 -0.526,-2.0378064 -0.872,-2.9635374 L 1081.6466,-128.83682 c -0.089,-1.11208 -0.2284,-2.21273 -0.4496,-3.25303 -3.9444,-18.55461 -27.782,-18.04065 -53.1954,1.14686 l -0.027,-0.12687 c -0.015,0.0111 -0.055,0.0414 -0.07,0.0525 z"
-         id="path3812"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="linearGradient3814"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.2971089,-0.979339,0.1850381,0.870417,181.59525,-137.10746)"
-       x1="551.82086"
-       y1="755.5"
-       x2="597.50287"
-       y2="755.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient3863"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0013626,0,0,1.3695448,83.295362,139.65316)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6217"
-       id="radialGradient3865"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.756009,0.2977884,-0.660858,1.6777507,569.00739,-532.29886)"
-       cx="538.87787"
-       cy="585.30975"
-       fx="538.87787"
-       fy="585.30975"
-       r="29.95952" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath3900">
-      <path
-         id="path3902"
-         d="m -50.977023,-1274.0172 c 2.444099,-5.2616 0.270608,-10.0526 -4.826522,-10.7074 -0.285788,-0.037 -0.580241,-0.072 -0.871641,-0.082 l -15.700225,-2.0171 0.01324,-0.029 -149.664489,-19.2282 -21.76436,-2.7961 -0.0132,0.028 -14.75878,-1.8962 c -0.26864,-0.063 -0.55751,-0.1018 -0.84514,-0.1388 -5.09713,-0.6548 -11.19862,3.0732 -13.64271,8.3347 -0.006,0.012 -0.0209,0.045 -0.0264,0.057 l 0.11076,0.014 c -9.68124,20.8411 -1.12878,39.872 19.11952,42.4734 1.14273,0.1468 2.32016,0.2286 3.48528,0.2666 l 141.68979,18.2036 c 1.06072,0.2465 2.1635,0.4591 3.29876,0.605 20.248315,2.6014 44.550056,-12.2086 54.231306,-33.0497 l 0.138453,0.018 c 0.0056,-0.012 0.02082,-0.045 0.02644,-0.057 z"
-         style="fill:url(#linearGradient3904);fill-opacity:1;stroke:#000000;stroke-width:1.21986032;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="linearGradient3904"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.4941325,1.0637335,-0.9498708,-0.1220347,832.99925,-1793.2221)"
-       x1="551.82086"
-       y1="755.5"
-       x2="597.50287"
-       y2="755.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4048"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.0013626,0,0,1.3695448,83.295362,139.65316)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4059"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3748771,0,0,0.764933,434.34205,486.5673)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4063"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.382084,0,0,-0.2145698,430.31826,1091.5866)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4068"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.382084,0,0,-0.2145698,429.66825,1090.5866)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4070"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3748771,0,0,0.764933,433.69204,486.5673)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4537"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.8321973,0,0,0.3591828,1014.2174,611.92033)"
-       cx="615.5"
-       cy="954.90625"
-       fx="615.5"
-       fy="954.90625"
-       r="38.988735" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4539"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8321973,0,0,0.3591828,97.782581,611.92033)"
-       cx="615.5"
-       cy="954.90625"
-       fx="615.5"
-       fy="954.90625"
-       r="38.988735" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4541"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7109699,-0.4774651,-0.0714197,3.7224191,160.76868,-1855.8206)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4543"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.7109699,-0.4774651,0.0714197,3.7224191,951.37714,-1855.8206)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="linearGradient4545"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.856119,0,0,0.8830074,107.53575,121.72661)"
-       x1="551.82086"
-       y1="755.5"
-       x2="597.50287"
-       y2="755.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="linearGradient4547"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.856119,0,0,0.8830074,1004.5612,121.72661)"
-       x1="551.82086"
-       y1="755.5"
-       x2="597.50287"
-       y2="755.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4549"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9997268,0,0,3.7226192,0.1658348,-2130.0119)"
-       cx="607.00055"
-       cy="810.03564"
-       fx="607.00055"
-       fy="810.03564"
-       r="39.493622" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4551"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3748771,0,0,-0.764933,409.69204,1101.6827)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4553"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.8560363,0,0.08599219,3.3938102,1037.1252,-1907.481)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4555"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.856119,0,0,5.1822727,1068.9628,-2934.9277)"
-       cx="625.82153"
-       cy="728.03802"
-       fx="625.82153"
-       fy="728.03802"
-       r="21.440355" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4557"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.690486,0,0.06936193,1.9844322,939.85652,-707.75592)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4559"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.856119,0,0,5.1822727,43.134154,-2934.9277)"
-       cx="625.82153"
-       cy="728.03802"
-       fx="625.82153"
-       fy="728.03802"
-       r="21.440355" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4561"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9997268,0,0,3.7226192,0.1658348,-2130.0119)"
-       cx="607.00055"
-       cy="810.03564"
-       fx="607.00055"
-       fy="810.03564"
-       r="39.493622" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4563"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3748771,0,0,-0.764933,409.69204,1101.6827)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4565"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8560363,0,-0.08599219,3.3938102,74.874757,-1907.481)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4567"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6795998,0,-0.06826836,1.9844935,179.32952,-707.80522)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4569"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8572855,0,0,1.2093182,77.401863,222.08319)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4571"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3748771,0,0,-0.764933,431.69204,1409.6827)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4573"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3748771,0,0,-0.764933,261.69204,1409.6827)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient4575"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5987193,0.2443073,-0.9914327,1.98613,811.82769,-374.24441)"
-       cx="540.22217"
-       cy="592.30225"
-       fx="540.22217"
-       fy="592.30225"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4693"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,472.04697,-214.2122)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4695"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,284.05296,-679.32993)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4697"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,284.05296,-739.32993)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4699"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731043,0.1039016,0.7736772,-649.49724,-505.84259)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4701"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731043,0.1039016,0.7736772,-377.40017,253.04533)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4703"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,344.99082,-78.918992)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4705"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-423.7513,162.82122)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4707"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,265.70382,68.531283)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4709"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,352.79031,-54.116412)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4711"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-415.95187,187.6238)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4713"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,265.70382,95.872745)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4715"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,362.38971,-23.590154)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4717"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-406.35257,218.15006)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4719"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,538.45368,-426.30597)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4721"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-625.49295,-66.647129)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4747"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,284.05296,-679.32993)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4749"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,284.05296,-739.32993)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4751"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731043,0.1039016,0.7736772,-649.49724,-505.84259)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4753"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731043,0.1039016,0.7736772,-377.40017,253.04533)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4755"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,344.99082,-78.918992)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4757"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-423.7513,162.82122)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4759"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,265.70382,68.531283)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4761"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,352.79031,-54.116412)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4763"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-415.95187,187.6238)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4765"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,265.70382,95.872745)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4767"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,362.38971,-23.590154)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4769"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-406.35257,218.15006)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4792"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,344.99082,-78.918992)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4794"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-423.7513,162.82122)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4796"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,265.70382,68.531283)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4798"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,352.79031,-54.116412)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4800"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-415.95187,187.6238)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4802"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,265.70382,95.872745)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4804"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,362.38971,-23.590154)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4806"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-406.35257,218.15006)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2668"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,43.83421,-906.37996)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2670"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-650.37521,-688.07765)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2672"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,226.63826,-931.16224)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2674"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,43.83421,-906.37996)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2676"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-650.37521,-688.07765)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2684"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2164797,-0.0261573,0.1106044,0.7410091,171.88646,-903.53859)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2701"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,43.83421,-906.37996)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2703"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,43.83421,-906.37996)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2705"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2164797,-0.0261573,0.1106044,0.7410091,171.88646,-903.53859)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2708"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.09133832,-0.01103643,0.04666682,0.3126506,-511.17913,-494.34421)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2711"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08580303,-0.01152299,0.04383877,0.3264342,-589.25915,-481.84323)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2714"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08580303,-0.01152299,0.04383877,0.3264342,-589.25915,-481.84323)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2716"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,43.83421,-906.37996)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2718"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,43.83421,-906.37996)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2720"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2164797,-0.0261573,0.1106044,0.7410091,171.88646,-903.53859)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2723"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.09133832,-0.01103643,0.04666682,0.3126506,295.2296,-722.50281)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2726"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08580303,-0.01152299,0.04383877,0.3264342,168.27964,-720.06047)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2729"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08580303,-0.01152299,0.04383877,0.3264342,168.27964,-720.06047)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient2790"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1926731,0.5144739,-1.5663623,-0.8519287,1528.7574,1086.082)"
-       cx="540.22217"
-       cy="592.30225"
-       fx="540.22217"
-       fy="592.30225"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2793"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.283794,0.5790789,0,136.8988,643.45585)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2796"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.283794,0.5790789,0,136.8988,772.15132)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2800"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6489927,-0.9154928,0,1035.9499,503.94225)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2803"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5144789,-1.5023255,-0.05168135,1739.9053,581.10477)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2806"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.648047,-2.5692236,-0.06509885,2648.0985,502.02915)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2812"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6481097,-3.9231473,0,3425.9088,478.00049)"
-       cx="625.82153"
-       cy="728.03802"
-       fx="625.82153"
-       fy="728.03802"
-       r="21.440355" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2815"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.5227201,-1.5022791,0.05250921,1739.868,1156.8482)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2818"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.6481097,-3.9231473,0,3425.9088,1254.5858)"
-       cx="625.82153"
-       cy="728.03802"
-       fx="625.82153"
-       fy="728.03802"
-       r="21.440355" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2821"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.648047,-2.5692236,0.06509885,2648.0985,1230.4837)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="linearGradient2827"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.6481097,-0.668465,0,1111.923,1205.8317)"
-       x1="551.82086"
-       y1="755.5"
-       x2="597.50287"
-       y2="755.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="linearGradient2830"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6481097,-0.668465,0,1111.923,526.75458)"
-       x1="551.82086"
-       y1="755.5"
-       x2="597.50287"
-       y2="755.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2835"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3614565,-0.5382271,-2.8179911,0.05406702,2608.99,1165.5697)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2838"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3614565,0.5382271,-2.8179911,-0.05406702,2608.99,567.05362)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2841"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6300002,-0.2719129,0,740.83061,519.37111)"
-       cx="615.5"
-       cy="954.90625"
-       fx="615.5"
-       fy="954.90625"
-       r="38.988735" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2844"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.6300002,-0.2719129,0,740.83061,1213.1418)"
-       cx="615.5"
-       cy="954.90625"
-       fx="615.5"
-       fy="954.90625"
-       r="38.988735" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2873"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.6300002,-0.2719129,0,740.83061,1213.1418)"
-       cx="615.5"
-       cy="954.90625"
-       fx="615.5"
-       fy="954.90625"
-       r="38.988735" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2875"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6300002,-0.2719129,0,740.83061,519.37111)"
-       cx="615.5"
-       cy="954.90625"
-       fx="615.5"
-       fy="954.90625"
-       r="38.988735" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2877"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3614565,0.5382271,-2.8179911,-0.05406702,2608.99,567.05362)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2879"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3614565,-0.5382271,-2.8179911,0.05406702,2608.99,1165.5697)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="linearGradient2881"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6481097,-0.668465,0,1111.923,526.75458)"
-       x1="551.82086"
-       y1="755.5"
-       x2="597.50287"
-       y2="755.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="linearGradient2883"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.6481097,-0.668465,0,1111.923,1205.8317)"
-       x1="551.82086"
-       y1="755.5"
-       x2="597.50287"
-       y2="755.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2885"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9997268,0,0,3.7226192,0.1658348,-2130.0119)"
-       cx="607.00055"
-       cy="810.03564"
-       fx="607.00055"
-       fy="810.03564"
-       r="39.493622" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2887"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3748771,0,0,-0.764933,409.69204,1101.6827)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2889"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.648047,-2.5692236,0.06509885,2648.0985,1230.4837)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2891"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.6481097,-3.9231473,0,3425.9088,1254.5858)"
-       cx="625.82153"
-       cy="728.03802"
-       fx="625.82153"
-       fy="728.03802"
-       r="21.440355" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2893"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.5227201,-1.5022791,0.05250921,1739.868,1156.8482)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2895"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6481097,-3.9231473,0,3425.9088,478.00049)"
-       cx="625.82153"
-       cy="728.03802"
-       fx="625.82153"
-       fy="728.03802"
-       r="21.440355" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2901"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.648047,-2.5692236,-0.06509885,2648.0985,502.02915)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2903"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5144789,-1.5023255,-0.05168135,1739.9053,581.10477)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2905"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6489927,-0.9154928,0,1035.9499,503.94225)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2907"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.283794,0.5790789,0,136.8988,772.15132)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient2909"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.283794,0.5790789,0,136.8988,643.45585)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient2911"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1926731,0.5144739,-1.5663623,-0.8519287,1528.7574,1086.082)"
-       cx="540.22217"
-       cy="592.30225"
-       fx="540.22217"
-       fy="592.30225"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2932"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-63.86148,-937.63957)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2935"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-738.72305,23.112109)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2938"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,430.74309,127.18351)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2941"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430541,0.4788341,256.60075,-774.901)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2944"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,543.61825,-380.13567)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2947"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430545,0.4788342,157.29285,442.70569)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2950"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,-780.23196,-191.93841)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2953"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,536.05577,-404.18471)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2956"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-746.28559,-0.936928)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2969"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430542,0.4788342,234.20014,398.97291)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2973"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430541,0.4788341,-771.20415,-207.36357)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2976"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-355.80947,374.52441)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2979"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,-744.27927,-309.39116)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2982"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,304.15574,258.1561)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2985"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-363.37194,350.47537)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient2988"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,423.18054,103.13447)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3000"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-559.65035,-781.73285)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3003"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,357.84175,-714.12708)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3006"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.75518,-905.99848)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3009"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-567.21282,-805.78188)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3012"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-71.424029,-961.68861)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3024"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.90305,-877.08678)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3029"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02840933,-0.00381526,0.01451498,0.10808213,-312.38624,-759.38929)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3101"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.90305,-877.08678)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3103"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-71.424029,-961.68861)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3105"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-567.21282,-805.78188)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3107"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.75518,-905.99848)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3109"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,357.84175,-714.12708)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3111"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-559.65035,-781.73285)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3113"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,423.18054,103.13447)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3115"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-363.37194,350.47537)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3117"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,304.15574,258.1561)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3119"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,-744.27927,-309.39116)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3121"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-355.80947,374.52441)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3123"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430541,0.4788341,-771.20415,-207.36357)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3125"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430542,0.4788342,234.20014,398.97291)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3127"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-746.28559,-0.936928)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3129"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,536.05577,-404.18471)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3131"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,-780.23196,-191.93841)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3133"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430545,0.4788342,157.29285,442.70569)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3135"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,543.61825,-380.13567)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3137"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430541,0.4788341,256.60075,-774.901)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3139"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,430.74309,127.18351)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3141"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-738.72305,23.112109)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3143"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-63.86148,-937.63957)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3146"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-39.863109,-861.32398)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3149"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-684.63097,-35.828915)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3152"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,352.65271,109.80892)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3155"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430541,0.4788341,192.18027,-727.46684)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3158"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,465.52791,-397.51038)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3161"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,160.61061,362.77456)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3164"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,-710.94992,-231.93841)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3167"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,457.96543,-421.55945)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3170"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-692.19351,-59.877952)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3173"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430542,0.4788342,225.33118,319.46603)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3176"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.0643054,0.4788341,-697.91451,-175.29084)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3179"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-301.71735,315.58337)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3182"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,-676.71576,-266.55236)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3185"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,234.8737,218.1561)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3188"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-309.27982,291.53433)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3191"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,345.09016,85.759876)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3194"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-535.652,-705.41726)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3197"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,286.96047,-677.03477)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3200"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.75518,-825.99848)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3203"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-543.21447,-729.46629)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3206"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-47.425658,-885.37302)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3209"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.90305,-797.08678)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <filter
-       inkscape:collect="always"
-       id="filter4074"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="3.1275174"
-         id="feGaussianBlur4076" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-0.16771574"
-       width="1.3354315"
-       y="-0.19306704"
-       height="1.3861341"
-       id="filter4164"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="7.3894429"
-         id="feGaussianBlur4166" />
-    </filter>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient4239"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient4241"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient4416"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient4426"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5665"
-       id="radialGradient4694"
-       gradientUnits="userSpaceOnUse"
-       cx="436"
-       cy="1248.3622"
-       fx="436"
-       fy="1248.3622"
-       r="84.543999"
-       spreadMethod="pad" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath5680">
-      <path
-         id="path5682"
-         d="m 475.64129,1178.9383 c -11.60629,17.865 -25.2868,30.4341 -35.82369,33.5385 -1.39348,-0.1635 -2.8106,-0.242 -4.24776,-0.242 -0.31164,0 -0.61775,-0.01 -0.92752,0 -14.4817,0.3674 -26.85448,9.2768 -32.27492,21.8707 -7.95628,7.574 -25.67843,13.1437 -46.95389,14.2622 21.26316,1.1182 38.97724,6.6687 46.94045,14.2354 5.52939,12.8728 18.32517,21.8975 33.21588,21.8975 1.44194,0 2.86325,-0.091 4.2612,-0.2555 10.53561,3.1103 24.22234,15.6804 35.82369,33.5385 -9.66075,-18.9687 -13.71104,-37.093 -11.14365,-47.7738 4.52047,-6.0331 7.19162,-13.5287 7.19162,-21.6421 0,-8.1095 -2.67503,-15.5971 -7.19162,-21.6286 -2.58069,-10.6775 1.46144,-28.8171 11.13021,-47.8008 z m -40.9452,35.4339 c 0.29145,-0.01 0.58054,0 0.87375,0 2.6175,0 5.16015,0.2993 7.60833,0.8603 l 0.37639,0.2151 c 3.06525,0.7476 6.08323,1.9324 8.95256,3.589 2.86933,1.6566 5.40134,3.6743 7.58144,5.9549 l 0.32262,0.1883 c 5.67503,6.0756 9.15419,14.2244 9.15419,23.1879 0,8.9431 -3.4618,17.0763 -9.11386,23.1476 l -0.37639,0.2151 c -2.1801,2.2807 -4.71212,4.3118 -7.58145,5.9684 -2.86932,1.6566 -5.88731,2.828 -8.95256,3.5756 l -0.40326,0.2285 c -2.43612,0.5551 -4.96455,0.8603 -7.56801,0.8603 -15.28141,0 -28.21279,-10.0972 -32.49,-23.981 l 0,-0.4839 c -0.88514,-3.0284 -1.37111,-6.2309 -1.37111,-9.544 0,-3.3132 0.48597,-6.5157 1.37111,-9.5441 l 0,-0.4839 c 4.20349,-13.6075 16.72762,-23.5766 31.61625,-23.9541 z"
-         style="fill:url(#radialGradient5684);fill-opacity:1;stroke:#000000;stroke-width:0.33329579;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5684"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.430153,0,0,0.2710196,119.96641,887.39855)"
-       cx="582.75"
-       cy="1357.254"
-       fx="582.75"
-       fy="1357.254"
-       r="55.793667" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5665"
-       id="radialGradient5690"
-       gradientUnits="userSpaceOnUse"
-       cx="436"
-       cy="1248.3622"
-       fx="436"
-       fy="1248.3622"
-       r="84.543999" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath5724">
-      <path
-         style="fill:url(#radialGradient5728);fill-opacity:1;stroke:#000000;stroke-width:0.34496242;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 468.28352,1263.141 c 8.22781,-7.8461 26.57841,-13.6171 48.61137,-14.7754 -21.9819,-1.156 -40.29991,-6.8882 -48.55572,-14.7058 2.77993,4.2214 4.39645,9.2768 4.39645,14.7058 0,5.4607 -1.64226,10.5391 -4.4521,14.7754 z"
-         id="path5726"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5728"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.4452101,0,0,-0.2805064,760.58354,1621.97)"
-       cx="582.75"
-       cy="1357.254"
-       fx="582.75"
-       fy="1357.254"
-       r="55.793667" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath5732">
-      <path
-         id="path5734"
-         d="m 432.65707,1213.0144 c -10.90883,-3.2025 -25.08191,-16.2091 -37.10154,-34.711 9.98983,19.6149 14.18459,38.3449 11.54224,49.4034 2.26589,-4.5182 5.83575,-8.4458 10.5374,-11.1604 4.72911,-2.7303 9.94821,-3.8472 15.0219,-3.532 z"
-         style="fill:url(#radialGradient5736);fill-opacity:1;stroke:#000000;stroke-width:0.34496242;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5736"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.222605,0.3855632,-0.2429256,0.1402532,597.26213,780.46064)"
-       cx="582.75"
-       cy="1357.254"
-       fx="582.75"
-       fy="1357.254"
-       r="55.793667" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath5740">
-      <path
-         id="path5742"
-         d="m 407.05942,1268.9312 c 2.68101,11.0485 -1.49652,29.8261 -11.50984,49.4863 11.99207,-18.4588 26.11532,-31.4566 37.01348,-34.6976 -5.04581,0.2968 -10.2322,-0.8309 -14.93385,-3.5454 -4.7291,-2.7304 -8.30595,-6.6918 -10.56979,-11.2433 z"
-         style="fill:url(#radialGradient5744);fill-opacity:1;stroke:#000000;stroke-width:0.34496242;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5744"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.222605,-0.3855632,0.2429256,0.1402532,-49.845662,1342.6559)"
-       cx="582.75"
-       cy="1357.254"
-       fx="582.75"
-       fy="1357.254"
-       r="55.793667" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3335"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951432,-290.36773,-957.67291)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3338"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185521,0.60951433,-385.37526,-927.79642)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3342"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185521,0.60951433,-371.66816,-884.20757)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3346"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185522,0.60951432,538.37305,-166.10086)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3349"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.12586129,-0.01690263,0.06430541,0.47883407,473.51523,-550.07207)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3352"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430545,0.47883418,-153.81553,471.19256)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3356"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430542,0.47883422,-68.964652,474.41196)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3360"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.0643054,0.47883399,-684.95377,-507.63145)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3364"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951429,-611.9236,195.62372)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3367"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.47883421,-613.39547,-593.06238)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3370"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,494.80817,10.665544)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3373"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951429,-619.48607,171.57469)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3376"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185522,0.60951432,530.8105,-190.14991)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3379"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,494.80817,-10.874466)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3382"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951429,-625.63057,152.03486)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3385"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185522,0.60951432,524.66595,-209.68975)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3388"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951432,-276.66075,-914.08401)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3391"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430545,0.47883419,538.06628,-458.94275)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3394"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021049,-0.02151559,0.0818552,0.60951428,-157.90414,-947.36303)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3397"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951432,-284.22322,-938.13301)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3400"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185521,0.60951433,-379.23071,-908.25667)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3403"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021049,-0.02151559,0.0818552,0.60951428,-157.90414,-968.90303)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3407"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951432,-290.36773,-957.67291)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3410"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185521,0.60951433,-385.37526,-927.79642)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3413"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021049,-0.02151559,0.0818552,0.60951428,-157.75627,-918.45133)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3416"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951432,-584.40238,-799.30296)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3419"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185521,0.60951433,-53.620079,-966.21375)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3422"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185521,0.60951433,-39.912977,-922.62482)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3425"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185522,0.60951432,405.76577,140.41616)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3428"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.12586129,-0.01690263,0.06430541,0.47883407,228.40671,-776.91821)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3431"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430545,0.47883418,176.51045,421.97755)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3434"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430542,0.47883422,250.04419,375.56484)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3438"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.0643054,0.47883399,-758.8541,-181.93817)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3442"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951429,-327.75399,371.08023)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3445"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.47883421,-735.93707,-282.38418)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3448"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,276.35918,263.28662)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3451"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951429,-335.31646,347.03119)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3454"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185522,0.60951432,398.20322,116.36712)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3457"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,276.35918,241.74661)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3460"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951429,-341.46096,327.49136)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3463"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185522,0.60951432,392.05867,96.827284)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3467"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951432,-570.6954,-755.71409)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3470"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430545,0.47883419,330.28186,-720.40593)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3473"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021049,-0.02151559,0.0818552,0.60951428,170.09663,-884.49117)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3476"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951432,-578.25787,-779.76312)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3479"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185521,0.60951433,-47.475527,-946.67395)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3482"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021049,-0.02151559,0.0818552,0.60951428,170.09663,-906.03117)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3485"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.60951432,-584.40238,-799.30296)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3488"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185521,0.60951433,-53.620079,-966.21375)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient3491"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021049,-0.02151559,0.0818552,0.60951428,170.2445,-855.57945)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5665"
-       id="radialGradient3513"
-       gradientUnits="userSpaceOnUse"
-       cx="436"
-       cy="1248.3622"
-       fx="436"
-       fy="1248.3622"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5665"
-       id="radialGradient3515"
-       gradientUnits="userSpaceOnUse"
-       cx="436"
-       cy="1248.3622"
-       fx="436"
-       fy="1248.3622"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient4022"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1636834,0.4544208,-1.330686,-0.7524857,1885.9605,1053.4218)"
-       cx="540.22217"
-       cy="592.30225"
-       fx="540.22217"
-       fy="592.30225"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4094"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6046579,-0.863725,0,1520.0499,521.69313)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient4099"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,1.2054399,-1.6836723,0,1875.2486,144.26726)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient5127"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient5129"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient5131"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5145"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9997268,0,0,3.7226192,0.1658348,-2130.0119)"
-       cx="607.00055"
-       cy="810.03564"
-       fx="607.00055"
-       fy="810.03564"
-       r="39.493622" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5147"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3748771,0,0,-0.764933,409.69204,1101.6827)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient5153"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5159"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9997268,0,0,3.7226192,0.1658348,-2130.0119)"
-       cx="607.00055"
-       cy="810.03564"
-       fx="607.00055"
-       fy="810.03564"
-       r="39.493622" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5161"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3748771,0,0,-0.764933,409.69204,1101.6827)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient5165"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient5177"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient5179"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient5181"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient5188"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1636834,0.4544208,-1.330686,-0.7524857,1376.9605,1060.4218)"
-       cx="540.22217"
-       cy="592.30225"
-       fx="540.22217"
-       fy="592.30225"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5191"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.2644071,0.5463341,0,162.83695,658.67611)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5194"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.2644071,0.5463341,0,162.83695,778.57998)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5198"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6046579,-0.863725,0,1011.0499,528.69313)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5201"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5390736,-1.41715,-0.05415198,1675.0253,560.08775)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5205"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6790269,-2.4235596,-0.06821091,2531.7278,477.23193)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5211"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6038353,-3.7013074,0,3269.6391,498.93342)"
-       cx="625.82153"
-       cy="728.03802"
-       fx="625.82153"
-       fy="728.03802"
-       r="21.440355" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5214"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.5477099,-1.4171055,0.05501953,1674.9896,1178.126)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5218"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.6038353,-3.7013074,0,3269.6391,1233.6479)"
-       cx="625.82153"
-       cy="728.03802"
-       fx="625.82153"
-       fy="728.03802"
-       r="21.440355" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5221"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.6790283,-2.4235583,0.06821105,2531.7269,1255.2818)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="linearGradient5227"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.6038353,-0.6306657,0,1084.614,1188.2244)"
-       x1="551.82086"
-       y1="755.5"
-       x2="597.50287"
-       y2="755.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="linearGradient5230"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6038353,-0.6306657,0,1086.5009,544.35696)"
-       x1="551.82086"
-       y1="755.5"
-       x2="597.50287"
-       y2="755.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5235"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2423027,-0.4750499,-1.8890425,0.04772062,1914.7767,1130.4389)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5238"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2423027,0.4750499,-1.8890425,-0.04772062,1914.7767,602.17681)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5241"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5869629,-0.2565372,0,732.61859,543.068)"
-       cx="615.5"
-       cy="954.90625"
-       fx="615.5"
-       fy="954.90625"
-       r="38.988735" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5244"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.5869629,-0.2565372,0,732.61859,1189.445)"
-       cx="615.5"
-       cy="954.90625"
-       fx="615.5"
-       fy="954.90625"
-       r="38.988735" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5255"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5053199,-0.6063754,0,1318.5282,631.15633)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient5257"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1636834,0.4544208,-1.330686,-0.7524857,2066.9605,1155.4218)"
-       cx="540.22217"
-       cy="592.30225"
-       fx="540.22217"
-       fy="592.30225"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5301"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5053199,-0.6063754,0,1317.5282,476.15633)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5311"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5053199,-0.6063754,0,1318.5282,631.15633)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5323"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,1.1735554,-1.4020243,0,1712.2264,162.06876)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5331"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,1.1735554,-1.4020243,0,1712.2264,242.06876)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5345"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,1.1735554,-1.4020243,0,1712.2264,162.06876)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5356"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,1.1735554,-1.4020243,0,1712.2264,142.06876)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath5383">
-      <path
-         id="path5385"
-         d="m 848.1875,622.71875 c -0.19137,0.002 -0.37351,0.0531 -0.5625,0.0625 -0.22315,0.004 -0.43222,-0.005 -0.65625,0 l 0,0.0625 c -13.21468,1.24491 -20.28129,19.5747 -20.28125,33.09375 l 0,2.6875 c 3e-5,13.51926 7.06625,31.91174 20.28125,33.15625 l 0,0.0625 c 0.41364,0.008 0.80806,-0.006 1.21875,0 0.46205,0.007 0.91669,-0.004 1.375,0 52.36549,0.42285 80.375,-19.06899 80.375,-33.21875 l 0,-2.6875 c -2e-5,-14.20019 -28.21079,-33.72352 -80.9375,-33.15625 -0.27286,-0.0107 -0.54442,-0.0658 -0.8125,-0.0625 z"
-         style="fill:url(#radialGradient5387);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09607363px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5387"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,1.1735554,-1.4020243,0,1712.2264,2.06876)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6367"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,1.2054399,-1.6836723,0,2015.2486,124.26726)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4040"
-       id="radialGradient6369"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,1.1735554,-1.4020243,0,1852.2264,142.06876)"
-       cx="549.80701"
-       cy="605.39386"
-       fx="549.80701"
-       fy="605.39386"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6398"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.951324,0,0,0.2503484,88.734034,632.98302)"
-       cx="1128"
-       cy="858.76221"
-       fx="1128"
-       fy="858.76221"
-       r="76" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6373"
-       id="linearGradient6400"
-       gradientUnits="userSpaceOnUse"
-       x1="1184.8181"
-       y1="820.81299"
-       x2="1184.8181"
-       y2="859.90619" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6418"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.951324,0,0,0.2503484,88.734034,632.98302)"
-       cx="1128"
-       cy="858.76221"
-       fx="1128"
-       fy="858.76221"
-       r="76" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6373"
-       id="linearGradient6420"
-       gradientUnits="userSpaceOnUse"
-       x1="1184.8181"
-       y1="820.81299"
-       x2="1184.8181"
-       y2="859.90619" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6437"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.951324,0,0,0.2503484,88.734034,632.98302)"
-       cx="1128"
-       cy="858.76221"
-       fx="1128"
-       fy="858.76221"
-       r="76" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6373"
-       id="linearGradient6439"
-       gradientUnits="userSpaceOnUse"
-       x1="1184.8181"
-       y1="820.81299"
-       x2="1184.8181"
-       y2="859.90619" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6466"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6469744,1.7899626,-0.06499102,-422.30132,432.83466)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6470"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.6794083,-2.2101152,0.06824922,2859.9319,1240.5186)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6513"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.7092858,-2.7478342,1.0073178,3326.8888,481.37806)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6525"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-1.4736146,-1.0043574,0.1480303,1779.5668,1719.6527)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6527"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6932256,2.0163569,-0.06963722,-540.11005,460.88674)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6530"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.8039386,-0.9353724,-0.08075877,1727.7091,387.90338)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6539"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.8693476,1.7096287,0.08732938,-324.24453,1405.8579)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6543"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5574961,-2.597804,-0.05600268,3191.4726,512.45007)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient6560"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient6562"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient6570"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient6572"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient6590"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient6600"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient6602"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient6610"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient6612"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient6620"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient6622"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient6630"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient6632"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient6640"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient6642"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient6650"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient6660"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient6662"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient6672"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient6684"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7722"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00871836,-0.00117084,0.00445441,0.03316864,-290.43763,-723.25123)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7805"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7807"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7809"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7863"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.09133832,-0.01103643,0.04666682,0.3126506,-511.17913,-494.34421)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7865"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08580303,-0.01152299,0.04383877,0.3264342,168.27964,-720.06047)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7867"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08580303,-0.01152299,0.04383877,0.3264342,168.27964,-720.06047)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7869"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.09133832,-0.01103643,0.04666682,0.3126506,295.2296,-722.50281)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7871"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08580303,-0.01152299,0.04383877,0.3264342,-589.25915,-481.84323)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7873"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08580303,-0.01152299,0.04383877,0.3264342,-589.25915,-481.84323)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7876"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,-477.89769,-508.1249)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7879"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,-584.68092,-359.06997)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7882"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04888835,-0.00590719,0.02497816,0.1673445,371.91315,-625.23096)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7885"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,252.98933,-622.48549)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7888"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,252.98933,-622.48549)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7891"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04888835,-0.00590719,0.02497816,0.1673445,-519.79638,-372.93807)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7895"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04592559,-0.00616762,0.02346446,0.1747221,-485.76377,-489.67082)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7902"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,-467.89798,-508.20744)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7916"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,-477.89769,-508.1249)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7918"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,-467.89798,-508.20744)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7921"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,412.80583,-511.17811)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7924"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,402.80612,-511.09557)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7928"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616761,0.02346445,0.1747221,-21.282664,-692.15561)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7932"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616761,0.02346445,0.1747221,-653.98444,-72.640902)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7936"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,407.60581,-511.1351)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7940"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,410.77503,369.36689)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient7990"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1385078,0.3845277,-1.1260169,-0.636748,1251.4498,1048.0777)"
-       cx="540.22217"
-       cy="592.30225"
-       fx="540.22217"
-       fy="592.30225"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient7993"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.2237394,0.462304,0,224.06717,708.12332)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient7996"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.2237394,0.462304,0,224.06717,809.5851)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8000"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5116572,-0.7308779,0,941.81888,598.13265)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8003"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4561603,-1.1991821,-0.04582302,1503.6701,624.69855)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8007"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5745876,-2.0507988,-0.05771958,2228.6056,554.58655)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8013"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5109612,-3.1320197,0,2853.0208,572.9502)"
-       cx="625.82153"
-       cy="728.03802"
-       fx="625.82153"
-       fy="728.03802"
-       r="21.440355" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8016"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.4634683,-1.1991445,0.04655713,1503.64,1147.6781)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8020"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.5109612,-3.1320197,0,2853.0208,1194.6603)"
-       cx="625.82153"
-       cy="728.03802"
-       fx="625.82153"
-       fy="728.03802"
-       r="21.440355" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8023"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.5745889,-2.0507976,0.0577197,2228.6048,1212.9667)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="linearGradient8029"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.5109612,-0.5336648,0,1005.7607,1156.2233)"
-       x1="551.82086"
-       y1="755.5"
-       x2="597.50287"
-       y2="755.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4342"
-       id="linearGradient8032"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5109612,-0.5336648,0,1005.665,611.38727)"
-       x1="551.82086"
-       y1="755.5"
-       x2="597.50287"
-       y2="755.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8037"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2050348,-0.4019838,-1.5984942,0.04038084,1706.546,1107.3256)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8040"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2050348,0.4019838,-1.5984942,-0.04038084,1706.546,660.31401)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8043"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4966838,-0.21708,0,706.2123,610.29656)"
-       cx="615.5"
-       cy="954.90625"
-       fx="615.5"
-       fy="954.90625"
-       r="38.988735" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8046"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.4966838,-0.21708,0,706.2123,1157.2561)"
-       cx="615.5"
-       cy="954.90625"
-       fx="615.5"
-       fy="954.90625"
-       r="38.988735" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8113"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.01314951,-0.01878347,0,-709.56317,316.11575)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8126"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.1373081,-1.5756348,0,1464.769,955.00634)"
-       cx="607.00055"
-       cy="810.03564"
-       fx="607.00055"
-       fy="810.03564"
-       r="39.493622" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient8128"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.1373081,-1.5756348,0,1464.769,804.33082)"
-       cx="607.00055"
-       cy="810.03564"
-       fx="607.00055"
-       fy="810.03564"
-       r="39.493622" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient8132"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.00976368,-0.01238807,0,-713.25725,318.00614)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9126"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.01314951,-0.01878347,0,-709.51228,320.56824)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient9132"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.00976368,-0.01238807,0,-713.16203,322.45863)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9148"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.266703,-1.2665207,0,1186.8948,750.18657)"
-       cx="607.00055"
-       cy="810.03564"
-       fx="607.00055"
-       fy="810.03564"
-       r="39.493622" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9150"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.266703,-1.2665207,0,1186.8948,1047.9099)"
-       cx="607.00055"
-       cy="810.03564"
-       fx="607.00055"
-       fy="810.03564"
-       r="39.493622" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9161"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.01459444,0.01649977,0,-728.79931,336.05861)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9164"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.00866437,0.0239007,0,-733.76669,329.28741)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9167"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.00866437,0.0239007,0,-733.76669,327.30287)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9176"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.08513582,0.2348476,0,20.574606,960.85642)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9180"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.08513582,0.2348476,0,20.574606,932.85642)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9190"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.0046206,-0.02081313,0,-707.59522,330.48983)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient11689"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6446198,0.301226,-0.02564844,0.05488734,9.3335974,462.92841)"
-       cx="530.25"
-       cy="697.73718"
-       fx="530.25"
-       fy="697.73718"
-       r="13.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient11691"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6446198,-0.301226,-0.02564844,-0.05488734,9.3335874,872.80272)"
-       cx="530.25"
-       cy="697.73718"
-       fx="530.25"
-       fy="697.73718"
-       r="13.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient11693"
-       gradientUnits="userSpaceOnUse"
-       cx="553"
-       cy="702.11218"
-       fx="553"
-       fy="702.11218"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient13349"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5593492,-0.1103563,0.04656818,0.4901532,-491.17103,547.19349)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6303"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3852141,0,0,0.9663866,-1.14786,16.80209)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6323"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.6470588,187.12452,176.42195)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath6325">
-      <path
-         id="path6327"
-         d="m 83.15625,447.65625 c -40.509049,-0.35289 -28.34704,31.78423 -79.6875,32.03125 26.47962,-0.0975 43.87526,9.9518 44,19.90625 l 15.125,0 c 0.809919,-19.40108 2.4991,-46.35763 20.5625,-51.9375 z m -20.5625,52.625 -15.125,0.0312 c -0.12474,9.95447 -17.52038,19.97251 -44,19.875 51.34046,0.24703 39.178451,32.38416 79.6875,32.03125 -18.0634,-5.57987 -19.752581,-32.53643 -20.5625,-51.9375 z"
-         style="fill:url(#radialGradient6329);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6329"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.4735139,-0.7247693,0,384.0482,672.3538)"
-       cx="290.20245"
-       cy="463.33759"
-       fx="290.20245"
-       fy="463.33759"
-       r="55.343937" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath6331">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/home/xymus/flagship1.png"
-         id="path6333"
-         d="m 187.54632,480.68831 c 0.14445,-2.59987 1.90726,-6.0848 6.48467,-11.49668 -7.12041,8.70484 22.37847,17.40967 48.82574,17.40967 -29.82955,1.53545 -24.67722,10.11904 -22.21951,12.87113 l 0.85826,0 c 0,0 -0.20926,0.1968 -0.44504,0.42951 0.24674,0.24486 0.44504,0.44382 0.44504,0.44382 l -0.85826,0 c -2.45771,2.75209 -7.61004,11.33568 22.21951,12.87114 -26.44727,0 -55.94615,8.70483 -48.82574,17.40966 -16.13272,-19.07377 2.71501,-14.29976 4.03703,-30.72462 -0.95392,-11.7508 -10.88617,-12.65317 -10.5217,-19.21363 z"
-         style="fill:url(#radialGradient6335);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6335"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4581492,-0.8164608,0,370.77017,341.36515)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6339"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.3781513,-112.87548,310.83867)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath6373">
-      <g
-         id="g6375"
-         transform="translate(-200,0)">
-        <rect
-           style="fill:url(#radialGradient6385);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6377"
-           width="38.394318"
-           height="15.302893"
-           x="480.71194"
-           y="-178.26355"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           y="-153.80783"
-           x="480.71194"
-           height="15.302893"
-           width="38.394318"
-           id="rect6379"
-           style="fill:url(#radialGradient6387);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           style="fill:url(#radialGradient6389);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6381"
-           width="38.394318"
-           height="15.302893"
-           x="480.71194"
-           y="-129.35217"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           y="-104.8965"
-           x="480.71194"
-           height="15.302893"
-           width="38.394318"
-           id="rect6383"
-           style="fill:url(#radialGradient6391);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-      </g>
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6385"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-230.50174)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6387"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-206.04604)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6389"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-181.59037)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient6391"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-157.13468)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6395"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1673152,0,0,0.3109244,-57.326848,344.44285)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6407"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3463036,0,0,0.8991597,-89.536965,204.40627)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath6409">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         sodipodi:nodetypes="csssc"
-         id="path6411"
-         d="m -28.47237,514.99178 c -5.71368,0 -26.32077,-10.70022 -26.32077,-14.88553 0,-3.98814 20.60709,-15.27985 26.32077,-15.27985 5.71368,0 10.35087,6.75705 10.35087,15.0827 0,8.32564 -4.63719,15.08268 -10.35087,15.08268 z"
-         style="fill:url(#radialGradient6413);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6413"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5914781,-0.3336543,0,109.22022,361.79894)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6417"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4046694,0,0,0.5462185,-204.95332,380.82822)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6455"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6459"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6475"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4046694,0,0,0.3109244,-324.95332,498.44284)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6502"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6506"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6512"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6516"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath6557">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/home/xymus/flagship01.png"
-         sodipodi:nodetypes="csssc"
-         id="path6559"
-         d="m -264.19581,668.94487 c -5.71367,0 -26.32077,-10.70024 -26.32077,-14.88553 0,-3.98814 20.6071,-15.27985 26.32077,-15.27985 5.71369,0 10.35087,6.75704 10.35087,15.08269 0,8.32565 -4.63718,15.08269 -10.35087,15.08269 z"
-         style="fill:url(#radialGradient6561);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6561"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5914781,-0.3336543,0,-126.50321,516.02004)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath6588">
-      <g
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/home/xymus/flagship01.png"
-         transform="matrix(0,0.4533587,-0.558224,0,-23.54686,433.93759)"
-         style="fill:url(#radialGradient6594);fill-opacity:1;stroke-width:1.69067967;stroke-miterlimit:4;stroke-dasharray:none"
-         id="g6590">
-        <path
-           id="path6592"
-           d="m 474.60693,154.5476 c -33.83284,45.75576 -52.60804,83.62054 -52.71383,167.12197 28.49925,0.20677 25.06101,-8.3184 52.56029,-8.1189 l 0.15354,-159.00307 z"
-           style="fill:url(#radialGradient6596);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.69067967;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-      </g>
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6594"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6596"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath6598">
-      <g
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/home/xymus/flagship01.png"
-         transform="matrix(0,-0.4533587,-0.558224,0,-23.68739,873.35557)"
-         style="fill:url(#radialGradient6604);fill-opacity:1;stroke-width:1.69067967;stroke-miterlimit:4;stroke-dasharray:none"
-         id="g6600">
-        <path
-           id="path6602"
-           d="m 474.60693,154.5476 c -33.83284,45.75576 -52.60804,83.62054 -52.71383,167.12197 28.49925,0.20677 25.06101,-8.3184 52.56029,-8.1189 l 0.15354,-159.00307 z"
-           style="fill:url(#radialGradient6606);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.69067967;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-      </g>
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6604"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6606"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath6609">
-      <path
-         style="fill:url(#radialGradient6613);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.94317067;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -11.78125,604.53125 c -38.20695,-0.33286 -26.73344,29.98577 -75.15625,30.21875 24.974802,-0.092 41.41359,9.39248 41.53125,18.78125 l 14.25,0 c 0.7639,-18.29851 2.33813,-43.73724 19.375,-49 z m -19.375,49.65625 -14.25,0.0312 c -0.11766,9.38876 -16.556448,18.84198 -41.53125,18.75 48.42281,0.23298 36.9493,30.5516 75.15625,30.21875 -17.03687,-5.26277 -18.6111,-30.70151 -19.375,-49 z"
-         id="path6611"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6613"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4466044,-0.6835812,0,272.03069,491.25)"
-       cx="330.59082"
-       cy="472.31458"
-       fx="330.59082"
-       fy="472.31458"
-       r="55.343937" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6615"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4046694,0,0,0.5462185,-204.95332,380.82822)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6659"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6663"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6691"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath6699">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-         sodipodi:nodetypes="cccccccccc"
-         id="path6701"
-         d="m -80.845,1001.464 c -7.4586,0.1501 -11.73887,10.2961 -17.96546,12.2552 l -2.36281,0 c 0.64514,0 1.23394,0.023 1.75174,0.1304 l 0.61107,0.1738 c 6.44896,2.0291 10.2558,12.8186 18.82095,12.2118 19.03264,0.3441 47.95623,-2.709 54.54819,-12.2118 l 0,-0.3042 c -6.59196,-9.5028 -35.51555,-12.5558 -54.54819,-12.2117 -0.29534,-0.021 -0.5891,-0.049 -0.85549,-0.043 z"
-         style="fill:url(#radialGradient6703);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6753"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6757"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6761"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6765"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6769"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6773"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6819"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6823"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6827"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6838"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6842"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6846"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6857"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6864"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6868"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6876"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6883"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6887"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6895"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient6899"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6905"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3852141,0,0,0.9663866,-201.14786,388.80209)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7001"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7005"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7009"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7013"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7019"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7023"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7027"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7031"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7035"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7039"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7069"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3073931,0,0,0.5966386,-77.92607,573.62506)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7073"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6575877,0,0,0.8655463,-377.42413,439.20837)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7077"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1906615,0,0,0.394958,-442.09337,674.43764)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7081"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2684825,0,0,0.6134454,-519.31517,565.22407)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7085"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3385214,0,0,0.6134454,-621.6148,565.22407)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7089"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4085603,0,0,0.9831933,-745.91445,380.40109)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath7190">
-      <g
-         id="g7192"
-         style="fill:url(#radialGradient7196);fill-opacity:1;stroke-width:1.82717788;stroke-miterlimit:4;stroke-dasharray:none"
-         transform="matrix(-0.00772174,0.5472376,-0.5472376,-0.00772174,-563.33497,591.63239)">
-        <path
-           sodipodi:nodetypes="cccc"
-           style="fill:url(#radialGradient7198);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.82717788;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 474.60693,154.5476 c -33.83284,45.75576 -52.60804,83.62054 -52.71383,167.12197 28.49925,0.20677 28.31599,-14.79641 80.67427,-15.62867 L 474.60693,154.5476 z"
-           id="path7194"
-           inkscape:connector-curvature="0" />
-      </g>
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7196"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7198"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath7208">
-      <g
-         transform="matrix(-0.00772174,-0.5472376,-0.5472376,0.00772174,-563.33497,1152.092)"
-         style="fill:url(#radialGradient7214);fill-opacity:1;stroke-width:1.82717788;stroke-miterlimit:4;stroke-dasharray:none"
-         id="g7210">
-        <path
-           id="path7212"
-           d="m 474.60693,154.5476 c -33.83284,45.75576 -52.60804,83.62054 -52.71383,167.12197 28.49925,0.20677 28.31599,-14.79641 80.67427,-15.62867 L 474.60693,154.5476 z"
-           style="fill:url(#radialGradient7216);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.82717788;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:nodetypes="cccc"
-           inkscape:connector-curvature="0" />
-      </g>
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7214"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7216"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath7220">
-      <path
-         style="fill:url(#radialGradient7224);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -544.82591,864.52093 c -18.49814,-13.67794 -33.80612,-21.26838 -67.56407,-21.31115 -0.0836,11.52168 3.36296,10.13167 3.28231,21.24908 l 64.28176,0.0621 z"
-         id="path7222"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7224"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.40428,-1.2654068,0,-277.30213,672.64684)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath7226">
-      <path
-         id="path7228"
-         d="m -544.82591,879.20344 c -18.49814,13.67794 -33.80612,21.26838 -67.56407,21.31115 -0.0836,-11.52168 3.36296,-10.13167 3.28231,-21.24908 l 64.28176,-0.0621 z"
-         style="fill:url(#radialGradient7230);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7230"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.40428,-1.2654068,0,-277.30213,1071.0775)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath7232">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/home/xymus/flagship2.png"
-         id="path7234"
-         d="m -459.63289,852.64139 c -0.14445,-2.59986 -1.90725,-6.08479 -6.48467,-11.49668 7.12041,8.70485 -22.37847,17.40968 -48.82574,17.40968 29.82955,1.53546 24.67722,10.11904 22.21953,12.87112 l -0.85827,0 c 0,0 0.20927,0.19682 0.44503,0.42952 -0.24674,0.24487 -0.44503,0.44383 -0.44503,0.44383 l 0.85827,0 c 2.45769,2.75208 7.61002,11.33567 -22.21953,12.87113 26.44727,0 55.94615,8.70483 48.82574,17.40966 16.13272,-19.07376 -2.715,-14.29976 -4.03702,-30.72462 0.95392,-11.7508 10.88616,-12.65317 10.52169,-19.21364 z"
-         style="fill:url(#radialGradient7236);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7236"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4581492,0.8164608,0,-642.85674,713.31823)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath7238">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/home/xymus/flagship2.png"
-         sodipodi:nodetypes="csssc"
-         id="path7240"
-         d="m -409.81737,886.94488 c -5.71368,0 -26.32078,-10.70023 -26.32078,-14.88553 0,-3.98815 20.6071,-15.27986 26.32078,-15.27986 5.71368,0 10.35087,6.75706 10.35087,15.08269 0,8.32565 -4.63719,15.0827 -10.35087,15.0827 z"
-         style="fill:url(#radialGradient7242);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7242"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5914781,-0.3336543,0,-272.12479,734.02004)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath7246">
-      <g
-         id="g7248"
-         style="fill:url(#radialGradient7252);fill-opacity:1;stroke-width:1.16041422;stroke-miterlimit:4;stroke-dasharray:none"
-         transform="matrix(0,0.7814539,-0.9503214,0,-72.560758,497.06033)">
-        <path
-           style="fill:url(#radialGradient7254);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.16041422;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 474.60693,154.5476 c -33.83284,45.75576 -52.60804,83.62054 -52.71383,167.12197 28.49925,0.20677 25.06101,-8.3184 52.56029,-8.1189 l 0.15354,-159.00307 z"
-           id="path7250"
-           inkscape:connector-curvature="0" />
-      </g>
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7252"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7254"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath7256">
-      <g
-         transform="matrix(0,-0.7814539,-0.9503214,0,-72.560758,1246.664)"
-         style="fill:url(#radialGradient7262);fill-opacity:1;stroke-width:1.16041422;stroke-miterlimit:4;stroke-dasharray:none"
-         id="g7258">
-        <path
-           id="path7260"
-           d="m 474.60693,154.5476 c -33.83284,45.75576 -52.60804,83.62054 -52.71383,167.12197 28.49925,0.20677 25.06101,-8.3184 52.56029,-8.1189 l 0.15354,-159.00307 z"
-           style="fill:url(#radialGradient7264);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.16041422;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-      </g>
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7262"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7264"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath7266">
-      <path
-         style="fill:url(#radialGradient7270);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -118.1875,819.56531 c -40.50904,-0.35289 -28.34704,31.78423 -79.6875,32.03125 26.47961,-0.0975 43.87526,9.95179 44,19.90625 l 15.125,0 c 0.80993,-19.40108 2.49909,-46.35763 20.5625,-51.9375 z m -35.6875,52.65625 c -0.12474,9.95446 -17.52039,20.00377 -44,19.90625 51.34046,0.24701 39.17846,32.38416 79.6875,32.03125 -18.06341,-5.57986 -19.75257,-32.53644 -20.5625,-51.9375 l -15.125,0 z"
-         id="path7268"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7270"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.4735139,-0.7247693,0,182.70319,1044.2729)"
-       cx="290.20245"
-       cy="463.33759"
-       fx="290.20245"
-       fy="463.33759"
-       r="55.343937" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath7272">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/home/xymus/flagship2.png"
-         style="fill:url(#radialGradient7276);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -64.80832,852.64139 c 0.14444,-2.59986 1.90725,-6.08479 6.48467,-11.49668 -7.12041,8.70485 22.37847,17.40968 48.82573,17.40968 -29.82954,1.53546 -24.67721,10.11904 -22.21952,12.87112 l 0.85827,0 c 0,0 -0.20927,0.19682 -0.44504,0.42952 0.24674,0.24487 0.44504,0.44383 0.44504,0.44383 l -0.85827,0 c -2.45769,2.75208 -7.61002,11.33567 22.21952,12.87113 -26.44726,0 -55.94614,8.70483 -48.82573,17.40966 -16.13273,-19.07376 2.715,-14.29976 4.03701,-30.72462 -0.9539,-11.7508 -10.88616,-12.65317 -10.52168,-19.21364 z"
-         id="path7274"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7276"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4581492,-0.8164608,0,118.41553,713.31823)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient7279"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.3714703e-7,0.4003521,-0.09047043,-5.3589821e-8,133.47706,640.59815)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7282"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5914781,-0.3336543,0,227.87521,734.56331)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7285"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4735139,-0.7247693,0,402.70319,699.40382)"
-       cx="330.59082"
-       cy="472.31458"
-       fx="330.59082"
-       fy="472.31458"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7288"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.4735139,-0.7247693,0,402.70319,1044.2242)"
-       cx="290.20245"
-       cy="463.33759"
-       fx="290.20245"
-       fy="463.33759"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7291"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4581492,0.8164608,0,-102.85674,713.8615)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7310"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4581492,-0.8164608,0,338.41553,713.8615)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7313"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7317"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7321"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7323"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7332"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7336"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7340"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7342"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7381"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7385"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7389"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7393"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7407"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7411"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7419"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7423"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7431"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7436"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.00772174,-0.5472376,-1.7128678,0.02416925,566.21374,1148.6756)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7438"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7443"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.7814539,-2.9745305,0,841.42454,1247.164)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7445"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7450"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.00772174,0.5472376,-1.7128678,-0.02416925,566.21374,596.04864)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7452"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7457"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.7814539,-2.9745305,0,841.42454,497.5603)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7467"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3385214,0,0,0.6134454,-621.6148,565.22407)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7469"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3385214,0,0,0.6134454,-621.6148,565.22407)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7471"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4085603,0,0,0.9831933,-745.91445,380.40109)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7473"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4085603,0,0,0.9831933,-745.91445,380.40109)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7475"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6575877,0,0,0.8655463,-377.42413,439.20837)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7477"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6575877,0,0,0.8655463,-377.42413,439.20837)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient7487"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient7489"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7491"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7493"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7534"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4581492,-0.8164608,0,338.41553,713.8615)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7536"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3073931,0,0,0.5966386,-77.92607,573.62506)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7542"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6575877,0,0,0.8655463,-377.42413,439.20837)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7544"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6575877,0,0,0.8655463,-377.42413,439.20837)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7550"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4085603,0,0,0.9831933,-745.91445,380.40109)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7552"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4085603,0,0,0.9831933,-745.91445,380.40109)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7554"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7558"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7562"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4581492,0.8164608,0,-102.85674,713.8615)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7564"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.4735139,-0.7247693,0,402.70319,1044.2242)"
-       cx="290.20245"
-       cy="463.33759"
-       fx="290.20245"
-       fy="463.33759"
-       r="55.343937" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7566"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2684825,0,0,0.6134454,-519.31517,565.22407)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7568"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4735139,-0.7247693,0,402.70319,699.40382)"
-       cx="330.59082"
-       cy="472.31458"
-       fx="330.59082"
-       fy="472.31458"
-       r="55.343937" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7570"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3852141,0,0,0.9663866,-201.14786,388.80209)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7572"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5914781,-0.3336543,0,227.87521,734.56331)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7574"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1906615,0,0,0.394958,-442.09337,674.43764)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient7576"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.3714703e-7,0.4003521,-0.09047043,-5.3589821e-8,133.47706,640.59815)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7578"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3385214,0,0,0.6134454,-621.6148,565.22407)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7580"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3385214,0,0,0.6134454,-621.6148,565.22407)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4466"
-       id="radialGradient4472"
-       cx="455.29999"
-       cy="513.36218"
-       fx="455.29999"
-       fy="513.36218"
-       r="0.89999998"
-       gradientTransform="matrix(1,0,0,3.1111111,0,-1083.7646)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4466"
-       id="radialGradient3514"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1111111,0,-1083.7646)"
-       cx="455.29999"
-       cy="513.36218"
-       fx="455.29999"
-       fy="513.36218"
-       r="0.89999998" />
-    <filter
-       inkscape:collect="always"
-       x="-0.2702786"
-       width="1.5405571"
-       y="-0.19800723"
-       height="1.3960145"
-       id="filter5967"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="0.61763681"
-         id="feGaussianBlur5969" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-0.22813983"
-       width="1.4562798"
-       y="-0.23612387"
-       height="1.4722477"
-       id="filter5971"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="0.61763681"
-         id="feGaussianBlur5973" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-0.20514672"
-       width="1.4102933"
-       y="-0.28387368"
-       height="1.5677474"
-       id="filter5975"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="0.61763681"
-         id="feGaussianBlur5977" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-0.33471107"
-       width="1.6694221"
-       y="-0.18705824"
-       height="1.3741165"
-       id="filter5979"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="0.61763681"
-         id="feGaussianBlur5981" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-0.18522067"
-       width="1.3704413"
-       y="-0.29947346"
-       height="1.5989469"
-       id="filter5983"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="0.61763681"
-         id="feGaussianBlur5985" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-0.18522067"
-       width="1.3704413"
-       y="-0.29947346"
-       height="1.5989469"
-       id="filter5987"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="0.61763681"
-         id="feGaussianBlur5989" />
-    </filter>
-    <filter
-       inkscape:collect="always"
-       x="-0.6185022"
-       width="2.2370045"
-       y="-0.6185022"
-       height="2.2370045"
-       id="filter6663"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="1.4431718"
-         id="feGaussianBlur6665" />
-    </filter>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6991"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.951324,0,0,0.2503484,88.734034,632.98302)"
-       cx="1128"
-       cy="858.76221"
-       fx="1128"
-       fy="858.76221"
-       r="76" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6373"
-       id="linearGradient6993"
-       gradientUnits="userSpaceOnUse"
-       x1="1184.8181"
-       y1="820.81299"
-       x2="1184.8181"
-       y2="859.90619" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient6995"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.951324,0,0,0.2503484,88.734034,632.98302)"
-       cx="1128"
-       cy="858.76221"
-       fx="1128"
-       fy="858.76221"
-       r="76" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6373"
-       id="linearGradient6997"
-       gradientUnits="userSpaceOnUse"
-       x1="1184.8181"
-       y1="820.81299"
-       x2="1184.8181"
-       y2="859.90619" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient7261"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6046579,-0.863725,0,1520.0499,521.69313)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient7263"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1636834,0.4544208,-1.330686,-0.7524857,1885.9605,1053.4218)"
-       cx="540.22217"
-       cy="592.30225"
-       fx="540.22217"
-       fy="592.30225"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient7273"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5053199,-0.6063754,0,1317.5282,476.15633)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient7275"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5053199,-0.6063754,0,1318.5282,631.15633)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient7277"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.951324,0,0,0.2503484,88.734034,632.98302)"
-       cx="1128"
-       cy="858.76221"
-       fx="1128"
-       fy="858.76221"
-       r="76" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6373"
-       id="linearGradient7279"
-       gradientUnits="userSpaceOnUse"
-       x1="1184.8181"
-       y1="820.81299"
-       x2="1184.8181"
-       y2="859.90619" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient8403"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient8423"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient8425"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient8433"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient8435"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient8443"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient8445"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5665"
-       id="radialGradient8485"
-       gradientUnits="userSpaceOnUse"
-       spreadMethod="pad"
-       cx="436"
-       cy="1248.3622"
-       fx="436"
-       fy="1248.3622"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5665"
-       id="radialGradient8497"
-       gradientUnits="userSpaceOnUse"
-       cx="436"
-       cy="1248.3622"
-       fx="436"
-       fy="1248.3622"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5665"
-       id="radialGradient8499"
-       gradientUnits="userSpaceOnUse"
-       cx="436"
-       cy="1248.3622"
-       fx="436"
-       fy="1248.3622"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5665"
-       id="radialGradient8501"
-       gradientUnits="userSpaceOnUse"
-       cx="436"
-       cy="1248.3622"
-       fx="436"
-       fy="1248.3622"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10483"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient10485"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10491"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11497"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25"
-       gradientTransform="matrix(1.5574299,0,0,5.5408699,-274.20402,-2660.4796)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11504"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5574299,0,0,5.5408699,-276.20402,-2660.4796)"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11506"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5422432,-0.2169652,0.5552244,3.9466744,-576.90811,-1625.3161)"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11510"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5422432,-0.2169652,0.5861777,4.1666981,-591.10475,-1754.9424)"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11514"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5422432,-0.2169652,0.5552244,3.9466744,-568.98612,-1626.4306)"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11518"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5422432,-0.2169652,0.5552244,3.9466744,-565.02512,-1626.9878)"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11522"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5422432,-0.2169652,0.5552244,3.9466744,-561.06413,-1627.5451)"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath11571">
-      <path
-         transform="matrix(4.9314064,0,0,0.5304364,-1782.8071,278.7017)"
-         d="m 457,586.61218 a 2.25,7.25 0 1 1 -4.5,0 2.25,7.25 0 1 1 4.5,0 z"
-         sodipodi:ry="7.25"
-         sodipodi:rx="2.25"
-         sodipodi:cy="586.61218"
-         sodipodi:cx="454.75"
-         id="path11573"
-         style="fill:#e6b004;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         sodipodi:type="arc" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath11575">
-      <path
-         transform="matrix(4.9314064,0,0,0.5304364,-1782.8071,278.7017)"
-         d="m 457,586.61218 a 2.25,7.25 0 1 1 -4.5,0 2.25,7.25 0 1 1 4.5,0 z"
-         sodipodi:ry="7.25"
-         sodipodi:rx="2.25"
-         sodipodi:cy="586.61218"
-         sodipodi:cx="454.75"
-         id="path11577"
-         style="fill:#e6b004;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         sodipodi:type="arc" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath11579">
-      <path
-         transform="matrix(4.9314064,0,0,0.5304364,-1782.8071,278.7017)"
-         d="m 457,586.61218 a 2.25,7.25 0 1 1 -4.5,0 2.25,7.25 0 1 1 4.5,0 z"
-         sodipodi:ry="7.25"
-         sodipodi:rx="2.25"
-         sodipodi:cy="586.61218"
-         sodipodi:cx="454.75"
-         id="path11581"
-         style="fill:#e6b004;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         sodipodi:type="arc" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath11583">
-      <path
-         transform="matrix(4.9314064,0,0,0.5304364,-1782.8071,278.7017)"
-         d="m 457,586.61218 a 2.25,7.25 0 1 1 -4.5,0 2.25,7.25 0 1 1 4.5,0 z"
-         sodipodi:ry="7.25"
-         sodipodi:rx="2.25"
-         sodipodi:cy="586.61218"
-         sodipodi:cx="454.75"
-         id="path11585"
-         style="fill:#e6b004;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         sodipodi:type="arc" />
-    </clipPath>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath11587">
-      <path
-         transform="matrix(4.9314064,0,0,0.5304364,-1782.8071,278.7017)"
-         d="m 457,586.61218 a 2.25,7.25 0 1 1 -4.5,0 2.25,7.25 0 1 1 4.5,0 z"
-         sodipodi:ry="7.25"
-         sodipodi:rx="2.25"
-         sodipodi:cy="586.61218"
-         sodipodi:cx="454.75"
-         id="path11589"
-         style="fill:#e6b004;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         sodipodi:type="arc" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11591"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5422432,-0.2169652,0.5552244,3.9466744,-561.06413,-1627.5451)"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11611"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5422432,-0.2169652,0.5552244,3.9466744,-576.90811,-1625.3161)"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11613"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5422432,-0.2169652,0.5861777,4.1666981,-591.10475,-1754.9424)"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11615"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5422432,-0.2169652,0.5552244,3.9466744,-568.98612,-1626.4306)"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11617"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5422432,-0.2169652,0.5552244,3.9466744,-565.02512,-1626.9878)"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="radialGradient11619"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5422432,-0.2169652,0.5552244,3.9466744,-561.06413,-1627.5451)"
-       cx="454.75"
-       cy="586.61218"
-       fx="454.75"
-       fy="586.61218"
-       r="2.25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11627"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11629"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11642"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11644"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient11654"
-       gradientUnits="userSpaceOnUse"
-       cx="554.89978"
-       cy="704.69049"
-       fx="554.89978"
-       fy="704.69049"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient11656"
-       gradientUnits="userSpaceOnUse"
-       cx="554.7157"
-       cy="705.05341"
-       fx="554.7157"
-       fy="705.05341"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11658"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11660"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11662"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11664"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11688"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11690"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11692"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11694"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11710"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11712"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11714"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11716"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11732"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11734"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11736"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11738"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11770"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11772"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11774"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11776"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11778"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11780"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11782"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11784"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11786"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11788"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11790"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11792"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11794"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11796"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11798"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11800"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11830"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11832"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11834"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11836"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11844"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11846"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11848"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11850"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11858"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11860"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11862"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11864"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11872"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11874"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11876"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11878"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11886"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11888"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11892"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11894"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11898"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11900"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11904"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11906"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11910"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11912"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11916"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11918"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11922"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11924"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient11928"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient11930"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="radialGradient11941"
-       gradientUnits="userSpaceOnUse"
-       cx="550.90582"
-       cy="703.66766"
-       fx="551.06427"
-       fy="704.8363"
-       r="7.5"
-       gradientTransform="matrix(0.1898514,-0.7533636,0.9696833,0.244365,-235.34893,947.18702)" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient11943"
-       gradientUnits="userSpaceOnUse"
-       cx="554.7157"
-       cy="705.05341"
-       fx="554.7157"
-       fy="705.05341"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12020"
-       id="radialGradient12018"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.54912,0.4514204,-0.5139427,0.6251743,610.78918,15.384598)"
-       cx="550.88904"
-       cy="704.13428"
-       fx="550.88904"
-       fy="704.13434"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12020"
-       id="radialGradient12035"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.54912,0.4514204,-0.5139427,0.6251743,610.78918,15.384598)"
-       cx="550.88904"
-       cy="704.13428"
-       fx="550.88904"
-       fy="704.13434"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient12060"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient12062"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient12064"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient12066"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient12068"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient12070"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient12072"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient12074"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient12076"
-       gradientUnits="userSpaceOnUse"
-       cx="554.89978"
-       cy="704.69049"
-       fx="554.89978"
-       fy="704.69049"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient12078"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient12080"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient12082"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient12084"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient12086"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient12088"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient12090"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient12092"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient12094"
-       gradientUnits="userSpaceOnUse"
-       cx="554.7157"
-       cy="705.05341"
-       fx="554.7157"
-       fy="705.05341"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5266"
-       id="radialGradient3780"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.061345,0,0,0.03315946,-717.99338,300.3607)"
-       cx="211.84375"
-       cy="1004.0294"
-       fx="211.84375"
-       fy="1004.0294"
-       r="18.500017" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5266"
-       id="radialGradient3784"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.1517795,0,0,1,-630.75179,0)"
-       cx="546.89893"
-       cy="791.65961"
-       fx="546.89893"
-       fy="791.65961"
-       r="9.25" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="linearGradient4782"
-       x1="448.90619"
-       y1="598.01251"
-       x2="461.18756"
-       y2="592.18744"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.17732501,0,0,0.17732501,-791.22995,222.27625)" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4795"
-       id="radialGradient4793"
-       cx="456.79999"
-       cy="597.36218"
-       fx="456.79999"
-       fy="597.36218"
-       r="1.4"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4795"
-       id="radialGradient4803"
-       gradientUnits="userSpaceOnUse"
-       cx="456.79999"
-       cy="597.36218"
-       fx="456.79999"
-       fy="597.36218"
-       r="1.4" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4795"
-       id="radialGradient4807"
-       gradientUnits="userSpaceOnUse"
-       cx="456.79999"
-       cy="597.36218"
-       fx="456.79999"
-       fy="597.36218"
-       r="1.4" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4795"
-       id="radialGradient4811"
-       gradientUnits="userSpaceOnUse"
-       cx="456.79999"
-       cy="597.36218"
-       fx="456.79999"
-       fy="597.36218"
-       r="1.4" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4821">
-      <path
-         id="path4823"
-         d="m 453,592.46875 c -2.09555,0.0464 -3.81251,1.51291 -3.8125,3.34375 0,1.83081 1.71697,3.29733 3.8125,3.34375 l 0,-0.0312 c 0.0326,3.1e-4 0.0611,0 0.0937,0 3.21836,0 5.8125,-1.48008 5.8125,-3.3125 0,-1.83239 -2.59415,-3.31251 -5.8125,-3.3125 -0.0327,0 -0.0612,-3.1e-4 -0.0937,0 l 0,-0.0312 z"
-         style="fill:url(#linearGradient4825);fill-opacity:1;stroke:#000000;stroke-width:0.56262243;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="linearGradient4825"
-       gradientUnits="userSpaceOnUse"
-       x1="448.90619"
-       y1="598.01251"
-       x2="461.18756"
-       y2="592.18744" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4466"
-       id="radialGradient3805"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1111111,0,-1083.7646)"
-       cx="455.29999"
-       cy="513.36218"
-       fx="455.29999"
-       fy="513.36218"
-       r="0.89999998" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="linearGradient6736"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-15.4,-17.15)"
-       x1="448.90619"
-       y1="598.01251"
-       x2="461.18756"
-       y2="592.18744" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4795"
-       id="radialGradient6738"
-       gradientUnits="userSpaceOnUse"
-       cx="456.79999"
-       cy="597.36218"
-       fx="456.79999"
-       fy="597.36218"
-       r="1.4" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4795"
-       id="radialGradient6740"
-       gradientUnits="userSpaceOnUse"
-       cx="456.79999"
-       cy="597.36218"
-       fx="456.79999"
-       fy="597.36218"
-       r="1.4" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4795"
-       id="radialGradient6742"
-       gradientUnits="userSpaceOnUse"
-       cx="456.79999"
-       cy="597.36218"
-       fx="456.79999"
-       fy="597.36218"
-       r="1.4" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4795"
-       id="radialGradient6744"
-       gradientUnits="userSpaceOnUse"
-       cx="456.79999"
-       cy="597.36218"
-       fx="456.79999"
-       fy="597.36218"
-       r="1.4" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient11491"
-       id="linearGradient6754"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-15.4,-17.15)"
-       x1="448.90619"
-       y1="598.01251"
-       x2="461.18756"
-       y2="592.18744" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4795"
-       id="radialGradient6756"
-       gradientUnits="userSpaceOnUse"
-       cx="456.79999"
-       cy="597.36218"
-       fx="456.79999"
-       fy="597.36218"
-       r="1.4" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4795"
-       id="radialGradient6758"
-       gradientUnits="userSpaceOnUse"
-       cx="456.79999"
-       cy="597.36218"
-       fx="456.79999"
-       fy="597.36218"
-       r="1.4" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4795"
-       id="radialGradient6760"
-       gradientUnits="userSpaceOnUse"
-       cx="456.79999"
-       cy="597.36218"
-       fx="456.79999"
-       fy="597.36218"
-       r="1.4" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4795"
-       id="radialGradient6762"
-       gradientUnits="userSpaceOnUse"
-       cx="456.79999"
-       cy="597.36218"
-       fx="456.79999"
-       fy="597.36218"
-       r="1.4" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient3835"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient3853"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient4862"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient4912"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1966661,0,0,0.3202177,127.10266,984.79733)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath4920">
-      <path
-         id="path4922"
-         d="m 140.59365,1126.8368 c -7.31559,0.2465 -13.18403,8.2004 -13.18403,18.0382 0,9.8378 5.86844,17.7917 13.18403,18.0382 l 0,-0.1968 c 0.20253,0.016 0.399,0.056 0.60849,0.056 17.93041,0 32.48678,-8.0111 32.48679,-17.8976 0,-9.8865 -14.55638,-17.8976 -32.48679,-17.8976 -0.20949,0 -0.40596,0.04 -0.60849,0.056 l 0,-0.1968 z"
-         style="fill:url(#radialGradient4924);fill-opacity:1;stroke:#000000;stroke-width:0.78291816;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:2.8"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient4924"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.6771725,0,0,0.9051769,240.82559,165.13419)"
-       cx="142"
-       cy="1085.3622"
-       fx="142"
-       fy="1085.3622"
-       r="20.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient4995"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05641854,-0.00751092,0.00168488,0.03336015,-789.31414,383.75061)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5029"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,61.640622,1056.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5032"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,61.640622,1040.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5035"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,31.640622,1056.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5038"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,31.640622,1040.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5060"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2677513,-0.04037584,0.00799609,0.1793314,-57.298366,948.01707)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5062"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,17.640622,1048.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5064"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,47.640622,1048.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5070"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2677513,-0.04037584,0.00799609,0.1793314,-57.298366,964.01707)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5088"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2677513,-0.04037584,0.00799609,0.1793314,-57.298366,948.01707)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5090"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2677513,-0.04037584,0.00799609,0.1793314,-57.298366,964.01707)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5098"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,17.640622,1048.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5100"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,47.640622,1048.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5130"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,31.640622,1040.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5132"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,31.640622,1056.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5134"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,61.640622,1040.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5136"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,61.640622,1056.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5139"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,61.640622,1116.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5142"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,61.640622,1100.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5146"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,31.640622,1116.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5149"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,31.640622,1100.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5155"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2354087,0,0,0.1260504,31.854083,1080.8544)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5251"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5255"
-       gradientUnits="userSpaceOnUse"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084"
-       gradientTransform="matrix(0.17732501,0,0,0.17732501,-790.09507,204.61468)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5259"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.17732501,0,0,0.17732501,-784.77532,204.61468)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5263"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.17732501,0,0,0.17732501,-784.77532,207.45188)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5267"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.17732501,0,0,0.17732501,-790.09507,207.45188)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5271"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.17732501,0,0,0.17732501,-790.44972,206.03328)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5275"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.17732501,0,0,0.17732501,-785.12997,206.03328)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5279"
-       gradientUnits="userSpaceOnUse"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084"
-       gradientTransform="matrix(0.17732501,0,0,0.17732501,-789.74042,206.03328)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5283"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.17732501,0,0,0.17732501,-784.42067,206.03328)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5305"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2677513,-0.04037584,0.00799609,0.1793314,-57.298366,948.01707)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5307"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2677513,-0.04037584,0.00799609,0.1793314,-57.298366,964.01707)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5315"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2677513,-0.04037584,0.00799609,0.1793314,-57.298366,948.01707)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5321"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2677513,-0.04037584,0.00799609,0.1793314,-57.298366,964.01707)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5339"
-       x1="23.946417"
-       y1="1137.1205"
-       x2="23.946417"
-       y2="1144.8978"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.17732501,0,0,0.17732501,-790.09507,208.16118)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5341"
-       x1="23.946417"
-       y1="1119.8252"
-       x2="23.946417"
-       y2="1128.8978"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.17732501,0,0,0.17732501,-790.09507,208.16118)" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5343"
-       x1="96.192703"
-       y1="1127.6027"
-       x2="96.192703"
-       y2="1137.1205"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.17732501,0,0,0.17732501,-790.09507,208.16118)" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5389"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.5593492,-0.1103563,0.04656818,0.4901532,-353.17103,640.19349)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5391"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.338971,0,0,0.6006813,62.106611,469.09464)"
-       cx="48"
-       cy="1021.1122"
-       fx="48"
-       fy="1021.1122"
-       r="4.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5393"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,4.203093e-8,-2.1015464e-8,0.5,199.37278,536.31692)"
-       cx="48"
-       cy="1021.1122"
-       fx="48"
-       fy="1021.1122"
-       r="4.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5395"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7541847,2.3836121e-8,0,0.6399337,22.017681,435.85902)"
-       cx="48"
-       cy="1021.1122"
-       fx="48"
-       fy="1021.1122"
-       r="4.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5397"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7788695,0,0,0.3924375,259.8241,638.91373)"
-       cx="48"
-       cy="1021.1122"
-       fx="48"
-       fy="1021.1122"
-       r="4.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5399"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.3724288,-6.8679786e-8,1.1633869e-8,0.3628571,-30.559467,717.70618)"
-       cx="48"
-       cy="1021.1122"
-       fx="48"
-       fy="1021.1122"
-       r="4.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5401"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7788695,0,0,0.3924375,88.037798,670.39917)"
-       cx="48"
-       cy="1021.1122"
-       fx="48"
-       fy="1021.1122"
-       r="4.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5403"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(2.8701333,0,0,0.6478386,-39.252297,412.39087)"
-       cx="48"
-       cy="1021.1122"
-       fx="48"
-       fy="1021.1122"
-       r="4.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5405"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5415"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16080456,-0.01811419,0.00480224,0.08045514,-807.81415,348.16624)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5417"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5423"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.12127314,-0.01583284,0.00362168,0.07032235,-793.57235,355.82247)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5425"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient4170"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6832056,-0.1110889,0.02040315,0.4934072,-51.408391,739.54871)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient4172"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4962"
-       id="radialGradient4968"
-       cx="359.5"
-       cy="1057.6122"
-       fx="359.5"
-       fy="1057.6122"
-       r="12"
-       gradientTransform="matrix(1,0,0,1.8958333,0,-947.44425)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4962"
-       id="radialGradient4990"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,1.8958333,0,-947.44425)"
-       cx="359.5"
-       cy="1057.6122"
-       fx="359.5"
-       fy="1057.6122"
-       r="12" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4459"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2433705,0,0,0.276091,-88.637318,-314.23774)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4461"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4052955,0,0,0.4405923,-157.27945,-269.24747)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4463"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3444358,0,0,0.275779,-38.036848,-321.43169)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4465"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.843676,0,0,0.7054152,-306.47405,-443.95914)"
-       cx="451.81473"
-       cy="424.44186"
-       fx="451.81473"
-       fy="424.44186"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4467"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3749263,0,0,0.1147093,-101.68852,-202.13055)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4469"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6165776,0,0,1.9393198,-237.94107,-942.19399)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4471"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3207948,0,0,0.1866423,-42.120608,-253.96743)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4473"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.288521,0,0,0.2046779,-34.700998,-220.2836)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4475"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4893344,0,0,1.328082,-107.09631,-696.171)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4477"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3091092,0,0,0.5893597,-76.351328,-414.84989)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4479"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4062266,0,0,0.342391,-128.65373,-221.66924)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4481"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.341225,0,0,0.591259,-126.59045,-391.67078)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4483"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3569079,0,0,0.4174747,-36.704798,-296.55581)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4485"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2433705,0,0,0.276091,2.934592,-281.07598)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4487"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2681125,0,0,0.178579,7.336252,-265.71001)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4489"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033699,0,0,0.3181375,-52.720294,-249.40978)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4491"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5186003,0,0,0.2753351,-192.21217,-334.31847)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient4493"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.7168341,0.09816785,0,210.04767,-267.1755)"
-       cx="434.83334"
-       cy="206.06592"
-       fx="434.83334"
-       fy="206.06592"
-       r="27.000002" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4502"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033699,0,0,0.3181375,-52.720294,-489.40978)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4522"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3091092,0,0,0.5893597,-69.351328,-685.84989)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4528"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.288521,0,0,0.2046779,-34.700998,-460.2836)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4531"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3207948,0,0,0.1866423,-42.120608,-493.96743)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4538"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3749263,0,0,0.1147093,-101.68852,-442.13055)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4724"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2433705,0,0,0.276091,-88.637318,-314.23774)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4726"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4052955,0,0,0.4405923,-157.27945,-269.24747)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4728"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3444358,0,0,0.275779,-38.036848,-321.43169)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4730"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.843676,0,0,0.7054152,-306.47405,-443.95914)"
-       cx="451.81473"
-       cy="424.44186"
-       fx="451.81473"
-       fy="424.44186"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4732"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3749263,0,0,0.1147093,-101.68852,-202.13055)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4734"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6165776,0,0,1.9393198,-237.94107,-942.19399)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4736"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3207948,0,0,0.1866423,-42.120608,-253.96743)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4738"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.288521,0,0,0.2046779,-34.700998,-220.2836)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4740"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4893344,0,0,1.328082,-107.09631,-696.171)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4742"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3091092,0,0,0.5893597,-76.351328,-414.84989)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4744"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4062266,0,0,0.342391,-128.65373,-221.66924)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4746"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.341225,0,0,0.591259,-126.59045,-391.67078)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4748"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3569079,0,0,0.4174747,-36.704798,-296.55581)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4750"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2433705,0,0,0.276091,2.934592,-281.07598)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4752"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2681125,0,0,0.178579,7.336252,-265.71001)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4754"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033699,0,0,0.3181375,-52.720294,-249.40978)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4756"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5186003,0,0,0.2753351,-192.21217,-334.31847)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient4758"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.7168341,0.09816785,0,210.04767,-267.1755)"
-       cx="434.83334"
-       cy="206.06592"
-       fx="434.83334"
-       fy="206.06592"
-       r="27.000002" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4766"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5186003,0,0,0.2753351,-258.27104,-1849.4606)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4775"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2681125,0,0,0.178579,7.336252,-745.71001)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4778"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2433705,0,0,0.276091,2.934592,-761.07598)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4781"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3569079,0,0,0.4174747,-36.704798,-776.55581)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4795"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4893344,0,0,1.328082,-107.09631,-1176.171)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4799"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.288521,0,0,0.2046779,-34.700998,-700.2836)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4805"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3207948,0,0,0.1866423,-42.120608,-733.96743)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4812"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3749263,0,0,0.1147093,-101.68852,-682.13055)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4815"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.843676,0,0,0.7054152,-306.47405,-923.95914)"
-       cx="451.81473"
-       cy="424.44186"
-       fx="451.81473"
-       fy="424.44186"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4818"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3444358,0,0,0.275779,-38.036848,-801.43169)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4920"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01603065,0,0,0.02937958,278.11275,911.48339)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient4925"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.02390868,0.01393988,0,-925.66497,275.01905)"
-       cx="434.83334"
-       cy="206.06592"
-       fx="434.83334"
-       fy="206.06592"
-       r="27.000002" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4929"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03516206,0,0,0.01419873,269.26448,918.38922)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4933"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00779969,0,0,0.01623316,282.15336,917.82014)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4937"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01364158,0,0,0.00289237,279.21771,921.95491)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4941"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00433269,0,0,0.00901742,282.25405,920.36553)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4945"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00888895,0,0,0.00618009,282.44945,921.54058)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4963"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06161807,0,0,0.02034743,255.81157,903.79734)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4965"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01275159,0,0,0.0088656,280.41671,908.30937)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4967"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0229967,0,0,0.04214633,274.19553,893.88185)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient4969"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.03429808,0.01999738,0,-914.22599,269.75748)"
-       cx="434.83334"
-       cy="206.06592"
-       fx="434.83334"
-       fy="206.06592"
-       r="27.000002" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4971"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01118899,0,0,0.02328719,279.99196,902.97224)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4973"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01956945,0,0,0.00414925,275.78062,908.90373)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4975"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00621543,0,0,0.01293591,280.13641,906.6237)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4979"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0152224,0,0,0.03322502,275.23067,898.54674)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4983"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00972313,0,0,0.02255301,277.89232,903.09928)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4987"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00609975,0,0,0.00890516,279.48767,908.37565)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4373"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00871837,-0.00117084,0.00445441,0.03316864,-294.30999,-722.06158)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4377"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00871837,-0.00117084,0.00445441,0.03316864,-293.95046,-720.99928)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4381"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00871837,-0.00117084,0.00445441,0.03316864,-294.65975,-720.99602)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4385"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00871837,-0.00117084,0.00445441,0.03316864,-293.96024,-723.12714)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4389"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00871837,-0.00117084,0.00445442,0.03316864,-294.66953,-723.12388)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4393"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00871837,-0.00117084,0.00445441,0.03316864,-708.12246,277.94144)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4466"
-       id="radialGradient4431"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1111111,0,-1083.7646)"
-       cx="455.29999"
-       cy="513.36218"
-       fx="455.29999"
-       fy="513.36218"
-       r="0.89999998" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4435"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00871837,-0.00117084,0.00445441,0.03316864,-294.31325,-722.77086)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5232"
-       cx="395.75"
-       cy="643.86218"
-       fx="395.75"
-       fy="643.86218"
-       r="8.5"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient5236"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.1314372,-0.06141329,0,442.50263,570.477)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5324"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.07415487,-0.1059268,0,454.43554,601.90413)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5332"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.07415487,-0.1059268,0,456.43554,597.90413)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient5334"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.05506094,-0.06986084,0,433.85328,612.56471)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5340"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.07415487,-0.1059268,0,456.43554,605.90413)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5352"
-       gradientUnits="userSpaceOnUse"
-       cx="395.75"
-       cy="643.86218"
-       fx="395.75"
-       fy="643.86218"
-       r="8.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient5354"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.1314372,-0.06141329,0,442.50263,570.477)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient5357"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.1389381,-0.06141329,0,442.50263,565.7337)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5364"
-       gradientUnits="userSpaceOnUse"
-       cx="395.75"
-       cy="643.86218"
-       fx="395.75"
-       fy="643.86218"
-       r="8.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient5366"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.1389381,-0.06141329,0,442.50263,565.7337)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5368"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.07415487,-0.1059268,0,456.43554,597.90413)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5370"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.07415487,-0.1059268,0,456.43554,605.90413)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5374"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.07415487,-0.1059268,0,456.43554,605.90413)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5378"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.07415487,-0.1059268,0,456.43554,597.90413)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5390"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.07415487,-0.1059268,0,456.43554,605.90413)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient5392"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.07415487,-0.1059268,0,456.43554,597.90413)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5199"
-       id="radialGradient5219"
-       gradientUnits="userSpaceOnUse"
-       cx="459.42978"
-       cy="645.19458"
-       fx="459.42978"
-       fy="645.19458"
-       r="3.9166667"
-       gradientTransform="matrix(0.42914665,-0.03647457,0.01509146,0.17756089,-915.24791,235.25789)" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4466"
-       id="radialGradient5243"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1111111,0,-1083.7646)"
-       cx="455.29999"
-       cy="513.36218"
-       fx="455.29999"
-       fy="513.36218"
-       r="0.89999998" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4466"
-       id="radialGradient5247"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1111111,0,-1083.7646)"
-       cx="455.29999"
-       cy="513.36218"
-       fx="455.29999"
-       fy="513.36218"
-       r="0.89999998" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient5260"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5268"
-       id="radialGradient5275"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5294"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2564436,0,0,0.103554,-186.43543,-411.30781)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient5297"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06482876,0,0,0.04507253,-90.27494,-388.32433)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5300"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02291643,0,0,0.08359617,233.07903,881.88779)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient5303"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.03429808,0.01999738,0,-917.28643,228.60387)"
-       cx="434.83334"
-       cy="206.06592"
-       fx="434.83334"
-       fy="206.06592"
-       r="27.000002" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient5306"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01118899,0,0,0.02328719,238.83833,909.96661)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient5309"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01956945,0,0,0.00414925,234.62701,911.96422)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient5313"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03159909,0,0,0.06576585,-91.7,-396.89415)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5317"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03243877,0,0,0.02075841,228.64217,905.74513)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5322"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03243877,0,0,0.02075841,228.64217,908.10547)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5326"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03243877,0,0,0.02075841,228.64217,910.46583)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient5330"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01327352,0,0,0.01978605,237.18581,906.91037)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5434"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6202498,0,0,0.3071187,-474.63702,-682.1098)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5438"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6202498,0,0,0.3071187,-474.63702,-718.1098)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5442"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6202498,0,0,0.3071187,-474.63702,-754.1098)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5447"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6202498,0,0,0.3071187,-474.63702,-790.1098)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5499"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6202498,0,0,0.3071187,-594.63702,-682.1098)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5501"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6202498,0,0,0.3071187,-594.63702,-718.1098)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5503"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6202498,0,0,0.3071187,-594.63702,-754.1098)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient5505"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6202498,0,0,0.3071187,-594.63702,-790.1098)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient5314"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5773369,0,0,0.3071392,-454.78981,-642.11458)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4566"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01865626,0,0,0.01755504,250.03115,905.46056)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient4568"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.0277569,0.01618355,0,-915.90956,246.46053)"
-       cx="434.83334"
-       cy="206.06592"
-       fx="434.83334"
-       fy="206.06592"
-       r="27.000002" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4570"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00908703,0,0,0.00699324,254.67527,915.98447)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4572"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01583722,0,0,0.00335791,251.33496,911.60232)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4574"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01077964,0,0,0.00473147,253.38837,911.55236)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4576"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02872688,0,0,0.09012505,-84.078113,-476.2062)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4580"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.018691,0,0,0.008512,249.96202,915.48117)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient4584"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02246158,0,0,0.01424665,248.22749,911.81043)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4588"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00962685,0,0,0.06710602,-263.13612,888.27736)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient4592"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02246158,0,0,0.01424665,248.22749,908.62677)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient4596"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02246158,0,0,0.01424665,248.22749,910.21859)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient4642"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.141105,0,0,0.08949831,-91.36592,-422.99498)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient4685"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.141105,0,0,0.08949831,-133.36592,-442.99498)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4722"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00959041,0,0,0.10127586,-276.88605,875.86427)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4725"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01865626,0,0,0.01755504,263.79794,905.46056)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient4727"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.0277569,0.01618355,0,-915.90956,260.2273)"
-       cx="434.83334"
-       cy="206.06592"
-       fx="434.83334"
-       fy="206.06592"
-       r="27.000002" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4729"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01583722,0,0,0.00335791,265.10172,911.60232)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4731"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01077964,0,0,0.00473147,267.15514,911.55236)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient4733"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.018691,0,0,0.008512,263.72881,918.66484)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient4735"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02246158,0,0,0.01424665,261.99429,911.81043)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient4737"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02246158,0,0,0.01424665,261.99429,908.62677)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient4739"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02246158,0,0,0.01424665,261.99429,910.21859)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient4741"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00908703,0,0,0.00699324,268.44204,919.16814)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient4743"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02246158,0,0,0.01424665,261.99429,914.99411)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient4745"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02246158,0,0,0.01424665,261.99429,913.40226)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4629"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01521502,-0.00204331,0.00777371,0.05788495,-77.648808,752.94422)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4633"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01521502,-0.00204331,0.00777371,0.05788495,-77.648808,752.94422)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4637"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01619657,-0.00195703,0.00827519,0.05544077,355.32703,597.23172)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4640"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01521502,-0.00204331,0.00777371,0.05788495,487.66236,575.17529)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4643"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01521502,-0.00204331,0.00777371,0.05788495,487.66236,575.17529)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient4647"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.01619657,-0.00195703,0.00827519,0.05544077,-246.45308,767.49444)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4040"
-       id="radialGradient12918"
-       gradientUnits="userSpaceOnUse"
-       cx="412.61713"
-       cy="1275.9965"
-       fx="412.61713"
-       fy="1275.9965"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14524"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.7356357,1.4466755,0.07389749,221.90231,1738.3832)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14528"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.574715,0.4812243,-0.849992,-1.0008846,2457.8609,1792.9113)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14531"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.3845522,-0.8111292,-1.1593507,1.0687403,2584.6281,910.784)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14534"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.6001925,-2.3251975,0.8523851,3311.465,958.09497)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14537"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.6395018,3.5949676,0.06424046,-1413.6506,1647.9085)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14541"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.9288347,0.7617874,0.09330509,768.53616,1809.6762)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14548"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5866911,1.6629225,-0.05893541,72.469653,940.7)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14551"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.8800028,-0.8510707,0.08839971,2003.0786,1784.7246)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14557"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5357304,-0.792337,-0.0538162,1958.9153,956.40055)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14560"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4199777,1.250132,-0.04218834,366.88955,1001.1871)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14563"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4447742,-2.2298351,-0.04467932,3223.4803,1000.1943)"
-       cx="722.73993"
-       cy="826.46155"
-       fx="722.73993"
-       fy="826.46155"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14574"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.02890081,0.7914817,-1.3332709,-0.1282977,2486.6873,851.14386)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient14577"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.6153147,-0.8054051,-0.06181079,2045.8781,876.68227)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient15326"
-       gradientUnits="userSpaceOnUse"
-       cx="396.96857"
-       cy="1274.4316"
-       fx="396.96857"
-       fy="1274.4316"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4040"
-       id="radialGradient15328"
-       gradientUnits="userSpaceOnUse"
-       cx="412.61713"
-       cy="1275.9965"
-       fx="412.61713"
-       fy="1275.9965"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4040"
-       id="radialGradient15333"
-       gradientUnits="userSpaceOnUse"
-       cx="412.61713"
-       cy="1275.9965"
-       fx="412.61713"
-       fy="1275.9965"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient15335"
-       gradientUnits="userSpaceOnUse"
-       cx="396.96857"
-       cy="1274.4316"
-       fx="396.96857"
-       fy="1274.4316"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient15408"
-       gradientUnits="userSpaceOnUse"
-       cx="1015"
-       cy="2071.9402"
-       fx="1015"
-       fy="2071.9402"
-       r="27.4" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="linearGradient15410"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7186959,0,0,1.0052185,164.49449,-356.12539)"
-       spreadMethod="pad"
-       x1="1054"
-       y1="2062.9402"
-       x2="1054"
-       y2="2085.9402" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient15412"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5915627,0,0,0.6154575,596.68615,876.04791)"
-       cx="396.96857"
-       cy="1274.4316"
-       fx="396.96857"
-       fy="1274.4316"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4040"
-       id="radialGradient15414"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3915678,0,0,0.5445582,679.34053,964.5897)"
-       cx="412.61713"
-       cy="1275.9965"
-       fx="412.61713"
-       fy="1275.9965"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient15416"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4733709,0,0,0.6158693,644.25449,875.53375)"
-       cx="396.96857"
-       cy="1274.4316"
-       fx="396.96857"
-       fy="1274.4316"
-       r="84.543999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="linearGradient15418"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7186959,0,0,1.0052185,164.49449,-356.12539)"
-       spreadMethod="pad"
-       x1="1054"
-       y1="2062.9402"
-       x2="1054"
-       y2="2085.9402" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient15420"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5915627,0,0,0.6154575,596.68615,876.04791)"
-       cx="396.96857"
-       cy="1274.4316"
-       fx="396.96857"
-       fy="1274.4316"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4040"
-       id="radialGradient15422"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3915678,0,0,0.5445582,679.34053,964.5897)"
-       cx="412.61713"
-       cy="1275.9965"
-       fx="412.61713"
-       fy="1275.9965"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient15424"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4733709,0,0,0.6158693,644.25449,875.53375)"
-       cx="396.96857"
-       cy="1274.4316"
-       fx="396.96857"
-       fy="1274.4316"
-       r="84.543999" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="linearGradient15426"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7186959,0,0,1.0052185,164.49449,-356.12539)"
-       spreadMethod="pad"
-       x1="1054"
-       y1="2062.9402"
-       x2="1054"
-       y2="2085.9402" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient15428"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5915627,0,0,0.6154575,596.68615,876.04791)"
-       cx="396.96857"
-       cy="1274.4316"
-       fx="396.96857"
-       fy="1274.4316"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4040"
-       id="radialGradient15430"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3915678,0,0,0.5445582,679.34053,964.5897)"
-       cx="412.61713"
-       cy="1275.9965"
-       fx="412.61713"
-       fy="1275.9965"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient15432"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4733709,0,0,0.6158693,644.25449,875.53375)"
-       cx="396.96857"
-       cy="1274.4316"
-       fx="396.96857"
-       fy="1274.4316"
-       r="84.543999" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient48271"
-       id="radialGradient48277"
-       cx="517.45312"
-       cy="2242.9375"
-       fx="517.45312"
-       fy="2242.9375"
-       r="154.64062"
-       gradientTransform="matrix(1,0,0,0.9085581,0,205.09836)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient48271"
-       id="radialGradient151236"
-       cx="837"
-       cy="2003.9402"
-       fx="837"
-       fy="2003.9402"
-       r="8"
-       gradientTransform="matrix(1,0,0,2,0,-2003.9402)"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10912"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.90305,-797.08678)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10914"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-47.425658,-885.37302)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10916"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-543.21447,-729.46629)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10918"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.75518,-825.99848)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10920"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,286.96047,-677.03477)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10922"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-535.652,-705.41726)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10924"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,345.09016,85.759876)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10926"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-309.27982,291.53433)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10928"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,234.8737,218.1561)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10930"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,-676.71576,-266.55236)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10932"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-301.71735,315.58337)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10934"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.0643054,0.4788341,-697.91451,-175.29084)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10936"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430542,0.4788342,225.33118,319.46603)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10938"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-692.19351,-59.877952)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10940"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,457.96543,-421.55945)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10942"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,-710.94992,-231.93841)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10944"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,160.61061,362.77456)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10946"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,465.52791,-397.51038)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10948"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430541,0.4788341,192.18027,-727.46684)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10950"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,352.65271,109.80892)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10952"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-684.63097,-35.828915)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10954"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-39.863109,-861.32398)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7973"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7977"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7981"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7991"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7997"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3852141,0,0,0.9663866,-201.14786,388.80209)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient8016"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1828794,0,0,0.8991597,-90.504538,544.23959)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient8020"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4046694,0,0,0.3109244,-324.95332,498.44284)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient8036"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient8048"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4474594,0.4382122,0,-563.94778,996.69298)"
-       cx="333.57312"
-       cy="450.05145"
-       fx="333.57312"
-       fy="450.05145"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient8054"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6839032,-0.08928711,0.02042399,0.3965732,-350.2763,694.04883)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient8056"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath8078">
-      <path
-         style="fill:url(#radialGradient8082);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.75587988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -87.00979,945.2014 c 10.81369,5.22072 11.90232,30.22038 12.39821,48.50985 -0.49625,18.28685 -1.59,43.26025 -12.39821,48.47835 24.49269,0.3335 35.00596,-21.3368 37.32166,-34.2476 -12.92635,0.09 -15.54507,-7.6127 -15.75182,-14.23075 0.20348,-6.6213 2.81636,-14.32052 15.75182,-14.23084 -2.3157,-12.91083 -12.82897,-34.61249 -37.32166,-34.27901 z"
-         id="path8080"
-         inkscape:connector-curvature="0" />
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient8082"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4474594,0.4382122,0,-268.94778,831.69298)"
-       cx="333.57312"
-       cy="450.05145"
-       fx="333.57312"
-       fy="450.05145"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient8189"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient8191"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient8197"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.6470588,187.12452,176.42195)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient8199"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.3781513,-112.87548,310.83867)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient8201"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3852141,0,0,0.9663866,-1.14786,16.80209)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient8203"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5914781,-0.3336543,0,-136.77978,1024.4656)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient8205"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1673152,0,0,0.3109244,-57.326848,344.44285)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient8207"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.3714703e-7,0.4003521,-0.09047043,-5.3589821e-8,-231.17794,930.40187)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient8217"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4564736,0,0,0.437572,-282.47689,1163.4011)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient8243"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient8266"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-230.50174)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient8268"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-206.04604)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient8270"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-181.59037)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient8272"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-157.13468)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient8275"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6633935,0,0,0.4813802,949.95153,99.071023)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient8278"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6633935,0,0,0.4813802,949.95153,62.281392)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient8286"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1673152,0,0,0.3109244,-57.326848,344.44285)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient8290"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6633935,0,0,0.4813802,949.95153,135.73769)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9069"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-230.50174)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9071"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-206.04604)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9073"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-181.59037)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9075"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-157.13468)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9082"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-230.50174)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9084"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-206.04604)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9086"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-181.59037)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9088"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-157.13468)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9115"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6633935,0,0,0.4813802,949.95153,62.281392)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9117"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6633935,0,0,0.4813802,949.95153,99.071023)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9119"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6633935,0,0,0.4813802,949.95153,135.73769)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9131"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6633935,0,0,0.4813802,949.95153,62.281392)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9133"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6633935,0,0,0.4813802,949.95153,99.071023)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9135"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6633935,0,0,0.4813802,949.95153,135.73769)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask9121">
-      <g
-         id="g9123"
-         transform="translate(0,220)">
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           transform="matrix(0,1,-1,0,0,0)"
-           y="174.96118"
-           x="1137.6921"
-           height="33.00893"
-           width="47.100937"
-           id="rect9125"
-           style="fill:url(#radialGradient9131);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           transform="matrix(0,1,-1,0,0,0)"
-           style="fill:url(#radialGradient9133);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9127"
-           width="47.100937"
-           height="33.00893"
-           x="1137.6921"
-           y="211.75078" />
-        <rect
-           y="248.41743"
-           x="1137.6921"
-           height="33.00893"
-           width="47.100937"
-           id="rect9129"
-           style="fill:url(#radialGradient9135);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-      </g>
-    </mask>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9143"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9145"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9151"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9153"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9157"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9162"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9172"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6832056,-0.1110889,0.02040315,0.4934072,-51.408391,739.54871)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient9174"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9184"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6832056,-0.1110889,0.02040315,0.4934072,-51.408391,739.54871)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient9186"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9210"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6832056,-0.1110889,0.02040315,0.4934072,-51.408391,739.54871)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient9212"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9214"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6832056,-0.1110889,0.02040315,0.4934072,-51.408391,739.54871)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient9216"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9218"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9220"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9222"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6633935,0,0,0.4813802,949.95153,62.281392)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9224"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6633935,0,0,0.4813802,949.95153,99.071023)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9226"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6633935,0,0,0.4813802,949.95153,135.73769)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5385"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient5607"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,932.95239,369.13078)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask5603">
-      <rect
-         style="fill:url(#radialGradient5607);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect5605"
-         width="39.010643"
-         height="39.010643"
-         x="1088.4457"
-         y="502.29813"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/home/xymus/flagship1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-    </mask>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5615"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5627"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5637"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5648"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5658"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5668"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5680"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5684"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5772"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5776"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5780"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5784"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5801"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5809"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5817"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5821"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5883"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5887"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5891"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5895"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6803"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6805"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6807"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient6809"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7042"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,819.47721,347.85419)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7044"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7046"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,819.47721,347.85419)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7048"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7050"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,373.85733,-1192.8472)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7052"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7054"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,-722.77029,795.02013)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7056"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <mask
-       maskUnits="userSpaceOnUse"
-       id="mask7014">
-      <g
-         transform="matrix(0.6889987,0.6889987,-0.6889987,0.6889987,514.29268,686.90218)"
-         id="g7016">
-        <path
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           id="path7018"
-           d="m -556.62576,966.51747 c 0.005,0.18246 0.0156,0.36055 0.0156,0.54428 0,10.24805 -8.31965,18.56772 -18.56772,18.56772 -0.18593,0 -0.37521,-0.0101 -0.55983,-0.0156 l 0,16.63943 c 0.18462,-0.01 0.3739,-0.015 0.55983,-0.015 10.24806,0 18.56772,8.3196 18.56772,18.5676 0,0.1809 -0.0104,0.3648 -0.0156,0.5444 l 16.63942,0 c -0.005,-0.1797 -0.0155,-0.3635 -0.0155,-0.5444 0,-10.248 8.31964,-18.5676 18.5677,-18.5676 0.18374,0 0.36183,0.01 0.54429,0.015 l 0,-16.63943 c -0.18246,0.005 -0.36055,0.0156 -0.54429,0.0156 -10.24806,10e-6 -18.5677,-8.31966 -18.5677,-18.56772 0,-0.18379 0.0102,-0.36177 0.0155,-0.54428 l -16.63942,0 z"
-           style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.398444;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <g
-           id="g7020">
-          <g
-             inkscape:transform-center-x="-45.333334"
-             transform="translate(-0.8794326,-2.5375978e-6)"
-             id="g7022">
-            <rect
-               inkscape:export-ydpi="76"
-               inkscape:export-xdpi="76"
-               inkscape:export-filename="/home/xymus/flagship1.png"
-               transform="matrix(0,1,-1,0,0,0)"
-               y="481.02155"
-               x="974.97052"
-               height="39.010643"
-               width="39.010643"
-               id="rect7024"
-               style="fill:url(#radialGradient7042);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-            <rect
-               mask="url(#mask5603)"
-               clip-path="none"
-               style="fill:url(#linearGradient7044);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-               id="rect7026"
-               width="47.810165"
-               height="44.26965"
-               x="-546.61609"
-               y="1085.274"
-               inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-               inkscape:export-xdpi="76"
-               inkscape:export-ydpi="76"
-               transform="translate(21.276595,-113.47518)" />
-          </g>
-          <g
-             id="g7028"
-             transform="matrix(-1,0,0,1,-1095.7482,-2.5375978e-6)"
-             inkscape:transform-center-x="45.333311">
-            <rect
-               style="fill:url(#radialGradient7046);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-               id="rect7030"
-               width="39.010643"
-               height="39.010643"
-               x="974.97052"
-               y="481.02155"
-               transform="matrix(0,1,-1,0,0,0)"
-               inkscape:export-filename="/home/xymus/flagship1.png"
-               inkscape:export-xdpi="76"
-               inkscape:export-ydpi="76" />
-            <rect
-               transform="translate(21.276595,-113.47518)"
-               inkscape:export-ydpi="76"
-               inkscape:export-xdpi="76"
-               inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-               y="1085.274"
-               x="-546.61609"
-               height="44.26965"
-               width="47.810165"
-               id="rect7032"
-               style="fill:url(#linearGradient7048);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-               clip-path="none"
-               mask="url(#mask5603)" />
-          </g>
-          <rect
-             inkscape:export-ydpi="76"
-             inkscape:export-xdpi="76"
-             inkscape:export-filename="/home/xymus/flagship1.png"
-             transform="scale(-1,-1)"
-             y="-1059.6798"
-             x="529.35065"
-             height="39.010643"
-             width="39.010643"
-             id="rect7034"
-             style="fill:url(#radialGradient7050);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             mask="url(#mask5603)"
-             clip-path="none"
-             style="fill:url(#linearGradient7052);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect7036"
-             width="47.810165"
-             height="44.26965"
-             x="-546.61609"
-             y="1085.274"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-             inkscape:export-xdpi="76"
-             inkscape:export-ydpi="76"
-             transform="matrix(0,1,-1,0,559.09506,1561.978)" />
-          <rect
-             inkscape:export-ydpi="76"
-             inkscape:export-xdpi="76"
-             inkscape:export-filename="/home/xymus/flagship1.png"
-             y="928.1875"
-             x="-567.27698"
-             height="39.010643"
-             width="39.010643"
-             id="rect7038"
-             style="fill:url(#radialGradient7054);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             mask="url(#mask5603)"
-             clip-path="none"
-             style="fill:url(#linearGradient7056);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect7040"
-             width="47.810165"
-             height="44.26965"
-             x="-546.61609"
-             y="1085.274"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-             inkscape:export-xdpi="76"
-             inkscape:export-ydpi="76"
-             transform="matrix(0,-1,1,0,-1655.7227,425.88934)" />
-        </g>
-      </g>
-    </mask>
-    <filter
-       inkscape:collect="always"
-       id="filter7062"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="0.65082023"
-         id="feGaussianBlur7064" />
-    </filter>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7108"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7112"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7116"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7120"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7124"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7128"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7132"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7136"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient7185"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4474594,0.4382122,0,-563.94778,996.69298)"
-       cx="333.57312"
-       cy="450.05145"
-       fx="333.57312"
-       fy="450.05145"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7341"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,819.47721,347.85419)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7343"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7345"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,819.47721,347.85419)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7347"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7349"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,373.85733,-1192.8472)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7351"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7353"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,-722.77029,795.02013)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7355"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7357"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,819.47721,347.85419)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7359"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7361"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,819.47721,347.85419)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7363"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7365"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,373.85733,-1192.8472)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7367"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7369"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5494458,0,0,0.5689052,-722.77029,795.02013)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7371"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1860318,0,0,0.3720139,-544.75577,921.45321)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7373"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7375"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7377"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7379"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7382"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7384"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7386"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient7388"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7390"
-       gradientUnits="userSpaceOnUse"
-       cx="554.7157"
-       cy="705.05341"
-       fx="554.7157"
-       fy="705.05341"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12020"
-       id="radialGradient7392"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.54912,0.4514204,-0.5139427,0.6251743,610.78918,15.384598)"
-       cx="550.88904"
-       cy="704.13428"
-       fx="550.88904"
-       fy="704.13434"
-       r="7.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient5414"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13504"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9227669,-0.6411047,0.4330881,0.6233607,-182.80483,-124.2383)" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13522"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.23451365,-0.1629315,0.1100658,0.15842201,-958.89136,165.76445)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13703"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,-245.25251,28.00522)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13706"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,-258.16285,20.74315)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13709"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,-277.52837,17.51556)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13712"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,-238.79734,36.07418)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13715"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,-232.34216,48.17763)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13721"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,207.66838,133.65125)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13724"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,194.75804,126.38918)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13730"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,214.12355,141.72022)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13733"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,220.57873,153.82366)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13740"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,-139.60648,-424.91567)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13743"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,-152.51682,-432.17774)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13746"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,-171.88234,-435.40533)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13749"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,-133.1513,-416.84671)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13752"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,-126.69613,-404.74326)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13755"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,-123.46855,-386.99154)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13758"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,313.31441,-319.26963)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13761"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,300.40407,-326.5317)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13767"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,319.76958,-311.20067)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13770"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,326.22476,-299.09722)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13775"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4798388,-0.3333745,0.2252059,0.3241476,175.39252,123.1616)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13791"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16884983,-0.11731068,0.07924738,0.11406385,-993.03055,202.39857)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13795"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16884983,-0.11731068,0.07924738,0.11406385,-984.2127,184.96795)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14646"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,-909.76051,625.80584)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14648"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,-981.53687,328.87842)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14650"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1497316,-0.5050649,0.7459782,0.1056139,-1029.3818,540.26246)"
-       cx="-198.71516"
-       cy="258.33145"
-       fx="-198.71516"
-       fy="258.33145"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14652"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616767,-0.8143401,0.169748,0.7918016,-505.65355,469.65371)"
-       cx="-233.18277"
-       cy="244.20367"
-       fx="-233.18277"
-       fy="244.20367"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14654"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616768,-0.8143402,0.1697479,0.7918015,35.384918,363.4859)"
-       cx="-238.81821"
-       cy="238.73795"
-       fx="-238.81821"
-       fy="238.73795"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14656"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,96.7209,-1107.7869)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14658"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,535.99251,-1308.2498)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14660"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1550173,-0.6097653,0.2421173,0.823088,-352.92482,317.23881)"
-       cx="-235.36041"
-       cy="233.37407"
-       fx="-235.36041"
-       fy="233.37407"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14662"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4271639,-0.6590709,-0.1558732,1.024549,-259.36759,378.12427)"
-       cx="-66.024986"
-       cy="230.76758"
-       fx="-66.024986"
-       fy="230.76758"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14664"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4145153,-1.1855098,0.1945471,1.1526982,-910.42536,-190.42088)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14666"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,763.72458,-1314.3268)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14668"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1497316,-0.5050649,0.7459782,0.1056139,-73.598259,-984.73558)"
-       cx="-198.71516"
-       cy="258.33145"
-       fx="-198.71516"
-       fy="258.33145"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14670"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616767,-0.8143401,0.169748,0.7918016,-252.44623,-962.30986)"
-       cx="-233.18277"
-       cy="244.20367"
-       fx="-233.18277"
-       fy="244.20367"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14672"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616768,-0.8143402,0.1697479,0.7918015,-709.53074,-408.86461)"
-       cx="-238.81821"
-       cy="238.73795"
-       fx="-238.81821"
-       fy="238.73795"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14674"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.08625898,-1.707962,0.8438742,1.7248919,-631.27721,-173.3275)"
-       cx="-282.08786"
-       cy="216.57774"
-       fx="-282.08786"
-       fy="216.57774"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14676"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.4680274e-7,-1.3845601,0.7557972,1.4291879,-592.02332,-15.34965)"
-       cx="-252.87535"
-       cy="244.86749"
-       fx="-252.87535"
-       fy="244.86749"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14678"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1089188,-1.4555996,0.8684659,1.4625357,-623.08549,-27.23454)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14680"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1583748,-1.5173254,0.915193,1.4877704,-661.7967,-51.77026)"
-       cx="-230.91513"
-       cy="257.10944"
-       fx="-230.91513"
-       fy="257.10944"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14682"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1093735,-1.0208233,0.872091,1.0256877,-604.12863,177.95599)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14684"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1096384,-0.8036188,0.8742035,0.8074482,-584.73647,280.46454)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14686"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6404161,-0.4449377,0.3005706,0.432623,-620.93295,39.100858)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14770"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,-909.76051,625.80584)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14772"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,-981.53687,328.87842)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14774"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1497316,-0.5050649,0.7459782,0.1056139,-1029.3818,540.26246)"
-       cx="-198.71516"
-       cy="258.33145"
-       fx="-198.71516"
-       fy="258.33145"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14776"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616767,-0.8143401,0.169748,0.7918016,-505.65355,469.65371)"
-       cx="-233.18277"
-       cy="244.20367"
-       fx="-233.18277"
-       fy="244.20367"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14778"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616768,-0.8143402,0.1697479,0.7918015,35.384918,363.4859)"
-       cx="-238.81821"
-       cy="238.73795"
-       fx="-238.81821"
-       fy="238.73795"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14780"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,96.7209,-1107.7869)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14782"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,535.99251,-1308.2498)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14784"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1550173,-0.6097653,0.2421173,0.823088,-352.92482,317.23881)"
-       cx="-235.36041"
-       cy="233.37407"
-       fx="-235.36041"
-       fy="233.37407"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14786"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4271639,-0.6590709,-0.1558732,1.024549,-259.36759,378.12427)"
-       cx="-66.024986"
-       cy="230.76758"
-       fx="-66.024986"
-       fy="230.76758"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14788"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4145153,-1.1855098,0.1945471,1.1526982,-910.42536,-190.42088)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14790"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,763.72458,-1314.3268)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14792"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1497316,-0.5050649,0.7459782,0.1056139,-73.598259,-984.73558)"
-       cx="-198.71516"
-       cy="258.33145"
-       fx="-198.71516"
-       fy="258.33145"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14794"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616767,-0.8143401,0.169748,0.7918016,-252.44623,-962.30986)"
-       cx="-233.18277"
-       cy="244.20367"
-       fx="-233.18277"
-       fy="244.20367"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14796"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616768,-0.8143402,0.1697479,0.7918015,-709.53074,-408.86461)"
-       cx="-238.81821"
-       cy="238.73795"
-       fx="-238.81821"
-       fy="238.73795"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14798"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.08625898,-1.707962,0.8438742,1.7248919,-631.27721,-173.3275)"
-       cx="-282.08786"
-       cy="216.57774"
-       fx="-282.08786"
-       fy="216.57774"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14800"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.4680274e-7,-1.3845601,0.7557972,1.4291879,-592.02332,-15.34965)"
-       cx="-252.87535"
-       cy="244.86749"
-       fx="-252.87535"
-       fy="244.86749"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14802"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1089188,-1.4555996,0.8684659,1.4625357,-623.08549,-27.23454)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14804"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1583748,-1.5173254,0.915193,1.4877704,-661.7967,-51.77026)"
-       cx="-230.91513"
-       cy="257.10944"
-       fx="-230.91513"
-       fy="257.10944"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14806"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1093735,-1.0208233,0.872091,1.0256877,-604.12863,177.95599)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14808"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1096384,-0.8036188,0.8742035,0.8074482,-584.73647,280.46454)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14810"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6404161,-0.4449377,0.3005706,0.432623,-620.93295,39.100858)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14843"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,842.50425,-1379.9884)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14846"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4145153,-1.1855098,0.1945471,1.1526982,-835.23774,-253.08914)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14849"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4271639,-0.6590709,-0.1558732,1.024549,-259.36759,379.52397)"
-       cx="-66.024986"
-       cy="230.76758"
-       fx="-66.024986"
-       fy="230.76758"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14852"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1550173,-0.6097653,0.2421173,0.823088,-352.92482,318.63851)"
-       cx="-235.36041"
-       cy="233.37407"
-       fx="-235.36041"
-       fy="233.37407"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14855"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,606.58289,-1384.4036)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14858"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,143.53901,-1188.4277)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14866"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,-909.76051,625.80584)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14868"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,-981.53687,328.87842)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14870"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1497316,-0.5050649,0.7459782,0.1056139,-1029.3818,540.26246)"
-       cx="-198.71516"
-       cy="258.33145"
-       fx="-198.71516"
-       fy="258.33145"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14872"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616767,-0.8143401,0.169748,0.7918016,-505.65355,469.65371)"
-       cx="-233.18277"
-       cy="244.20367"
-       fx="-233.18277"
-       fy="244.20367"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14874"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616768,-0.8143402,0.1697479,0.7918015,35.384918,363.4859)"
-       cx="-238.81821"
-       cy="238.73795"
-       fx="-238.81821"
-       fy="238.73795"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14877"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616768,-0.8143402,0.1697479,0.7918015,1.2979965,328.14355)"
-       cx="-238.81821"
-       cy="238.73795"
-       fx="-238.81821"
-       fy="238.73795"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14880"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616767,-0.8143401,0.169748,0.7918016,-494.06689,404.12787)"
-       cx="-233.18277"
-       cy="244.20367"
-       fx="-233.18277"
-       fy="244.20367"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14883"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1497316,-0.5050649,0.7459782,0.1056139,-985.64555,470.47941)"
-       cx="-198.71516"
-       cy="258.33145"
-       fx="-198.71516"
-       fy="258.33145"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14886"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,-912.09563,253.96436)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14889"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,-863.70458,546.47761)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14940"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.64041612,-0.44493771,0.30057061,0.43262301,-494.64348,-228.61)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14943"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1096384,-0.8036188,0.8742035,0.8074482,-684.73647,1.86424)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14946"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1093735,-1.0208233,0.872091,1.0256877,-704.12863,-100.64431)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14949"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1583748,-1.5173254,0.915193,1.4877704,-761.7967,-330.37056)"
-       cx="-230.91513"
-       cy="257.10944"
-       fx="-230.91513"
-       fy="257.10944"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14952"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1089188,-1.4555996,0.8684659,1.4625357,-723.08549,-305.83484)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14955"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.4680274e-7,-1.3845601,0.7557972,1.4291879,-692.02332,-293.94995)"
-       cx="-252.87535"
-       cy="244.86749"
-       fx="-252.87535"
-       fy="244.86749"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14958"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.08625898,-1.707962,0.8438742,1.7248919,-731.27721,-451.9278)"
-       cx="-282.08786"
-       cy="216.57774"
-       fx="-282.08786"
-       fy="216.57774"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14961"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616768,-0.81434018,0.1697479,0.79180148,-654.26242,-145.06422)"
-       cx="-238.81821"
-       cy="238.73795"
-       fx="-238.81821"
-       fy="238.73795"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14964"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.36167669,-0.8143401,0.16974799,0.7918016,-420.83707,-617.50552)"
-       cx="-233.18277"
-       cy="244.20367"
-       fx="-233.18277"
-       fy="244.20367"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14967"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.14973159,-0.5050649,0.74597816,0.1056139,-366.64381,-678.10628)"
-       cx="-198.71516"
-       cy="258.33145"
-       fx="-198.71516"
-       fy="258.33145"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14970"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.32876471,-0.54820718,0.19174831,0.60794178,375.58333,-1093.6336)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14973"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.41451532,-1.1855098,0.19454711,1.1526982,-583.64503,-565.60861)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14976"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4271639,-0.6590709,-0.1558732,1.024549,-359.36759,99.52397)"
-       cx="-66.024986"
-       cy="230.76758"
-       fx="-66.024986"
-       fy="230.76758"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14979"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1550173,-0.6097653,0.2421173,0.823088,-452.92482,38.63851)"
-       cx="-235.36041"
-       cy="233.37407"
-       fx="-235.36041"
-       fy="233.37407"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14983"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.32876471,-0.54820721,0.1917483,0.60794181,150.99097,-1007.6528)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient14986"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.32876471,-0.5482072,0.19174831,0.6079418,-223.36979,-729.46402)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient15007"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,-909.76051,625.80584)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient15009"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,-981.53687,328.87842)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient15011"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1497316,-0.5050649,0.7459782,0.1056139,-1029.3818,540.26246)"
-       cx="-198.71516"
-       cy="258.33145"
-       fx="-198.71516"
-       fy="258.33145"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient15013"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616767,-0.8143401,0.169748,0.7918016,-505.65355,469.65371)"
-       cx="-233.18277"
-       cy="244.20367"
-       fx="-233.18277"
-       fy="244.20367"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient15015"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616768,-0.8143402,0.1697479,0.7918015,35.384918,363.4859)"
-       cx="-238.81821"
-       cy="238.73795"
-       fx="-238.81821"
-       fy="238.73795"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient15018"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616768,-0.81434018,0.1697479,0.79180148,-224.81903,300.19523)"
-       cx="-238.81821"
-       cy="238.73795"
-       fx="-238.81821"
-       fy="238.73795"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient15021"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.36167669,-0.8143401,0.16974799,0.7918016,-566.81081,208.02058)"
-       cx="-233.18277"
-       cy="244.20367"
-       fx="-233.18277"
-       fy="244.20367"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient15024"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.14973159,-0.5050649,0.74597816,0.1056139,-917.65215,201.05414)"
-       cx="-198.71516"
-       cy="258.33145"
-       fx="-198.71516"
-       fy="258.33145"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient15027"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.32876471,-0.54820721,0.1917483,0.60794181,-723.86389,-63.849436)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient15030"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.32876471,-0.5482072,0.19174831,0.6079418,-803.60597,269.95102)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient15034"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,-910.18576,69.305594)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient15074"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient15076"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15078"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-230.50174)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15080"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-206.04604)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15082"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-181.59037)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15084"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-157.13468)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient15090"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4581492,-0.8164608,0,370.77017,341.36515)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient15092"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.4735139,-0.7247693,0,384.0482,672.3538)"
-       cx="290.20245"
-       cy="463.33759"
-       fx="290.20245"
-       fy="463.33759"
-       r="55.343937" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient15094"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.6470588,187.12452,176.42195)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient15096"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.3781513,-112.87548,310.83867)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient15098"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3852141,0,0,0.9663866,-1.14786,16.80209)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient15102"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1673152,0,0,0.3109244,-57.326848,344.44285)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient15167"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,467.67546,595.49826)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient15183"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.6470588,187.12452,176.42195)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient15185"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.3781513,-738.87548,470.83867)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient15187"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3852141,0,0,0.9663866,-1.14786,16.80209)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient15191"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1673152,0,0,0.3109244,-57.326848,344.44285)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15205"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-230.50174)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15207"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-206.04604)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15209"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-181.59037)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15211"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-157.13468)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15213"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-230.50174)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15215"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-206.04604)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15217"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-181.59037)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15219"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-157.13468)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15222"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,467.67546,668.86532)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15225"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,467.67546,644.40963)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15228"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,467.67546,619.95396)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15231"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,467.67546,595.49826)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15238"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,467.67546,619.95396)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15240"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,467.67546,644.40963)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15242"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,467.67546,668.86532)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath15244">
-      <g
-         id="g15246"
-         transform="translate(0,20)">
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           transform="matrix(0,1,-1,0,0,0)"
-           style="fill:url(#radialGradient15255);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect15248"
-           width="38.394318"
-           height="15.302893"
-           x="620.71191"
-           y="672.19214" />
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           transform="matrix(0,1,-1,0,0,0)"
-           y="696.64783"
-           x="620.71191"
-           height="15.302893"
-           width="38.394318"
-           id="rect15250"
-           style="fill:url(#radialGradient15257);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           transform="matrix(0,1,-1,0,0,0)"
-           style="fill:url(#radialGradient15259);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect15252"
-           width="38.394318"
-           height="15.302893"
-           x="620.71191"
-           y="721.10352" />
-      </g>
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15255"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,467.67546,619.95396)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15257"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,467.67546,644.40963)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient15259"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,467.67546,668.86532)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient5810"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,-659.22815,-392.49249)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient5813"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,-659.22815,-392.49249)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient5816"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04787086,-0.00411569,0.02445831,0.1165933,378.16204,-578.2684)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient5819"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,218.26873,-597.84334)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient5822"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,218.26873,-597.84334)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient5825"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04787086,-0.00411569,0.02445831,0.1165933,-558.62732,-389.67789)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6637"
-       id="radialGradient6643"
-       cx="485.11444"
-       cy="468.19604"
-       fx="485.11444"
-       fy="468.19604"
-       r="5.6317992"
-       gradientTransform="matrix(1.6835892,0.2069793,-0.1052094,0.8557826,-281.97478,-32.745154)"
-       gradientUnits="userSpaceOnUse" />
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath6659">
-      <g
-         transform="translate(0,-0.118083)"
-         id="g6661">
-        <rect
-           inkscape:transform-center-y="-0.84380591"
-           inkscape:transform-center-x="13.140439"
-           transform="matrix(-0.1996539,-0.9798665,-0.9917446,0.128229,0,0)"
-           y="-387.3006"
-           x="-533.06342"
-           height="9.1381941"
-           width="3.339313"
-           id="rect6663"
-           style="fill:url(#radialGradient6675);fill-opacity:1;stroke:#000000;stroke-width:0.03518798;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#radialGradient6677);fill-opacity:1;stroke:#000000;stroke-width:0.03553731;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6665"
-           width="3.1279557"
-           height="9.9503231"
-           x="230.14409"
-           y="-592.42999"
-           transform="matrix(-0.2131445,0.9770207,-0.9108003,-0.4128473,0,0)" />
-        <rect
-           transform="matrix(-0.2131445,0.9770207,-0.9108003,-0.4128473,0,0)"
-           y="-592.42999"
-           x="230.14409"
-           height="9.9503231"
-           width="3.1279557"
-           id="rect6667"
-           style="fill:url(#radialGradient6679);fill-opacity:1;stroke:#000000;stroke-width:0.03553731;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           transform="matrix(-0.2131445,-0.9770207,-0.9108003,0.4128473,0,0)"
-           y="-387.07913"
-           x="-647.35278"
-           height="9.9503231"
-           width="3.1279557"
-           id="rect6669"
-           style="fill:url(#radialGradient6681);fill-opacity:1;stroke:#000000;stroke-width:0.03553731;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#radialGradient6683);fill-opacity:1;stroke:#000000;stroke-width:0.03553731;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6671"
-           width="3.1279557"
-           height="9.9503231"
-           x="-647.35278"
-           y="-387.07913"
-           transform="matrix(-0.2131445,-0.9770207,-0.9108003,0.4128473,0,0)" />
-        <rect
-           style="fill:url(#radialGradient6685);fill-opacity:1;stroke:#000000;stroke-width:0.03518798;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6673"
-           width="3.339313"
-           height="9.1381941"
-           x="403.72589"
-           y="-575.89111"
-           transform="matrix(-0.1996539,0.9798665,-0.9917446,-0.128229,0,0)"
-           inkscape:transform-center-x="13.140519"
-           inkscape:transform-center-y="-0.84380701" />
-      </g>
-    </clipPath>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6675"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04787086,-0.00411569,0.02445831,0.1165933,-563.76996,-428.97556)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6677"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,201.38107,-637.80873)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6679"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,201.38107,-637.80873)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6681"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,-676.11582,-432.45788)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6683"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,-676.11582,-432.45788)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6685"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04787086,-0.00411569,0.02445831,0.1165933,373.0194,-617.56607)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6687"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04787086,-0.00411569,0.02445831,0.1165933,-563.76996,-428.97556)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6689"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,201.38107,-637.80873)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6691"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,201.38107,-637.80873)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6693"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,-676.11582,-432.45788)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6695"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,-676.11582,-432.45788)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6698"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04787086,-0.00411569,0.02445831,0.1165933,373.0194,-617.56607)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6746"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04592559,-0.00616762,0.02346446,0.1747221,-340.79778,-668.80202)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6749"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,-687.25839,-95.237393)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6752"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,-0.08167325,-720.53881)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6755"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,-10.081383,-720.45627)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6759"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,620.13574,-43.520612)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6763"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616762,0.02346446,0.1747221,-5.2816931,-720.4958)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6766"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616761,0.02346446,0.1747221,-509.06947,-512.30854)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6770"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0459256,-0.00616761,0.02346445,0.1747221,-463.90464,-556.532)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6774"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03059933,-0.00410936,0.01563392,0.116414,634.27732,-198.35248)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6790"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04787086,-0.00411569,0.02445831,0.1165933,-558.62732,-389.67789)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6792"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,218.26873,-597.84334)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6794"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,218.26873,-597.84334)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6796"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,-659.22815,-392.49249)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6798"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04484094,-0.00448146,0.02291028,0.1269552,-659.22815,-392.49249)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6800"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04787086,-0.00411569,0.02445831,0.1165933,378.16204,-578.2684)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6416"
-       id="radialGradient6414"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,1.8958333,0,-947.44425)"
-       cx="359.5"
-       cy="1057.6122"
-       fx="359.5"
-       fy="1057.6122"
-       r="12" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6962"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05547812,0,0,0.7302988,553.23216,-497.41367)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6964"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05256194,0,0,0.634128,550.60136,-446.01589)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6966"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04217579,0,0,0.6349272,577.14584,-447.38364)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6968"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0379439,0,0,1.1720634,572.54962,-731.50975)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6970"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03210451,0,0,0.5868258,570.67331,-417.26642)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6972"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03527938,0,0,0.8002842,566.50033,-583.81253)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6974"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06076848,0,0,0.468595,-609.79424,-396.08099)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6976"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04109686,0,0,0.8709765,550.59879,-603.63262)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6978"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03937568,0,0,0.7954324,557.53221,-595.76307)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6980"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06210846,0,0,0.7890832,569.17524,-597.73788)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6982"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02938806,0,0,0.3111886,578.17103,-325.09764)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7024"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05547812,0,0,0.7302988,553.23216,-497.41367)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7026"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05256194,0,0,0.634128,550.60136,-446.01589)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7028"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04217579,0,0,0.6349272,577.14584,-447.38364)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7030"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0379439,0,0,1.1720634,572.54962,-731.50975)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7032"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03210451,0,0,0.5868258,570.67331,-417.26642)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7034"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03527938,0,0,0.8002842,566.50033,-583.81253)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7036"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06076848,0,0,0.468595,-609.79424,-396.08099)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7038"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04109686,0,0,0.8709765,550.59879,-603.63262)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7040"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03937568,0,0,0.7954324,557.53221,-595.76307)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7043"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06210846,0,0,0.7890832,569.17524,-597.73788)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7045"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02938806,0,0,0.3111886,578.17103,-325.09764)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7047"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05547812,0,0,0.7302988,553.23216,-497.41367)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7049"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05256194,0,0,0.634128,550.60136,-446.01589)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7051"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04217579,0,0,0.6349272,577.14584,-447.38364)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7053"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0379439,0,0,1.1720634,572.54962,-731.50975)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7055"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03210451,0,0,0.5868258,570.67331,-417.26642)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7057"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03527938,0,0,0.8002842,566.50033,-583.81253)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7059"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06076848,0,0,0.468595,-609.79424,-396.08099)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7061"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04109686,0,0,0.8709765,550.59879,-603.63262)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7063"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03937568,0,0,0.7954324,557.53221,-595.76307)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7065"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06210846,0,0,0.7890832,569.17524,-597.73788)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7067"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02938806,0,0,0.3111886,578.17103,-325.09764)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7070"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02961367,0,0,0.1718411,578.12441,-282.62033)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7073"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06258524,0,0,0.4357388,569.05956,-433.17473)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7076"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03967795,0,0,0.4392449,557.32715,-432.08422)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7079"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04141234,0,0,0.4809611,550.34051,-436.42986)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7082"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06123497,0,0,0.2587624,-609.99038,-321.81798)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7085"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03555021,0,0,0.4419241,566.36412,-425.48502)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7088"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03235097,0,0,0.3240505,570.56913,-333.51676)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7091"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03823518,0,0,0.647224,572.45984,-507.04476)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7094"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04249956,0,0,0.3506125,577.09135,-350.14776)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7097"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05296544,0,0,0.3501712,550.3431,-349.39248)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7101"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.055904,0,0,0.4032776,552.99409,-377.7748)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7104"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02938806,0,0,0.3111886,364.16728,489.38209)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7107"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06210846,0,0,0.7890832,355.17149,216.74185)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7110"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03937568,0,0,0.7954324,343.52846,218.71666)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7113"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04109686,0,0,0.8709765,336.59504,210.84711)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7116"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06076848,0,0,0.468595,-395.79049,418.39874)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7119"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03527938,0,0,0.8002842,352.49658,230.6672)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7122"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03210451,0,0,0.5868258,356.66956,397.21331)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7125"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0379439,0,0,1.1720634,358.54587,82.96998)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7128"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04217579,0,0,0.6349272,363.14209,367.09609)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7131"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05256194,0,0,0.634128,336.59761,368.46384)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7135"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05547812,0,0,0.7302988,339.22841,317.06606)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7177"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.055904,0,0,0.4032776,552.99409,-377.7748)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7179"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05296544,0,0,0.3501712,550.3431,-349.39248)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7181"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04249956,0,0,0.3506125,577.09135,-350.14776)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7183"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03823518,0,0,0.647224,572.45984,-507.04476)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7186"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03235097,0,0,0.3240505,570.56913,-333.51676)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7188"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03555021,0,0,0.4419241,566.36412,-425.48502)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7190"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06123497,0,0,0.2587624,-609.99038,-321.81798)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7192"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04141234,0,0,0.4809611,550.34051,-436.42986)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7194"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03967795,0,0,0.4392449,557.32715,-432.08422)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7197"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06258524,0,0,0.4357388,569.05956,-433.17473)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7199"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02961367,0,0,0.1718411,578.12441,-282.62033)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7201"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.055904,0,0,0.4032776,552.99409,-377.7748)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7203"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05296544,0,0,0.3501712,550.3431,-349.39248)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7205"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04249956,0,0,0.3506125,577.09135,-350.14776)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7207"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03823518,0,0,0.647224,572.45984,-507.04476)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7209"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03235097,0,0,0.3240505,570.56913,-333.51676)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7211"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03555021,0,0,0.4419241,566.36412,-425.48502)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7213"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06123497,0,0,0.2587624,-609.99038,-321.81798)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7215"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04141234,0,0,0.4809611,550.34051,-436.42986)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7217"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03967795,0,0,0.4392449,557.32715,-432.08422)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7219"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06258524,0,0,0.4357388,569.05956,-433.17473)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7221"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02961367,0,0,0.1718411,578.12441,-282.62033)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7225"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0338262,0,0,0.1962855,190.19438,-168.60604)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7228"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.07148798,0,0,0.4977226,179.84006,-340.57677)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7231"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04532213,0,0,0.5017274,166.43872,-339.33114)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7234"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04730324,0,0,0.5493777,158.45823,-344.29495)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7237"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06994563,0,0,0.2955713,-226.59328,-213.37955)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7240"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04060722,0,0,0.5047877,176.76119,-331.7932)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7243"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03695289,0,0,0.3701466,181.56437,-226.74248)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7246"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04367413,0,0,0.7392915,183.72403,-424.9548)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7249"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04854511,0,0,0.4004871,189.01437,-245.73923)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7253"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06049976,0,0,0.399983,158.46119,-244.87652)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7257"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06385633,0,0,0.4606438,161.48928,-277.29622)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7260"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0338262,0,0,0.1962855,101.7848,137.34822)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7265"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.07148798,0,0,0.4977226,91.43048,-34.62251)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7268"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04532213,0,0,0.5017274,78.02914,-33.37688)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7272"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04730324,0,0,0.5493777,70.04865,-38.34069)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7278"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06994563,0,0,0.2955713,-138.1837,92.574707)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7281"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04060722,0,0,0.5047877,88.35162,-25.83895)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7284"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03695289,0,0,0.3701466,93.15479,79.211778)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7289"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04367413,0,0,0.7392915,95.31445,-119.00054)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7292"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04854511,0,0,0.4004871,100.60479,60.215018)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7295"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06049976,0,0,0.399983,70.05161,61.077738)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7299"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06385633,0,0,0.4606438,73.0797,28.658038)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6194"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0948479,0,0,0.08924936,-65.56715,-365.58319)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient6196"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.1411153,0.08227681,0,312.46084,-83.72015)"
-       cx="434.83334"
-       cy="206.06592"
-       fx="434.83334"
-       fy="206.06592"
-       r="27.000002" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient6198"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08051608,0,0,0.01707153,-58.938675,-334.35858)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient6200"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05480337,0,0,0.02405466,-48.499175,-334.6126)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6202"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.09502457,0,0,0.04327483,-65.91861,-306.54586)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient6204"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.114194,0,0,0.07242953,-74.7369,-333.30063)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient6206"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.114194,0,0,0.07242953,-74.7369,-349.4863)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient6208"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.114194,0,0,0.07242953,-74.7369,-341.39347)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient6210"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04619827,0,0,0.03555346,-41.956585,-303.98708)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient6212"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.114194,0,0,0.07242953,-74.7369,-325.20779)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6216"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0948479,0,0,0.08924936,-209.1398,-378.38019)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient6218"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.1411153,0.08227681,0,325.25784,-227.29281)"
-       cx="434.83334"
-       cy="206.06592"
-       fx="434.83334"
-       fy="206.06592"
-       r="27.000002" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient6220"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08051608,0,0,0.01707153,-202.51133,-347.15558)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient6222"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05480337,0,0,0.02405466,-192.07183,-347.4096)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient6224"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.09502457,0,0,0.04327483,-209.49126,-335.52854)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient6226"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.114194,0,0,0.07242953,-218.30956,-362.2833)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient6228"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.114194,0,0,0.07242953,-218.30956,-354.19047)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient6230"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04619827,0,0,0.03555346,-185.52924,-332.96976)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6629"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.90305,-797.08678)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6631"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-47.425658,-885.37302)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6633"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-543.21447,-729.46629)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6635"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.75518,-825.99848)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6637"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,286.96047,-677.03477)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6639"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-535.652,-705.41726)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6641"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,345.09016,85.759876)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6644"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-309.27982,291.53433)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6646"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,234.8737,218.1561)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6648"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,-676.71576,-266.55236)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6652"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-301.71735,315.58337)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6654"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.12586129,-0.01690263,0.0643054,0.47883407,-698.27728,-173.63033)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6656"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430542,0.47883419,225.14771,320.82809)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6658"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-692.19351,-59.877952)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6664"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,457.96543,-421.55945)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6666"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,-710.94992,-231.93841)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6668"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,160.61061,362.77456)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6670"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,465.52791,-397.51038)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6673"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430541,0.4788341,191.62875,-725.40496)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6676"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,352.65271,109.80892)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6678"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-684.63097,-35.828915)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6680"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-39.863109,-861.32398)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6682"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.75518,-805.99848)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6686"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,-711.5982,-210.39461)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6688"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,234.62327,237.25652)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <inkscape:perspective
-       id="perspective6698"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6690"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,234.62327,237.25652)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6694"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-301.71735,315.58337)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6703"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,160.61061,362.77456)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6705"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185524,0.60951433,465.52793,-397.5104)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6709"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,352.65271,109.80892)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6711"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-684.63097,-35.828915)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6797"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,450.09588,-7.0441572)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6801"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,-559.34083,-571.09879)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6804"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-580.76354,146.29466)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6808"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430542,0.47883419,433.26406,-506.297)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6810"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,484.58857,-188.71807)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6812"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.12586129,-0.01690263,0.0643054,0.47883407,-95.798554,-803.15182)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6816"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-666.49972,-506.43743)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6818"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430542,0.47883419,-621.27325,113.82697)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6821"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,334.78088,-665.11218)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient6825"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-730.57153,-330.09919)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7678"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04585814,0,0,0.55964221,247.48089,-314.6365)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7680"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02961416,0,0,0.26745789,249.22685,-247.49477)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7682"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03262947,0,0,0.35379676,267.47212,-242.92708)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7684"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05139774,0,0,0.42325365,276.23374,-262.43817)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7686"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04583238,0,0,0.56468533,288.47151,-330.30518)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7688"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04138851,0,0,0.50448397,263.89246,-357.014)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7690"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04267368,0,0,0.28780802,249.15592,-252.17893)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7692"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02720655,0,0,0.47509542,262.20206,-327.05539)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7694"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02920294,0,0,0.32787304,285.95088,-238.07983)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7696"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03334065,0,0,0.19230433,243.57295,-167.30934)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7698"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04201134,0,0,0.38852294,255.59052,-247.02484)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7700"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04201134,0,0,0.38852294,269.73266,-255.51012)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7702"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02826012,0,0,0.24496632,250.88144,-172.65079)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient7704"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02731151,0,0,0.44831867,255.98684,-276.8306)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7716"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1966661,0,0,0.3202177,127.10266,984.79733)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7725"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1966661,0,0,0.3202177,127.10266,984.79733)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7765"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7769"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7773"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7783"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1966661,0,0,0.3202177,127.10266,984.79733)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7791"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7801"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7813"
-       x1="139.67184"
-       y1="1128.4594"
-       x2="183.71358"
-       y2="1128.4594"
-       gradientUnits="userSpaceOnUse" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7825"
-       x1="93.308754"
-       y1="1127.6028"
-       x2="93.308754"
-       y2="1137.1208"
-       gradientUnits="userSpaceOnUse" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7877"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.9068352,-0.1021525,0.0270816,0.4537157,-99.924319,785.63638)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7879"
-       gradientUnits="userSpaceOnUse"
-       x1="158.05663"
-       y1="1116.9824"
-       x2="158.05663"
-       y2="1139.9419" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7881"
-       gradientUnits="userSpaceOnUse"
-       x1="139.67184"
-       y1="1128.4594"
-       x2="183.71358"
-       y2="1128.4594" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7883"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3181646,-0.04235681,0.00950162,0.18813,4.403939,990.21243)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient7886"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6839032,-0.08928711,0.02042399,0.3965732,-20.316748,831.05182)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7888"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7890"
-       gradientUnits="userSpaceOnUse"
-       x1="93.308754"
-       y1="1127.6028"
-       x2="93.308754"
-       y2="1137.1208" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient7892"
-       gradientUnits="userSpaceOnUse"
-       x1="93.308754"
-       y1="1127.6028"
-       x2="93.308754"
-       y2="1137.1208" />
-    <inkscape:perspective
-       id="perspective7921"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       id="linearGradient19892-9">
-      <stop
-         style="stop-color:#9595ff;stop-opacity:1;"
-         offset="0"
-         id="stop19894-0" />
-      <stop
-         style="stop-color:#2626a0;stop-opacity:1;"
-         offset="1"
-         id="stop19896-8" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-5"
-       id="radialGradient8000-2"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.5116572,-0.7308779,0,941.81888,598.13265)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <linearGradient
-       id="linearGradient3668-5">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-3" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-0" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective7977"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       id="linearGradient3668-3">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-6" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-3" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective8036"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-7"
-       id="radialGradient6539-7"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.8693476,1.7096287,0.08732938,-324.24453,1405.8579)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <linearGradient
-       id="linearGradient3668-7">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-60" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-1" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective8074"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-0"
-       id="radialGradient6513-7"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.7092858,-2.7478342,1.0073178,3326.8888,481.37806)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <linearGradient
-       id="linearGradient3668-0">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-0" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-7" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective8112"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       r="37.541969"
-       fy="804.875"
-       fx="704.54218"
-       cy="804.875"
-       cx="704.54218"
-       gradientTransform="matrix(0,-0.70928582,-2.7478342,1.0073178,3149.8633,696.88764)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient8083-1"
-       xlink:href="#linearGradient3668-0-6"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient3668-0-6">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-0-9" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-7-0" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective8181"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830-2"
-       id="radialGradient6672-5"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <linearGradient
-       id="linearGradient3830-2">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0.78823531;"
-         offset="0"
-         id="stop3832-3" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop3834-7" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective8225"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       id="linearGradient4082-6">
-      <stop
-         id="stop4084-4"
-         offset="0"
-         style="stop-color:#000000;stop-opacity:1;" />
-      <stop
-         id="stop4086-6"
-         offset="1"
-         style="stop-color:#000000;stop-opacity:0;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830-9"
-       id="radialGradient4241-6"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <linearGradient
-       id="linearGradient3830-9">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0.78823531;"
-         offset="0"
-         id="stop3832-7" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop3834-3" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective8386"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       r="52.856407"
-       fy="926.97736"
-       fx="478.26697"
-       cy="926.97736"
-       cx="478.26697"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient8244-2"
-       xlink:href="#linearGradient3830-9-2"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient3830-9-2">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0.78823531;"
-         offset="0"
-         id="stop3832-7-6" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop3834-3-3" />
-    </linearGradient>
-    <filter
-       color-interpolation-filters="sRGB"
-       inkscape:collect="always"
-       id="filter4074-1-7">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="3.1275174"
-         id="feGaussianBlur4076-35-7" />
-    </filter>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830-9-2"
-       id="radialGradient8297-8"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <linearGradient
-       id="linearGradient8397">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0.78823531;"
-         offset="0"
-         id="stop8399" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop8401" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082-6-3"
-       id="radialGradient4239-3-5"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <linearGradient
-       id="linearGradient4082-6-3">
-      <stop
-         id="stop4084-4-9"
-         offset="0"
-         style="stop-color:#000000;stop-opacity:1;" />
-      <stop
-         id="stop4086-6-3"
-         offset="1"
-         style="stop-color:#000000;stop-opacity:0;" />
-    </linearGradient>
-    <filter
-       color-interpolation-filters="sRGB"
-       inkscape:collect="always"
-       x="-0.16771574"
-       width="1.3354315"
-       y="-0.19306704"
-       height="1.3861341"
-       id="filter4164-0-1">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="7.3894429"
-         id="feGaussianBlur4166-8-4" />
-    </filter>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082-6-3"
-       id="radialGradient8295-2"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <linearGradient
-       id="linearGradient8414">
-      <stop
-         id="stop8416"
-         offset="0"
-         style="stop-color:#000000;stop-opacity:1;" />
-      <stop
-         id="stop8418"
-         offset="1"
-         style="stop-color:#000000;stop-opacity:0;" />
-    </linearGradient>
-    <radialGradient
-       r="52.856407"
-       fy="926.97736"
-       fx="478.26697"
-       cy="926.97736"
-       cx="478.26697"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient8428"
-       xlink:href="#linearGradient4082-6-3"
-       inkscape:collect="always" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892-9"
-       id="radialGradient8505"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1388498,0.30170874,-1.1287973,-0.49960623,1543.974,1169.583)"
-       cx="540.22217"
-       cy="592.30225"
-       fx="540.22217"
-       fy="592.30225"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-5"
-       id="radialGradient8509"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.40353136,-0.52560584,0,1115.0258,815.38675)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-7"
-       id="radialGradient8512"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.14834885,-0.39479012,0.8707572,-0.22498878,209.50252,1497.7803)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-0-6"
-       id="radialGradient8515"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.18178555,0.41338554,-1.4555561,0.35484564,1895.7415,471.75183)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13808"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191728,0.03497532,0.62089407,-12.866501,-568.28481)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13812"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,-178.35601,-541.85784)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13816"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,-308.46071,-436.22659)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13820"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191728,0.03497532,0.62089407,-368.31907,-279.69495)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13824"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,-341.89208,-114.20538)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13828"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,-236.26082,15.899294)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13844"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559952,74.954101,-518.79567)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13846"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925943,0.03073394,0.54559953,210.65956,-420.46355)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13848"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559953,279.0179,-267.45269)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13850"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559952,261.71256,-100.76223)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13852"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925943,0.03073394,0.54559953,163.38046,34.943257)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient13854"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559953,10.369563,103.3016)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <inkscape:perspective
-       id="perspective14851"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297-3"
-       id="linearGradient6339-5"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.3781513,-112.87548,310.83867)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       id="linearGradient6297-3">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop6299-7" />
-      <stop
-         id="stop6309-6"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop6305-8"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop6307-1" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop6301-3" />
-    </linearGradient>
-    <clipPath
-       clipPathUnits="userSpaceOnUse"
-       id="clipPath6373-6">
-      <g
-         id="g6375-4"
-         transform="translate(-200,0)">
-        <rect
-           style="fill:url(#radialGradient6385);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6377-0"
-           width="38.394318"
-           height="15.302893"
-           x="480.71194"
-           y="-178.26355"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           y="-153.80783"
-           x="480.71194"
-           height="15.302893"
-           width="38.394318"
-           id="rect6379-3"
-           style="fill:url(#radialGradient6387);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           style="fill:url(#radialGradient6389);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6381-5"
-           width="38.394318"
-           height="15.302893"
-           x="480.71194"
-           y="-129.35217"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           y="-104.8965"
-           x="480.71194"
-           height="15.302893"
-           width="38.394318"
-           id="rect6383-8"
-           style="fill:url(#radialGradient6391);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-      </g>
-    </clipPath>
-    <linearGradient
-       y2="559.36218"
-       x2="118.5"
-       y1="440.36218"
-       x1="118.5"
-       gradientTransform="matrix(0.4124514,0,0,0.3781513,-112.87548,310.83867)"
-       gradientUnits="userSpaceOnUse"
-       id="linearGradient14869"
-       xlink:href="#linearGradient6297-3"
-       inkscape:collect="always" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient14988"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.1053903,0,0,0.09111314,-692.7037,442.88505)"
-       cx="405.31277"
-       cy="850.29291"
-       fx="405.31277"
-       fy="850.29291"
-       r="30.789846" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient14990"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.26436045,0,0,0.04755458,-276.0204,496.57318)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <inkscape:perspective
-       id="perspective15115"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-7-0"
-       id="radialGradient8512-8"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00891413,-0.31434148,0.66449813,0.0902157,-27.446731,1083.7395)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <linearGradient
-       id="linearGradient3668-7-0">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-60-1" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-1-4" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-0-6-2"
-       id="radialGradient8515-6"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.18178555,0.41338554,-1.4555561,0.35484564,1895.7415,471.75183)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <linearGradient
-       id="linearGradient3668-0-6-2">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-0-9-5" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-7-0-9" />
-    </linearGradient>
-    <radialGradient
-       r="37.541969"
-       fy="804.875"
-       fx="704.54218"
-       cy="804.875"
-       cx="704.54218"
-       gradientTransform="matrix(0.13554652,0.30823667,-1.0853204,0.264587,1332.3419,512.65168)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient15129"
-       xlink:href="#linearGradient3668-0-6-2"
-       inkscape:collect="always" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-0-6-2"
-       id="radialGradient15170"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.33281578,0.05115036,0.02533017,-1.1168192,743.48292,1831.9571)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-7-0"
-       id="radialGradient15172"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.30132341,0.08996795,-0.25912645,0.61850636,543.79365,370.6937)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-0-6-2"
-       id="radialGradient15185"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.13554652,0.30823667,-1.0853204,0.264587,1332.3419,512.65168)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-7-0"
-       id="radialGradient15187"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00891413,-0.31434148,0.66449813,0.0902157,-27.446731,1083.7395)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-0-6-2"
-       id="radialGradient15195"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.13554652,0.30823667,-1.0853204,0.264587,1332.3419,512.65168)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-7-0"
-       id="radialGradient15197"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00891413,-0.31434148,0.66449813,0.0902157,-27.446731,1083.7395)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-0-6-2"
-       id="radialGradient15221"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.13554652,0.30823667,-1.0853204,0.264587,1332.3419,512.65168)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-7-0"
-       id="radialGradient15223"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00891413,-0.31434148,0.66449813,0.0902157,-27.446731,1083.7395)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-0-6-2"
-       id="radialGradient15226"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.13554652,0.30823667,-1.0853204,0.264587,1332.3419,512.65168)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-7-0"
-       id="radialGradient15229"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.00891413,-0.31434148,0.66449813,0.0902157,-27.446731,1083.7395)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <inkscape:perspective
-       id="perspective7778"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       id="linearGradient3668-00">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-33" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-9" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6373-4"
-       id="linearGradient6420-0"
-       gradientUnits="userSpaceOnUse"
-       x1="1184.8181"
-       y1="820.81299"
-       x2="1184.8181"
-       y2="859.90619" />
-    <linearGradient
-       id="linearGradient6373-4">
-      <stop
-         id="stop6375-3"
-         offset="0"
-         style="stop-color:#787878;stop-opacity:0;" />
-      <stop
-         style="stop-color:#404040;stop-opacity:0.3764706;"
-         offset="0.56713724"
-         id="stop6383-3" />
-      <stop
-         id="stop6385-4"
-         offset="0.76563531"
-         style="stop-color:#393939;stop-opacity:0.5529412;" />
-      <stop
-         id="stop6377-2"
-         offset="1"
-         style="stop-color:#404040;stop-opacity:0.41960785;" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective7840"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-52"
-       id="radialGradient6513-9"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.7092858,-2.7478342,1.0073178,3326.8888,481.37806)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <linearGradient
-       id="linearGradient3668-52">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-08" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-35" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective7913"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       id="linearGradient3668-2">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-36" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-8" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4040-2"
-       id="radialGradient13736-9"
-       gradientUnits="userSpaceOnUse"
-       cx="412.61713"
-       cy="1275.9965"
-       fx="412.61713"
-       fy="1275.9965"
-       r="84.543999" />
-    <linearGradient
-       id="linearGradient4040-2">
-      <stop
-         id="stop4042-8"
-         offset="0"
-         style="stop-color:#878787;stop-opacity:0.09183674;" />
-      <stop
-         id="stop4051-6"
-         offset="0.33333334"
-         style="stop-color:#fefefe;stop-opacity:0.29591838;" />
-      <stop
-         id="stop4046-7"
-         offset="1"
-         style="stop-color:#b8b8b8;stop-opacity:0;" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective7998"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       id="linearGradient4082-3">
-      <stop
-         id="stop4084-0"
-         offset="0"
-         style="stop-color:#000000;stop-opacity:1;" />
-      <stop
-         id="stop4086-1"
-         offset="1"
-         style="stop-color:#000000;stop-opacity:0;" />
-    </linearGradient>
-    <filter
-       inkscape:collect="always"
-       x="-0.16771574"
-       width="1.3354315"
-       y="-0.19306704"
-       height="1.3861341"
-       id="filter4164-4"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="7.3894429"
-         id="feGaussianBlur4166-8" />
-    </filter>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830-6"
-       id="radialGradient4241-66"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <linearGradient
-       id="linearGradient3830-6">
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0.78823531;"
-         offset="0"
-         id="stop3832-6" />
-      <stop
-         style="stop-color:#ffffff;stop-opacity:0;"
-         offset="1"
-         id="stop3834-1" />
-    </linearGradient>
-    <filter
-       inkscape:collect="always"
-       id="filter4074-7"
-       color-interpolation-filters="sRGB">
-      <feGaussianBlur
-         inkscape:collect="always"
-         stdDeviation="3.1275174"
-         id="feGaussianBlur4076-8" />
-    </filter>
-    <inkscape:perspective
-       id="perspective8114"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient13854-1"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559953,813.05058,-808.20866)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient3527-2">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop3529-8" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop3531-8" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient13808-7"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191728,0.03497532,0.62089407,-1024.1131,104.41737)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8123">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8125" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8127" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient13852-1"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925943,0.03073394,0.54559953,402.76748,-1155.7883)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8130">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8132" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8134" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient13812-0"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,-717.77011,546.3426)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8137">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8139" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8141" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient13850-1"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559952,-126.33797,-1251.6595)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8144">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8146" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8148" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient13816-0"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,-231.50682,775.88968)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8151">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8153" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8155" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient13848-7"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559953,-632.49236,-1070.1337)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8158">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8160" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8162" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient13820-9"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191728,0.03497532,0.62089407,304.38311,731.55158)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8165">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8167" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8169" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient13846-0"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925943,0.03073394,0.54559953,-980.07199,-659.85057)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8172">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8174" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8176" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient13824-7"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,746.30836,425.20873)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8179">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8181" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8183" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient13844-6"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559952,-1075.9432,-130.74514)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8186">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8188" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8190" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient13828-9"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,-236.26082,15.899294)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8193">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8195" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8197" />
-    </linearGradient>
-    <radialGradient
-       r="46.5"
-       fy="426.05655"
-       fx="447.06158"
-       cy="426.05655"
-       cx="447.06158"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,975.85545,-61.054606)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient8211"
-       xlink:href="#linearGradient3527-2"
-       inkscape:collect="always" />
-    <inkscape:perspective
-       id="perspective8350"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10886-7"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06141962,-0.02014441,0.0313807,0.5706702,142.60428,941.11423)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient3527-4">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop3529-9" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop3531-0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10912-0"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.90305,-797.08678)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8359">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8361" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8363" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10914-2"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-47.425658,-885.37302)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8366">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8368" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8370" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10916-7"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-543.21447,-729.46629)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8373">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8375" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8377" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10918-1"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.75518,-825.99848)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8380">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8382" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8384" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10920-6"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,286.96047,-677.03477)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8387">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8389" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8391" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10922-2"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-535.652,-705.41726)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8394">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8396" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8398" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10924-0"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,345.09016,85.759876)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8401">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8403" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8405" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10926-4"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-309.27982,291.53433)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8408">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8410" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8412" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10928-8"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,234.8737,218.1561)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8415">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8417" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8419" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10930-2"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,-676.71576,-266.55236)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8422">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8424" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8426" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10932-2"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-301.71735,315.58337)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8429">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8431" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8433" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10934-3"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.0643054,0.4788341,-697.91451,-175.29084)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8436">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8438" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8440" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10936-3"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430542,0.4788342,225.33118,319.46603)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8443">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8445" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8447" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10938-2"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-692.19351,-59.877952)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8450">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8452" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8454" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10940-7"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,457.96543,-421.55945)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8457">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8459" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8461" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10942-2"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,-710.94992,-231.93841)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8464">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8466" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8468" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10944-4"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,160.61061,362.77456)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8471">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8473" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8475" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10946-5"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,465.52791,-397.51038)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8478">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8480" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8482" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10948-4"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430541,0.4788341,192.18027,-727.46684)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8485">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8487" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8489" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10950-1"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,352.65271,109.80892)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8492">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8494" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8496" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10952-6"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-684.63097,-35.828915)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8499">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8501" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8503" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient10954-8"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-39.863109,-861.32398)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8506">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8508" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8510" />
-    </linearGradient>
-    <radialGradient
-       r="46.5"
-       fy="426.05655"
-       fx="447.06158"
-       cy="426.05655"
-       cx="447.06158"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-39.863109,-861.32398)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient8537"
-       xlink:href="#linearGradient3527-4"
-       inkscape:collect="always" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient8796"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,975.85545,-61.054606)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient8798"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559952,-1075.9432,-130.74514)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient8800"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,746.30836,425.20873)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient8802"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925943,0.03073394,0.54559953,-980.07199,-659.85057)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient8804"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191728,0.03497532,0.62089407,304.38311,731.55158)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient8806"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559953,-632.49236,-1070.1337)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient8808"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,-231.50682,775.88968)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient8810"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559952,-126.33797,-1251.6595)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient8812"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,-717.77011,546.3426)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient8814"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925943,0.03073394,0.54559953,402.76748,-1155.7883)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient8816"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191728,0.03497532,0.62089407,-1024.1131,104.41737)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2"
-       id="radialGradient8818"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559953,813.05058,-808.20866)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8821"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-284.64193,-1387.3168)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8824"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-1015.0601,436.2051)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8827"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185524,0.60951433,926.66077,159.95197)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8830"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185524,0.60951433,1006.6465,-199.54503)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8833"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,-1167.762,119.23434)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8836"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185524,0.60951433,999.08399,-223.5941)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8839"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-1022.6227,412.15607)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8842"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-743.71966,685.22308)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8845"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,767.40425,438.18057)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8848"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-751.28213,661.17404)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8851"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.16021051,-0.02151559,0.08185524,0.60951433,919.09822,135.90292)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8854"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-635.96819,-1276.8381)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8857"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,76.03669,-1401.1957)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8860"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-643.53066,-1300.8872)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8863"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-292.20448,-1411.3659)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8884"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-292.20448,-1411.3659)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8886"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-643.53066,-1300.8872)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8888"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,76.03669,-1401.1957)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8890"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-635.96819,-1276.8381)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8892"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-284.64193,-1387.3168)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8906"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-292.20448,-1411.3659)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8908"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-643.53066,-1300.8872)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8910"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,76.03669,-1401.1957)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8912"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-635.96819,-1276.8381)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4"
-       id="radialGradient8914"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-284.64193,-1387.3168)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <inkscape:perspective
-       id="perspective8924"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       id="linearGradient3527-2-6">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop3529-8-7" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop3531-8-1" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8933">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8935" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8937" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8940">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8942" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8944" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8947">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8949" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8951" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8954">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8956" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8958" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8961">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8963" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8965" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8968">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8970" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8972" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8975">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8977" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8979" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8982">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8984" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8986" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8989">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8991" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop8993" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8996">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop8998" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9000" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9003">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9005" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9007" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient3527-4-7">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop3529-9-0" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop3531-0-9" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9014">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9016" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9018" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9021">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9023" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9025" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9028">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9030" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9032" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9035">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9037" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9039" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9042">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9044" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9046" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9049">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9051" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9053" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9056">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9058" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9060" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9063">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9065" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9067" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9070">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9072" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9074" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9077">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9079" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9081" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9084">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9086" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9088" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9091">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9093" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9095" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient9098">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9100" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9102" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8821-9"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-284.64193,-1387.3168)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient9105">
-      <stop
-         style="stop-color:#11a040;stop-opacity:1;"
-         offset="0"
-         id="stop9107" />
-      <stop
-         style="stop-color:#3e4e60;stop-opacity:1;"
-         offset="1"
-         id="stop9109" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7421"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.90305,-797.08678)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7424"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-47.425658,-885.37302)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7426"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-543.21447,-729.46629)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7428"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.75518,-825.99848)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7430"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,286.96047,-677.03477)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7432"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-535.652,-705.41726)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7434"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,345.09016,85.759876)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7437"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-309.27982,291.53433)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7439"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,234.8737,218.1561)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7441"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,-676.71576,-266.55236)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7444"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-301.71735,315.58337)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7446"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.0643054,0.4788341,-697.91451,-175.29084)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7448"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430542,0.4788342,225.33118,319.46603)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7451"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-692.19351,-59.877952)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7453"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,457.96543,-421.55945)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7455"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151558,0.0818552,0.6095142,-710.94992,-231.93841)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7458"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,160.61061,362.77456)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7460"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,465.52791,-397.51038)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7462"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690263,0.06430541,0.4788341,192.18027,-727.46684)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7464"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185524,0.6095143,352.65271,109.80892)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7466"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-684.63097,-35.828915)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7468"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-39.863109,-861.32398)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7511"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,151.75518,-809.97449)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7513"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.12586129,-0.01690263,0.0643054,0.47883407,-697.09033,-173.18408)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7677"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.47883421,160.61061,362.77456)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7679"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-535.65201,-705.41727)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7681"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,152.28839,-811.84072)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7683"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,148.5705,-796.95348)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7812"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.13743451,-0.02152048,0.07021844,0.60965272,168.89204,-811.89564)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7828"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,148.5705,-796.95348)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7830"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.13743451,-0.02152048,0.07021844,0.60965272,168.89204,-811.89564)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7832"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,286.96047,-677.03477)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7834"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-535.65201,-705.41727)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7836"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.12586129,-0.01690263,0.0643054,0.47883407,-697.09033,-173.18408)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7838"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-39.863109,-861.32398)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7854"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,148.5705,-796.95348)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7856"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.13743451,-0.02152048,0.07021844,0.60965272,168.89204,-811.89564)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7858"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,286.96047,-677.03477)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7860"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-535.65201,-705.41727)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7862"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.12586129,-0.01690263,0.0643054,0.47883407,-697.09033,-173.18408)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7864"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-39.863109,-861.32398)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7868"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,349.48173,104.39203)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7872"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.12586129,-0.01690263,0.0643054,0.47883407,221.11157,317.83741)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7875"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-302.21735,309.32659)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7878"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,-670.64548,-268.14888)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7881"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.13743451,-0.02152048,0.07021844,0.60965272,250.61063,226.14045)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7884"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,230.28909,241.08261)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7887"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,148.5705,-796.95348)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7889"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,286.96047,-677.03477)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7892"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-535.65201,-705.41727)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7894"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.12586129,-0.01690263,0.0643054,0.47883407,-697.09033,-173.18408)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7896"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.6095143,-39.863109,-861.32398)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7899"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-39.86311,-861.32399)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7904"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.12586129,-0.01690263,0.0643054,0.47883407,-697.09033,-173.18408)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7907"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-535.65201,-705.41727)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7910"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,286.96047,-677.03478)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7913"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.13743451,-0.02152048,0.07021844,0.60965272,168.89204,-811.89564)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7917"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,148.5705,-796.95348)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7920"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-681.52531,-41.283442)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7923"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.12586129,-0.01690263,0.0643054,0.47883407,187.24772,-722.85951)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7926"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,459.85929,-400.20568)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7929"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1258613,-0.01690264,0.06430546,0.4788342,162.26306,356.71928)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7933"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.13743451,-0.02152048,0.07021844,0.60965272,-689.21429,-222.10721)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7937"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,-709.53583,-207.16505)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <inkscape:perspective
-       id="perspective7469"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       id="linearGradient6297-9">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop6299-3" />
-      <stop
-         id="stop6309-9"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop6305-0"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop6307-8" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop6301-8" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7481">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7483" />
-      <stop
-         id="stop7485"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7487"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7489" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7491" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7494">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7496" />
-      <stop
-         id="stop7498"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7500"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7502" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7504" />
-    </linearGradient>
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297-9"
-       id="linearGradient5283-9"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(-68,-172)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <linearGradient
-       id="linearGradient7507">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7509" />
-      <stop
-         id="stop7511"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7513"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7515" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7517" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective7606"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       id="linearGradient6297-4">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop6299-4" />
-      <stop
-         id="stop6309-7"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop6305-6"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop6307-3" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop6301-1" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7618">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7620" />
-      <stop
-         id="stop7622"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7624"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7626" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7628" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7631">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7633" />
-      <stop
-         id="stop7635"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7637"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7639" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7641" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7644">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7646" />
-      <stop
-         id="stop7648"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7650"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7652" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7654" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7657">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7659" />
-      <stop
-         id="stop7661"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7663"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7665" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7667" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient6114-1">
-      <stop
-         id="stop6116-7"
-         offset="0"
-         style="stop-color:#436265;stop-opacity:1;" />
-      <stop
-         id="stop6118-8"
-         offset="1"
-         style="stop-color:#575757;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7674">
-      <stop
-         id="stop7676"
-         offset="0"
-         style="stop-color:#436265;stop-opacity:1;" />
-      <stop
-         id="stop7678"
-         offset="1"
-         style="stop-color:#575757;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7681">
-      <stop
-         id="stop7683"
-         offset="0"
-         style="stop-color:#436265;stop-opacity:1;" />
-      <stop
-         id="stop7685"
-         offset="1"
-         style="stop-color:#575757;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7688">
-      <stop
-         id="stop7690"
-         offset="0"
-         style="stop-color:#436265;stop-opacity:1;" />
-      <stop
-         id="stop7692"
-         offset="1"
-         style="stop-color:#575757;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7695">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7697" />
-      <stop
-         id="stop7699"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7701"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7703" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7705" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7708">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7710" />
-      <stop
-         id="stop7712"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7714"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7716" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7718" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7721">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7723" />
-      <stop
-         id="stop7725"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7727"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7729" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7731" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7734">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7736" />
-      <stop
-         id="stop7738"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7740"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7742" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7744" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7747">
-      <stop
-         id="stop7749"
-         offset="0"
-         style="stop-color:#436265;stop-opacity:1;" />
-      <stop
-         id="stop7751"
-         offset="1"
-         style="stop-color:#575757;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7754">
-      <stop
-         id="stop7756"
-         offset="0"
-         style="stop-color:#436265;stop-opacity:1;" />
-      <stop
-         id="stop7758"
-         offset="1"
-         style="stop-color:#575757;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7761">
-      <stop
-         id="stop7763"
-         offset="0"
-         style="stop-color:#436265;stop-opacity:1;" />
-      <stop
-         id="stop7765"
-         offset="1"
-         style="stop-color:#575757;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7768">
-      <stop
-         id="stop7770"
-         offset="0"
-         style="stop-color:#436265;stop-opacity:1;" />
-      <stop
-         id="stop7772"
-         offset="1"
-         style="stop-color:#575757;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7775">
-      <stop
-         id="stop7777"
-         offset="0"
-         style="stop-color:#436265;stop-opacity:1;" />
-      <stop
-         id="stop7779"
-         offset="1"
-         style="stop-color:#575757;stop-opacity:1;" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7782">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7784" />
-      <stop
-         id="stop7786"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7788"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7790" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7792" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7795">
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="0"
-         id="stop7797" />
-      <stop
-         id="stop7799"
-         offset="0.18655694"
-         style="stop-color:#000000;stop-opacity:0.1632653;" />
-      <stop
-         id="stop7801"
-         offset="0.2962963"
-         style="stop-color:#000000;stop-opacity:0.49803922;" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0.10204082;"
-         offset="0.50480109"
-         id="stop7803" />
-      <stop
-         style="stop-color:#000000;stop-opacity:0;"
-         offset="1"
-         id="stop7805" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient7808">
-      <stop
-         id="stop7810"
-         offset="0"
-         style="stop-color:#436265;stop-opacity:1;" />
-      <stop
-         id="stop7812"
-         offset="1"
-         style="stop-color:#575757;stop-opacity:1;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114-1"
-       id="radialGradient5100-9"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,47.640622,1048.9054)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <linearGradient
-       id="linearGradient7815">
-      <stop
-         id="stop7817"
-         offset="0"
-         style="stop-color:#436265;stop-opacity:1;" />
-      <stop
-         id="stop7819"
-         offset="1"
-         style="stop-color:#575757;stop-opacity:1;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient8265"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3416303,0.2221786,-0.4075222,0.6266217,378.709,186.98173)"
-       cx="444"
-       cy="639.11218"
-       fx="444"
-       fy="639.11218"
-       r="6.9000001" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient8271"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6047108,0,0,0.2871686,-45.567433,520.02316)"
-       cx="514.30835"
-       cy="571.51276"
-       fx="514.30835"
-       fy="571.51276"
-       r="21.9" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114-1"
-       id="radialGradient8285"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2677513,-0.04037584,0.00799609,0.1793314,-57.298366,948.01707)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114-1"
-       id="radialGradient8335"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,227.81678,649.71185)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297-4"
-       id="linearGradient8337"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(196.17616,-451.19355)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114-1"
-       id="radialGradient8339"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,227.81678,633.71185)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297-4"
-       id="linearGradient8341"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(196.17616,-467.19355)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9146"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.06977701,-0.3035309,0,578.51719,600.34841)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9149"
-       gradientUnits="userSpaceOnUse"
-       cx="395.75"
-       cy="643.86218"
-       fx="395.75"
-       fy="643.86218"
-       r="8.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient9152"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.1389381,-0.06141329,0,442.50263,565.7337)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <inkscape:perspective
-       id="perspective9162"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-8"
-       id="radialGradient5147-0"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3748771,0,0,-0.764933,409.69204,1101.6827)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <linearGradient
-       id="linearGradient3668-8">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-9" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-2" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective9200"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       r="29.95952"
-       fy="587.5625"
-       fx="558.32812"
-       cy="587.5625"
-       cx="558.32812"
-       gradientTransform="matrix(0.37487711,0,0,-0.76493298,691.95308,1536.7791)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient9171-9"
-       xlink:href="#linearGradient3668-8-0"
-       inkscape:collect="always" />
-    <linearGradient
-       id="linearGradient3668-8-0">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-9-4" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-2-0" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9236"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.07415487,-0.1059268,0,456.43554,597.90413)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient9252"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.07415487,-0.1059268,0,456.43554,597.90413)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <inkscape:perspective
-       id="perspective9262"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-06"
-       id="radialGradient8126-6"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.1373081,-1.5756348,0,1464.769,955.00634)"
-       cx="607.00055"
-       cy="810.03564"
-       fx="607.00055"
-       fy="810.03564"
-       r="39.493622" />
-    <linearGradient
-       id="linearGradient3668-06">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-4" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-09" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-06"
-       id="radialGradient8128-4"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.1373081,-1.5756348,0,1464.769,804.33082)"
-       cx="607.00055"
-       cy="810.03564"
-       fx="607.00055"
-       fy="810.03564"
-       r="39.493622" />
-    <linearGradient
-       id="linearGradient9271">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop9273" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop9275" />
-    </linearGradient>
-    <radialGradient
-       r="39.493622"
-       fy="810.03564"
-       fx="607.00055"
-       cy="810.03564"
-       cx="607.00055"
-       gradientTransform="matrix(0,0.1373081,-1.5756348,0,1464.769,804.33082)"
-       gradientUnits="userSpaceOnUse"
-       id="radialGradient9280"
-       xlink:href="#linearGradient3668-06"
-       inkscape:collect="always" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9356"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916603,-0.00660279,0.02512006,0.18705001,-306.30937,229.11282)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9358"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916604,-0.00660279,0.02512007,0.18705001,-377.89821,145.40823)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9360"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916603,-0.00660279,0.02512006,0.18705001,-216.13712,286.73129)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9362"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916602,-0.00660279,0.02512006,0.18705001,-306.29096,233.11272)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9364"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916602,-0.00660279,0.02512006,0.18705001,-375.14796,158.53975)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9366"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916602,-0.00660279,0.02512006,0.18705001,-218.76655,299.88747)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <inkscape:perspective
-       id="perspective8405"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       id="linearGradient3384-4">
-      <stop
-         style="stop-color:#ad8147;stop-opacity:1;"
-         offset="0"
-         id="stop3386-3" />
-      <stop
-         style="stop-color:#7d6754;stop-opacity:1;"
-         offset="1"
-         id="stop3388-7" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8414-3">
-      <stop
-         style="stop-color:#ad8147;stop-opacity:1;"
-         offset="0"
-         id="stop8416-8" />
-      <stop
-         style="stop-color:#7d6754;stop-opacity:1;"
-         offset="1"
-         id="stop8418-0" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8421">
-      <stop
-         style="stop-color:#ad8147;stop-opacity:1;"
-         offset="0"
-         id="stop8423" />
-      <stop
-         style="stop-color:#7d6754;stop-opacity:1;"
-         offset="1"
-         id="stop8425" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8428">
-      <stop
-         style="stop-color:#ad8147;stop-opacity:1;"
-         offset="0"
-         id="stop8430" />
-      <stop
-         style="stop-color:#7d6754;stop-opacity:1;"
-         offset="1"
-         id="stop8432" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8435">
-      <stop
-         style="stop-color:#ad8147;stop-opacity:1;"
-         offset="0"
-         id="stop8437" />
-      <stop
-         style="stop-color:#7d6754;stop-opacity:1;"
-         offset="1"
-         id="stop8439" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8442">
-      <stop
-         style="stop-color:#ad8147;stop-opacity:1;"
-         offset="0"
-         id="stop8444" />
-      <stop
-         style="stop-color:#7d6754;stop-opacity:1;"
-         offset="1"
-         id="stop8446" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8449">
-      <stop
-         style="stop-color:#ad8147;stop-opacity:1;"
-         offset="0"
-         id="stop8451" />
-      <stop
-         style="stop-color:#7d6754;stop-opacity:1;"
-         offset="1"
-         id="stop8453" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8456">
-      <stop
-         style="stop-color:#ad8147;stop-opacity:1;"
-         offset="0"
-         id="stop8458" />
-      <stop
-         style="stop-color:#7d6754;stop-opacity:1;"
-         offset="1"
-         id="stop8460" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8463">
-      <stop
-         style="stop-color:#ad8147;stop-opacity:1;"
-         offset="0"
-         id="stop8465" />
-      <stop
-         style="stop-color:#7d6754;stop-opacity:1;"
-         offset="1"
-         id="stop8467" />
-    </linearGradient>
-    <linearGradient
-       id="linearGradient8470">
-      <stop
-         style="stop-color:#ad8147;stop-opacity:1;"
-         offset="0"
-         id="stop8472" />
-      <stop
-         style="stop-color:#7d6754;stop-opacity:1;"
-         offset="1"
-         id="stop8474" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient7299-7"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06385633,0,0,0.4606438,73.0797,28.658038)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <linearGradient
-       id="linearGradient8477">
-      <stop
-         style="stop-color:#ad8147;stop-opacity:1;"
-         offset="0"
-         id="stop8479" />
-      <stop
-         style="stop-color:#7d6754;stop-opacity:1;"
-         offset="1"
-         id="stop8481" />
-    </linearGradient>
-    <inkscape:perspective
-       id="perspective9009"
-       inkscape:persp3d-origin="0.5 : 0.33333333 : 1"
-       inkscape:vp_z="1 : 0.5 : 1"
-       inkscape:vp_y="0 : 1000 : 0"
-       inkscape:vp_x="0 : 0.5 : 1"
-       sodipodi:type="inkscape:persp3d" />
-    <linearGradient
-       id="linearGradient3668-2-9">
-      <stop
-         style="stop-color:#99b5c3;stop-opacity:1;"
-         offset="0"
-         id="stop3670-36-2" />
-      <stop
-         style="stop-color:#969d9f;stop-opacity:1;"
-         offset="1"
-         id="stop3672-8-3" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4040-2-4"
-       id="radialGradient8999-5"
-       gradientUnits="userSpaceOnUse"
-       cx="412.61713"
-       cy="1275.9965"
-       fx="412.61713"
-       fy="1275.9965"
-       r="84.543999" />
-    <linearGradient
-       id="linearGradient4040-2-4">
-      <stop
-         id="stop4042-8-8"
-         offset="0"
-         style="stop-color:#878787;stop-opacity:0.09183674;" />
-      <stop
-         id="stop4051-6-1"
-         offset="0.33333334"
-         style="stop-color:#fefefe;stop-opacity:0.29591838;" />
-      <stop
-         id="stop4046-7-0"
-         offset="1"
-         style="stop-color:#b8b8b8;stop-opacity:0;" />
-    </linearGradient>
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082-3"
-       id="radialGradient9123"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082-3"
-       id="radialGradient9125"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082-3"
-       id="radialGradient9127"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-52"
-       id="radialGradient9129"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.11531419,-0.54007056,-1.0569317,-0.2795024,1710.1624,1123.1645)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-00"
-       id="radialGradient9134"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.951324,0,0,0.2503484,88.734034,632.98302)"
-       cx="1128"
-       cy="858.76221"
-       fx="1128"
-       fy="858.76221"
-       r="76" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6373-4"
-       id="linearGradient9136"
-       gradientUnits="userSpaceOnUse"
-       x1="1184.8181"
-       y1="820.81299"
-       x2="1184.8181"
-       y2="859.90619" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830-6"
-       id="radialGradient9138"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830-6"
-       id="radialGradient9140"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830-6"
-       id="radialGradient9142"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-0-6"
-       id="radialGradient9144"
-       gradientUnits="userSpaceOnUse"
-       cx="1557.7802"
-       cy="852.49567"
-       fx="1557.7802"
-       fy="852.49567"
-       r="20.984898" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892-9"
-       id="radialGradient9147"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.89219815,0,0,0.89219815,167.1326,92.76057)"
-       cx="1545.3793"
-       cy="850.25452"
-       fx="1545.3793"
-       fy="850.25452"
-       r="20.984898" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient9219"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient9221"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient9223"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient9225"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient9227"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient9229"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient9231"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient9233"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient9235"
-       gradientUnits="userSpaceOnUse"
-       cx="554.89978"
-       cy="704.69049"
-       fx="554.89978"
-       fy="704.69049"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12020"
-       id="radialGradient9237"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.54912,0.4514204,-0.5139427,0.6251743,610.78918,15.384598)"
-       cx="550.88904"
-       cy="704.13428"
-       fx="550.88904"
-       fy="704.13434"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9239"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9241"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9243"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9245"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9247"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9249"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9251"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient9253"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient9255"
-       gradientUnits="userSpaceOnUse"
-       cx="554.7157"
-       cy="705.05341"
-       fx="554.7157"
-       fy="705.05341"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12020"
-       id="radialGradient9257"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.54912,0.4514204,-0.5139427,0.6251743,610.78918,15.384598)"
-       cx="550.88904"
-       cy="704.13428"
-       fx="550.88904"
-       fy="704.13434"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient9325"
-       gradientUnits="userSpaceOnUse"
-       cx="554.89978"
-       cy="704.69049"
-       fx="554.89978"
-       fy="704.69049"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12020"
-       id="radialGradient9327"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.54912,0.4514204,-0.5139427,0.6251743,610.78918,15.384598)"
-       cx="550.88904"
-       cy="704.13428"
-       fx="550.88904"
-       fy="704.13434"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient9329"
-       gradientUnits="userSpaceOnUse"
-       cx="554.89978"
-       cy="704.69049"
-       fx="554.89978"
-       fy="704.69049"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12020"
-       id="radialGradient9331"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.54912,0.4514204,-0.5139427,0.6251743,610.78918,15.384598)"
-       cx="550.88904"
-       cy="704.13428"
-       fx="550.88904"
-       fy="704.13434"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient9333"
-       gradientUnits="userSpaceOnUse"
-       cx="554.89978"
-       cy="704.69049"
-       fx="554.89978"
-       fy="704.69049"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12020"
-       id="radialGradient9335"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.54912,0.4514204,-0.5139427,0.6251743,610.78918,15.384598)"
-       cx="550.88904"
-       cy="704.13428"
-       fx="550.88904"
-       fy="704.13434"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12020"
-       id="radialGradient9337"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.54912,0.4514204,-0.5139427,0.6251743,610.78918,15.384598)"
-       cx="550.88904"
-       cy="704.13428"
-       fx="550.88904"
-       fy="704.13434"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient9339"
-       gradientUnits="userSpaceOnUse"
-       cx="554.89978"
-       cy="704.69049"
-       fx="554.89978"
-       fy="704.69049"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12020"
-       id="radialGradient9341"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.54912,0.4514204,-0.5139427,0.6251743,610.78918,15.384598)"
-       cx="550.88904"
-       cy="704.13428"
-       fx="550.88904"
-       fy="704.13434"
-       r="7.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient7953"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.06977701,-0.3035309,0,578.51719,600.34841)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient7955"
-       gradientUnits="userSpaceOnUse"
-       cx="395.75"
-       cy="643.86218"
-       fx="395.75"
-       fy="643.86218"
-       r="8.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient7957"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.1389381,-0.06141329,0,442.50263,565.7337)"
-       cx="558.32812"
-       cy="587.5625"
-       fx="558.32812"
-       fy="587.5625"
-       r="29.95952" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668"
-       id="radialGradient7966"
-       gradientUnits="userSpaceOnUse"
-       cx="395.75"
-       cy="643.86218"
-       fx="395.75"
-       fy="643.86218"
-       r="8.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7986"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04906634,-0.00892423,0.02506913,0.25281382,-306.58832,209.00588)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7988"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916604,-0.00660279,0.02512007,0.18705001,-376.47276,147.85121)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7991"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916603,-0.00660279,0.02512006,0.18705001,-217.54008,289.18725)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7994"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04912667,-0.00748682,0.02509996,0.21209356,-306.39646,232.14665)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7997"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916602,-0.00660279,0.02512006,0.18705001,-216.38976,-445.02095)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient7999"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916602,-0.00660279,0.02512006,0.18705001,-383.05828,-302.19054)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8006"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916602,-0.00660279,0.02512006,0.18705001,-217.91607,-439.21832)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8008"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916602,-0.00660279,0.02512006,0.18705001,-381.47878,-296.40216)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8045"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0948479,0,0,0.08924936,-209.1398,-378.38019)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient8047"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.1411153,0.08227681,0,325.25784,-227.29281)"
-       cx="434.83334"
-       cy="206.06592"
-       fx="434.83334"
-       fy="206.06592"
-       r="27.000002" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient8049"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08051608,0,0,0.01707153,-202.51133,-347.15558)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient8051"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05480337,0,0,0.02405466,-192.07183,-347.4096)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3411"
-       id="radialGradient8084"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04619827,0,0,0.03555346,-185.52924,-312.96976)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8086"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.09502457,0,0,0.04327483,-209.49126,-315.52854)"
-       cx="455.37457"
-       cy="422.94226"
-       fx="455.37457"
-       fy="422.94226"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient8864"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.11271476,0,0,0.17635799,-217.62542,-399.60118)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient5289"
-       id="radialGradient8872"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.11271476,0,0,0.17635799,-217.62542,-381.78627)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8883"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916602,-0.00660279,0.02512006,0.18705001,-214.86345,-450.82358)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8885"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04916602,-0.00660279,0.02512006,0.18705001,-384.63778,-307.97891)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114-1"
-       id="radialGradient8911"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,227.81678,649.71185)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297-4"
-       id="linearGradient8913"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(196.17616,-451.19355)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114-1"
-       id="radialGradient8915"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2677513,-0.04037584,0.00799609,0.1793314,-57.298366,948.01707)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient8917"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6047108,0,0,0.2871686,-45.567433,520.02316)"
-       cx="514.30835"
-       cy="571.51276"
-       fx="514.30835"
-       fy="571.51276"
-       r="21.9" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient8919"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3416303,0.2221786,-0.4075222,0.6266217,378.709,186.98173)"
-       cx="444"
-       cy="639.11218"
-       fx="444"
-       fy="639.11218"
-       r="6.9000001" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114-1"
-       id="radialGradient8921"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,227.81678,633.71185)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297-4"
-       id="linearGradient8923"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(196.17616,-467.19355)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114-1"
-       id="radialGradient8950"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2677513,-0.04037584,0.00799609,0.1793314,-57.298366,948.01707)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114-1"
-       id="radialGradient8964"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,227.81678,649.71185)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297-4"
-       id="linearGradient8966"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(196.17616,-451.19355)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114-1"
-       id="radialGradient8968"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1030814,-5.0459026e-4,1.9448397e-4,0.03973061,227.81678,633.71185)"
-       cx="98.289146"
-       cy="1135.0156"
-       fx="98.289146"
-       fy="1135.0156"
-       r="116.64365" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297-4"
-       id="linearGradient8970"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="translate(196.17616,-467.19355)"
-       x1="45.28915"
-       y1="1138.3146"
-       x2="45.28915"
-       y2="1150.4084" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8241"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,35.72515,-346.13736)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8243"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,284.05296,-700.35213)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8245"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,284.05296,-718.30773)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8247"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.20336059,-0.02731043,0.1039016,0.77367717,-656.59239,-525.63125)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8249"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.20336059,-0.02731043,0.1039016,0.77367717,-384.49533,233.25664)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8251"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,344.99082,-78.918992)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8253"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-423.7513,162.82122)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8255"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,265.70382,68.531283)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8257"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,352.79031,-54.116412)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8259"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-415.95187,187.6238)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8261"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,265.70382,95.872745)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8263"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,362.38971,-23.590154)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8267"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-406.35257,218.15006)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8269"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,62.546902,-417.33079)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8273"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-267.65215,-315.29947)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8396"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06910933,0,0,0.9097364,51.9134,-208.31067)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8398"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0484875,0,0,0.5806637,125.04265,-230.33736)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8400"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06655327,0,0,0.6126629,92.455424,-89.76821)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8402"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05444843,0,0,0.9266034,127.59865,-228.4184)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8404"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06547663,0,0,0.789936,48.636202,-144.28424)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8406"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05253856,0,0,0.7909316,81.702778,-145.98805)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8408"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04726689,0,0,1.4600444,75.977248,-499.92516)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8410"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03999273,0,0,0.7310115,73.639915,-108.4709)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8412"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05438413,0,0,1.6156094,-195.21504,-547.51122)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8414"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03735206,0,0,1.0189409,-197.186,-273.93289)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8416"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04394768,0,0,0.9969175,68.441622,-315.9381)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8418"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.07569955,0,0,0.5837307,-122.37303,-82.08012)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8420"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0380282,0,0,0.603645,115.88525,-80.11128)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8422"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0380282,0,0,0.603645,97.743744,-90.99619)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8424"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0380282,0,0,0.603645,109.14697,-108.61936)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8426"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06139934,0,0,1.084037,110.51854,-415.14043)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8429"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05119453,0,0,1.0849791,48.633007,-340.62807)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8431"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04905045,0,0,0.9908735,57.269989,-330.82494)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8434"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04905045,0,0,0.9908735,117.39614,-263.96053)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8436"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.07733564,0,0,0.5732846,120.64152,-179.88584)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8438"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.07736878,0,0,0.9829643,71.773763,-333.28497)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8440"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05444843,0,0,0.9266034,136.6694,-239.04411)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8442"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05444843,0,0,0.9266034,123.71118,-251.48401)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8444"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03660884,0,0,0.387649,82.979858,6.344147)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8446"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03939847,0,0,0.3597844,136.2438,-153.0247)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8448"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04798627,0,0,0.797942,125.12493,-293.75849)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8450"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04031154,0,0,0.4504614,201.60449,-23.39745)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8452"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03413577,0,0,0.4948003,265.6839,-50.38728)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8454"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0343464,0,0,0.4381821,288.63099,-31.87088)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8456"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02767498,0,0,0.6588256,218.01906,-142.56378)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8458"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03893776,0,0,0.8532032,199.30373,-244.84019)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8460"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04476913,0,0,1.0176469,245.13165,-255.50257)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8462"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04666084,0,0,0.6714972,225.97416,-94.3194)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8464"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04666084,0,0,0.6714972,230.08477,-175.94446)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8466"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04382469,0,0,1.2243199,220.23915,-360.24509)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8468"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04234533,0,0,0.7160757,248.74412,-125.46373)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8470"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04940067,0,0,1.2235817,242.03031,-441.56758)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8472"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05574947,0,0,1.0783872,235.277,-271.36483)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8474"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04382469,0,0,1.2243199,254.29853,-356.7217)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8476"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03839294,0,0,1.1999452,236.55125,-356.12709)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8478"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04685844,0,0,0.6402209,225.68741,-108.6993)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8480"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04013457,0,0,0.4944845,294.46882,-44.08339)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8482"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04013457,0,0,0.4944845,282.72421,-45.25785)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8484"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05830812,0,0,0.4810867,265.21681,-45.05158)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8486"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03863847,0,0,0.960247,207.07615,-261.99447)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8488"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03893776,0,0,0.8532032,191.0825,-246.01465)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8490"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06454064,0,0,0.4494333,179.82835,-27.08667)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8492"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03954362,0,0,0.6580656,199.02349,-155.75861)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8494"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05151547,0,0,0.6574088,208.75445,-127.30236)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient8496"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03454654,0,0,0.3878678,267.98535,-16.53401)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8518"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1543372,-0.9354928,0.241055,1.2627692,-227.81261,298.08872)"
-       cx="-235.36041"
-       cy="233.37407"
-       fx="-235.36041"
-       fy="233.37407"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8520"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.426667,-0.7657358,-0.1556919,1.1903633,-134.44234,496.35188)"
-       cx="-66.024986"
-       cy="230.76758"
-       fx="-66.024986"
-       fy="230.76758"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8522"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4145153,-1.1855098,0.1945471,1.1526982,-679.4743,-382.9164)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8524"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616769,-0.8143403,0.1697478,0.7918016,-633.41747,-257.26868)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8526"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616767,-0.8143401,0.1697479,0.7918016,-662.08396,72.421213)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8528"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616768,-0.8143402,0.1697479,0.7918015,-433.1265,313.45324)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8530"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3287647,-0.5482072,0.1917483,0.6079418,532.77357,-1121.8321)"
-       cx="-224.4227"
-       cy="225.88875"
-       fx="-224.4227"
-       fy="225.88875"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8532"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1497316,-0.5050649,0.7459781,0.1056139,135.39036,-909.16514)"
-       cx="-198.71516"
-       cy="258.33145"
-       fx="-198.71516"
-       fy="258.33145"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8534"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616767,-0.8143401,0.1697479,0.7918016,33.575728,-1035.9119)"
-       cx="-233.18277"
-       cy="244.20367"
-       fx="-233.18277"
-       fy="244.20367"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8536"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616768,-0.8143402,0.1697479,0.7918015,-432.41982,-646.35367)"
-       cx="-238.81821"
-       cy="238.73795"
-       fx="-238.81821"
-       fy="238.73795"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8538"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.08625898,-1.707962,0.8438742,1.7248919,-486.27721,-9.5247454)"
-       cx="-282.08786"
-       cy="216.57774"
-       fx="-282.08786"
-       fy="216.57774"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8540"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.4680274e-7,-1.3845601,0.7557972,1.4291879,-447.02332,148.4531)"
-       cx="-252.87535"
-       cy="244.86749"
-       fx="-252.87535"
-       fy="244.86749"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8542"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2246637,-0.5125541,0.4603149,0.8324903,-398.23479,179.18598)"
-       cx="-222.18376"
-       cy="239.61261"
-       fx="-222.18376"
-       fy="239.61261"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8544"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2804437,-0.4754315,0.3598938,1.278151,-421.55633,153.15071)"
-       cx="-76.783791"
-       cy="242.39285"
-       fx="-76.783791"
-       fy="242.39285"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8546"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1086696,-1.7275053,0.8664786,1.7357371,-477.51367,8.2436193)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient8548"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1583748,-1.5173254,0.915193,1.4877704,-516.7967,112.03249)"
-       cx="-230.91513"
-       cy="257.10944"
-       fx="-230.91513"
-       fy="257.10944"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8583"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-292.20448,-1411.3659)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8585"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-643.53066,-1300.8872)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8587"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,76.03669,-1401.1957)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8589"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-635.96819,-1276.8381)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8591"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-284.64193,-1387.3168)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8593"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-292.20448,-1411.3659)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8595"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-643.53066,-1300.8872)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8597"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,76.03669,-1401.1957)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8599"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-635.96819,-1276.8381)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8601"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-284.64193,-1387.3168)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8603"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-292.20448,-1411.3659)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8605"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-643.53066,-1300.8872)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8607"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185521,0.6095143,76.03669,-1401.1957)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8609"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-635.96819,-1276.8381)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-4-7"
-       id="radialGradient8611"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1602105,-0.02151559,0.08185522,0.60951431,-284.64193,-1387.3168)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2-6"
-       id="radialGradient8613"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,975.85545,-61.054606)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2-6"
-       id="radialGradient8615"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559952,-1075.9432,-130.74514)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2-6"
-       id="radialGradient8617"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,746.30836,425.20873)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2-6"
-       id="radialGradient8619"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925943,0.03073394,0.54559953,-980.07199,-659.85057)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2-6"
-       id="radialGradient8621"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191728,0.03497532,0.62089407,304.38311,731.55158)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2-6"
-       id="radialGradient8623"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559953,-632.49236,-1070.1337)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2-6"
-       id="radialGradient8625"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,-231.50682,775.88968)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2-6"
-       id="radialGradient8627"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559952,-126.33797,-1251.6595)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2-6"
-       id="radialGradient8629"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191729,0.03497532,0.62089407,-717.77011,546.3426)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2-6"
-       id="radialGradient8631"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925943,0.03073394,0.54559953,402.76748,-1155.7883)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2-6"
-       id="radialGradient8633"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06845518,-0.02191728,0.03497532,0.62089407,-1024.1131,104.41737)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527-2-6"
-       id="radialGradient8635"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06015376,-0.01925942,0.03073394,0.54559953,813.05058,-808.20866)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-52"
-       id="radialGradient9519"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.11531419,-0.54007056,-1.0569317,-0.2795024,1710.1624,1123.1645)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-00"
-       id="radialGradient9521"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.951324,0,0,0.2503484,88.734034,632.98302)"
-       cx="1128"
-       cy="858.76221"
-       fx="1128"
-       fy="858.76221"
-       r="76" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6373-4"
-       id="linearGradient9523"
-       gradientUnits="userSpaceOnUse"
-       x1="1184.8181"
-       y1="820.81299"
-       x2="1184.8181"
-       y2="859.90619" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-52"
-       id="radialGradient9535"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.11531419,-0.54007056,-1.0569317,-0.2795024,1710.1624,1123.1645)"
-       cx="704.54218"
-       cy="804.875"
-       fx="704.54218"
-       fy="804.875"
-       r="37.541969" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3668-00"
-       id="radialGradient9537"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.951324,0,0,0.2503484,88.734034,632.98302)"
-       cx="1128"
-       cy="858.76221"
-       fx="1128"
-       fy="858.76221"
-       r="76" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6373-4"
-       id="linearGradient9539"
-       gradientUnits="userSpaceOnUse"
-       x1="1184.8181"
-       y1="820.81299"
-       x2="1184.8181"
-       y2="859.90619" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9563"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0423146,0,0,1.1746845,11.016983,-324.65416)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9565"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08059068,0,0,1.4691878,-29.508939,-456.52351)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9567"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0249619,0,0,0.9682536,-296.62622,-643.25482)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9569"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03678772,0,0,0.8821917,-306.84016,-607.93638)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9571"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0507445,0,0,0.8866574,-304.90986,-603.88229)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9573"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02575901,0,0,0.899636,-285.26295,-615.82172)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9575"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02575901,0,0,0.899636,-309.73435,-612.76453)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9577"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05305569,0,0,1.9542599,-49.213329,-673.9766)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9579"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06646027,0,0,1.8211639,-45.467676,-616.83383)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9581"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.08078197,0,0,1.3467993,-31.68755,-404.52739)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9583"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0423146,0,0,1.1746845,8.6845028,-333.20658)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9585"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05323059,0,0,1.1745771,-4.1715882,-333.16257)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9587"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03676624,0,0,0.8949879,-31.250863,-259.62356)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9589"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02602591,0,0,1.7431914,26.311803,-577.61926)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9591"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05315156,0,0,1.7314024,22.836943,-593.00228)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9593"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05435758,0,0,0.9460199,-15.154993,-224.43052)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient9595"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03664908,0,0,0.9255248,-13.314343,-261.12489)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9662"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02387965,0,0,0.12722259,198.45834,-83.611921)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9664"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02387965,0,0,0.12722259,201.47463,-80.81672)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9666"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02387965,0,0,0.12722259,198.45834,-67.882279)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9668"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02387965,0,0,0.12722259,201.47463,-65.087078)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9670"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04575935,0,0,0.26748729,115.37474,-111.18946)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9672"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04483761,0,0,0.16318497,83.093242,-74.095389)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9674"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03245751,0,0,0.40159975,170.28736,-184.22591)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9676"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04062538,0,0,0.30189622,18.166384,-228.06042)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9678"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04060722,0,0,0.5047877,5.2541095,-446.42828)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9680"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03328432,0,0,0.27342464,145.11078,-77.171205)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9682"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04663384,0,0,0.71678062,125.87303,-271.14992)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9684"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06385633,0,0,0.4606438,32.372232,-336.21103)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9686"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06049976,0,0,0.399983,29.344142,-303.79133)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9688"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04854511,0,0,0.4004871,59.897322,-304.65405)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9690"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04367413,0,0,0.7392915,54.606992,-483.86961)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9692"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03695289,0,0,0.3701466,52.447332,-285.65729)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9694"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04060722,0,0,0.5047877,47.644162,-390.70802)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9696"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.06994563,0,0,0.2955713,-97.47624,-272.29436)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9698"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04730324,0,0,0.5493777,29.341192,-403.20976)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9700"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04532213,0,0,0.5017274,37.321672,-398.24595)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9702"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.07148798,0,0,0.4977226,50.723022,-399.49158)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9704"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0338262,0,0,0.1962855,61.077332,-227.52085)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9706"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04509763,0,0,0.42251022,-0.43861312,-403.75462)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9708"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04854511,0,0,0.4004871,15.907645,-376.63716)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9710"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03695289,0,0,0.3701466,-9.4048201,-356.30738)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9712"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04378618,0,0,0.71073646,26.02853,-400.98269)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9714"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04867925,0,0,0.32141693,-0.08845723,-246.85869)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9716"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04839702,0,0,0.65816183,-51.385168,-419.97333)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9718"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05897612,0,0,0.29606863,-59.610546,-292.7601)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9720"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04532213,0,0,0.5017274,18.392781,-337.72682)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9722"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04454845,0,0,0.64715595,8.3530464,-484.11213)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9724"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04342539,0,0,0.80497708,-4.9972861,-525.85476)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9726"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03826578,0,0,0.75681683,5.3871538,-480.92162)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9728"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04145512,0,0,0.19092428,13.783568,-187.24278)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9730"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04692923,0,0,0.26270252,180.52356,-134.82872)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9732"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03365295,0,0,0.22505921,210.25829,-111.33537)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9734"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04956743,0,0,0.27250749,147.1776,-119.71856)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9736"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05962404,0,0,0.3685654,127.8632,-167.0872)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9738"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03468689,0,0,0.26622709,178.12086,-137.47303)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9740"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05025391,0,0,0.20152622,168.72165,-97.157809)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9742"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03329462,0,0,0.2720016,164.16821,-124.77664)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9744"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05025391,0,0,0.20152622,154.05842,-109.15499)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9746"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03312209,0,0,0.26886433,101.50712,-119.87742)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9748"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03299276,0,0,0.28697863,106.15331,-128.15012)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9750"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03284073,0,0,0.30912436,115.39621,-138.26366)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9752"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03290905,0,0,0.29905734,110.77835,-133.66628)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9754"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03350908,0,0,0.21857457,96.741843,-96.909072)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9756"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04575935,0,0,0.26748729,122.16137,-125.70531)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9758"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02387965,0,0,0.12722259,142.28012,-40.471662)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9760"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02387965,0,0,0.12722259,145.2964,-42.92239)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9762"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02387965,0,0,0.12722259,148.5012,-46.315706)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9764"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02387965,0,0,0.12722259,151.32896,-50.65161)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9766"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02387965,0,0,0.12722259,150.38637,-67.241156)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9768"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02387965,0,0,0.12722259,153.02562,-70.06892)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9770"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02387965,0,0,0.12722259,198.45834,-75.880402)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9772"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02387965,0,0,0.12722259,201.47463,-73.085201)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384-4"
-       id="radialGradient9774"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03386968,0,0,0.17685129,119.71919,-90.781668)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9924"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8233921,-0.5720627,0.3864479,0.5562296,-371.09829,-230.87939)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9926"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8233921,-0.5720627,0.3864479,0.5562296,-482.09829,-219.87939)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9928"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6861601,-0.4767189,0.3220399,0.4635246,-477.44638,-194.45992)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9930"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.7319041,-0.5085002,0.3435092,0.4944263,-459.66369,-198.26641)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9932"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6404161,-0.4449377,0.3005706,0.432623,-453.2291,-172.65344)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9934"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-443.7945,-140.04046)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9936"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8233921,-0.5720627,0.3864479,0.5562296,-391.09829,-231.87939)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9938"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6861601,-0.4767189,0.3220399,0.4635246,-396.44638,-205.45992)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9940"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6861602,-0.476719,0.3220399,0.4635247,-397.44641,-166.45991)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9942"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8233921,-0.5720627,0.3864479,0.5562296,-492.09829,-252.87939)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9944"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8233921,-0.5720627,0.3864479,0.5562296,-507.09829,-232.87939)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9946"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8233921,-0.5720627,0.3864479,0.5562296,-499.09829,-202.87939)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9948"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-466.79449,174.95955)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9950"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8233921,-0.5720627,0.3864479,0.5562296,-417.09829,44.120606)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9952"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8233921,-0.5720627,0.3864479,0.5562296,-423.09829,66.120606)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9954"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-464.79449,197.95955)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9956"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-455.79449,178.95955)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9958"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-470.79449,154.95955)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9960"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-483.79449,141.95955)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9962"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-463.79449,138.95955)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9964"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-466.79449,174.95955)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9966"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8233921,-0.5720627,0.3864479,0.5562296,-417.09829,44.120606)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9968"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.8233921,-0.5720627,0.3864479,0.5562296,-423.09829,66.120606)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9970"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-464.79449,197.95955)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9972"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-455.79449,178.95955)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9974"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-470.79449,154.95955)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9976"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-483.79449,141.95955)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient9978"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.5489281,-0.3813752,0.2576319,0.3708198,-463.79449,138.95955)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10018"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10020"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient10022"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6839032,-0.08928711,0.02042399,0.3965732,-350.2763,694.04883)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10024"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10026"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4474594,0.4382122,0,-663.94778,896.69298)"
-       cx="333.57312"
-       cy="450.05145"
-       fx="333.57312"
-       fy="450.05145"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10028"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4474594,0.4382122,0,-663.94778,896.69298)"
-       cx="333.57312"
-       cy="450.05145"
-       fx="333.57312"
-       fy="450.05145"
-       r="55.343937" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10030"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1828794,0,0,0.8991597,-90.504538,544.23959)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient10032"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6832056,-0.1110889,0.02040315,0.4934072,-51.408391,739.54871)"
-       cx="260.54871"
-       cy="824.12482"
-       fx="260.54871"
-       fy="824.12482"
-       r="26.625" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10034"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3424126,0,0,0.2773109,-103.57588,875.24493)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10069"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,1199.4802,395.76338)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10071"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,1199.4802,420.21905)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10073"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,1199.4802,444.67474)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10075"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10077"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10079"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.7682994e-4,0.7479366,-1.6862752,3.986766e-4,-89.348236,1122.3905)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10081"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.367815,-2.0823413,-0.2565614,-0.168526,-1003.5062,2295.1256)"
-       cx="415.79111"
-       cy="443.23114"
-       fx="415.79111"
-       fy="443.23114"
-       r="55.343937" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10083"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.6470588,187.12452,176.42195)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10085"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.3781513,-738.87548,470.83867)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10087"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3852141,0,0,0.9663866,-1.14786,16.80209)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10089"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0567612,0.5887483,-1.1798081,0.1137453,-36.685686,1184.5922)"
-       cx="246.91434"
-       cy="437.017"
-       fx="246.91434"
-       fy="437.017"
-       r="26" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10091"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1673152,0,0,0.3109244,-57.326848,344.44285)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient10093"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.3714703e-7,0.4003521,-0.09047043,-5.3589821e-8,-486.98736,1139.54)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10095"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,1059.4802,371.30768)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10097"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,1059.4802,395.76338)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10099"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,1059.4802,420.21905)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10101"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,1059.4802,444.67474)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10103"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10105"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10107"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.7682994e-4,0.7479366,-1.6862752,3.986766e-4,-65.348236,982.3905)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10109"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1.367815,-2.0823413,-0.2565614,-0.168526,-1003.5062,2155.1256)"
-       cx="415.79111"
-       cy="443.23114"
-       fx="415.79111"
-       fy="443.23114"
-       r="55.343937" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10111"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.6470588,187.12452,176.42195)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10113"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.3781513,-112.87548,310.83867)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10115"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3852141,0,0,0.9663866,-1.14786,16.80209)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10117"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0567612,0.5887483,-1.1798081,0.1137453,-36.685686,1044.5922)"
-       cx="246.91434"
-       cy="437.017"
-       fx="246.91434"
-       fy="437.017"
-       r="26" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10119"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1673152,0,0,0.3109244,-57.326848,344.44285)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient10121"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-2.3714703e-7,0.4003521,-0.09047043,-5.3589821e-8,-486.98736,999.54)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10146"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1497316,-0.5050649,0.7459782,0.1056139,-223.1199,-926.21161)"
-       cx="-198.71516"
-       cy="258.33145"
-       fx="-198.71516"
-       fy="258.33145"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10148"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616767,-0.8143401,0.169748,0.7918016,-393.58905,-843.72199)"
-       cx="-233.18277"
-       cy="244.20367"
-       fx="-233.18277"
-       fy="244.20367"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10150"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616766,-0.8143402,0.1697479,0.7918014,-786.67464,-257.83799)"
-       cx="-238.81821"
-       cy="238.73795"
-       fx="-238.81821"
-       fy="238.73795"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10152"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.1497316,-0.5050649,0.7459782,0.1056139,-223.1199,-926.21161)"
-       cx="-198.71516"
-       cy="258.33145"
-       fx="-198.71516"
-       fy="258.33145"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10154"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616767,-0.8143401,0.169748,0.7918016,-393.58905,-843.72199)"
-       cx="-233.18277"
-       cy="244.20367"
-       fx="-233.18277"
-       fy="244.20367"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10156"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3616766,-0.8143402,0.1697479,0.7918014,-786.67464,-257.83799)"
-       cx="-238.81821"
-       cy="238.73795"
-       fx="-238.81821"
-       fy="238.73795"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10158"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.02248312,-0.164795,0.17926953,0.16558028,-1026.5872,321.02092)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10160"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.17129391,-0.11900876,0.08039448,0.1157149,-956.26757,-465.64021)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10162"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.01338666,-0.57665106,0.13096212,0.58236702,-1030.4972,117.53439)"
-       cx="-282.08786"
-       cy="216.57774"
-       fx="-282.08786"
-       fy="216.57774"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10164"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-3.0007876e-8,-0.41080523,0.15449213,0.42404649,-1032.0613,198.49638)"
-       cx="-252.87535"
-       cy="244.86749"
-       fx="-252.87535"
-       fy="244.86749"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10166"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.02233556,-0.29849418,0.17809294,0.29991654,-1038.5526,257.92226)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10168"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.0224288,-0.20933628,0.17883633,0.21033381,-1034.6652,299.99989)"
-       cx="-226.28433"
-       cy="259.36768"
-       fx="-226.28433"
-       fy="259.36768"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10170"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.02847462,-0.26277469,0.16454496,0.25765628,-1037.5329,275.57574)"
-       cx="-230.91513"
-       cy="257.10944"
-       fx="-230.91513"
-       fy="257.10944"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient10172"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.02835739,-0.36791975,0.16386744,0.36075328,-1039.7944,226.2715)"
-       cx="-230.91513"
-       cy="257.10944"
-       fx="-230.91513"
-       fy="257.10944"
-       r="25" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10206"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02937459,0,0,0.84233105,-227.89633,-624.02308)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10208"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04432387,0,0,0.34617158,-291.38227,-393.56224)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10210"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0514195,0,0,0.38285675,-295.41891,-455.39602)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10212"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04810952,0,0,0.6529604,-281.6773,-536.13793)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10214"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02472644,0,0,0.58524638,-264.67845,-525.33368)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10216"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05036736,0,0,0.41344128,-249.76052,-426.23012)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10218"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04143144,0,0,0.40423219,-247.77982,-465.04076)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10220"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04087378,0,0,0.58714394,-261.65192,-506.13908)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10222"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04161181,0,0,0.35281177,-255.59477,-446.89812)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10224"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02188863,0,0,0.50795789,-243.1402,-472.36227)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10226"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02188863,0,0,0.50795789,-230.60981,-496.88985)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10228"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02204256,0,0,0.43931078,-258.14123,-472.48644)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10230"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03357819,0,0,0.27024369,-263.47646,-364.13473)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10232"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03284109,0,0,0.35726673,-281.53123,-406.28246)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10234"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.0401279,0,0,0.8989517,288.39706,-609.95213)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10236"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04404614,0,0,0.38489837,228.94656,-378.50327)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10238"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05196804,0,0,0.35157835,229.05374,-408.37184)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10240"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04803905,0,0,0.67117333,240.15531,-510.10794)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10242"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02472644,0,0,0.58524638,257.12156,-490.98871)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10244"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.05036736,0,0,0.41344128,272.03949,-391.88515)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10246"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04143144,0,0,0.40423219,274.02019,-430.69579)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10248"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04087378,0,0,0.58714394,260.14809,-476.60457)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10250"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.04161181,0,0,0.35281177,265.93864,-416.019)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10252"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02188863,0,0,0.50795789,278.65981,-438.0173)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10254"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02188863,0,0,0.50795789,291.1902,-462.54488)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10256"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02204256,0,0,0.43931078,263.65878,-438.14147)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10258"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03357819,0,0,0.27024369,258.32355,-329.78976)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3384"
-       id="radialGradient10260"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03342516,0,0,0.28715513,239.99864,-339.91406)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient10357"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient10359"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10361"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.08124131,-0.14477892,0,-704.0701,315.14828)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10363"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3073931,0,0,0.5966386,-77.92607,573.62506)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10365"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.7814539,-2.9745305,0,841.42454,1247.164)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10367"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.7814539,-2.9745305,0,841.42454,497.5603)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10369"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6575877,0,0,0.8655463,-377.42413,439.20837)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10371"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.6575877,0,0,0.8655463,-377.42413,439.20837)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10373"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.00772174,-0.5472376,-1.7128678,0.02416925,566.21374,1148.6756)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10375"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-0.00772174,0.5472376,-1.7128678,-0.02416925,566.21374,596.04864)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10377"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10379"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4085603,0,0,0.9831933,-745.91445,380.40109)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10381"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4085603,0,0,0.9831933,-745.91445,380.40109)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10383"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10385"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10387"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10389"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10391"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10393"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.08124131,0.14477892,0,-782.31871,315.14828)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10395"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.08396586,-0.12851972,0,-692.67029,373.72985)"
-       cx="290.20245"
-       cy="463.33759"
-       fx="290.20245"
-       fy="463.33759"
-       r="55.343937" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10397"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2684825,0,0,0.6134454,-519.31517,565.22407)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10399"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.08396586,-0.12851972,0,-692.67029,312.58457)"
-       cx="330.59082"
-       cy="472.31458"
-       fx="330.59082"
-       fy="472.31458"
-       r="55.343937" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10401"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3852141,0,0,0.9663866,-201.14786,388.80209)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10403"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.10488386,-0.05916525,0,-723.67166,318.81922)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10405"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1906615,0,0,0.394958,-442.09337,674.43764)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient10407"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-4.2052099e-8,0.07099244,-0.01604267,0,-740.41082,302.15685)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10409"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3385214,0,0,0.6134454,-621.6148,565.22407)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10411"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3385214,0,0,0.6134454,-621.6148,565.22407)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient10413"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient10415"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient10417"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-230.50174)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient10419"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-206.04604)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient10421"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-181.59037)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6114"
-       id="radialGradient10423"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.540765,0,0,0.2231672,327.67546,-157.13468)"
-       cx="303.5"
-       cy="268.36215"
-       fx="303.5"
-       fy="268.36215"
-       r="36" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10425"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10427"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10429"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.4581492,-0.8164608,0,370.77017,341.36515)"
-       cx="313"
-       cy="190.55371"
-       fx="313"
-       fy="190.55371"
-       r="34.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10431"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.4735139,-0.7247693,0,384.0482,672.3538)"
-       cx="290.20245"
-       cy="463.33759"
-       fx="290.20245"
-       fy="463.33759"
-       r="55.343937" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10433"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.6470588,187.12452,176.42195)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10435"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4124514,0,0,0.3781513,-112.87548,310.83867)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10437"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3852141,0,0,0.9663866,-1.14786,16.80209)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10439"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.10488386,-0.05916525,0,-726.97966,251.28573)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10441"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.1673152,0,0,0.3109244,-57.326848,344.44285)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient10443"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-4.2052099e-8,0.07099244,-0.01604267,0,-743.71882,234.60588)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient10445"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient4082"
-       id="radialGradient10447"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10449"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="456.58334"
-       cy="249.29247"
-       fx="456.58334"
-       fy="249.29247"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10451"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10453"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="437.25"
-       cy="250.7834"
-       fx="437.25"
-       fy="250.7834"
-       r="26.856915" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10455"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(1,0,0,3.1300258,0,-507.18136)"
-       cx="448.25"
-       cy="238.11044"
-       fx="448.25"
-       fy="238.11044"
-       r="26.856915" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10457"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4046694,0,0,0.5462185,-204.95332,380.82822)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10459"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4046694,0,0,0.5462185,-204.95332,380.82822)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10461"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3830"
-       id="radialGradient10463"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-1.0006783,0.00939822,0.04028544,-1.7371162,919.51465,2539.0911)"
-       cx="478.26697"
-       cy="926.97736"
-       fx="478.26697"
-       fy="926.97736"
-       r="52.856407" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10465"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.07919413,-0.12121604,0,-695.62674,279.02842)"
-       cx="330.59082"
-       cy="472.31458"
-       fx="330.59082"
-       fy="472.31458"
-       r="55.343937" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10467"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,-0.07919413,-0.12121604,0,-695.62674,336.69884)"
-       cx="290.20245"
-       cy="463.33759"
-       fx="290.20245"
-       fy="463.33759"
-       r="55.343937" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10469"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.3463036,0,0,0.8991597,-89.536965,204.40627)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient13997"
-       id="radialGradient10471"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0,0.10488386,-0.05916525,0,-723.73877,283.42077)"
-       cx="238.5"
-       cy="436.61215"
-       fx="238.5"
-       fy="436.61215"
-       r="26" />
-    <linearGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient6297"
-       id="linearGradient10473"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.4046694,0,0,0.3109244,-324.95332,498.44284)"
-       x1="118.5"
-       y1="440.36218"
-       x2="118.5"
-       y2="559.36218" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient19892"
-       id="radialGradient10475"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(-4.2052099e-8,0.07099244,-0.01604267,0,-740.47793,266.74091)"
-       cx="579.92432"
-       cy="405.45587"
-       fx="579.92432"
-       fy="405.45587"
-       r="27.833334" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11609"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-991.14123,397.82563)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11612"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,1025.0097,-236.17734)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11616"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,1027.8168,-227.25071)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11620"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-702.24189,-879.09337)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11623"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-401.72487,945.10274)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11626"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02577531,-0.00346152,0.0131692,0.09806115,-766.84435,-801.57508)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11630"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,57.287951,-1117.9367)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11633"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02577532,-0.00346152,0.01316921,0.09806115,1046.4301,-146.11979)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11636"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-420.23853,-1047.7059)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11639"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,55.739221,-1122.8617)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11643"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-703.79064,-884.01841)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11655"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02577531,-0.00346152,0.0131692,0.09806115,1014.4113,-306.46876)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11659"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02577531,-0.00346152,0.0131692,0.09806114,-304.99122,988.5907)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11663"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,854.89623,549.94312)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11666"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02577531,-0.00346152,0.01316921,0.09806115,-454.47165,933.36888)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11669"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-680.78343,782.62693)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11672"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,853.3475,545.01808)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11675"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-403.27361,940.17771)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11678"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-680.78343,778.21572)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11681"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,852.08915,541.01649)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11684"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-404.53196,936.17611)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11687"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-988.33416,406.75226)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11695"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02577532,-0.00346152,0.01316921,0.09806115,-638.88535,-906.19455)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11698"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,1034.6038,93.098997)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11701"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-989.88289,401.82723)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11704"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,1026.2681,-232.17575)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11707"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,1034.6038,88.687788)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11711"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-991.14123,397.82563)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11715"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,1025.0097,-236.17734)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11718"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,1034.6341,99.019867)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11727"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,651.42624,771.54339)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11730"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,350.93446,-1052.5266)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11733"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,-1078.5106,119.7419)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11737"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02577532,-0.00346152,0.0131692,0.09806115,-1052.6216,226.81727)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11740"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,-905.60311,-657.3933)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11743"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02577532,-0.00346152,0.01316921,0.09806115,423.15427,-1012.5992)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11746"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,636.46079,-897.22032)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11749"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,-907.15184,-662.31834)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11752"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,349.38572,-1057.4516)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11755"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,636.46079,-901.63153)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11758"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,-908.41019,-666.31993)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11761"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,348.12736,-1061.4532)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11764"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02577532,-0.00346152,0.0131692,0.09806115,266.68607,-1068.1553)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11767"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02577531,-0.00346152,0.0131692,0.09806115,728.51137,721.88493)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11771"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,937.4995,-514.2167)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11775"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02577532,-0.00346152,0.01316921,0.09806115,607.55948,826.83587)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11779"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-1078.8087,-207.74438)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11783"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,935.95077,-519.14174)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11787"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,-1080.0594,114.81687)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11791"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-1078.8087,-212.15559)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11795"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,934.69242,-523.14333)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11799"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,-1081.3177,110.81527)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11802"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,-108.04635,1010.3687)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11805"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.02577532,-0.00346152,0.01316921,0.09806115,-1077.6406,66.817931)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11808"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,375.92973,932.98469)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11811"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,-109.59508,1005.4436)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11814"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,649.87749,766.61835)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11826"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,375.96001,938.90556)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11828"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,649.81905,766.43253)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11831"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,-109.6535,1005.2578)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11975"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.20336059,-0.02731043,0.1039016,0.77367717,-142.80938,-465.53231)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11977"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,344.99082,-78.918992)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11979"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-423.7513,162.82122)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11981"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,265.70382,68.531283)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11983"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,352.79031,-54.116412)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11985"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-415.95187,187.6238)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11987"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,265.70382,95.872745)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11989"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,362.38971,-23.590154)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient11991"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-406.35257,218.15006)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient12021"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.20336059,-0.02731043,0.1039016,0.77367717,-142.80938,-465.53231)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient12023"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,344.99082,-78.918992)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient12025"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-423.7513,162.82122)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient12027"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,265.70382,68.531283)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient12029"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,352.79031,-54.116412)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient12031"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-415.95187,187.6238)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient12033"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,265.70382,95.872745)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient12036"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,362.38971,-23.590154)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient12038"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.2033606,-0.02731046,0.1039016,0.7736772,-406.35257,218.15006)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient12040"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482332,-703.79064,-884.01841)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient3527"
-       id="radialGradient12042"
-       gradientUnits="userSpaceOnUse"
-       gradientTransform="matrix(0.03280974,-0.00440621,0.01676325,0.12482333,55.739221,-1122.8617)"
-       cx="447.06158"
-       cy="426.05655"
-       fx="447.06158"
-       fy="426.05655"
-       r="46.5" />
-    <radialGradient
-       inkscape:collect="always"
-       xlink:href="#linearGradient12044"
-       id="radialGradient12050"
-       cx="19.087404"
-       cy="34.843845"
-       fx="19.087404"
-       fy="34.843845"
-       r="0.28277636"
-       gradientTransform="matrix(1,0,0,6,0,-174.21923)"
-       gradientUnits="userSpaceOnUse" />
-  </defs>
-  <metadata
-     id="metadata7">
-    <rdf:RDF>
-      <cc:Work
-         rdf:about="">
-        <dc:format>image/svg+xml</dc:format>
-        <dc:type
-           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-      </cc:Work>
-    </rdf:RDF>
-  </metadata>
-  <g
-     inkscape:label="Capa 1"
-     inkscape:groupmode="layer"
-     id="layer1"
-     transform="translate(1076.5874,-189.01437)">
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-1.png"
-       y="912.66119"
-       x="-259.13138"
-       height="6.2408586"
-       width="0.89529556"
-       id="rect4586"
-       style="fill:url(#radialGradient4588);fill-opacity:1;stroke:#000000;stroke-width:0.01505707;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       transform="matrix(0,-1,-1,0,0,0)" />
-    <rect
-       transform="matrix(0,1,-1,0,0,0)"
-       style="fill:url(#radialGradient5317);fill-opacity:1;stroke:#000000;stroke-width:0.01537261;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect5315"
-       width="3.0168054"
-       height="1.9305305"
-       x="242.13666"
-       y="913.2879"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <rect
-       y="915.64825"
-       x="242.13666"
-       height="1.9305305"
-       width="3.0168054"
-       id="rect5319"
-       style="fill:url(#radialGradient5322);fill-opacity:1;stroke:#000000;stroke-width:0.01537261;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <rect
-       transform="matrix(0,1,-1,0,0,0)"
-       style="fill:url(#radialGradient5326);fill-opacity:1;stroke:#000000;stroke-width:0.01537261;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect5324"
-       width="3.0168054"
-       height="1.9305305"
-       x="242.13666"
-       y="918.00873"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <rect
-       inkscape:export-ydpi="87.310692"
-       inkscape:export-xdpi="87.310692"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-       style="fill:url(#radialGradient4435);fill-opacity:1;stroke:#000000;stroke-width:0.00800946;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4433"
-       width="0.60816383"
-       height="2.5996521"
-       x="-288.72092"
-       y="-710.91504"
-       transform="matrix(0.00458966,-0.99998947,0.99998947,0.00458966,0,0)" />
-    <rect
-       inkscape:export-ydpi="87.310692"
-       inkscape:export-xdpi="87.310692"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-       style="fill:url(#radialGradient4389);fill-opacity:1;stroke:#000000;stroke-width:0.00800946;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4387"
-       width="0.60816383"
-       height="2.5996523"
-       x="-289.07718"
-       y="-711.26807"
-       transform="matrix(0.00458966,-0.99998947,0.99998947,0.00458966,0,0)" />
-    <rect
-       transform="matrix(0.00458966,-0.99998947,0.99998947,0.00458966,0,0)"
-       y="-711.27136"
-       x="-288.36789"
-       height="2.5996521"
-       width="0.60816383"
-       id="rect4383"
-       style="fill:url(#radialGradient4385);fill-opacity:1;stroke:#000000;stroke-width:0.00800946;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-       inkscape:export-xdpi="87.310692"
-       inkscape:export-ydpi="87.310692" />
-    <rect
-       transform="matrix(0,1,-1,0,0,0)"
-       style="fill:url(#radialGradient4929);fill-opacity:1;stroke:#000000;stroke-width:0.01323671;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4927"
-       width="3.2700703"
-       height="1.3204808"
-       x="283.89191"
-       y="923.54858"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-fighter.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <g
-       transform="matrix(0.17732501,0,0,0.17732501,-787.25787,215.25418)"
-       id="g5092"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76">
-      <rect
-         mask="none"
-         clip-path="none"
-         rx="6.0620885"
-         y="1086.3146"
-         x="17.558502"
-         height="12.093904"
-         width="27.461296"
-         id="rect5094"
-         style="fill:url(#radialGradient5098);fill-opacity:1;stroke:#000000;stroke-width:0.64537716;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         style="fill:url(#radialGradient5100);fill-opacity:1;stroke:#000000;stroke-width:0.64537716;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect5096"
-         width="27.461296"
-         height="12.093904"
-         x="47.558502"
-         y="1086.3146"
-         rx="6.0620885"
-         clip-path="none"
-         mask="none" />
-    </g>
-    <rect
-       style="fill:url(#linearGradient5283);fill-opacity:1;stroke:none"
-       id="rect5281"
-       width="4.8695745"
-       height="2.1445515"
-       x="-778.82458"
-       y="407.88495"
-       rx="1.0749599"
-       clip-path="none"
-       mask="none"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <rect
-       mask="none"
-       clip-path="none"
-       rx="1.0749599"
-       y="407.88495"
-       x="-784.14429"
-       height="2.1445515"
-       width="4.8695745"
-       id="rect5277"
-       style="fill:url(#linearGradient5279);fill-opacity:1;stroke:none"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <g
-       id="g6746"
-       transform="matrix(0.13420698,0,0,0.13420698,-770.85789,239.44106)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/extra-bomber.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76">
-      <path
-         style="fill:url(#linearGradient6754);fill-opacity:1;stroke:#000000;stroke-width:0.56262243;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 437.6,575.31875 c -2.09555,0.0464 -3.81251,1.51291 -3.8125,3.34375 0,1.83081 1.71697,3.29733 3.8125,3.34375 l 0,-0.0312 c 0.0325,3.1e-4 0.0611,0 0.0937,0 3.21836,0 5.8125,-1.48008 5.8125,-3.3125 0,-1.83239 -2.59415,-3.31251 -5.8125,-3.3125 -0.0327,0 -0.0612,-3.1e-4 -0.0937,0 l 0,-0.0312 z"
-         id="path6724"
-         inkscape:connector-curvature="0" />
-      <g
-         id="g6726"
-         clip-path="url(#clipPath4821)"
-         transform="translate(-15.4,-17.15)">
-        <path
-           transform="matrix(1.7857143,0,0,1.2857143,-363.41428,-170.87491)"
-           d="m 458.19999,597.36218 c 0,0.7732 -0.6268,1.4 -1.4,1.4 -0.7732,0 -1.4,-0.6268 -1.4,-1.4 0,-0.7732 0.6268,-1.4 1.4,-1.4 0.7732,0 1.4,0.6268 1.4,1.4 z"
-           sodipodi:ry="1.4"
-           sodipodi:rx="1.4"
-           sodipodi:cy="597.36218"
-           sodipodi:cx="456.79999"
-           id="path6728"
-           style="fill:url(#radialGradient6756);fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:type="arc"
-           style="fill:url(#radialGradient6758);fill-opacity:1;stroke:none"
-           id="path6730"
-           sodipodi:cx="456.79999"
-           sodipodi:cy="597.36218"
-           sodipodi:rx="1.4"
-           sodipodi:ry="1.4"
-           d="m 458.19999,597.36218 c 0,0.7732 -0.6268,1.4 -1.4,1.4 -0.7732,0 -1.4,-0.6268 -1.4,-1.4 0,-0.7732 0.6268,-1.4 1.4,-1.4 0.7732,0 1.4,0.6268 1.4,1.4 z"
-           transform="matrix(1.7857143,0,0,1.2857143,-363.41428,-173.67491)" />
-        <path
-           transform="matrix(1.7857143,0,0,1.2857143,-360.81428,-171.87491)"
-           d="m 458.19999,597.36218 c 0,0.7732 -0.6268,1.4 -1.4,1.4 -0.7732,0 -1.4,-0.6268 -1.4,-1.4 0,-0.7732 0.6268,-1.4 1.4,-1.4 0.7732,0 1.4,0.6268 1.4,1.4 z"
-           sodipodi:ry="1.4"
-           sodipodi:rx="1.4"
-           sodipodi:cy="597.36218"
-           sodipodi:cx="456.79999"
-           id="path6732"
-           style="fill:url(#radialGradient6760);fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:type="arc"
-           style="fill:url(#radialGradient6762);fill-opacity:1;stroke:none"
-           id="path6734"
-           sodipodi:cx="456.79999"
-           sodipodi:cy="597.36218"
-           sodipodi:rx="1.4"
-           sodipodi:ry="1.4"
-           d="m 458.19999,597.36218 c 0,0.7732 -0.6268,1.4 -1.4,1.4 -0.7732,0 -1.4,-0.6268 -1.4,-1.4 0,-0.7732 0.6268,-1.4 1.4,-1.4 0.7732,0 1.4,0.6268 1.4,1.4 z"
-           transform="matrix(1.7857143,0,0,1.2857143,-359.41428,-174.47491)" />
-      </g>
-    </g>
-    <g
-       id="g5215"
-       transform="matrix(0.14323209,0,0,0.10343132,-774.88277,257.60611)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/extra-fighter.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92">
-      <path
-         sodipodi:nodetypes="cccccc"
-         id="path4241"
-         d="m 446.67105,502.52941 c 1.04509,-3.97845 1.65472,-6.14852 6.4447,-6.32935 -4.6158,-0.18084 -8.51868,-5.74552 -2.42235,-11.44194 -5.31252,4.52097 -15.12484,-2.7072 -15.12484,-2.7072 7.85125,7.68265 6.96724,14.05333 5.82543,21.00723 l 5.27706,-0.52874 z"
-         style="fill:#964104;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17747864px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#964104;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17747864px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 446.67105,504.57966 c 1.04509,3.97845 1.65472,6.14852 6.4447,6.32935 -4.6158,0.18084 -8.51868,5.74552 -2.42235,11.44194 -5.31252,-4.52097 -15.12484,2.7072 -15.12484,2.7072 7.85125,-7.68265 6.96724,-14.05333 5.82543,-21.00723 l 5.27706,0.52874 z"
-         id="path5213"
-         sodipodi:nodetypes="cccccc"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       transform="matrix(0,-0.12167904,0.12167904,0,-854.10854,365.10232)"
-       id="g6554"
-       inkscape:transform-center-x="-5.9622705"
-       inkscape:export-filename="/media/pros/pyfl/art/harvester-turret.png"
-       inkscape:export-xdpi="50.130737"
-       inkscape:export-ydpi="50.130737">
-      <path
-         transform="matrix(1.0091846,-0.0297211,0.02340402,1.281578,-87.811666,-261.56424)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path6556"
-         style="fill:url(#radialGradient6560);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient6562);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path6558"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.5365127,-0.02318479,0.01244228,0.9997312,148.48251,11.308672)" />
-    </g>
-    <path
-       style="fill:url(#radialGradient9190);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07123978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -719.20828,327.91536 c 10e-6,0.0563 -0.42507,0.13396 -1.21845,0.13058 l 0,0.003 c -0.22507,0.004 -0.34607,-0.0755 -0.34606,-0.13327 l 0,-0.0108 c 0,-0.0577 0.12099,-0.13771 0.34606,-0.13327 l 0,0.003 c 0.79338,-0.003 1.21845,0.0743 1.21845,0.13058 l 0,0.0108 z"
-       id="path9186"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g9144"
-       transform="matrix(0.10175086,0,0,0.09015021,-735.75574,246.8606)"
-       style="stroke-width:0.74382401;stroke-miterlimit:4;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92">
-      <path
-         id="path9107"
-         d="m 160.00444,916.39281 c -8.16344,-3.90983 -12.62159,-9.23894 -16.35263,-14.68916 l 5.72719,0.1214 c 2.62657,4.12934 5.72696,8.15688 10.62544,11.47212 l 0,3.09564 z"
-         style="fill:url(#radialGradient9148);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.74382401;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:url(#radialGradient9150);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.74382401;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 160.00444,881.70365 c -8.16344,3.90983 -12.62159,9.23894 -16.35263,14.68916 l 5.72719,-0.1214 c 2.62657,-4.12934 5.72696,-8.15688 10.62544,-11.47212 l 0,-3.09564 z"
-         id="path9140"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="g8122"
-       transform="matrix(0.10177111,0,0,0.10177111,-738.27765,233.93263)"
-       style="stroke-width:0.69999999;stroke-miterlimit:4;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fighter.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92">
-      <path
-         id="path8065"
-         d="m 187.25,869.4375 c -10.15586,2.01292 -15.70208,4.75653 -20.34375,7.5625 l 7.125,-0.0625 c 3.26763,-2.12593 7.12471,-4.19945 13.21875,-5.90625 l 0,-1.59375 z"
-         style="fill:url(#radialGradient8126);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.69999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:url(#radialGradient8128);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.69999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 187.25,889.89966 c -10.15586,-2.01292 -15.70208,-4.75653 -20.34375,-7.5625 l 7.125,0.0625 c 3.26763,2.12593 7.12471,4.19945 13.21875,5.90625 l 0,1.59375 z"
-         id="path8118"
-         inkscape:connector-curvature="0" />
-    </g>
-    <image
-       sodipodi:absref="/home/xymus/projects/nit/examples/shoot/art/fighter.png"
-       xlink:href="fighter.png"
-       width="3.5465002"
-       height="3.5465002"
-       id="image2375"
-       x="-721.4126"
-       y="308.18842" />
-    <g
-       id="g8167"
-       transform="matrix(0.14452663,0,0,0.14452663,-761.90103,261.81132)">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/harvester.png"
-         id="path2321"
-         d="m 221.99499,559.94438 c 0,3.33801 -5.82457,6.04711 -13.00128,6.04711 -7.17671,0 -8.46595,-2.40675 -8.46595,-5.74475 0,-3.33801 1.28924,-6.34946 8.46595,-6.34946 7.17671,0 13.00128,2.7091 13.00128,6.0471 z"
-         style="fill:url(#radialGradient7245);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/harvester.png"
-         id="rect3302"
-         d="m 203.32994,554.78384 0,10.32109 -7.90225,-3.01032 0,-4.30045 7.90225,-3.01032 z"
-         style="fill:url(#linearGradient5264);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/harvester.png"
-         sodipodi:nodetypes="csssc"
-         id="path5277"
-         d="m 220.74855,559.90407 c 0,2.27722 -2.90441,4.1657 -4.34712,4.1657 -1.44272,0 -0.19477,-1.84817 -0.19477,-4.12539 0,-2.27721 -1.24795,-4.12539 0.19477,-4.12539 1.44271,0 4.34712,1.80786 4.34712,4.08508 z"
-         style="fill:url(#radialGradient6257);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </g>
-    <path
-       style="fill:url(#linearGradient7258);fill-opacity:1;stroke:#000000;stroke-width:0.17732501;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -737.8237,328.73465 c -0.47168,0 -0.86141,0.35156 -0.90811,0.80422 l -3.24707,0 0,0.18766 3.24707,0 c 0.0482,0.45111 0.43755,0.80423 0.90811,0.80423 0.50312,0 0.91146,-0.40233 0.91146,-0.89806 0,-0.49572 -0.40834,-0.89805 -0.91146,-0.89805 z"
-       id="path7247"
-       inkscape:export-filename="/media/pros/pyfl/art/harvester-turret.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g11684"
-       transform="matrix(-0.17732501,0,0,-0.17732501,-679.8367,432.8295)"
-       inkscape:export-filename="/media/pros/pyfl/art/t-harvester.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/harvester-t.png"
-         id="rect3331"
-         d="m 325.68664,656.11848 -0.5625,0.15625 -0.0937,-0.0312 -0.0312,0.0937 -13.21875,3.9375 0.78125,2.625 13.90625,-4.15625 -0.0312,-0.0937 15,7.03125 0.6875,-1.46875 -16.28125,-7.59375 -0.15625,-0.5 z"
-         style="fill:url(#radialGradient11689);fill-opacity:1;stroke:#000000;stroke-width:0.64451462;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/harvester-t.png"
-         id="rect3347"
-         d="m 341.43664,670.05598 -15,7.03125 0.0312,-0.0937 -13.90625,-4.1875 -0.78125,2.65625 13.21875,3.9375 0.0312,0.0937 0.0937,-0.0312 0.5625,0.15625 0.15625,-0.5 16.28125,-7.59375 -0.6875,-1.46875 z"
-         style="fill:url(#radialGradient11691);fill-opacity:1;stroke:#000000;stroke-width:0.64451462;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/harvester-t.png"
-         transform="matrix(0.8846154,0,0,0.8846154,-144.28692,46.756426)"
-         d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 -3.31371,0 -6,-2.68629 -6,-6 0,-3.31371 2.68629,-6 6,-6 3.31371,0 6,2.68629 6,6 z"
-         sodipodi:ry="6"
-         sodipodi:rx="6"
-         sodipodi:cy="702.11218"
-         sodipodi:cx="553"
-         id="path2352"
-         style="fill:url(#radialGradient11693);fill-opacity:1;stroke:none"
-         sodipodi:type="arc" />
-    </g>
-    <path
-       style="fill:url(#radialGradient2396);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.08866251;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -721.42042,315.20453 c 0.46726,0.7586 0.5859,1.84609 0.6151,2.62663 -3.7e-4,0.013 3.7e-4,0.02 0,0.0332 -0.0292,0.78054 -0.14784,1.86802 -0.6151,2.62662 l 3.4523,-1.29668 c -0.24817,-0.0527 -0.47024,-0.13197 -0.45994,-0.41561 0.0103,-0.28364 0.48251,-0.37616 0.44886,-0.37681 -0.55625,-0.0108 -1.07204,-0.25229 -1.46848,-0.55414 0.39668,-0.30253 0.91135,-0.54335 1.46848,-0.55415 0.0336,-7.4e-4 -0.43856,-0.0932 -0.44886,-0.37681 -0.0103,-0.28364 0.21177,-0.36293 0.45994,-0.41561 l -3.4523,-1.29669 z"
-       id="path3368"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g3393"
-       transform="matrix(0.17732501,0,0,0.17732501,-756.89983,152.4102)"
-       inkscape:export-filename="/media/pros/pyfl/art/bomber.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92">
-      <path
-         id="path2378"
-         d="m 205.20687,930.41705 0,5.46126 c 0.0374,1.5e-4 0.0724,0 0.10983,0 5.06737,0 9.18892,-1.25064 9.18893,-2.76166 -1e-5,-1.51101 -4.12156,-2.69962 -9.18893,-2.6996 -0.0376,0 -0.0724,-1.5e-4 -0.10983,0 z"
-         style="fill:url(#radialGradient3408);fill-opacity:1;stroke:#000000;stroke-width:0.53193963;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <rect
-         y="930.3244"
-         x="202.36975"
-         height="5.6464953"
-         width="2.8131626"
-         id="rect3352"
-         style="fill:#4d4d4d;fill-opacity:1;stroke:#000000;stroke-width:0.35350463;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    </g>
-    <rect
-       y="704.07092"
-       x="333.24451"
-       height="1.2031167"
-       width="0.39304805"
-       id="rect3414"
-       style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.08866251;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       transform="matrix(0,1,-1,0,0,0)" />
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient3784);fill-opacity:1;stroke:#000000;stroke-width:1.15099049;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="path3410"
-       sodipodi:cx="550"
-       sodipodi:cy="787.36218"
-       sodipodi:rx="9"
-       sodipodi:ry="9"
-       d="m 559,787.36218 c 0,4.97057 -4.02944,9 -9,9 -4.97056,0 -9,-4.02943 -9,-9 0,-4.97056 4.02944,-9 9,-9 4.97056,0 9,4.02944 9,9 z"
-       transform="matrix(0.08987775,0,0,0.06602135,-753.48548,281.45828)" />
-    <rect
-       style="fill:url(#radialGradient3780);fill-opacity:1;stroke:#000000;stroke-width:0.08866251;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect3412"
-       width="0.57222748"
-       height="1.1982611"
-       x="-705.48004"
-       y="332.84186" />
-    <rect
-       y="231.9953"
-       x="-1021.9702"
-       height="12.434852"
-       width="2.9090195"
-       id="rect3541"
-       style="fill:url(#radialGradient3543);fill-opacity:1;stroke:#000000;stroke-width:0.0383115;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <g
-       id="0enemy1"
-       transform="matrix(0,0.19027498,-0.19027498,0,-1028.0803,248.02351)"
-       inkscape:label="#g8221">
-      <path
-         id="path3597"
-         d="m 36.81644,152.59334 -38.28094,3.17004 0,2.56111 0,29.5871 0,2.56111 38.28094,3.17005 0,-8.90121 0,-23.247 0,-8.9012 z"
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:1.18102872;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <rect
-         transform="matrix(0,1,-1,0,0,0)"
-         y="-69.594925"
-         x="166.16977"
-         height="60.638252"
-         width="14.185763"
-         id="rect3624"
-         style="fill:url(#radialGradient8241);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <g
-         transform="matrix(0,1,-1,0,463.35157,-229.97867)"
-         id="g3609">
-        <rect
-           transform="matrix(0,1,-1,0,0,0)"
-           y="-423.80975"
-           x="414.49759"
-           height="60.638252"
-           width="14.185763"
-           id="rect3589"
-           style="fill:url(#radialGradient8243);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#radialGradient8245);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect3585"
-           width="14.185763"
-           height="60.638252"
-           x="414.49759"
-           y="-441.76532"
-           transform="matrix(0,1,-1,0,0,0)" />
-        <rect
-           transform="matrix(-0.33750861,-0.94132244,-0.94132244,0.33750861,0,0)"
-           y="-249.08926"
-           x="-526.14789"
-           height="60.638103"
-           width="14.185725"
-           id="rect3581"
-           style="fill:url(#radialGradient8247);fill-opacity:1;stroke:#000000;stroke-width:0.18682455;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#radialGradient8249);fill-opacity:1;stroke:#000000;stroke-width:0.18682466;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect3577"
-           width="14.185733"
-           height="60.638134"
-           x="-254.05077"
-           y="509.79871"
-           transform="matrix(0.33750861,-0.94132244,0.94132244,0.33750861,0,0)" />
-        <g
-           id="g3599">
-          <rect
-             transform="matrix(0.9539456,0.2999797,-0.2999797,0.9539456,0,0)"
-             y="197.62344"
-             x="475.43542"
-             height="60.638252"
-             width="14.185763"
-             id="rect3523"
-             style="fill:url(#radialGradient8251);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             style="fill:url(#radialGradient8253);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect3545"
-             width="14.185763"
-             height="60.638252"
-             x="-293.30667"
-             y="439.36383"
-             transform="matrix(-0.9539456,0.2999797,0.2999797,0.9539456,0,0)" />
-          <rect
-             y="345.0737"
-             x="396.14844"
-             height="60.638252"
-             width="14.185763"
-             id="rect3561"
-             style="fill:url(#radialGradient8255);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             style="fill:url(#radialGradient8257);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect3553"
-             width="14.185763"
-             height="60.638252"
-             x="483.23499"
-             y="222.42607"
-             transform="matrix(0.9539456,0.2999797,-0.2999797,0.9539456,0,0)" />
-          <rect
-             transform="matrix(-0.9539456,0.2999797,0.2999797,0.9539456,0,0)"
-             y="464.16644"
-             x="-285.50723"
-             height="60.638252"
-             width="14.185763"
-             id="rect3555"
-             style="fill:url(#radialGradient8259);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             y="372.41516"
-             x="396.14844"
-             height="60.638252"
-             width="14.185763"
-             id="rect3573"
-             style="fill:url(#radialGradient8261);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             transform="matrix(0.9539456,0.2999797,-0.2999797,0.9539456,0,0)"
-             y="252.95233"
-             x="492.83441"
-             height="60.638252"
-             width="14.185763"
-             id="rect3565"
-             style="fill:url(#radialGradient8263);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             style="fill:url(#radialGradient8267);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect3567"
-             width="14.185763"
-             height="60.638252"
-             x="-275.90793"
-             y="494.69269"
-             transform="matrix(-0.9539456,0.2999797,0.2999797,0.9539456,0,0)" />
-        </g>
-      </g>
-      <rect
-         transform="matrix(-0.2952265,0.95542729,-0.95542729,-0.2952265,0,0)"
-         y="-140.78835"
-         x="192.99144"
-         height="60.638252"
-         width="14.185763"
-         id="rect3640"
-         style="fill:url(#radialGradient8269);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         style="fill:url(#radialGradient8273);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3646"
-         width="14.185763"
-         height="60.638252"
-         x="-137.20743"
-         y="-38.757099"
-         transform="matrix(-0.2952265,-0.95542729,-0.95542729,0.2952265,0,0)" />
-    </g>
-    <image
-       sodipodi:absref="/home/xymus/projects/nit/examples/shoot/art/bio.png"
-       xlink:href="bio.png"
-       width="26.052553"
-       height="26.052553"
-       id="image3718"
-       x="-846.36865"
-       y="189.01437" />
-    <rect
-       inkscape:transform-center-y="-0.14961663"
-       inkscape:transform-center-x="2.3301278"
-       transform="matrix(-0.28180039,-0.95947305,-0.99600114,0.0893405,0,0)"
-       y="787.31116"
-       x="-236.06386"
-       height="4.3452625"
-       width="1.1298193"
-       id="rect2699"
-       style="fill:url(#radialGradient4647);fill-opacity:1;stroke:#000000;stroke-width:0.01411393;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <rect
-       style="fill:url(#radialGradient4643);fill-opacity:1;stroke:#000000;stroke-width:0.01397788;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect2658"
-       width="1.0613496"
-       height="4.5368295"
-       x="497.42203"
-       y="595.8656"
-       transform="matrix(-0.2999797,0.95394559,-0.95394559,-0.2999797,0,0)" />
-    <rect
-       transform="matrix(-0.2999797,0.95394559,-0.95394559,-0.2999797,0,0)"
-       y="595.8656"
-       x="497.42203"
-       height="4.5368295"
-       width="1.0613496"
-       id="rect2664"
-       style="fill:url(#radialGradient4640);fill-opacity:1;stroke:#000000;stroke-width:0.01397788;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <rect
-       style="fill:url(#radialGradient4637);fill-opacity:1;stroke:#000000;stroke-width:0.01411393;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect2680"
-       width="1.1298193"
-       height="4.3452625"
-       x="365.71625"
-       y="617.0484"
-       transform="matrix(-0.28180039,0.95947305,-0.99600114,-0.0893405,0,0)"
-       inkscape:transform-center-x="2.3301298"
-       inkscape:transform-center-y="-0.1496245" />
-    <rect
-       transform="matrix(-0.2999797,-0.95394559,-0.95394559,0.2999797,0,0)"
-       y="773.63458"
-       x="-67.889206"
-       height="4.5368295"
-       width="1.0613496"
-       id="rect2695"
-       style="fill:url(#radialGradient4633);fill-opacity:1;stroke:#000000;stroke-width:0.01397788;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <rect
-       style="fill:url(#radialGradient4629);fill-opacity:1;stroke:#000000;stroke-width:0.01397788;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect2697"
-       width="1.0613496"
-       height="4.5368295"
-       x="-67.889206"
-       y="773.63458"
-       transform="matrix(-0.2999797,-0.95394559,-0.95394559,0.2999797,0,0)"
-       inkscape:transform-center-x="1.6550319"
-       inkscape:transform-center-y="0.65018829" />
-    <path
-       sodipodi:type="arc"
-       style="fill:none;stroke:none"
-       id="path2785"
-       sodipodi:cx="417"
-       sodipodi:cy="260.36218"
-       sodipodi:rx="94"
-       sodipodi:ry="94"
-       d="m 511,260.36218 c 0,51.91477 -42.08523,94 -94,94 -51.91477,0 -94,-42.08523 -94,-94 0,-51.91476 42.08523,-94 94,-94 51.91477,0 94,42.08524 94,94 z"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-1.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       transform="matrix(0.17732501,0,0,0.17732501,-797.18807,218.80068)" />
-    <g
-       id="g10888"
-       transform="matrix(0.20506613,0,0,0.20506613,-1104.2522,276.56869)">
-      <rect
-         style="fill:url(#radialGradient10912);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2789"
-         width="11.175753"
-         height="47.771706"
-         x="254.6692"
-         y="-579.22253"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient10914);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2797"
-         width="11.175754"
-         height="47.771709"
-         x="55.340595"
-         y="-667.50873"
-         transform="matrix(-0.2999797,0.9539456,-0.9539456,-0.2999797,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(-0.2999797,-0.9539456,-0.9539456,0.2999797,0,0)"
-         y="-511.60187"
-         x="-440.44833"
-         height="47.771709"
-         width="11.175754"
-         id="rect2799"
-         style="fill:url(#radialGradient10916);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         y="-608.13434"
-         x="254.52138"
-         height="47.771706"
-         width="11.175753"
-         id="rect2801"
-         style="fill:url(#radialGradient10918);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(0.8860162,-0.4636543,-0.4636543,-0.8860162,0,0)"
-         y="-505.88068"
-         x="367.69363"
-         height="37.529438"
-         width="8.7796688"
-         id="rect2803"
-         style="fill:url(#radialGradient10920);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient10922);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2805"
-         width="11.175754"
-         height="47.771709"
-         x="-432.88586"
-         y="-487.5528"
-         transform="matrix(-0.2999797,-0.9539456,-0.9539456,0.2999797,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(0.976131,-0.2171828,0.2171828,0.976131,0,0)"
-         y="303.62421"
-         x="447.85645"
-         height="47.771736"
-         width="11.175761"
-         id="rect2813"
-         style="fill:url(#radialGradient10924);fill-opacity:1;stroke:#000000;stroke-width:0.14718363;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient10926);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2815"
-         width="11.175753"
-         height="47.771706"
-         x="-206.51364"
-         y="509.39877"
-         transform="matrix(-0.6761513,0.7367628,0.7367628,0.6761513,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)"
-         style="fill:url(#radialGradient10928);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2817"
-         width="11.175752"
-         height="47.771702"
-         x="337.63995"
-         y="436.02026"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient10930);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2819"
-         width="8.7796688"
-         height="37.529438"
-         x="-595.98267"
-         y="-95.398209"
-         transform="matrix(-0.8445445,-0.5354854,-0.5354854,0.8445445,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(-0.6761513,0.7367628,0.7367628,0.6761513,0,0)"
-         y="533.44781"
-         x="-198.95117"
-         height="47.771706"
-         width="11.175753"
-         id="rect2821"
-         style="fill:url(#radialGradient10932);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient10934);fill-opacity:1;stroke:#000000;stroke-width:0.1156273;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2823"
-         width="8.7796659"
-         height="37.529404"
-         x="-617.18152"
-         y="-4.1368237"
-         transform="matrix(-0.916118,-0.4009086,-0.4009086,0.916118,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(0.110862,0.9938358,0.9938358,-0.110862,0,0)"
-         y="490.62018"
-         x="306.06418"
-         height="37.52943"
-         width="8.7796679"
-         id="rect2825"
-         style="fill:url(#radialGradient10936);fill-opacity:1;stroke:#000000;stroke-width:0.11562737;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient10938);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2833"
-         width="11.175753"
-         height="47.771706"
-         x="-589.42731"
-         y="157.98622"
-         transform="matrix(-0.6761513,-0.7367628,0.7367628,-0.6761513,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(0.976131,0.2171828,0.2171828,-0.976131,0,0)"
-         y="-203.69498"
-         x="560.73169"
-         height="47.771736"
-         width="11.175761"
-         id="rect2835"
-         style="fill:url(#radialGradient10940);fill-opacity:1;stroke:#000000;stroke-width:0.14718363;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         y="-14.074265"
-         x="-608.18378"
-         height="47.771702"
-         width="11.175752"
-         id="rect2837"
-         style="fill:url(#radialGradient10942);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(-0.04147169,0.9991397,0.9991397,0.04147169,0,0)"
-         y="533.92865"
-         x="241.3437"
-         height="37.529434"
-         width="8.7796679"
-         id="rect2839"
-         style="fill:url(#radialGradient10944);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient10946);fill-opacity:1;stroke:#000000;stroke-width:0.14718363;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2841"
-         width="11.175761"
-         height="47.771736"
-         x="568.29419"
-         y="-179.64594"
-         transform="matrix(0.976131,0.2171828,0.2171828,-0.976131,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient10948);fill-opacity:1;stroke:#000000;stroke-width:0.11562733;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2843"
-         width="8.779665"
-         height="37.529423"
-         x="272.91327"
-         y="-556.31293"
-         transform="matrix(0.805256,-0.5929273,-0.5929273,-0.805256,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient10950);fill-opacity:1;stroke:#000000;stroke-width:0.14718363;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2845"
-         width="11.175761"
-         height="47.771736"
-         x="455.41907"
-         y="327.67331"
-         transform="matrix(0.976131,-0.2171828,0.2171828,0.976131,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(-0.6761513,-0.7367628,0.7367628,-0.6761513,0,0)"
-         y="182.03529"
-         x="-581.86475"
-         height="47.771706"
-         width="11.175753"
-         id="rect2847"
-         style="fill:url(#radialGradient10952);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(-0.2999797,0.9539456,-0.9539456,-0.2999797,0,0)"
-         y="-643.45966"
-         x="62.903164"
-         height="47.771709"
-         width="11.175754"
-         id="rect2849"
-         style="fill:url(#radialGradient10954);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-    </g>
-    <rect
-       transform="matrix(0.00458966,-0.99998947,0.99998947,0.00458966,0,0)"
-       y="-720.75647"
-       x="-294.16318"
-       height="8.471118"
-       width="1.9817404"
-       id="rect3027"
-       style="fill:url(#radialGradient3029);fill-opacity:1;stroke:#000000;stroke-width:0.02609933;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/fragments/ai.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <g
-       id="g4233"
-       transform="matrix(0,-0.17732501,0.17732501,0,-855.14945,422.88675)"
-       inkscape:transform-center-x="-8.6889273"
-       inkscape:export-filename="/media/pros/pyfl/art/turrets/spotlight-small.png"
-       inkscape:export-xdpi="38.221474"
-       inkscape:export-ydpi="38.221474">
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient4239);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path4235"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(1.0091846,-0.0297211,0.02340402,1.281578,-87.811666,-261.56424)" />
-      <path
-         transform="matrix(0.5365127,-0.02318479,0.01244228,0.9997312,148.48251,11.308672)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path4237"
-         style="fill:url(#radialGradient4241);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-    </g>
-    <g
-       id="g9437"
-       transform="matrix(0.18693288,0,0,0.18693288,-923.57244,106.16546)">
-      <path
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-         transform="matrix(0.6850428,-0.9501968,1.2641576,0.8101672,-1113.0671,484.94396)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path4412"
-         style="fill:url(#radialGradient4416);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-         sodipodi:type="star"
-         style="fill:url(#radialGradient4426);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path4422"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.6850428,0.9501968,1.2641576,-0.8101672,-1111.8824,1082.8266)" />
-      <g
-         transform="translate(-100,-100)"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/evolved-fs-0.png"
-         id="g12018">
-        <path
-           sodipodi:type="star"
-           style="fill:url(#radialGradient5127);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-           id="path4225"
-           sodipodi:sides="3"
-           sodipodi:cx="477"
-           sodipodi:cy="994.36218"
-           sodipodi:r1="61.05735"
-           sodipodi:r2="30.528675"
-           sodipodi:arg1="0.55165498"
-           sodipodi:arg2="1.5988525"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           transform="matrix(0.2059081,-0.8291502,1.0496799,0.2731705,-537.32361,1013.778)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           transform="matrix(0.2059081,-0.8291502,1.0496799,0.2731705,-469.62819,1013.778)"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="false"
-           sodipodi:arg2="1.5988525"
-           sodipodi:arg1="0.55165498"
-           sodipodi:r2="30.528675"
-           sodipodi:r1="61.05735"
-           sodipodi:cy="994.36218"
-           sodipodi:cx="477"
-           sodipodi:sides="3"
-           id="path4285"
-           style="fill:url(#radialGradient5129);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-           sodipodi:type="star"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           sodipodi:type="star"
-           style="fill:url(#radialGradient5131);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-           id="path4295"
-           sodipodi:sides="3"
-           sodipodi:cx="477"
-           sodipodi:cy="994.36218"
-           sodipodi:r1="61.05735"
-           sodipodi:r2="30.528675"
-           sodipodi:arg1="0.55165498"
-           sodipodi:arg2="1.5988525"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           transform="matrix(0.2059081,0.8291502,1.0496799,-0.2731705,-502.79918,755.35159)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4084"
-           d="m 507.06959,834.90833 -0.54956,0.49668 c -9.01334,7.87492 -10.88187,12.36274 -10.91498,34.67474 l -4.83219,0.57428 c 1.3e-4,-24.76536 1.82044,-29.59956 10.89608,-38.21359 l 5.40065,2.46789 z"
-           style="fill:url(#radialGradient8046);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.57073724px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient8043);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.57073724px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 507.06959,932.64422 -0.54956,-0.49668 c -9.01334,-7.87491 -10.88187,-12.36275 -10.91498,-34.67474 l -4.83219,-0.57429 c 1.3e-4,24.76536 1.82044,29.59956 10.89608,38.2136 l 5.40065,-2.46789 z"
-           id="path4009"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3967"
-           d="m 616.62,897.63497 -11.59715,-0.16898 c -18.45089,29.35146 -65.7822,36.92902 -100.42423,-1.42088 l -6.91502,-0.10028 c 36.11256,43.93906 98.11173,34.3374 118.9364,1.69014 z"
-           style="fill:url(#radialGradient8040);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.3883872px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient8037);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.3883872px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 616.62,870.00467 -11.59715,0.16898 c -18.45089,-29.35146 -65.7822,-36.92901 -100.42423,1.42088 l -6.91502,0.10027 c 36.11256,-43.93905 98.11173,-34.33738 118.9364,-1.69013 z"
-           id="path3959"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <image
-           sodipodi:absref="/home/xymus/projects/nit/examples/shoot/art/bio.png"
-           xlink:href="bio.png"
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           clip-path="url(#clipPath3900)"
-           transform="matrix(0.5301872,0.05823698,0.246286,-0.4532941,1005.665,294.85476)"
-           y="-1349.4313"
-           x="-288.89871"
-           id="image3894"
-           height="128.5571"
-           width="244.45108" />
-        <image
-           sodipodi:absref="/home/xymus/projects/nit/examples/shoot/art/bio.png"
-           xlink:href="bio.png"
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           width="124.3883"
-           height="234.41803"
-           id="image3820"
-           x="996.46283"
-           y="-154.57726"
-           transform="matrix(-0.3988876,0.3394408,-0.5283162,-0.07216022,1005.665,539.85269)"
-           clip-path="url(#clipPath3810)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#linearGradient8032);fill-opacity:1;stroke:#000000;stroke-width:0.615605;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 664.8649,898.21984 c -2e-5,-2.52733 -2.33234,-4.57251 -5.19604,-4.57251 -0.16058,0 -0.32543,10e-4 -0.48229,0.0137 l -8.82084,0 0,-0.0137 -84.08582,0 -12.22784,0 0,0.0137 -8.29191,0 c -0.15787,-0.0128 -0.32068,-0.0137 -0.48226,-0.0137 -2.86371,0 -5.1805,2.04519 -5.18051,4.57251 -10e-6,0.006 -2e-5,0.0216 0,0.0274 l 0.0622,0 c 0,10.01092 9.22145,18.13946 20.59753,18.13944 0.64203,0 1.28644,-0.0315 1.91352,-0.0821 l 79.60541,0 c 0.62308,0.05 1.26013,0.0821 1.89794,0.0821 11.3761,0 20.61309,-8.12852 20.61309,-18.13944 l 0.0778,0 c 2e-5,-0.006 -2e-5,-0.0216 0,-0.0274 z"
-           id="path3824"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#linearGradient8029);fill-opacity:1;stroke:#000000;stroke-width:0.615605;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 664.9606,869.39057 c -10e-6,2.52737 -2.33234,4.57254 -5.19605,4.57254 -0.16057,0 -0.32541,-10e-4 -0.48227,-0.0137 l -8.82084,0 0,0.0137 -84.08584,0 -12.22783,0 0,-0.0137 -8.29191,0 c -0.15787,0.0128 -0.32067,0.0137 -0.48228,0.0137 -2.8637,0 -5.18048,-2.04523 -5.18048,-4.57254 -10e-6,-0.006 -2e-5,-0.0216 0,-0.0273 l 0.0622,0 c 0,-10.01096 9.22145,-18.13947 20.59752,-18.13947 0.64202,0 1.28642,0.0315 1.91351,0.0821 l 79.60542,0 c 0.62308,-0.05 1.26012,-0.0821 1.89794,-0.0821 11.3761,0 20.6131,8.12851 20.6131,18.13947 l 0.0778,0 c 2e-5,0.006 -10e-6,0.0215 0,0.0273 z"
-           id="path3896"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <g
-           id="g4381"
-           transform="matrix(0,-0.5968341,-0.6043718,0,1076.0397,1215.6163)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92">
-          <path
-             inkscape:connector-curvature="0"
-             style="fill:url(#radialGradient5145);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.13246572px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-             d="m 629.08771,643.41689 -10.30968,22.17497 8.21651,2.72723 c 38.34485,186.98406 -8.39763,226.23178 -58.45278,251.19732 l -0.46862,16.78545 c 53.8861,-28.9251 105.43886,-72.33093 61.01457,-292.88497 z"
-             id="path4383" />
-          <path
-             inkscape:connector-curvature="0"
-             id="path4385"
-             d="m 618.5625,674.875 c -4.56797,3e-5 -10.86778,-15.62249 -10.59375,-44.78125 l -0.21875,0 c -0.36021,-8.27179 6.12951,-12.71876 10.8125,-12.71875 l 0.875,0 c 4.68301,0 11.17271,4.44696 10.8125,12.71875 l -0.21875,0 c 0.27403,29.15878 -6.02578,44.78125 -10.59375,44.78125 l -0.875,0 z"
-             style="fill:url(#radialGradient5147);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.91257352;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        </g>
-        <path
-           inkscape:connector-curvature="0"
-           id="path3955"
-           d="m 654.69967,873.74418 -14.96084,0.24155 C 596.30041,832.03124 529.76045,821.2 510.15912,876.0167 l -8.92097,0.14332 c 17.80737,-62.80574 104.75306,-49.08126 153.46152,-2.41584 z"
-           style="fill:url(#radialGradient8023);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52937239px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient8020);fill-opacity:1;stroke:#000000;stroke-width:0.68835527;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 669.35603,872.44826 c -2e-5,2.94776 -2.50025,5.33317 -5.57014,5.33316 -0.17212,0 -0.34884,-10e-4 -0.51698,-0.016 l -9.45588,0 0,0.016 -90.13932,0 -13.10814,0 0,-0.016 -8.88886,0 c -0.16923,0.0149 -0.34375,0.016 -0.51698,0.016 -3.06989,0 -5.55344,-2.38541 -5.55345,-5.33316 -10e-6,-0.007 -2e-5,-0.0252 0,-0.0319 l 0.0667,0 c 0,-11.67628 9.88532,-21.15699 22.08039,-21.15699 0.39504,0 0.79134,0.0264 1.18407,0.0479 -10.52085,0.81438 -18.77834,8.58974 -18.77834,18.05929 l -0.0667,0 c -2e-5,0.006 -3e-5,0.0261 0,0.0319 10e-6,2.52733 2.32282,4.56673 5.18654,4.56672 0.16161,0 0.32578,-0.003 0.48364,-0.016 l 8.28849,0 0,0.016 12.22425,0 84.08557,0 0,-0.016 8.82215,0 c 0.15686,0.0126 0.32306,0.016 0.48362,0.016 2.86373,0 5.20324,-2.03939 5.20324,-4.56672 -2e-5,-0.006 4e-5,-0.0262 0,-0.0319 l -0.0834,0 c -1e-5,-9.47087 -8.27053,-17.24679 -18.79502,-18.05929 0.39469,-0.0221 0.78604,-0.0479 1.18406,-0.0479 12.19509,0 22.09707,9.48073 22.09708,21.15699 l 0.0834,0 c 0,0.007 -2e-5,0.0251 0,0.0319 z"
-           id="rect3725"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           sodipodi:type="star"
-           style="fill:url(#radialGradient5153);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           id="path4424"
-           sodipodi:sides="3"
-           sodipodi:cx="477"
-           sodipodi:cy="994.36218"
-           sodipodi:r1="61.05735"
-           sodipodi:r2="30.528675"
-           sodipodi:arg1="0.55165498"
-           sodipodi:arg2="1.5988525"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           transform="matrix(0.3570009,0.5099454,0.9820283,-0.6373576,-579.07121,1223.6957)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient8016);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.36355233px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 583.34447,874.05834 -8.74792,0.19482 c -25.39936,-33.84083 -64.30666,-42.57739 -75.76797,1.63822 l -5.21626,0.1156 c 10.41232,-50.65962 61.25129,-39.58936 89.73215,-1.94864 z"
-           id="path3973"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3822"
-           d="m 669.35603,895.16218 c -2e-5,-2.94776 -2.50025,-5.33318 -5.57014,-5.33318 -0.17212,0 -0.34884,0.001 -0.51698,0.016 l -9.45588,0 0,-0.016 -90.13932,0 -13.10814,0 0,0.016 -8.88886,0 c -0.16923,-0.0149 -0.34375,-0.016 -0.51698,-0.016 -3.06989,0 -5.55344,2.38543 -5.55345,5.33318 -10e-6,0.007 -2e-5,0.0252 0,0.0319 l 0.0667,0 c 0,11.67626 9.88532,21.15699 22.08039,21.15698 0.39504,0 0.79134,-0.0264 1.18407,-0.0479 -10.52085,-0.81435 -18.77834,-8.58972 -18.77834,-18.05926 l -0.0667,0 c -2e-5,-0.006 -3e-5,-0.0261 0,-0.0319 10e-6,-2.52733 2.32282,-4.56673 5.18654,-4.56671 0.16161,0 0.32578,0.003 0.48364,0.016 l 8.28849,0 0,-0.016 12.22425,0 84.08557,0 0,0.016 8.82215,0 c 0.15686,-0.0126 0.32306,-0.016 0.48362,-0.016 2.86373,0 5.20324,2.03938 5.20324,4.56671 -2e-5,0.006 4e-5,0.0262 0,0.0319 l -0.0834,0 c -1e-5,9.47084 -8.27053,17.24678 -18.79502,18.05926 0.39469,0.0222 0.78604,0.0479 1.18406,0.0479 12.19509,0 22.09707,-9.48073 22.09708,-21.15698 l 0.0834,0 c 0,-0.007 -2e-5,-0.0252 0,-0.0319 z"
-           style="fill:url(#radialGradient8013);fill-opacity:1;stroke:#000000;stroke-width:0.68835527;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <g
-           id="g4377"
-           transform="matrix(0,0.5968341,-0.6043718,0,1076.0397,551.93621)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92">
-          <path
-             inkscape:connector-curvature="0"
-             id="path4336"
-             d="m 629.08771,643.41689 -10.30968,22.17497 8.21651,2.72723 c 38.34485,186.98406 -8.39763,226.23178 -58.45278,251.19732 l -0.46862,16.78545 c 53.8861,-28.9251 105.43886,-72.33093 61.01457,-292.88497 z"
-             style="fill:url(#radialGradient5159);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.13246572px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
-          <path
-             inkscape:connector-curvature="0"
-             style="fill:url(#radialGradient5161);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.91257352;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             d="m 618.5625,674.875 c -4.56797,3e-5 -10.86778,-15.62249 -10.59375,-44.78125 l -0.21875,0 c -0.36021,-8.27179 6.12951,-12.71876 10.8125,-12.71875 l 0.875,0 c 4.68301,0 11.17271,4.44696 10.8125,12.71875 l -0.21875,0 c 0.27403,29.15878 -6.02578,44.78125 -10.59375,44.78125 l -0.875,0 z"
-             id="path4328" />
-        </g>
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient8007);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52937198px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 654.69971,893.80846 -14.96086,-0.24156 c -43.43843,41.95437 -109.97842,52.78555 -129.57978,-2.03097 l -8.92096,-0.14332 c 17.80739,62.80555 104.75311,49.08115 153.4616,2.41585 z"
-           id="path3907"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           transform="matrix(0.3570009,-0.5099454,0.9820283,0.6373576,-580.2559,544.0749)"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="false"
-           sodipodi:arg2="1.5988525"
-           sodipodi:arg1="0.55165498"
-           sodipodi:r2="30.528675"
-           sodipodi:r1="61.05735"
-           sodipodi:cy="994.36218"
-           sodipodi:cx="477"
-           sodipodi:sides="3"
-           id="path4414"
-           style="fill:url(#radialGradient5165);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           sodipodi:type="star"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path3971"
-           d="m 583.34584,894.00381 -8.74818,-0.19175 c -25.40015,33.30723 -64.30868,41.90604 -75.77034,-1.61236 l -5.21644,-0.1138 c 10.41267,49.86083 61.25322,38.96512 89.73496,1.91791 z"
-           style="fill:url(#radialGradient8003);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.36068034px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient8000);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52254295px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 534.01234,883.22161 c 0,-6.27112 -15.08402,-14.9527 -43.25984,-14.4703 l 0,30.10782 c 28.17582,0.4824 43.25984,-8.19918 43.25984,-14.47029 l 0,-1.16723 z"
-           id="path3650"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.58718795;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 490.56011,868.76365 -12.91226,2.3232 0,1.8769 0,21.68294 0,1.8769 12.91226,2.32318 0,-6.52325 0,-17.0366 0,-6.52327 z"
-           id="path3674"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient7996);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.54808354;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 482.01773,934.24606 c -4e-5,-2.72632 9.44178,-6.48627 27.06451,-6.32272 l 0,-0.13055 c 4.99924,-0.21498 7.68687,3.6583 7.68686,6.45327 l 0,0.52222 c 0,2.79498 -2.68762,6.66825 -7.68686,6.45327 l 0,-0.13056 c -17.62275,0.16356 -27.06451,-3.59638 -27.06451,-6.32271 l 0,-0.52222 z"
-           id="path4057"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path4088"
-           d="m 482.01773,832.78426 c -4e-5,-2.72632 9.44178,-6.48624 27.06451,-6.32271 l 0,-0.13055 c 4.99924,-0.215 7.68687,3.65829 7.68686,6.45326 l 0,0.52224 c 0,2.79498 -2.68762,6.66826 -7.68686,6.45328 l 0,-0.13057 c -17.62275,0.16355 -27.06451,-3.5964 -27.06451,-6.32271 l 0,-0.52224 z"
-           style="fill:url(#radialGradient7993);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.54808354;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient7990);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.40927538px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 525.77918,883.33018 c -10e-6,-5.17074 -11.23014,-12.33013 -32.19337,-11.93238 l 0,1.88831 c 18.97735,-0.33317 29.13116,5.72536 29.13116,10.10434 l 0,0.82361 c 0,4.37898 -10.1538,10.43751 -29.13116,10.10438 l 0,1.88828 c 20.96324,0.39774 32.19337,-6.74158 32.19337,-11.9123 l 0,-0.96424 z"
-           id="path4477"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <g
-           id="g4358"
-           transform="matrix(0.8461928,0,0,0.8461928,86.275703,150.75632)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92">
-          <path
-             sodipodi:type="star"
-             style="fill:url(#radialGradient7805);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-             id="path4227"
-             sodipodi:sides="3"
-             sodipodi:cx="477"
-             sodipodi:cy="994.36218"
-             sodipodi:r1="61.05735"
-             sodipodi:r2="30.528675"
-             sodipodi:arg1="0.55165498"
-             sodipodi:arg2="1.5988525"
-             inkscape:flatsided="false"
-             inkscape:rounded="0"
-             inkscape:randomized="0"
-             d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-             transform="matrix(0.122253,-0.5229126,0.9660997,0.2574268,-410.49212,865.86929)" />
-          <path
-             transform="matrix(0.122253,-0.5229126,0.9660997,0.2574268,-330.49212,865.86929)"
-             d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-             inkscape:randomized="0"
-             inkscape:rounded="0"
-             inkscape:flatsided="false"
-             sodipodi:arg2="1.5988525"
-             sodipodi:arg1="0.55165498"
-             sodipodi:r2="30.528675"
-             sodipodi:r1="61.05735"
-             sodipodi:cy="994.36218"
-             sodipodi:cx="477"
-             sodipodi:sides="3"
-             id="path4287"
-             style="fill:url(#radialGradient7807);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-             sodipodi:type="star" />
-          <path
-             sodipodi:type="star"
-             style="fill:url(#radialGradient7809);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-             id="path4297"
-             sodipodi:sides="3"
-             sodipodi:cx="477"
-             sodipodi:cy="994.36218"
-             sodipodi:r1="61.05735"
-             sodipodi:r2="30.528675"
-             sodipodi:arg1="0.55165498"
-             sodipodi:arg2="1.5988525"
-             inkscape:flatsided="false"
-             inkscape:rounded="0"
-             inkscape:randomized="0"
-             d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-             transform="matrix(0.122253,0.5229126,0.9660997,-0.2574268,-369.69239,868.5073)" />
-        </g>
-      </g>
-    </g>
-    <g
-       id="0enemy2"
-       inkscape:label="#g8168"
-       transform="matrix(0,0.21105395,-0.21105395,0,-1020.7862,154.97604)">
-      <path
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:1.39453602;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 651.24414,143.88287 -45.2014,3.74312 0,3.02411 0,34.93589 0,3.0241 45.2014,3.74313 0,-10.51038 0,-27.44961 0,-10.51036 z"
-         id="path10984"
-         inkscape:connector-curvature="0" />
-      <rect
-         style="fill:url(#radialGradient3491);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2959"
-         width="11.175753"
-         height="47.771698"
-         x="273.01065"
-         y="-637.71521"
-         transform="matrix(0.18825471,0.98212024,-0.98212024,0.18825471,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(-0.11503139,0.99336186,-0.99336186,-0.11503139,0,0)"
-         y="-748.34967"
-         x="49.146107"
-         height="47.771709"
-         width="11.175754"
-         id="rect2961"
-         style="fill:url(#radialGradient3488);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient3485);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2963"
-         width="11.175754"
-         height="47.771709"
-         x="-481.63617"
-         y="-581.43854"
-         transform="matrix(-0.47420089,-0.88041667,-0.88041667,0.47420089,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         y="-688.16699"
-         x="272.86282"
-         height="47.771698"
-         width="11.175753"
-         id="rect2965"
-         style="fill:url(#radialGradient3482);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0.18825471,0.98212024,-0.98212024,0.18825471,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient3479);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2967"
-         width="11.175754"
-         height="47.771709"
-         x="55.290722"
-         y="-728.80981"
-         transform="matrix(-0.11503139,0.99336186,-0.99336186,-0.11503139,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(-0.47420089,-0.88041667,-0.88041667,0.47420089,0,0)"
-         y="-561.89868"
-         x="-475.49164"
-         height="47.771709"
-         width="11.175754"
-         id="rect2969"
-         style="fill:url(#radialGradient3476);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         y="-666.62701"
-         x="272.86282"
-         height="47.771698"
-         width="11.175753"
-         id="rect2971"
-         style="fill:url(#radialGradient3473);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0.18825471,0.98212024,-0.98212024,0.18825471,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(0.78288931,-0.62216101,-0.62216101,-0.78288931,0,0)"
-         y="-549.25177"
-         x="411.01492"
-         height="37.529438"
-         width="8.7796688"
-         id="rect2973"
-         style="fill:url(#radialGradient3470);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient3463);fill-opacity:1;stroke:#000000;stroke-width:0.14718363;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2977"
-         width="11.175756"
-         height="47.771717"
-         x="494.82489"
-         y="314.69153"
-         transform="matrix(0.91779227,-0.39706089,0.39706089,0.91779227,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(-0.52536281,0.85087832,0.85087832,0.52536281,0,0)"
-         y="545.35571"
-         x="-238.69475"
-         height="47.771706"
-         width="11.175753"
-         id="rect2979"
-         style="fill:url(#radialGradient3460);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(0.7564137,-0.6540935,0.6540935,0.7564137,0,0)"
-         style="fill:url(#radialGradient3457);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2981"
-         width="11.175752"
-         height="47.771702"
-         x="379.1254"
-         y="459.61087"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(0.91779227,-0.39706089,0.39706089,0.91779227,0,0)"
-         y="334.23138"
-         x="500.96948"
-         height="47.771717"
-         width="11.175756"
-         id="rect2983"
-         style="fill:url(#radialGradient3454);fill-opacity:1;stroke:#000000;stroke-width:0.14718363;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient3451);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2985"
-         width="11.175753"
-         height="47.771706"
-         x="-232.55025"
-         y="564.89557"
-         transform="matrix(-0.52536281,0.85087832,0.85087832,0.52536281,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(0.7564137,-0.6540935,0.6540935,0.7564137,0,0)"
-         style="fill:url(#radialGradient3448);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2987"
-         width="11.175752"
-         height="47.771702"
-         x="379.1254"
-         y="481.15082"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient3445);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2989"
-         width="8.7796688"
-         height="37.529438"
-         x="-655.20386"
-         y="-111.23005"
-         transform="matrix(-0.93025187,-0.36692159,-0.36692159,0.93025187,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient3438);fill-opacity:1;stroke:#000000;stroke-width:0.11562733;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2993"
-         width="8.779665"
-         height="37.529419"
-         x="-678.12115"
-         y="-10.784138"
-         transform="matrix(-0.97521102,-0.2212769,-0.2212769,0.97521102,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(0.29597409,0.95519597,0.95519597,-0.29597409,0,0)"
-         y="546.71893"
-         x="330.77722"
-         height="37.529427"
-         width="8.7796669"
-         id="rect2995"
-         style="fill:url(#radialGradient3434);fill-opacity:1;stroke:#000000;stroke-width:0.11562737;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(0.14736261,0.98908254,0.98908254,-0.14736261,0,0)"
-         y="593.13159"
-         x="257.24353"
-         height="37.529434"
-         width="8.7796679"
-         id="rect3009"
-         style="fill:url(#radialGradient3431);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient3428);fill-opacity:1;stroke:#000000;stroke-width:0.11562733;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3013"
-         width="8.7796631"
-         height="37.529415"
-         x="309.1398"
-         y="-605.76422"
-         transform="matrix(0.67923684,-0.73391915,-0.73391915,-0.67923684,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         style="fill:url(#radialGradient3419);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3021"
-         width="11.175754"
-         height="47.771709"
-         x="49.146107"
-         y="-748.34967"
-         transform="matrix(-0.11503139,0.99336186,-0.99336186,-0.11503139,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(-0.47420089,-0.88041667,-0.88041667,0.47420089,0,0)"
-         y="-581.43854"
-         x="-481.63617"
-         height="47.771709"
-         width="11.175754"
-         id="rect3023"
-         style="fill:url(#radialGradient3416);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(0.18825471,-0.98212024,-0.98212024,-0.18825471,0,0)"
-         y="-700.5871"
-         x="-54.990128"
-         height="47.771698"
-         width="11.175753"
-         id="rect3232"
-         style="fill:url(#radialGradient3413);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:url(#radialGradient3410);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3234"
-         width="11.175754"
-         height="47.771709"
-         x="-282.60907"
-         y="-709.93231"
-         transform="matrix(-0.11503139,-0.99336186,-0.99336186,0.11503139,0,0)" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(-0.47420089,0.88041667,-0.88041667,-0.47420089,0,0)"
-         y="-739.80847"
-         x="-187.6015"
-         height="47.771709"
-         width="11.175754"
-         id="rect3236"
-         style="fill:url(#radialGradient3407);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(0.18825471,-0.98212024,-0.98212024,-0.18825471,0,0)"
-         style="fill:url(#radialGradient3403);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3238"
-         width="11.175753"
-         height="47.771698"
-         x="-55.137947"
-         y="-751.03888" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(-0.11503139,-0.99336186,-0.99336186,0.11503139,0,0)"
-         y="-690.39246"
-         x="-276.46445"
-         height="47.771709"
-         width="11.175754"
-         id="rect3240"
-         style="fill:url(#radialGradient3400);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:url(#radialGradient3397);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3242"
-         width="11.175754"
-         height="47.771709"
-         x="-181.45702"
-         y="-720.26862"
-         transform="matrix(-0.47420089,0.88041667,-0.88041667,-0.47420089,0,0)" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(0.18825471,-0.98212024,-0.98212024,-0.18825471,0,0)"
-         style="fill:url(#radialGradient3394);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3244"
-         width="11.175753"
-         height="47.771698"
-         x="-55.137947"
-         y="-729.4989" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:url(#radialGradient3391);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3246"
-         width="8.7796688"
-         height="37.529438"
-         x="618.79938"
-         y="-287.7886"
-         transform="matrix(0.78288931,0.62216101,-0.62216101,0.78288931,0,0)" />
-      <rect
-         style="fill:url(#radialGradient3467);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2975"
-         width="11.175754"
-         height="47.771709"
-         x="-467.9292"
-         y="-537.84967"
-         transform="matrix(-0.47420089,-0.88041667,-0.88041667,0.47420089,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(-0.11503139,0.99336186,-0.99336186,-0.11503139,0,0)"
-         y="-704.76074"
-         x="62.853291"
-         height="47.771709"
-         width="11.175754"
-         id="rect3019"
-         style="fill:url(#radialGradient3422);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         transform="matrix(-0.52536281,0.85087832,0.85087832,0.52536281,0,0)"
-         y="588.94458"
-         x="-224.98778"
-         height="47.771706"
-         width="11.175753"
-         id="rect2991"
-         style="fill:url(#radialGradient3442);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(-0.47420089,0.88041667,-0.88041667,-0.47420089,0,0)"
-         y="-696.2196"
-         x="-173.89453"
-         height="47.771709"
-         width="11.175754"
-         id="rect3248"
-         style="fill:url(#radialGradient3388);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(0.91779227,0.39706089,0.39706089,-0.91779227,0,0)"
-         y="8.1744432"
-         x="627.43213"
-         height="47.771717"
-         width="11.175756"
-         id="rect3250"
-         style="fill:url(#radialGradient3385);fill-opacity:1;stroke:#000000;stroke-width:0.14718363;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:url(#radialGradient3382);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3252"
-         width="11.175753"
-         height="47.771706"
-         x="-522.86438"
-         y="369.89917"
-         transform="matrix(-0.52536281,-0.85087832,0.85087832,-0.52536281,0,0)" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         y="206.98976"
-         x="597.57434"
-         height="47.771702"
-         width="11.175752"
-         id="rect3254"
-         style="fill:url(#radialGradient3379);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0.7564137,0.6540935,0.6540935,-0.7564137,0,0)" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:url(#radialGradient3376);fill-opacity:1;stroke:#000000;stroke-width:0.14718363;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3256"
-         width="11.175756"
-         height="47.771717"
-         x="633.57672"
-         y="27.7143"
-         transform="matrix(0.91779227,0.39706089,0.39706089,-0.91779227,0,0)" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(-0.52536281,-0.85087832,0.85087832,-0.52536281,0,0)"
-         y="389.43903"
-         x="-516.71985"
-         height="47.771706"
-         width="11.175753"
-         id="rect3258"
-         style="fill:url(#radialGradient3373);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         y="228.52974"
-         x="597.57434"
-         height="47.771702"
-         width="11.175752"
-         id="rect3260"
-         style="fill:url(#radialGradient3370);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0.7564137,0.6540935,0.6540935,-0.7564137,0,0)" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(-0.93025187,0.36692159,-0.36692159,-0.93025187,0,0)"
-         y="-421.9082"
-         x="-532.66235"
-         height="37.529438"
-         width="8.7796688"
-         id="rect3262"
-         style="fill:url(#radialGradient3367);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:url(#radialGradient3364);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3264"
-         width="11.175753"
-         height="47.771706"
-         x="-509.15738"
-         y="413.48804"
-         transform="matrix(-0.52536281,-0.85087832,0.85087832,-0.52536281,0,0)" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(-0.97521102,0.2212769,-0.2212769,-0.97521102,0,0)"
-         y="-336.47745"
-         x="-604.22076"
-         height="37.529419"
-         width="8.779665"
-         id="rect3266"
-         style="fill:url(#radialGradient3360);fill-opacity:1;stroke:#000000;stroke-width:0.11562733;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:url(#radialGradient3356);fill-opacity:1;stroke:#000000;stroke-width:0.11562737;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3268"
-         width="8.7796669"
-         height="37.529427"
-         x="11.768408"
-         y="645.56604"
-         transform="matrix(0.29597409,-0.95519597,0.95519597,0.29597409,0,0)" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:url(#radialGradient3352);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3270"
-         width="8.7796679"
-         height="37.529434"
-         x="-73.082436"
-         y="642.34656"
-         transform="matrix(0.14736261,-0.98908254,0.98908254,0.14736261,0,0)" />
-      <rect
-         style="fill:url(#radialGradient3425);fill-opacity:1;stroke:#000000;stroke-width:0.14718363;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3015"
-         width="11.175756"
-         height="47.771717"
-         x="508.53204"
-         y="358.28049"
-         transform="matrix(0.91779227,-0.39706089,0.39706089,0.91779227,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(0.67923684,0.73391915,-0.73391915,0.67923684,0,0)"
-         y="-378.91809"
-         x="554.24823"
-         height="37.529415"
-         width="8.7796631"
-         id="rect3272"
-         style="fill:url(#radialGradient3349);fill-opacity:1;stroke:#000000;stroke-width:0.11562733;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(0.91779227,0.39706089,0.39706089,-0.91779227,0,0)"
-         y="51.763405"
-         x="641.13928"
-         height="47.771717"
-         width="11.175756"
-         id="rect3274"
-         style="fill:url(#radialGradient3346);fill-opacity:1;stroke:#000000;stroke-width:0.14718363;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:url(#radialGradient3342);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3276"
-         width="11.175754"
-         height="47.771709"
-         x="-268.90189"
-         y="-666.34338"
-         transform="matrix(-0.11503139,-0.99336186,-0.99336186,0.11503139,0,0)" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         transform="matrix(-0.11503139,-0.99336186,-0.99336186,0.11503139,0,0)"
-         y="-709.93231"
-         x="-282.60907"
-         height="47.771709"
-         width="11.175754"
-         id="rect3278"
-         style="fill:url(#radialGradient3338);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:url(#radialGradient3335);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect3280"
-         width="11.175754"
-         height="47.771709"
-         x="-187.6015"
-         y="-739.80847"
-         transform="matrix(-0.47420089,0.88041667,-0.88041667,-0.47420089,0,0)" />
-    </g>
-    <g
-       id="g6686"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/evolved-fs-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76"
-       transform="matrix(0.13524438,0,0,0.13524438,-976.14596,181.89863)">
-      <path
-         transform="matrix(0.2484969,0.9785633,1.2387547,-0.329358,-250.79741,691.3493)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path6586"
-         style="fill:url(#radialGradient6590);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient6570);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path6566"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.2484969,-0.9785633,1.2387547,0.329358,-250.79741,1016.1185)" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient6600);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path6596"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.7670879,-0.6564397,0.8442377,-0.9644961,594.9879,2060.6494)" />
-      <path
-         transform="matrix(-1.0033159,-0.1126674,0.1572743,-1.2721063,1335.3679,2094.1438)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path6606"
-         style="fill:url(#radialGradient6610);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient6620);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path6616"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.773397,0.6489945,-0.8129166,-0.991038,2130.4094,1468.5129)" />
-      <path
-         transform="matrix(0.9728431,0.2700245,-0.356606,1.2311873,1005.1574,-519.45079)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path6646"
-         style="fill:url(#radialGradient6650);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         transform="matrix(-0.801368,-0.6141223,0.7910025,-1.0086154,735.47198,2136.9349)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path6656"
-         style="fill:url(#radialGradient6660);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient6630);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path6626"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.9716553,0.2742679,-0.3619761,1.2296192,1066.7786,-520.00387)" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient6640);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path6636"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.801368,-0.6141223,0.7910025,-1.0086154,789.47198,2136.9349)" />
-      <g
-         id="g6545">
-        <g
-           id="g6387"
-           transform="translate(-20,0)">
-          <rect
-             rx="19.02648"
-             y="821.33569"
-             x="1105.6993"
-             height="38.052959"
-             width="144.60124"
-             id="rect4101"
-             style="fill:url(#radialGradient6398);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             style="fill:url(#linearGradient6400);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect6371"
-             width="144.60124"
-             height="38.052959"
-             x="1105.6993"
-             y="821.33569"
-             rx="19.02648" />
-        </g>
-        <path
-           sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="path6422"
-           sodipodi:cx="905"
-           sodipodi:cy="647.36218"
-           sodipodi:rx="18"
-           sodipodi:ry="18"
-           d="m 923,647.36218 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,0 0,0 0,0 l 18,0 z"
-           sodipodi:start="0"
-           sodipodi:end="3.1415927"
-           transform="matrix(1.0099305,0,0,0.4087499,211.0129,559.5742)" />
-        <path
-           transform="matrix(1.0099305,0,0,0.4087499,261.0129,559.5742)"
-           sodipodi:end="3.1415927"
-           sodipodi:start="0"
-           d="m 923,647.36218 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,0 0,0 0,0 l 18,0 z"
-           sodipodi:ry="18"
-           sodipodi:rx="18"
-           sodipodi:cy="647.36218"
-           sodipodi:cx="905"
-           id="path6425"
-           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="path6427"
-           sodipodi:cx="905"
-           sodipodi:cy="647.36218"
-           sodipodi:rx="18"
-           sodipodi:ry="18"
-           d="m 923,647.36218 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,0 0,0 0,0 l 18,0 z"
-           sodipodi:start="0"
-           sodipodi:end="3.1415927"
-           transform="matrix(1.0099305,0,0,-0.4087499,261.0129,1120.6502)" />
-        <path
-           transform="matrix(1.0099305,0,0,-0.4087499,211.0129,1120.6502)"
-           sodipodi:end="3.1415927"
-           sodipodi:start="0"
-           d="m 923,647.36218 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,0 0,0 0,0 l 18,0 z"
-           sodipodi:ry="18"
-           sodipodi:rx="18"
-           sodipodi:cy="647.36218"
-           sodipodi:cx="905"
-           id="path6429"
-           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:type="arc" />
-      </g>
-      <path
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-         id="path6541"
-         d="m 1197.7621,841.58179 -18.9511,-0.23437 c -55.0248,40.7064 -139.3128,51.21541 -164.1425,-1.97055 l -11.3002,-0.13909 c 22.557,60.93738 132.6935,47.62123 194.3938,2.34401 z"
-         style="fill:url(#radialGradient6543);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5868749px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <g
-         transform="translate(0,14)"
-         id="g6362">
-        <image
-           sodipodi:absref="/home/xymus/projects/nit/examples/shoot/art/bio.png"
-           xlink:href="bio.png"
-           transform="translate(140,140)"
-           clip-path="url(#clipPath5383)"
-           y="613.19147"
-           x="809.87134"
-           id="image5359"
-           height="84"
-           width="124" />
-        <path
-           style="fill:url(#radialGradient6367);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.2173394px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 977.625,761.78125 c -0.22988,0.002 -0.42931,0.0528 -0.65625,0.0625 -0.26798,0.004 -0.54347,-0.005 -0.8125,0 l 0,0.0625 c -15.86937,1.27877 -24.34381,20.11365 -24.34375,34 l 0,2.75 c -2e-5,13.88652 8.47403,32.78417 24.34375,34.0625 l 0,0.0625 c 0.49671,0.009 0.97556,-0.006 1.46875,0 0.55482,0.007 1.10588,-0.004 1.65625,0 62.88505,0.43432 96.53125,-19.59081 96.53125,-34.125 l 0,-2.75 c 0,-14.58597 -33.8999,-34.64518 -97.21875,-34.0625 -0.32764,-0.011 -0.64682,-0.066 -0.96875,-0.0625 z m 10.5625,0.9375 c 0.26808,-0.003 0.53964,0.0518 0.8125,0.0625 52.7267,-0.56727 80.9375,18.95606 80.9375,33.15625 l 0,2.6875 c 0,14.14976 -28.0095,33.6416 -80.375,33.21875 -0.45831,-0.004 -0.91295,0.007 -1.375,0 -0.41069,-0.006 -0.80511,0.008 -1.21875,0 l 0,-0.0625 c -13.215,-1.24451 -20.28122,-19.63699 -20.28125,-33.15625 l 0,-2.6875 c -4e-5,-13.51905 7.06657,-31.84884 20.28125,-33.09375 l 0,-0.0625 c 0.22403,-0.005 0.4331,0.004 0.65625,0 0.18899,-0.009 0.37113,-0.0601 0.5625,-0.0625 z"
-           id="path5350"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path5389"
-           d="m 988.1875,762.71875 c -0.19137,0.002 -0.37351,0.0531 -0.5625,0.0625 -0.22315,0.004 -0.43222,-0.005 -0.65625,0 l 0,0.0625 c -13.21468,1.24491 -20.28129,19.5747 -20.28125,33.09375 l 0,2.6875 c 3e-5,13.51926 7.06625,31.91174 20.28125,33.15625 l 0,0.0625 c 0.41364,0.008 0.80806,-0.006 1.21875,0 0.46205,0.007 0.91669,-0.004 1.375,0 52.3655,0.42285 80.375,-19.06899 80.375,-33.21875 l 0,-2.6875 c 0,-14.20019 -28.2108,-33.72352 -80.9375,-33.15625 -0.27286,-0.0107 -0.54442,-0.0658 -0.8125,-0.0625 z"
-           style="fill:url(#radialGradient6369);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.09607363px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path6455"
-         d="m 964.4707,814.53414 -13.06156,0.25562 c 22.20559,27.44493 53.52716,44.74445 80.58796,44.95735 l 0,-5.43195 c -22.1678,0.13075 -47.62927,-14.9895 -67.5264,-39.78102 z"
-         style="fill:url(#radialGradient6466);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.52479142px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-         style="fill:url(#radialGradient6470);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.59757739px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 1163.7569,839.41329 -16.1231,0.28562 c -46.813,-49.60804 -118.5222,-62.41517 -139.6462,2.40147 l -9.61401,0.16947 c 19.19071,-74.26309 112.89091,-58.03491 165.38331,-2.85656 z"
-         id="path6468"
-         inkscape:connector-curvature="0" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient6662);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path6658"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.4306934,-0.3207595,0.621553,-0.7831278,724.51463,1776.1378)" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient6684);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path6588"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.125008,0.5222609,0.9647292,-0.2625163,76.464994,843.64466)" />
-      <path
-         transform="matrix(-0.412771,-0.3435164,0.6628762,-0.7484735,603.50118,1699.7865)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path6598"
-         style="fill:url(#radialGradient6602);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         id="path6506"
-         d="m 1150.1343,765.00109 c -58.3619,-0.31157 -120.9505,28.83282 -137.727,89.06032 l 11.9516,-4.2499 c 22.0554,-64.33787 88.4566,-86.62038 143.64,-73.18571 l 0,-10.56224 c -5.879,-0.65748 -11.8408,-1.03031 -17.8646,-1.06247 z"
-         style="fill:url(#radialGradient6513);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.680812px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path6516"
-         d="m 1003.019,862.17765 c -13.51053,40.02946 -31.91148,59.80785 -45.09135,44.01955 l 0,8.49061 c 15.72394,13.16424 37.50079,-9.77043 51.92595,-52.16552 l -6.8346,-0.34464 z"
-         style="fill:url(#radialGradient6530);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.42288762px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <g
-         transform="translate(-1,0)"
-         id="g5303">
-        <path
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           id="path5249"
-           d="m 980.19,912.71431 c 0,-6.19347 -12.51446,-14.76753 -35.89069,-14.2911 l 0,29.73488 c 23.37623,0.47644 35.89069,-8.09763 35.89069,-14.29101 l 0,-1.15277 z"
-           style="fill:url(#radialGradient5311);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.47300318px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           id="path5251"
-           d="m 944.13973,898.43541 -10.71276,2.29436 0,1.8537 0,21.41436 0,1.8537 10.71276,2.29436 0,-6.44242 0,-16.82564 0,-6.44242 z"
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.53151947;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient6612);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path6608"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.5344324,-0.05258674,0.128443,-0.9915238,1139.8479,1790.7192)" />
-      <path
-         style="fill:url(#radialGradient6525);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5932768px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="M 1001.4297,850.3109 C 986.92282,776.93716 967.16474,740.68348 953.01284,769.62334 l 0,-15.56324 c 16.88361,-24.12997 40.26654,17.90913 55.75556,95.61908 l -7.3387,0.63172 z"
-         id="path6523"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path6532"
-         d="m 1063.7791,832.18091 c -16.1149,0.54281 -33.7189,9.92844 -49.7834,25.86476 l 0,14.28992 c 35.2039,-45.33009 79.931,-49.30774 94.3193,23.72128 l 7.4393,0.22864 c -7.1905,-46.02748 -27.912,-64.91516 -51.9752,-64.1046 z"
-         style="fill:url(#radialGradient6539);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.59452337px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path6492"
-         d="m 1022.0704,869.86287 -14.7075,0.281 c 40.9937,48.19277 109.5273,67.26239 139.3992,24.23091 l -10.7256,0 c -27.3519,33.64469 -78.49,17.53316 -113.9661,-24.51191 z"
-         style="fill:url(#radialGradient6527);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.57655704px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <g
-         id="g5307">
-        <path
-           style="fill:url(#radialGradient5301);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.47300318px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 979.19,757.71431 c 0,-6.19347 -12.51446,-14.76753 -35.89069,-14.2911 l 0,29.73488 c 23.37623,0.47644 35.89069,-8.09763 35.89069,-14.29101 l 0,-1.15277 z"
-           id="path5297"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.53151947;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 943.13973,743.43541 -10.71276,2.29436 0,1.8537 0,21.41436 0,1.8537 10.71276,2.29436 0,-6.44242 0,-16.82564 0,-6.44242 z"
-           id="path5299"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         transform="matrix(0.125008,-0.5222609,0.9647292,0.2625163,76.464994,863.82318)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path6568"
-         style="fill:url(#radialGradient6572);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         transform="matrix(-0.4065829,0.3508186,-0.6295763,-0.7766922,1775.833,1400.9099)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path6618"
-         style="fill:url(#radialGradient6622);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         transform="matrix(0.5187753,0.1387647,-0.2879168,0.9574556,1210.3732,-188.83145)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path6628"
-         style="fill:url(#radialGradient6632);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         transform="matrix(-0.4306934,-0.3207595,0.621553,-0.7831278,778.51463,1776.1378)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path6638"
-         style="fill:url(#radialGradient6642);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient6672);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path6648"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.519376,0.1364991,-0.2837352,0.9587031,1150.196,-188.90824)" />
-      <g
-         transform="matrix(0.5395006,0,0,0.5395006,524.46826,316.98627)"
-         id="g6412">
-        <rect
-           rx="19.02648"
-           y="821.33569"
-           x="1105.6993"
-           height="38.052959"
-           width="144.60124"
-           id="rect6414"
-           style="fill:url(#radialGradient6418);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#linearGradient6420);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6416"
-           width="144.60124"
-           height="38.052959"
-           x="1105.6993"
-           y="821.33569"
-           rx="19.02648" />
-      </g>
-      <g
-         id="g6431"
-         transform="matrix(0.5395006,0,0,0.5395006,489.46826,443.98627)">
-        <rect
-           style="fill:url(#radialGradient6437);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6433"
-           width="144.60124"
-           height="38.052959"
-           x="1105.6993"
-           y="821.33569"
-           rx="19.02648" />
-        <rect
-           rx="19.02648"
-           y="821.33569"
-           x="1105.6993"
-           height="38.052959"
-           width="144.60124"
-           id="rect6435"
-           style="fill:url(#linearGradient6439);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      </g>
-      <g
-         transform="translate(14,-6)"
-         id="g5082">
-        <path
-           style="fill:url(#radialGradient4094);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.61752236px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 987.75,841.46875 c -0.11792,10e-4 -0.22733,0.0264 -0.34375,0.0312 -0.13748,0.002 -0.26823,-0.002 -0.40625,0 l 0,0.0312 c -8.14098,0.64143 -12.50003,10.097 -12.5,17.0625 l 0,1.375 c 0,6.96558 4.35883,16.45253 12.5,17.09375 l 0,0.0312 c 0.25483,0.004 0.49699,-0.003 0.75,0 0.28464,0.003 0.56141,-0.002 0.84375,0 32.26005,0.21787 49.53125,-9.83454 49.53125,-17.125 l 0,-1.375 c 0,-7.31645 -17.3924,-17.38603 -49.875,-17.09375 -0.16809,-0.005 -0.33485,-0.033 -0.5,-0.0312 z"
-           id="path3575"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           id="path3583"
-           d="m 1028.3893,858.72927 c 0,-6.11058 -13.2714,-14.5713 -38.045,-14.10126 l 0,2.23154 c 22.4268,-0.39373 34.4262,6.76604 34.4262,11.94095 l 0,0.97331 c 0,5.17491 -11.9994,12.33468 -34.4262,11.94098 l 0,2.23152 c 24.7736,0.47003 38.045,-7.96696 38.045,-14.07753 l 0,-1.13951 z"
-           style="fill:url(#radialGradient4022);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.48366684px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ai-missile.png"
-       style="fill:url(#radialGradient7722);fill-opacity:1;stroke:#000000;stroke-width:0.00800946;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect7720"
-       width="0.60816383"
-       height="2.5996487"
-       x="-284.84528"
-       y="-711.39545"
-       transform="matrix(0.00458966,-0.99998947,0.99998947,0.00458966,0,0)" />
-    <g
-       id="g7942"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/ai-bomber.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       transform="matrix(0.12538772,-0.12538772,0.12538772,0.12538772,-822.06271,297.03103)">
-      <rect
-         style="fill:url(#radialGradient7928);fill-opacity:1;stroke:#000000;stroke-width:0.04219135;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7926"
-         width="3.2036183"
-         height="13.694139"
-         x="8.1761017"
-         y="-629.70312"
-         transform="matrix(0.7145137,-0.6996215,-0.6996215,-0.7145137,0,0)" />
-      <rect
-         transform="matrix(-0.7145137,-0.6996215,0.6996215,-0.7145137,0,0)"
-         y="-10.188416"
-         x="-624.5257"
-         height="13.694139"
-         width="3.2036183"
-         id="rect7930"
-         style="fill:url(#radialGradient7932);fill-opacity:1;stroke:#000000;stroke-width:0.04219135;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         style="fill:url(#radialGradient7936);fill-opacity:1;stroke:#000000;stroke-width:0.04219135;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7934"
-         width="3.2036183"
-         height="13.694139"
-         x="437.06458"
-         y="-448.68268"
-         transform="matrix(0.9999659,-0.00825725,-0.00825725,-0.9999659,0,0)" />
-      <rect
-         transform="matrix(0.00825725,0.9999659,0.9999659,-0.00825725,0,0)"
-         y="431.81931"
-         x="440.2338"
-         height="13.694139"
-         width="3.2036183"
-         id="rect7938"
-         style="fill:url(#radialGradient7940);fill-opacity:1;stroke:#000000;stroke-width:0.04219135;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         style="fill:url(#radialGradient7924);fill-opacity:1;stroke:#000000;stroke-width:0.04219135;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7904"
-         width="3.2036183"
-         height="13.694139"
-         x="432.26489"
-         y="-448.64304"
-         transform="matrix(0.9999659,-0.00825725,-0.00825725,-0.9999659,0,0)" />
-      <rect
-         transform="matrix(0.9999659,-0.00825725,-0.00825725,-0.9999659,0,0)"
-         y="-448.72559"
-         x="442.26459"
-         height="13.694139"
-         width="3.2036183"
-         id="rect7906"
-         style="fill:url(#radialGradient7921);fill-opacity:1;stroke:#000000;stroke-width:0.04219135;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         transform="matrix(-0.00825725,-0.9999659,-0.9999659,0.00825725,0,0)"
-         y="-445.67236"
-         x="-448.4389"
-         height="13.694139"
-         width="3.2036183"
-         id="rect7861"
-         style="fill:url(#radialGradient7876);fill-opacity:1;stroke:#000000;stroke-width:0.04219135;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         style="fill:url(#radialGradient7902);fill-opacity:1;stroke:#000000;stroke-width:0.04219135;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7900"
-         width="3.2036183"
-         height="13.694139"
-         x="-438.43921"
-         y="-445.75491"
-         transform="matrix(-0.00825725,-0.9999659,-0.9999659,0.00825725,0,0)" />
-    </g>
-    <path
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fighter.png"
-       id="path8053"
-       d="m -720.04374,323.44249 c 0,-0.16117 -0.38766,-0.38428 -1.11177,-0.37189 l 0,0.77377 c 0.72411,0.0124 1.11177,-0.21072 1.11177,-0.37188 l 0,-0.03 z"
-       style="fill:url(#radialGradient8113);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07123978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:connector-curvature="0" />
-    <path
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fighter.png"
-       id="path8055"
-       d="m -721.16045,323.07092 -0.33184,0.0597 0,0.0482 0,0.55725 0,0.0482 0.33184,0.0597 0,-0.16764 0,-0.43784 0,-0.16765 z"
-       style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.07123978;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:connector-curvature="0" />
-    <path
-       id="path8067"
-       d="m -720.43087,322.47533 c 0,0.10558 0.48813,0.25118 1.39921,0.24485 l 0,0.005 c 0.25846,0.008 0.39741,-0.14167 0.3974,-0.2499 l 0,-0.0202 c 0,-0.10824 -0.13894,-0.25823 -0.3974,-0.24991 l 0,0.005 c -0.91108,-0.006 -1.39921,0.13928 -1.39921,0.24486 l 0,0.0202 z"
-       style="fill:url(#radialGradient9167);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07123978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fighter.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:url(#radialGradient9164);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07123978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -720.43087,324.45987 c 0,0.10558 0.48813,0.25118 1.39921,0.24485 l 0,0.005 c 0.25846,0.008 0.39741,-0.14167 0.3974,-0.2499 l 0,-0.0202 c 0,-0.10824 -0.13894,-0.25824 -0.3974,-0.24991 l 0,0.005 c -0.91108,-0.006 -1.39921,0.13927 -1.39921,0.24485 l 0,0.0202 z"
-       id="path8099"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fighter.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:url(#radialGradient8132);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -720.1694,323.44635 c 0,-0.11967 -0.25566,-0.28533 -0.73323,-0.27613 l 0,0.57453 c 0.47757,0.009 0.73323,-0.15646 0.73323,-0.27612 l 0,-0.0223 z"
-       id="path8130"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fighter.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:url(#radialGradient9126);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07123978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -719.99285,327.89497 c 0,-0.16116 -0.38766,-0.38428 -1.11178,-0.37188 l 0,0.77377 c 0.72412,0.0124 1.11178,-0.21072 1.11178,-0.37189 l 0,-0.03 z"
-       id="path9109"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.07123978;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -721.10957,327.52341 -0.33184,0.0597 0,0.0482 0,0.55725 0,0.0482 0.33184,0.0597 0,-0.16765 0,-0.43784 0,-0.16764 z"
-       id="path9111"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       inkscape:connector-curvature="0" />
-    <path
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-       id="path9120"
-       d="m -720.07418,327.89884 c 0,-0.11967 -0.25567,-0.28534 -0.73324,-0.27613 l 0,0.57453 c 0.47757,0.009 0.73324,-0.15646 0.73324,-0.27613 l 0,-0.0223 z"
-       style="fill:url(#radialGradient9132);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:connector-curvature="0" />
-    <path
-       id="path9159"
-       d="m -719.59297,327.92701 c 0,0.17783 0.33698,0.42309 0.96595,0.41242 l 0,0.009 c 0.17842,0.014 0.27434,-0.23862 0.27434,-0.42094 l 0,-0.0341 c 0,-0.18232 -0.0959,-0.43497 -0.27434,-0.42094 l 0,0.009 c -0.62897,-0.0107 -0.96595,0.23459 -0.96595,0.41243 l 0,0.0341 z"
-       style="fill:url(#radialGradient9161);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.07123978;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g9182"
-       transform="matrix(0.13305124,0,0,0.10177111,-741.28622,236.38498)"
-       style="stroke-width:0.61221057;stroke-miterlimit:4;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92">
-      <path
-         style="fill:url(#radialGradient9176);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.61221057;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 151.61195,913.4212 c -1e-5,1.03739 4.79638,2.46811 13.74862,2.40587 l 0,0.0497 c 2.53957,0.0818 3.90489,-1.39202 3.90487,-2.45554 l 0,-0.19872 c 0,-1.06353 -1.3653,-2.53736 -3.90487,-2.45555 l 0,0.0497 c -8.95225,-0.0622 -13.74862,1.36848 -13.74862,2.40588 l 0,0.19872 z"
-         id="path9174"
-         inkscape:connector-curvature="0" />
-      <path
-         id="path9178"
-         d="m 151.61195,885.4212 c -1e-5,1.03739 4.79638,2.46811 13.74862,2.40587 l 0,0.0497 c 2.53957,0.0818 3.90489,-1.39202 3.90487,-2.45554 l 0,-0.19872 c 0,-1.06353 -1.3653,-2.53736 -3.90487,-2.45555 l 0,0.0497 c -8.95225,-0.0622 -13.74862,1.36848 -13.74862,2.40588 l 0,0.19872 z"
-         style="fill:url(#radialGradient9180);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.61221057;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </g>
-    <path
-       style="fill:#864403;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.02589739px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m -711.23427,309.39282 c -0.56044,0 -0.72917,0.29539 -2.98224,0.29539 l -7.4e-4,10e-4 7.4e-4,7.4e-4 c 2.25307,0 2.4218,0.29539 2.98224,0.29539 0.56045,0 0.73392,-0.24117 0.89913,-0.24117 0.1652,0 0.13306,0.12221 0.45806,0.12221 0.325,0 0.42569,-0.17643 0.65876,-0.17643 l 7.4e-4,-7.4e-4 -7.4e-4,-10e-4 c -0.23307,0 -0.33376,-0.17724 -0.65876,-0.17724 -0.325,0 -0.29286,0.12302 -0.45806,0.12302 -0.16521,0 -0.33868,-0.24117 -0.89913,-0.24117 z"
-       id="path3264"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/extra-fighter.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g10337"
-       transform="translate(-26.015425,31.670952)">
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient10445);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path6629"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.03344032,-0.21902827,0.28060445,0.04510512,-1029.8111,363.10249)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         transform="matrix(0.03344032,0.21902827,0.28060445,-0.04510512,-1029.8111,252.29899)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path6631"
-         style="fill:url(#radialGradient10447);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <g
-         id="g10283">
-        <rect
-           style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.15081917;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6249"
-           width="6.3699689"
-           height="18.237036"
-           x="304.63037"
-           y="735.16821"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <g
-           id="g9113"
-           style="fill:url(#radialGradient10451);fill-opacity:1;stroke-width:1.69067967;stroke-miterlimit:4;stroke-dasharray:none"
-           transform="matrix(0,0.08039183,-0.09898708,0,-712.57503,268.86549)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76">
-          <path
-             style="fill:url(#radialGradient10449);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.69067967;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             d="m 474.60693,154.5476 c -33.83284,45.75576 -52.60804,83.62054 -52.71383,167.12197 28.49925,0.20677 25.06101,-8.3184 52.56029,-8.1189 l 0.15354,-159.00307 z"
-             id="path13026"
-             inkscape:connector-curvature="0" />
-        </g>
-        <g
-           id="g14986"
-           style="fill:url(#radialGradient10455);fill-opacity:1;stroke-width:1.69067967;stroke-miterlimit:4;stroke-dasharray:none"
-           transform="matrix(0,-0.08039183,-0.09898708,0,-712.59995,346.78529)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76">
-          <path
-             style="fill:url(#radialGradient10453);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.69067967;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             d="m 474.60693,154.5476 c -33.83284,45.75576 -52.60804,83.62054 -52.71383,167.12197 28.49925,0.20677 25.06101,-8.3184 52.56029,-8.1189 l 0.15354,-159.00307 z"
-             id="path14988"
-             inkscape:connector-curvature="0" />
-        </g>
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           clip-path="url(#clipPath6598)"
-           y="621.36218"
-           x="-209"
-           height="65"
-           width="104"
-           id="rect6415"
-           style="fill:url(#linearGradient10457);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0.17732501,0,0,0.17732501,-708.39958,191.91751)" />
-        <rect
-           style="fill:url(#linearGradient10459);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6586"
-           width="104"
-           height="65"
-           x="-209"
-           y="621.36218"
-           clip-path="url(#clipPath6588)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           transform="matrix(0.17732501,0,0,0.17732501,-708.39958,191.91751)" />
-        <path
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           sodipodi:type="star"
-           style="fill:url(#radialGradient10461);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           id="path6633"
-           sodipodi:sides="3"
-           sodipodi:cx="477"
-           sodipodi:cy="994.36218"
-           sodipodi:r1="61.05735"
-           sodipodi:r2="30.528675"
-           sodipodi:arg1="0.55165498"
-           sodipodi:arg2="1.5988525"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           transform="matrix(0.01616643,-0.11673098,0.2186634,0.03644082,-960.91363,322.77031)" />
-        <path
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           transform="matrix(0.01616643,0.11673098,0.2186634,-0.03644082,-960.91363,292.63118)"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="false"
-           sodipodi:arg2="1.5988525"
-           sodipodi:arg1="0.55165498"
-           sodipodi:r2="30.528675"
-           sodipodi:r1="61.05735"
-           sodipodi:cy="994.36218"
-           sodipodi:cx="477"
-           sodipodi:sides="3"
-           id="path6635"
-           style="fill:url(#radialGradient10463);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           sodipodi:type="star" />
-        <path
-           style="fill:url(#radialGradient10465);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.16724774;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -749.38673,307.80493 c 0.13546,-3.24478 0.41403,-7.75293 3.43509,-8.68615 -6.77504,-0.059 -4.74026,5.31587 -13.32683,5.35718 4.42865,-0.0163 7.34069,1.66213 7.36155,3.32699 l 2.53019,0.002 z"
-           id="path6255"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:url(#radialGradient10467);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.16724774;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -749.38673,307.92231 c 0.13546,3.24479 0.41403,7.75293 3.43509,8.68616 -6.77504,0.059 -4.74026,-5.31587 -13.32683,-5.35718 4.42865,0.0163 7.34069,-1.66213 7.36155,-3.32699 l 2.53019,-0.002 z"
-           id="path6257"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           inkscape:connector-curvature="0" />
-        <rect
-           style="fill:url(#linearGradient10469);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6405"
-           width="89"
-           height="107"
-           x="-93"
-           y="600.36218"
-           clip-path="url(#clipPath6609)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           transform="matrix(0.17732501,0,0,0.17732501,-743.86459,191.91751)" />
-        <path
-           style="fill:url(#radialGradient10471);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.17732501;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -748.15511,310.53816 c -1.01317,0 -4.66733,-1.89742 -4.66733,-2.63957 0,-0.7072 3.65416,-2.7095 4.66733,-2.7095 1.01318,0 1.83547,1.19819 1.83547,2.67453 0,1.47635 -0.82229,2.67454 -1.83547,2.67454 z"
-           id="path6259"
-           sodipodi:nodetypes="csssc"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           inkscape:connector-curvature="0" />
-        <rect
-           style="fill:url(#linearGradient10473);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6473"
-           width="104"
-           height="37"
-           x="-329"
-           y="635.36218"
-           clip-path="url(#clipPath6557)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           transform="matrix(0.17732501,0,0,0.17732501,-701.30659,191.91751)" />
-        <path
-           style="fill:url(#radialGradient10475);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.17732501;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -747.28107,309.7866 c -0.25187,0 0.0332,-0.7994 0.0332,-1.87054 0,-1.07113 -0.28504,-2.01038 -0.0332,-2.01038 0.25186,0 0.701,0.90429 0.701,1.97542 0,1.07114 -0.44914,1.9055 -0.701,1.9055 z"
-           id="path6261"
-           sodipodi:nodetypes="csssc"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <g
-       id="g10262"
-       transform="translate(-26.015425,31.670952)">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         transform="matrix(0.03344032,-0.21902827,0.28060445,0.04510512,-1033.003,331.18399)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path4667"
-         style="fill:url(#radialGradient10413);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         sodipodi:type="star"
-         style="fill:url(#radialGradient10415);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path5230"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.03344032,0.21902827,0.28060445,-0.04510512,-1033.003,220.38048)" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         y="728.2583"
-         x="272.77612"
-         height="28.969521"
-         width="5.9999537"
-         id="rect2224"
-         style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.17732501;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <g
-         transform="matrix(0.17732501,0,0,0.17732501,-764.07964,187.12973)"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         id="g6345">
-        <rect
-           style="fill:url(#radialGradient10417);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5135"
-           width="38.394318"
-           height="15.302893"
-           x="480.71194"
-           y="-178.26355"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           y="-153.80783"
-           x="480.71194"
-           height="15.302893"
-           width="38.394318"
-           id="rect6124"
-           style="fill:url(#radialGradient10419);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           style="fill:url(#radialGradient10421);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6128"
-           width="38.394318"
-           height="15.302893"
-           x="480.71194"
-           y="-129.35217"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           y="-104.8965"
-           x="480.71194"
-           height="15.302893"
-           width="38.394318"
-           id="rect6132"
-           style="fill:url(#radialGradient10423);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-      </g>
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         sodipodi:type="star"
-         style="fill:url(#radialGradient10425);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path4669"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.01616643,-0.11673098,0.2186634,0.03644082,-964.10547,290.85181)" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         transform="matrix(0.01616643,0.11673098,0.2186634,-0.03644082,-964.10547,260.71267)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path5232"
-         style="fill:url(#radialGradient10427);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <g
-         transform="matrix(0.17732501,0,0,0.17732501,-764.07964,187.12973)"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         id="g5316">
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient10429);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 187.54632,480.68831 c 0.14445,-2.59987 1.90726,-6.0848 6.48467,-11.49668 -7.12041,8.70484 22.37847,17.40967 48.82574,17.40967 -29.82955,1.53545 -24.67722,10.11904 -22.21951,12.87113 l 0.85826,0 c 0,0 -0.20926,0.1968 -0.44504,0.42951 0.24674,0.24486 0.44504,0.44382 0.44504,0.44382 l -0.85826,0 c -2.45771,2.75209 -7.61004,11.33568 22.21951,12.87114 -26.44727,0 -55.94615,8.70483 -48.82574,17.40966 -16.13272,-19.07377 2.71501,-14.29976 4.03703,-30.72462 -0.95392,-11.7508 -10.88617,-12.65317 -10.5217,-19.21363 z"
-           id="path2186"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient10431);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 83.15625,447.65625 c -40.509049,-0.35289 -28.34704,31.78423 -79.6875,32.03125 26.47962,-0.0975 43.87526,9.9518 44,19.90625 l 15.125,0 c 0.809919,-19.40108 2.4991,-46.35763 20.5625,-51.9375 z m -20.5625,52.625 -15.125,0.0312 c -0.12474,9.95447 -17.52038,19.97251 -44,19.875 51.34046,0.24703 39.178451,32.38416 79.6875,32.03125 -18.0634,-5.57987 -19.752581,-32.53643 -20.5625,-51.9375 z"
-           id="path15008" />
-      </g>
-      <rect
-         transform="matrix(0.17732501,0,0,0.17732501,-764.07964,187.12973)"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         clip-path="url(#clipPath6331)"
-         style="fill:url(#linearGradient10433);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6321"
-         width="106"
-         height="77"
-         x="183"
-         y="461.36218" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         transform="matrix(0.17732501,0,0,0.17732501,-728.61464,187.12973)"
-         y="477.36218"
-         x="-117"
-         height="45"
-         width="106"
-         id="rect6337"
-         style="fill:url(#linearGradient10435);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         clip-path="url(#clipPath6373)" />
-      <rect
-         transform="matrix(0.17732501,0,0,0.17732501,-764.07964,187.12973)"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         clip-path="url(#clipPath6325)"
-         y="442.36218"
-         x="-5"
-         height="115"
-         width="99"
-         id="rect5326"
-         style="fill:url(#linearGradient10437);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         sodipodi:nodetypes="csssc"
-         id="path17941"
-         d="m -751.396,278.45066 c -1.01318,0 -4.66733,-1.89742 -4.66733,-2.63958 0,-0.7072 3.65415,-2.7095 4.66733,-2.7095 1.01318,0 1.83547,1.19819 1.83547,2.67454 0,1.47634 -0.82229,2.67454 -1.83547,2.67454 z"
-         style="fill:url(#radialGradient10439);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.17732501;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         transform="matrix(0.17732501,0,0,0.17732501,-746.34714,187.12973)"
-         style="fill:url(#linearGradient10441);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6393"
-         width="43"
-         height="37"
-         x="-59"
-         y="481.36218"
-         clip-path="url(#clipPath6409)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         sodipodi:nodetypes="csssc"
-         id="path18921"
-         d="m -750.52197,277.71658 c -0.25186,0 0.0332,-0.79941 0.0332,-1.87054 0,-1.07113 -0.28505,-2.01038 -0.0332,-2.01038 0.25187,0 0.70101,0.90428 0.70101,1.97542 0,1.07113 -0.44914,1.9055 -0.70101,1.9055 z"
-         style="fill:url(#radialGradient10443);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.17732501;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    </g>
-    <g
-       id="g10300"
-       transform="translate(-26.015425,31.670952)">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         transform="matrix(0.03344032,-0.21902827,0.28060445,0.04510512,-1029.8111,398.5675)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path7479"
-         style="fill:url(#radialGradient10357);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         sodipodi:type="star"
-         style="fill:url(#radialGradient10359);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path7481"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.03344032,0.21902827,0.28060445,-0.04510512,-1029.8111,287.76399)" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         y="733.3338"
-         x="340.88422"
-         height="24.998346"
-         width="4.7557573"
-         id="rect6277"
-         style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.17732501;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         style="fill:url(#radialGradient10361);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17732501;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -736.56027,339.85376 c 0.0256,-0.46102 0.3382,-1.07899 1.14989,-2.03865 -1.26262,1.54359 3.96827,3.08717 8.65803,3.08717 -5.28953,0.27228 -4.37589,1.79436 -3.94008,2.28237 l 0.15219,0 c 0,0 -0.0371,0.0349 -0.0789,0.0762 0.0438,0.0434 0.0789,0.0787 0.0789,0.0787 l -0.15219,0 c -0.43581,0.48801 -1.34945,2.0101 3.94008,2.28237 -4.68976,0 -9.92065,1.54358 -8.65803,3.08717 -2.86073,-3.38225 0.48144,-2.53571 0.71586,-5.44825 -0.16914,-2.08371 -1.93038,-2.24372 -1.86575,-3.40705 z"
-         id="path6424" />
-      <rect
-         transform="matrix(0.17732501,0,0,0.17732501,-725.06814,188.56278)"
-         style="fill:url(#linearGradient10363);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7067"
-         width="79"
-         height="71"
-         x="-81"
-         y="836.36218"
-         clip-path="url(#clipPath7272)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <g
-         transform="matrix(0.17732501,0,0,0.17732501,-764.07964,188.56278)"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         id="g7463">
-        <path
-           inkscape:connector-curvature="0"
-           id="path6573"
-           d="m 212.56935,876.28056 c -43.48268,26.43881 -79.46639,41.11076 -158.819586,41.19343 -0.196498,-22.27085 7.905153,-19.58402 7.715564,-41.07344 l 151.104022,-0.11999 z"
-           style="fill:url(#radialGradient10365);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient10367);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.99999994;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 212.56935,868.44374 c -43.48268,-26.43881 -79.46639,-41.11076 -158.819586,-41.19343 -0.196498,22.27085 7.905153,19.58402 7.715564,41.07344 l 151.104022,0.11999 z"
-           id="path6511" />
-      </g>
-      <g
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         transform="matrix(0.17732501,0,0,0.17732501,-687.47523,188.56278)"
-         id="g7359">
-        <rect
-           style="fill:url(#linearGradient10369);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect7244"
-           width="169"
-           height="103"
-           x="-384"
-           y="820.36218"
-           clip-path="url(#clipPath7246)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-           clip-path="url(#clipPath7256)"
-           y="820.36218"
-           x="-384"
-           height="103"
-           width="169"
-           id="rect7071"
-           style="fill:url(#linearGradient10371);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      </g>
-      <g
-         transform="matrix(0.17732501,0,0,0.17732501,-764.07964,188.56278)"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         id="g7459">
-        <path
-           inkscape:connector-curvature="0"
-           id="path6577"
-           d="m 200.42598,894.06252 c -24.77802,18.86792 -45.35408,29.43479 -91.04838,30.13746 -0.33322,-15.59426 7.8785,-15.60983 7.92965,-44.26867 l 83.11873,14.13121 z"
-           style="fill:url(#radialGradient10373);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:nodetypes="cccc" />
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="cccc"
-           style="fill:url(#radialGradient10375);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 200.42598,850.6617 c -24.77802,-18.86792 -45.35408,-29.43479 -91.04838,-30.13746 -0.33322,15.59426 7.8785,15.60983 7.92965,44.26867 l 83.11873,-14.13121 z"
-           id="path6515" />
-      </g>
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         sodipodi:type="star"
-         style="fill:url(#radialGradient10377);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path7483"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.01616643,-0.11673098,0.2186634,0.03644082,-960.91363,358.23531)" />
-      <g
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         transform="matrix(0.17732501,0,0,0.17732501,-612.99873,188.56278)"
-         id="g7351">
-        <rect
-           style="fill:url(#linearGradient10379);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect7188"
-           width="105"
-           height="117"
-           x="-750"
-           y="813.36218"
-           clip-path="url(#clipPath7190)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-           clip-path="url(#clipPath7208)"
-           y="813.36218"
-           x="-750"
-           height="117"
-           width="105"
-           id="rect7087"
-           style="fill:url(#linearGradient10381);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      </g>
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         transform="matrix(0.01616643,0.11673098,0.2186634,-0.03644082,-960.91363,328.09618)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path7485"
-         style="fill:url(#radialGradient10383);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <g
-         transform="matrix(0.17732501,0,0,0.17732501,-764.07964,188.56278)"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         id="g7363">
-        <g
-           transform="matrix(0,-0.40428,-0.40428,0,229.65459,1071.5775)"
-           style="fill:url(#radialGradient10387);fill-opacity:1;stroke-width:2.47353315;stroke-miterlimit:4;stroke-dasharray:none"
-           id="g6579">
-          <path
-             inkscape:connector-curvature="0"
-             id="path6581"
-             d="m 474.60693,154.5476 c -33.83284,45.75576 -52.60804,83.62054 -52.71383,167.12197 28.49925,0.20677 25.06101,-8.3184 52.56029,-8.1189 l 0.15354,-159.00307 z"
-             style="fill:url(#radialGradient10385);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.47353315;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        </g>
-        <g
-           id="g6542"
-           style="fill:url(#radialGradient10391);fill-opacity:1;stroke-width:2.47353315;stroke-miterlimit:4;stroke-dasharray:none"
-           transform="matrix(0,0.40428,-0.40428,0,229.65459,673.14682)">
-          <path
-             inkscape:connector-curvature="0"
-             style="fill:url(#radialGradient10389);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:2.47353315;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             d="m 474.60693,154.5476 c -33.83284,45.75576 -52.60804,83.62054 -52.71383,167.12197 28.49925,0.20677 25.06101,-8.3184 52.56029,-8.1189 l 0.15354,-159.00307 z"
-             id="path6544" />
-        </g>
-      </g>
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         id="path6412"
-         d="m -749.82854,339.85376 c -0.0256,-0.46102 -0.3382,-1.07899 -1.1499,-2.03865 1.26263,1.54359 -3.96826,3.08717 -8.65802,3.08717 5.28953,0.27228 4.37589,1.79436 3.94008,2.28237 l -0.15219,0 c 0,0 0.0371,0.0349 0.0789,0.0762 -0.0438,0.0434 -0.0789,0.0787 -0.0789,0.0787 l 0.15219,0 c 0.43581,0.48801 1.34945,2.0101 -3.94008,2.28237 4.68976,0 9.92065,1.54358 8.65802,3.08717 2.86074,-3.38225 -0.48143,-2.53571 -0.71586,-5.44825 0.16916,-2.08371 1.93039,-2.24372 1.86576,-3.40705 z"
-         style="fill:url(#radialGradient10393);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17732501;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         id="path6289"
-         d="m -749.6695,343.21943 c 0.14362,3.44029 0.43898,8.22007 3.64207,9.20952 -7.18326,0.0626 -5.02588,-5.63617 -14.12983,-5.67997 4.6955,0.0173 7.783,-1.76227 7.80512,-3.52745 l 2.68264,-0.002 z"
-         style="fill:url(#radialGradient10395);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17732501;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         transform="matrix(0.17732501,0,0,0.17732501,-668.32413,188.56278)"
-         style="fill:url(#linearGradient10397);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7079"
-         width="69"
-         height="73"
-         x="-522"
-         y="835.36218"
-         clip-path="url(#clipPath7232)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         id="path6287"
-         d="m -749.6695,343.09497 c 0.14362,-3.44029 0.43898,-8.22007 3.64207,-9.20952 -7.18326,-0.0626 -5.02588,5.63617 -14.12983,5.67997 4.6955,-0.0173 7.783,1.76227 7.80512,3.52745 l 2.68264,0.002 z"
-         style="fill:url(#radialGradient10399);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17732501;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         transform="matrix(0.17732501,0,0,0.17732501,-725.06814,188.56278)"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         clip-path="url(#clipPath7266)"
-         y="814.36218"
-         x="-205"
-         height="115"
-         width="99"
-         id="rect6903"
-         style="fill:url(#linearGradient10401);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         sodipodi:nodetypes="csssc"
-         id="path6291"
-         d="m -748.088,345.93662 c -1.01318,0 -4.66733,-1.89741 -4.66733,-2.63957 0,-0.7072 3.65415,-2.70951 4.66733,-2.70951 1.01318,0 1.83547,1.1982 1.83547,2.67454 0,1.47635 -0.82229,2.67454 -1.83547,2.67454 z"
-         style="fill:url(#radialGradient10403);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.17732501;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         transform="matrix(0.17732501,0,0,0.17732501,-675.41713,188.56278)"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         clip-path="url(#clipPath7238)"
-         y="848.36218"
-         x="-444"
-         height="47"
-         width="49"
-         id="rect7075"
-         style="fill:url(#linearGradient10405);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         sodipodi:nodetypes="csssc"
-         id="path6293"
-         d="m -747.21397,345.20255 c -0.25187,0 0.0332,-0.79941 0.0332,-1.87054 0,-1.07114 -0.28504,-2.01039 -0.0332,-2.01039 0.25187,0 0.70101,0.90429 0.70101,1.97543 0,1.07113 -0.44914,1.9055 -0.70101,1.9055 z"
-         style="fill:url(#radialGradient10407);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.17732501;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <g
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-2.png"
-         transform="matrix(0.17732501,0,0,0.17732501,-638.17888,188.56278)"
-         id="g7355">
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-           clip-path="url(#clipPath7220)"
-           y="835.36218"
-           x="-625"
-           height="73"
-           width="87"
-           id="rect7218"
-           style="fill:url(#linearGradient10409);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#linearGradient10411);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect7083"
-           width="87"
-           height="73"
-           x="-625"
-           y="835.36218"
-           clip-path="url(#clipPath7226)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-      </g>
-    </g>
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient4472);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="path3495"
-       sodipodi:cx="455.29999"
-       sodipodi:cy="513.36218"
-       sodipodi:rx="0.89999998"
-       sodipodi:ry="2.8"
-       d="m 456.19999,513.36218 c 0,1.5464 -0.40295,2.8 -0.9,2.8 -0.49706,0 -0.9,-1.2536 -0.9,-2.8 0,-1.54639 0.40294,-2.8 0.9,-2.8 0.49705,0 0.9,1.25361 0.9,2.8 z"
-       transform="matrix(0.17732501,0,0,0.11399466,-790.32559,251.16888)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/extra-fighter.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <path
-       style="fill:#aa4400;fill-rule:evenodd;stroke:#000000;stroke-width:0.17732501;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -667.5906,292.1273 c 0.8207,1.12845 1.71098,1.85392 -5.08665,1.53881 -1.73446,-0.0804 -0.75872,-0.26502 -1.95558,-0.29921 -0.64922,0 -0.85172,0.43253 -0.91902,0.71598 0.0684,0.28357 0.27302,0.71597 0.91902,0.71597 1.19686,-0.0342 0.22112,-0.22949 1.95558,-0.3099 6.79763,-0.3151 5.90735,0.41036 5.08665,1.53882 1.43623,-1.50462 2.39371,-1.22892 2.39372,-1.22892 0,0 0.29345,0.23381 0.34196,-0.48088 0.005,-0.0958 0.0105,-0.167 0.0107,-0.24578 -3.5e-4,-0.076 -0.006,-0.14343 -0.0107,-0.2351 -0.0491,-0.71138 -0.34196,-0.47019 -0.34196,-0.47019 -1e-5,0 -0.95749,0.26502 -2.39372,-1.2396 z"
-       id="path3502"
-       inkscape:export-filename="/media/pros/pyfl/art/turrets/dragon.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76"
-       inkscape:connector-curvature="0" />
-    <path
-       transform="matrix(0.34195945,0,0,0.42744934,-821.36549,74.573326)"
-       d="m 456.19999,513.36218 c 0,1.5464 -0.40295,2.8 -0.9,2.8 -0.49706,0 -0.9,-1.2536 -0.9,-2.8 0,-1.54639 0.40294,-2.8 0.9,-2.8 0.49705,0 0.9,1.25361 0.9,2.8 z"
-       sodipodi:ry="2.8"
-       sodipodi:rx="0.89999998"
-       sodipodi:cy="513.36218"
-       sodipodi:cx="455.29999"
-       id="path3511"
-       style="fill:url(#radialGradient3514);fill-opacity:1;stroke:none"
-       sodipodi:type="arc"
-       inkscape:export-filename="/media/pros/pyfl/art/turrets/dragon.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <g
-       id="g6797"
-       transform="matrix(0.12276347,0,0,0.12276347,-717.63265,222.17849)"
-       inkscape:export-filename="/media/pros/pyfl/art/fire-ball.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76">
-      <path
-         inkscape:transform-center-y="2.4748911"
-         inkscape:transform-center-x="1.8"
-         d="m 450,590.16217 c 3.66758,0.57306 1.83245,4.39856 -0.76179,4.87546 -2.00622,0.36881 -4.02067,-0.67259 -5.17774,-2.2905 M 450,590.16217 c 0.82527,0.12895 -0.1422,1.8341 -0.3158,2.02113 -1.41433,1.52376 -3.88863,1.34917 -5.62373,0.56383"
-         style="fill:#ffba00;fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5987)"
-         id="path3520"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:transform-center-y="2.4748911"
-         id="path5421"
-         style="fill:#ffba00;fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5983)"
-         d="m 450,590.16217 c 3.66758,0.57306 1.83245,4.39856 -0.76179,4.87546 -2.00622,0.36881 -4.02067,-0.67259 -5.17774,-2.2905 M 450,590.16217 c 0.82527,0.12895 -0.1422,1.8341 -0.3158,2.02113 -1.41433,1.52376 -3.88863,1.34917 -5.62373,0.56383"
-         inkscape:transform-center-x="1.8748908"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:transform-center-x="-2.2338495"
-         d="m 449.95639,590.10214 c 1.67835,-3.31099 4.74953,-0.38353 4.40143,2.23111 -0.2692,2.02199 -1.88213,3.61604 -3.77841,4.21652 m -0.62302,-6.44763 c 0.37766,-0.74503 1.70039,0.70201 1.82462,0.92491 1.01213,1.81597 0.0815,4.11522 -1.2016,5.52272"
-         style="fill:#ffba00;fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5979)"
-         id="path5427"
-         inkscape:transform-center-y="2.4253893"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:transform-center-y="-1.2480942"
-         id="path5433"
-         style="fill:#ffba00;fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5975)"
-         d="m 449.88582,590.12507 c -2.6303,-2.61936 1.10292,-4.63559 3.48203,-3.49656 1.83984,0.88085 2.85744,2.90743 2.84255,4.89646 m -6.32458,-1.3999 c -0.59186,-0.58941 1.1931,-1.40024 1.44348,-1.44951 2.03985,-0.40143 3.93898,1.19418 4.8811,2.84941"
-         inkscape:transform-center-x="-2.6608314"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:transform-center-x="0.014008145"
-         d="m 449.88582,590.19927 c -3.30397,1.69213 -4.06789,-2.48142 -2.24942,-4.39211 1.40628,-1.47759 3.64813,-1.81914 5.5352,-1.19033 m -3.28578,5.58244 c -0.74346,0.38075 -0.96302,-1.56741 -0.93251,-1.82076 0.24857,-2.06406 2.35295,-3.37717 4.21829,-3.76168"
-         style="fill:#ffba00;fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5971)"
-         id="path5435"
-         inkscape:transform-center-y="-2.7066572"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:transform-center-y="-1.046893"
-         id="path5437"
-         style="fill:#ffba00;fill-opacity:1;fill-rule:evenodd;stroke:none;filter:url(#filter5967)"
-         d="m 449.95639,590.2222 c 0.58832,3.66516 -3.61702,3.10199 -4.87226,0.78208 -0.9707,-1.79405 -0.60277,-4.03172 0.5784,-5.63212 m 4.29386,4.85004 c 0.13237,0.82473 -1.78829,0.43153 -2.01981,0.32422 -1.88623,-0.87423 -2.48478,-3.28139 -2.27405,-5.17426"
-         inkscape:transform-center-x="2.6666233"
-         inkscape:connector-curvature="0" />
-      <path
-         transform="translate(-7.074319e-8,-4.3844093e-6)"
-         d="m 452.8,590.16217 c 0,1.5464 -1.2536,2.8 -2.8,2.8 -1.5464,0 -2.8,-1.2536 -2.8,-2.8 0,-1.5464 1.2536,-2.8 2.8,-2.8 1.5464,0 2.8,1.2536 2.8,2.8 z"
-         sodipodi:ry="2.8"
-         sodipodi:rx="2.8"
-         sodipodi:cy="590.16217"
-         sodipodi:cx="450"
-         id="path3516"
-         style="fill:#ff0000;fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;filter:url(#filter6663)"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:none;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="path6683"
-         sodipodi:cx="450"
-         sodipodi:cy="590.16217"
-         sodipodi:rx="2.8"
-         sodipodi:ry="2.8"
-         d="m 452.8,590.16217 c 0,1.5464 -1.2536,2.8 -2.8,2.8 -1.5464,0 -2.8,-1.2536 -2.8,-2.8 0,-1.5464 1.2536,-2.8 2.8,-2.8 1.5464,0 2.8,1.2536 2.8,2.8 z"
-         transform="matrix(2.7857143,0,0,2.7857143,-803.57144,-1053.861)" />
-    </g>
-    <g
-       id="g14597"
-       transform="matrix(0.15982691,0,0,0.15982691,-1056.9069,134.34403)">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         sodipodi:type="star"
-         style="fill:url(#radialGradient8403);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path8399"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.7846459,0.0231083,0.01819674,-0.996433,963.74641,2187.9716)" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         transform="matrix(0.7846459,-0.0231083,0.01819674,0.996433,960.74641,355.55717)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path8409"
-         style="fill:url(#radialGradient10485);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         sodipodi:type="star"
-         style="fill:url(#radialGradient8433);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path8429"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.7306728,0.2869154,-0.3746109,0.9235132,1473.1877,195.957)" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         sodipodi:type="star"
-         style="fill:url(#radialGradient8443);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path8439"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.5662398,0.5436687,-0.6821468,-0.7265574,2370.6223,1733.9453)" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         transform="matrix(0.4082784,0.6704564,0.8453459,-0.527826,386.32469,1444.5162)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path8419"
-         style="fill:url(#radialGradient8423);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         style="fill:url(#radialGradient14577);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.3433027px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 1390.8921,1282.7315 c 12.316,0.362 26.7142,-16.2436 36.8766,-42.7917 l -5.8866,-0.2485 c -14.6606,38.6102 -36.009,52.6005 -46.6124,18.5169 l -4.1321,0 c 4.5016,16.7566 11.6863,24.2862 19.7545,24.5233 z"
-         id="path7368"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         id="path7297"
-         d="m 1344.3125,1274 c 3.8752,39.9021 18.0923,57.7077 35.5937,59.4375 0.3986,0.1562 0.8276,0.25 1.2813,0.25 1.9482,0 3.5313,-1.5831 3.5313,-3.5313 0,-1.9482 -1.583,-3.5312 -3.5313,-3.5312 -0.2876,0 -0.5448,0.06 -0.8125,0.125 -14.1212,-1.9107 -25.726,-17.7831 -30.2812,-52.3438 L 1344.3125,1274 z"
-         style="fill:url(#radialGradient14574);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.50183702px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <g
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         transform="matrix(0.7362425,0,0,0.6671097,519.59818,685.75098)"
-         id="g6839">
-        <g
-           transform="translate(-20,0)"
-           id="g6841">
-          <rect
-             style="fill:url(#radialGradient7277);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect6843"
-             width="144.60124"
-             height="38.052959"
-             x="1105.6993"
-             y="821.33569"
-             rx="19.02648" />
-          <rect
-             rx="19.02648"
-             y="821.33569"
-             x="1105.6993"
-             height="38.052959"
-             width="144.60124"
-             id="rect6845"
-             style="fill:url(#linearGradient7279);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        </g>
-        <path
-           transform="matrix(1.0099305,0,0,0.4087499,211.0129,559.5742)"
-           sodipodi:end="3.1415927"
-           sodipodi:start="0"
-           d="m 923,647.36218 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,0 0,0 0,0 l 18,0 z"
-           sodipodi:ry="18"
-           sodipodi:rx="18"
-           sodipodi:cy="647.36218"
-           sodipodi:cx="905"
-           id="path6847"
-           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="path6849"
-           sodipodi:cx="905"
-           sodipodi:cy="647.36218"
-           sodipodi:rx="18"
-           sodipodi:ry="18"
-           d="m 923,647.36218 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,0 0,0 0,0 l 18,0 z"
-           sodipodi:start="0"
-           sodipodi:end="3.1415927"
-           transform="matrix(1.0099305,0,0,0.4087499,261.0129,559.5742)" />
-        <path
-           transform="matrix(1.0099305,0,0,-0.4087499,261.0129,1120.6502)"
-           sodipodi:end="3.1415927"
-           sodipodi:start="0"
-           d="m 923,647.36218 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,0 0,0 0,0 l 18,0 z"
-           sodipodi:ry="18"
-           sodipodi:rx="18"
-           sodipodi:cy="647.36218"
-           sodipodi:cx="905"
-           id="path6851"
-           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:type="arc"
-           style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="path6853"
-           sodipodi:cx="905"
-           sodipodi:cy="647.36218"
-           sodipodi:rx="18"
-           sodipodi:ry="18"
-           d="m 923,647.36218 c 0,9.94113 -8.05887,18 -18,18 -9.94113,0 -18,-8.05887 -18,-18 0,0 0,0 0,0 l 18,0 z"
-           sodipodi:start="0"
-           sodipodi:end="3.1415927"
-           transform="matrix(1.0099305,0,0,-0.4087499,211.0129,1120.6502)" />
-      </g>
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         id="path6855"
-         d="m 1345.3125,1260.9062 c 17.6268,44.2597 97.5426,39.4158 151.6875,10.9376 l 0,-0.094 c 2.2389,-0.399 3.9375,-2.3345 3.9375,-4.6875 0,-2.6409 -2.1403,-4.7813 -4.7813,-4.7813 -2.0494,0 -3.7877,1.2814 -4.4687,3.0938 -47.2126,30.1329 -115.9992,36.8456 -136.6875,-4.3438 l -9.6875,-0.125 z"
-         style="fill:url(#radialGradient14563);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.4856548px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         style="fill:url(#radialGradient14560);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.35335577px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 1335.4283,1248.9639 -9.1223,0.1659 c 15.5085,17.8157 37.3839,29.0455 56.2835,29.1836 l 0,-3.526 c -15.4822,0.085 -33.2648,-9.7303 -47.1612,-25.8235 z"
-         id="path6865"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         style="fill:url(#radialGradient14557);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.31772351px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 1345.0435,1272.4483 c -11.4447,26.6751 -27.0317,39.8549 -38.1961,29.334 l 0,5.6579 c 13.3195,8.7724 31.7663,-6.5109 43.9854,-34.7622 l -5.7893,-0.2297 z"
-         id="path6877"
-         inkscape:connector-curvature="0" />
-      <g
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         id="g6879"
-         transform="matrix(0.8461928,0,0,0.8461928,495.42951,530.75632)">
-        <path
-           style="fill:url(#radialGradient7275);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.47300318px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 980.19,912.71431 c 0,-6.19347 -12.51446,-14.76753 -35.89069,-14.2911 l 0,29.73488 c 23.37623,0.47644 35.89069,-8.09763 35.89069,-14.29101 l 0,-1.15277 z"
-           id="path6881"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.53151947;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 944.13973,898.43541 -10.71276,2.29436 0,1.8537 0,21.41436 0,1.8537 10.71276,2.29436 0,-6.44242 0,-16.82564 0,-6.44242 z"
-           id="path6883"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         id="path6887"
-         d="m 1343.702,1265.5771 c -12.2928,-43.8168 -29.0354,-65.4666 -41.0274,-48.1845 l 0,-9.2939 c 14.3069,-14.4098 34.1211,10.6948 47.2461,57.1012 l -6.2187,0.3772 z"
-         style="fill:url(#radialGradient14551);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.42203271px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         style="fill:url(#radialGradient14548);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.48168376px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 1360.8253,1286.8249 -12.1295,0.2378 c 33.8082,40.7866 90.3289,56.9255 114.9648,20.5071 l -8.8456,0 c -22.5575,28.4742 -64.732,14.8388 -93.9897,-20.7449 z"
-         id="path6891"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         sodipodi:type="star"
-         style="fill:url(#radialGradient10483);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path8411"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.4171412,-0.01802628,0.00967393,0.7772958,1144.4663,567.71717)" />
-      <g
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         transform="matrix(0.8461928,0,0,0.8461928,496.2757,570.75632)"
-         id="g6893">
-        <path
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           id="path6895"
-           d="m 979.19,757.71431 c 0,-6.19347 -12.51446,-14.76753 -35.89069,-14.2911 l 0,29.73488 c 23.37623,0.47644 35.89069,-8.09763 35.89069,-14.29101 l 0,-1.15277 z"
-           style="fill:url(#radialGradient7273);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.47300318px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           id="path6897"
-           d="m 943.13973,743.43541 -10.71276,2.29436 0,1.8537 0,21.41436 0,1.8537 10.71276,2.29436 0,-6.44242 0,-16.82564 0,-6.44242 z"
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.53151947;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         id="path7281"
-         d="m 1388.0506,1196.7336 c -11.649,-0.5465 -25.2675,24.5201 -34.8795,64.5952 l 5.5678,0.3751 c 13.8667,-58.283 34.0588,-79.4018 44.088,-27.9516 l 3.9083,0 c -4.2578,-25.2946 -11.0533,-36.6608 -18.6846,-37.0187 z"
-         style="fill:url(#radialGradient14541);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.41021118px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         transform="matrix(0.3907023,0.1472529,-0.2963835,0.718637,1558.82,463.22457)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path8431"
-         style="fill:url(#radialGradient8435);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         id="path7309"
-         d="m 1497.3438,1225.8438 c -0.5307,0 -1.0275,0.147 -1.4688,0.375 -51.5941,2.3269 -108.9923,18.8892 -150.5312,44.1562 l 26.2187,0.25 c 36.4794,-22.3698 82.2748,-36.7554 123.8437,-39 0.5375,0.4036 1.2142,0.6562 1.9376,0.6562 1.775,0 3.2187,-1.4437 3.2187,-3.2187 0,-1.7751 -1.4437,-3.2188 -3.2187,-3.2187 z"
-         style="fill:url(#radialGradient14537);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.73941743px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         style="fill:url(#radialGradient14534);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5760982px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 1469.5111,1198.0947 c -49.3855,-0.2636 -102.3475,24.3982 -116.5436,75.3622 l 10.1133,-3.5962 c 18.6631,-54.4422 74.8514,-73.2975 121.5472,-61.9292 l 0,-8.9377 c -4.9748,-0.5564 -10.0196,-0.8719 -15.1169,-0.8991 z"
-         id="path6875"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         id="path7305"
-         d="m 1359,1177.7188 c -1.3759,0 -2.571,0.7246 -3.25,1.8124 -15.1771,14.0859 -20.1033,42.7419 -5.5938,87.3438 l 5.125,-4.4688 c -11.6924,-40.2247 -7.9499,-65.2423 4.625,-76.875 l -0.094,-0.2187 c 1.7359,-0.37 3.0312,-1.9043 3.0313,-3.75 0,-2.1214 -1.7224,-3.8438 -3.8438,-3.8437 z"
-         style="fill:url(#radialGradient14531);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.56690276px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         id="path7301"
-         d="m 1356.4062,1272.6875 c -25.0868,27.7965 -27.6188,48.7883 -16.6874,61.9687 0.5075,1.3269 1.7767,2.2813 3.2812,2.2813 1.9482,0 3.5313,-1.5831 3.5312,-3.5313 0,-1.4959 -0.9351,-2.7678 -2.25,-3.2812 -7.8328,-11.0233 -4.5319,-28.7879 15.9376,-53.1875 l -3.8126,-4.25 z"
-         style="fill:url(#radialGradient14528);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.48381171px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         sodipodi:type="star"
-         style="fill:url(#radialGradient8425);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path8421"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.2122395,0.3595638,0.6569719,-0.4155361,664.33582,1482.9175)" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         style="fill:url(#radialGradient14524);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.50308138px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 1396.4379,1252.9418 c -13.6363,0.4593 -28.5327,8.4014 -42.1263,21.8866 l 0,12.092 c 29.7892,-38.358 67.637,-41.7238 79.8123,20.0728 l 6.2951,0.1935 c -6.0846,-38.9482 -23.619,-54.9308 -43.9811,-54.2449 z"
-         id="path6889"
-         inkscape:connector-curvature="0" />
-      <g
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         id="g6921"
-         transform="matrix(0.8461928,0,0,0.8461928,508.1224,546.67916)">
-        <path
-           id="path6923"
-           d="m 987.75,841.46875 c -0.11792,10e-4 -0.22733,0.0264 -0.34375,0.0312 -0.13748,0.002 -0.26823,-0.002 -0.40625,0 l 0,0.0312 c -8.14098,0.64143 -12.50003,10.097 -12.5,17.0625 l 0,1.375 c 0,6.96558 4.35883,16.45253 12.5,17.09375 l 0,0.0312 c 0.25483,0.004 0.49699,-0.003 0.75,0 0.28464,0.003 0.56141,-0.002 0.84375,0 32.26005,0.21787 49.53125,-9.83454 49.53125,-17.125 l 0,-1.375 c 0,-7.31645 -17.3924,-17.38603 -49.875,-17.09375 -0.16809,-0.005 -0.33485,-0.033 -0.5,-0.0312 z"
-           style="fill:url(#radialGradient7261);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.61752236px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:url(#radialGradient7263);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.48366684px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 1028.3893,858.72927 c 0,-6.11058 -13.2714,-14.5713 -38.045,-14.10126 l 0,2.23154 c 22.4268,-0.39373 34.4262,6.76604 34.4262,11.94095 l 0,0.97331 c 0,5.17491 -11.9994,12.33468 -34.4262,11.94098 l 0,2.23152 c 24.7736,0.47003 38.045,-7.96696 38.045,-14.07753 l 0,-1.13951 z"
-           id="path6925"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         transform="matrix(0.4171412,0.01802628,0.00967393,-0.7772958,1147.4663,1977.8116)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path8401"
-         style="fill:url(#radialGradient10491);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         transform="matrix(-0.2971774,0.2932871,-0.528776,-0.5698055,2092.0402,1699.9321)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path8441"
-         style="fill:url(#radialGradient8445);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <g
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         id="g6909"
-         transform="matrix(0.4565215,0,0,0.4565215,917.07697,818.98782)">
-        <rect
-           style="fill:url(#radialGradient6991);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6911"
-           width="144.60124"
-           height="38.052959"
-           x="1105.6993"
-           y="821.33569"
-           rx="19.02648" />
-        <rect
-           rx="19.02648"
-           y="821.33569"
-           x="1105.6993"
-           height="38.052959"
-           width="144.60124"
-           id="rect6913"
-           style="fill:url(#linearGradient6993);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      </g>
-      <g
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-2.png.png"
-         transform="matrix(0.4565215,0,0,0.4565215,900.46022,926.4543)"
-         id="g6915">
-        <rect
-           rx="19.02648"
-           y="821.33569"
-           x="1105.6993"
-           height="38.052959"
-           width="144.60124"
-           id="rect6917"
-           style="fill:url(#radialGradient6995);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#linearGradient6997);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6919"
-           width="144.60124"
-           height="38.052959"
-           x="1105.6993"
-           y="821.33569"
-           rx="19.02648" />
-      </g>
-    </g>
-    <g
-       id="g11593"
-       transform="matrix(0.13106631,0,0,0.13106631,-770.77821,246.37066)"
-       inkscape:export-filename="/media/pros/pyfl/art/extras-missile.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76">
-      <path
-         transform="matrix(4.9314064,0,0,0.5304364,-1782.8071,278.7017)"
-         d="m 457,586.61218 c 0,4.00407 -1.00736,7.25 -2.25,7.25 -1.24264,0 -2.25,-3.24593 -2.25,-7.25 0,-4.00406 1.00736,-7.25 2.25,-7.25 1.24264,0 2.25,3.24594 2.25,7.25 z"
-         sodipodi:ry="7.25"
-         sodipodi:rx="2.25"
-         sodipodi:cy="586.61218"
-         sodipodi:cx="454.75"
-         id="path10494"
-         style="fill:#f5e08b;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         sodipodi:type="arc" />
-      <path
-         clip-path="url(#clipPath11587)"
-         id="path11502"
-         d="m 450.80639,599.86221 c 0.19352,0.0505 0.3756,0.24225 0.56678,0.21535 1.91546,-0.26947 2.90602,-4.46711 2.21643,-9.36888 -0.68958,-4.90177 -2.79984,-8.66317 -4.7153,-8.39371 -0.18797,0.0264 -0.31898,0.24208 -0.48849,0.34112 l 2.42058,17.20612 z"
-         style="fill:url(#radialGradient11611);fill-opacity:1;stroke:none"
-         inkscape:connector-curvature="0" />
-      <path
-         clip-path="url(#clipPath11583)"
-         style="fill:url(#radialGradient11613);fill-opacity:1;stroke:none"
-         d="m 454.83477,599.78395 c 0.19412,0.0548 0.37787,0.25839 0.56905,0.2315 1.91546,-0.26947 2.87481,-4.68897 2.14678,-9.86401 -0.72803,-5.17504 -2.8695,-9.15828 -4.78496,-8.88883 -0.18797,0.0264 -0.31746,0.25285 -0.4864,0.356 l 2.55553,18.16534 z"
-         id="path11508"
-         inkscape:connector-curvature="0" />
-      <path
-         clip-path="url(#clipPath11579)"
-         id="path11512"
-         d="m 458.72838,598.74773 c 0.19352,0.0505 0.3756,0.24225 0.56678,0.21535 1.91546,-0.26947 2.90602,-4.4671 2.21644,-9.36888 -0.68959,-4.90177 -2.79985,-8.66317 -4.71531,-8.39371 -0.18797,0.0265 -0.31898,0.24208 -0.48849,0.34112 l 2.42058,17.20612 z"
-         style="fill:url(#radialGradient11615);fill-opacity:1;stroke:none"
-         inkscape:connector-curvature="0" />
-      <path
-         clip-path="url(#clipPath11575)"
-         style="fill:url(#radialGradient11617);fill-opacity:1;stroke:none"
-         d="m 462.68938,598.19049 c 0.19352,0.0505 0.3756,0.24225 0.56677,0.21535 1.91546,-0.26947 2.90603,-4.4671 2.21644,-9.36888 -0.68959,-4.90177 -2.79985,-8.66317 -4.7153,-8.39371 -0.18797,0.0265 -0.31898,0.24208 -0.4885,0.34112 l 2.42059,17.20612 z"
-         id="path11516"
-         inkscape:connector-curvature="0" />
-      <path
-         clip-path="url(#clipPath11571)"
-         id="path11520"
-         d="m 466.65037,597.63325 c 0.19352,0.0505 0.3756,0.24225 0.56678,0.21535 1.91546,-0.26947 2.90603,-4.4671 2.21644,-9.36887 -0.68959,-4.90178 -2.79985,-8.66317 -4.71531,-8.39371 -0.18797,0.0264 -0.31898,0.24207 -0.48849,0.34111 l 2.42058,17.20612 z"
-         style="fill:url(#radialGradient11619);fill-opacity:1;stroke:none"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="human-base-military"
-       inkscape:label="#g9468"
-       transform="matrix(0.17732501,0,0,0.17732501,-772.36257,236.53318)">
-      <path
-         transform="matrix(0.327223,-0.14697,0.1819325,0.4174948,-86.490435,496.3742)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path11623"
-         style="fill:url(#radialGradient12060);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient12062);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path11638"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.3353051,-0.1274582,-0.1665678,-0.4238591,224.89125,1248.1161)" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient12064);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path11670"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.1274582,-0.3353051,0.4238591,0.1665678,-209.6627,813.5621)" />
-      <path
-         transform="matrix(0.14697,-0.327223,-0.4174948,-0.1819325,542.07918,1124.9438)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path11676"
-         style="fill:url(#radialGradient12066);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         transform="matrix(-0.14697,-0.327223,0.4174948,-0.1819325,-72.383143,1124.9438)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path11700"
-         style="fill:url(#radialGradient12068);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient12070);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path11706"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.1274582,-0.3353051,-0.4238591,0.1665678,679.35874,813.56213)" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient12072);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path11722"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.3353051,-0.1274582,0.1665678,-0.4238591,244.80475,1248.1161)" />
-      <path
-         transform="matrix(-0.327223,-0.14697,-0.1819325,0.4174948,556.18643,496.37418)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path11728"
-         style="fill:url(#radialGradient12074);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-         id="rect4354"
-         d="m 221.1576,758.63061 c 0.009,0.29939 0.0255,0.59164 0.0255,0.89312 0,16.81631 -13.65194,30.46827 -30.46827,30.46827 -0.30509,0 -0.6157,-0.0166 -0.91864,-0.0255 l 0,27.30405 c 0.30294,-0.009 0.61355,-0.0255 0.91864,-0.0255 16.81631,-3e-5 30.46827,13.65194 30.46827,30.4683 0,0.29662 -0.0171,0.59849 -0.0255,0.89311 l 27.30406,0 c -0.008,-0.29474 -0.0255,-0.59641 -0.0255,-0.89311 0,-16.81636 13.65194,-30.4683 30.46826,-30.4683 0.30149,0 0.59374,0.0168 0.89313,0.0255 l 0,-27.30405 c -0.29939,0.009 -0.59164,0.0255 -0.89313,0.0255 -16.81632,1e-5 -30.46826,-13.65194 -30.46826,-30.46827 0,-0.30158 0.0168,-0.59363 0.0255,-0.89312 l -27.30406,0 z"
-         style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.65381742;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient12076);fill-opacity:1;stroke:#000000;stroke-width:0.10865344;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="path4377"
-         sodipodi:cx="553"
-         sodipodi:cy="702.11218"
-         sodipodi:rx="6"
-         sodipodi:ry="6"
-         d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 -3.31371,0 -6,-2.68629 -6,-6 0,-3.31371 2.68629,-6 6,-6 3.31371,0 6,2.68629 6,6 z"
-         transform="matrix(6.0174568,0,0,6.0174568,-3092.8567,-3421.3113)"
-         inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-         transform="matrix(6.0174568,0,0,6.0174568,-3092.8056,-3421.3879)"
-         d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 -3.31371,0 -6,-2.68629 -6,-6 0,-3.31371 2.68629,-6 6,-6 3.31371,0 6,2.68629 6,6 z"
-         sodipodi:ry="6"
-         sodipodi:rx="6"
-         sodipodi:cy="702.11218"
-         sodipodi:cx="553"
-         id="path11937"
-         style="fill:url(#radialGradient12018);fill-opacity:1;stroke:none"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient12078);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path11625"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.1729575,-0.0805575,0.1400129,0.3264692,28.17419,553.8167)" />
-      <path
-         transform="matrix(0.1792622,-0.06533672,-0.1318446,-0.3298527,265.35338,1126.418)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path11640"
-         style="fill:url(#radialGradient12080);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         transform="matrix(0.06533672,-0.1792622,0.3298527,0.1318446,-87.964571,773.09997)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path11672"
-         style="fill:url(#radialGradient12082);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient12084);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path11678"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.0805575,-0.1729575,-0.3264692,-0.1400129,484.63668,1010.2791)" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient12086);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path11702"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.0805575,-0.1729575,0.3264692,-0.1400129,-14.940636,1010.2791)" />
-      <path
-         transform="matrix(-0.06533672,-0.1792622,-0.3298527,0.1318446,557.66062,773.1)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path11708"
-         style="fill:url(#radialGradient12088);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         transform="matrix(-0.1792622,-0.06533672,0.1318446,-0.3298527,204.34262,1126.418)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path11724"
-         style="fill:url(#radialGradient12090);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient12092);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path11730"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.1729575,-0.0805575,-0.1400129,0.3264692,441.52181,553.81668)" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-         transform="matrix(3.3315534,0,0,3.3315534,-1607.5521,-1535.5058)"
-         d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 -3.31371,0 -6,-2.68629 -6,-6 0,-3.31371 2.68629,-6 6,-6 3.31371,0 6,2.68629 6,6 z"
-         sodipodi:ry="6"
-         sodipodi:rx="6"
-         sodipodi:cy="702.11218"
-         sodipodi:cx="553"
-         id="path4382"
-         style="fill:url(#radialGradient12094);fill-opacity:1;stroke:#000000;stroke-width:0.19625002;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient12035);fill-opacity:1;stroke:none"
-         id="path12033"
-         sodipodi:cx="553"
-         sodipodi:cy="702.11218"
-         sodipodi:rx="6"
-         sodipodi:ry="6"
-         d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 -3.31371,0 -6,-2.68629 -6,-6 0,-3.31371 2.68629,-6 6,-6 3.31371,0 6,2.68629 6,6 z"
-         transform="matrix(3.3556167,0,0,3.3556167,-1620.808,-1552.4775)"
-         inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-    </g>
-    <path
-       style="fill:url(#linearGradient4782);fill-opacity:1;stroke:#000000;stroke-width:0.09976703;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -710.90172,327.33578 c -0.37159,0.008 -0.67605,0.26827 -0.67605,0.59293 0,0.32465 0.30446,0.5847 0.67605,0.59293 l 0,-0.006 c 0.006,5e-5 0.0109,0 0.0166,0 0.57069,0 1.0307,-0.26246 1.0307,-0.58739 0,-0.32493 -0.46001,-0.58739 -1.0307,-0.58739 -0.006,0 -0.0109,-5e-5 -0.0166,0 l 0,-0.006 z"
-       id="path3802"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g4813"
-       clip-path="url(#clipPath4821)"
-       transform="matrix(0.17732501,0,0,0.17732501,-791.22995,222.27625)">
-      <path
-         transform="matrix(1.7857143,0,0,1.2857143,-363.41428,-170.87491)"
-         d="m 458.19999,597.36218 c 0,0.7732 -0.6268,1.4 -1.4,1.4 -0.7732,0 -1.4,-0.6268 -1.4,-1.4 0,-0.7732 0.6268,-1.4 1.4,-1.4 0.7732,0 1.4,0.6268 1.4,1.4 z"
-         sodipodi:ry="1.4"
-         sodipodi:rx="1.4"
-         sodipodi:cy="597.36218"
-         sodipodi:cx="456.79999"
-         id="path4784"
-         style="fill:url(#radialGradient4793);fill-opacity:1;stroke:none"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient4803);fill-opacity:1;stroke:none"
-         id="path4801"
-         sodipodi:cx="456.79999"
-         sodipodi:cy="597.36218"
-         sodipodi:rx="1.4"
-         sodipodi:ry="1.4"
-         d="m 458.19999,597.36218 c 0,0.7732 -0.6268,1.4 -1.4,1.4 -0.7732,0 -1.4,-0.6268 -1.4,-1.4 0,-0.7732 0.6268,-1.4 1.4,-1.4 0.7732,0 1.4,0.6268 1.4,1.4 z"
-         transform="matrix(1.7857143,0,0,1.2857143,-363.41428,-173.67491)" />
-      <path
-         transform="matrix(1.7857143,0,0,1.2857143,-360.81428,-171.87491)"
-         d="m 458.19999,597.36218 c 0,0.7732 -0.6268,1.4 -1.4,1.4 -0.7732,0 -1.4,-0.6268 -1.4,-1.4 0,-0.7732 0.6268,-1.4 1.4,-1.4 0.7732,0 1.4,0.6268 1.4,1.4 z"
-         sodipodi:ry="1.4"
-         sodipodi:rx="1.4"
-         sodipodi:cy="597.36218"
-         sodipodi:cx="456.79999"
-         id="path4805"
-         style="fill:url(#radialGradient4807);fill-opacity:1;stroke:none"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient4811);fill-opacity:1;stroke:none"
-         id="path4809"
-         sodipodi:cx="456.79999"
-         sodipodi:cy="597.36218"
-         sodipodi:rx="1.4"
-         sodipodi:ry="1.4"
-         d="m 458.19999,597.36218 c 0,0.7732 -0.6268,1.4 -1.4,1.4 -0.7732,0 -1.4,-0.6268 -1.4,-1.4 0,-0.7732 0.6268,-1.4 1.4,-1.4 0.7732,0 1.4,0.6268 1.4,1.4 z"
-         transform="matrix(1.7857143,0,0,1.2857143,-359.41428,-174.47491)" />
-    </g>
-    <g
-       id="g6764"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/extra-bomber.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76"
-       transform="matrix(0.17732501,0,0,0.17732501,-790.09507,218.80068)">
-      <g
-         id="g3795"
-         transform="matrix(0.8077377,0,0,0.5832867,87.987674,260.63789)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/extra-fighter.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92">
-        <path
-           sodipodi:nodetypes="cccccc"
-           id="path3797"
-           d="m 446.67105,502.52941 c 1.04509,-3.97845 1.65472,-6.14852 6.4447,-6.32935 -4.6158,-0.18084 -8.51868,-5.74552 -2.42235,-11.44194 -5.31252,4.52097 -15.12484,-2.7072 -15.12484,-2.7072 7.85125,7.68265 6.96724,14.05333 5.82543,21.00723 l 5.27706,-0.52874 z"
-           style="fill:#964104;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17747864px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#964104;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17747864px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 446.67105,504.57966 c 1.04509,3.97845 1.65472,6.14852 6.4447,6.32935 -4.6158,0.18084 -8.51868,5.74552 -2.42235,11.44194 -5.31252,-4.52097 -15.12484,2.7072 -15.12484,2.7072 7.85125,-7.68265 6.96724,-14.05333 5.82543,-21.00723 l 5.27706,0.52874 z"
-           id="path3799"
-           sodipodi:nodetypes="cccccc"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         style="fill:#864403;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.14604481px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 446.92464,552.68188 c -3.16056,0 -4.11207,1.66583 -16.81797,1.66583 l -0.005,0.009 0.005,0.005 c 12.7059,0 13.65741,1.66583 16.81797,1.66583 3.16059,0 4.13884,-1.36005 5.07051,-1.36005 0.93165,0 0.75034,0.68915 2.58316,0.68915 1.83282,10e-6 2.40061,-0.99493 3.71502,-0.99493 l 0.005,-0.005 -0.005,-0.009 c -1.31441,0 -1.8822,-0.9995 -3.71502,-0.9995 -1.83282,0 -1.65151,0.69371 -2.58316,0.69372 -0.93167,0 -1.90992,-1.36004 -5.07051,-1.36005 z"
-         id="path3801"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/extra-fighter.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92"
-         inkscape:connector-curvature="0" />
-      <path
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient3805);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="path3803"
-         sodipodi:cx="455.29999"
-         sodipodi:cy="513.36218"
-         sodipodi:rx="0.89999998"
-         sodipodi:ry="2.8"
-         d="m 456.19999,513.36218 c 0,1.5464 -0.40295,2.8 -0.9,2.8 -0.49706,0 -0.9,-1.2536 -0.9,-2.8 0,-1.54639 0.40294,-2.8 0.9,-2.8 0.49705,0 0.9,1.25361 0.9,2.8 z"
-         transform="matrix(1,0,0,0.6428572,0.9000122,224.33601)" />
-    </g>
-    <path
-       style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.03770107;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -709.37763,309.22394 c -0.31903,-0.0527 -0.47371,0.18538 -0.48689,0.24279 -0.0119,0.0109 -0.022,0.0255 -0.0259,0.0424 -0.0103,0.0447 0.0201,0.0933 0.0649,0.10354 0.0447,0.0102 0.0894,-0.021 0.0997,-0.0658 0.002,-0.009 -0.002,-0.0164 -0.002,-0.0247 0.0337,-0.0926 0.0982,-0.27045 0.41561,-0.28333 -0.0228,-0.006 -0.0438,-0.0114 -0.0651,-0.0149 z"
-       id="path3807"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/extra-fighter.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       inkscape:connector-curvature="0" />
-    <path
-       id="path6722"
-       d="m -709.37763,310.12134 c -0.31903,0.0527 -0.47371,-0.18538 -0.48689,-0.24279 -0.0119,-0.0109 -0.022,-0.0255 -0.0259,-0.0424 -0.0103,-0.0447 0.0201,-0.0933 0.0649,-0.10355 0.0447,-0.0102 0.0894,0.021 0.0997,0.0658 0.002,0.009 -0.002,0.0164 -0.002,0.0247 0.0337,0.0926 0.0982,0.27045 0.41561,0.28333 -0.0228,0.006 -0.0438,0.0114 -0.0651,0.0149 z"
-       style="fill:#ffffff;fill-rule:evenodd;stroke:#000000;stroke-width:0.03770107;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/extra-fighter.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g3899"
-       transform="matrix(0.55955294,0,0,0.55955294,-975.86784,-42.959229)">
-      <g
-         id="g3895">
-        <path
-           inkscape:transform-center-y="7.7083327"
-           inkscape:transform-center-x="7.63718"
-           style="fill:#964104;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.15561539px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 529.06192,607.15938 c 0.57687,2.86632 1.68224,4.60426 6.29441,4.61812 -4.60401,0.60307 -8.42616,5.00219 -2.90954,8.02339 -4.86177,-2.28617 -21.78536,-2.54309 -30.81431,-0.95988 16.29953,-3.6261 24.94324,-5.61757 25.3436,-11.28906 l 2.08584,-0.39257 z"
-           id="path3893"
-           sodipodi:nodetypes="cccccc"
-           inkscape:connector-curvature="0" />
-        <path
-           sodipodi:nodetypes="cccccc"
-           id="path3815"
-           d="m 529.06192,597.80089 c 0.57687,-2.86632 1.68224,-4.60426 6.29441,-4.61812 -4.60401,-0.60307 -8.42616,-5.00219 -2.90954,-8.02339 -4.86177,2.28617 -21.78536,2.54309 -30.81431,0.95988 16.29953,3.6261 24.94324,5.61757 25.3436,11.28906 l 2.08584,0.39257 z"
-           style="fill:#964104;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.15561539px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           inkscape:transform-center-x="7.63718"
-           inkscape:transform-center-y="-7.7083327"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         id="path3881"
-         d="m 526.1875,596.80826 c -2.95993,10e-6 -5.05285,2.22293 -10.6875,3.875 l 0,0.0312 -0.125,0.0312 c -2.6707,0.6199 -5.66224,-0.15602 -9.46875,0.375 -1.99724,0.27862 -3.41904,3.11654 -5.90625,3.34375 -2.0725,0.1893 -4.20463,-1.51496 -6.15625,-2.90625 l 0,0.0937 c 1.62674,1.28459 4.19332,3.17129 6.3125,3.125 2.50581,-0.0547 3.94856,-2.64663 5.96875,-2.59375 3.73987,0.0979 6.7046,1.73724 9.375,2.0625 l 0,0.0312 c 5.63466,1.65208 7.72759,3.875 10.6875,3.875 2.19339,-2e-5 3.59428,-1.1345 4.6875,-2.21875 0.18913,-1.14209 0.59375,-2.20143 0.59375,-3.40625 2e-5,-1.22193 -0.39932,-2.34274 -0.59375,-3.5 -1.09324,-1.08422 -2.49409,-2.21875 -4.6875,-2.21875 z"
-         style="fill:#864403;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.32568336px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-    </g>
-    <path
-       id="path5104"
-       style="fill:none;stroke:#000000;stroke-width:0.26598752;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -785.39595,407.58293 1.59592,1.32993 10.72816,0 m -12.32408,1.4186 1.59592,-1.32993 10.72816,0"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76"
-       inkscape:connector-curvature="0" />
-    <path
-       inkscape:export-ydpi="76"
-       inkscape:export-xdpi="76"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       sodipodi:nodetypes="cccccccccc"
-       id="path4990"
-       d="m -773.67222,408.11338 c -0.26986,0.0103 -0.42473,0.70077 -0.65001,0.83412 l -0.0855,0 c 0.0233,0 0.0446,0.002 0.0634,0.009 l 0.0221,0.0119 c 0.23333,0.1381 0.37106,0.87246 0.68096,0.83114 0.68861,0.0234 1.7351,-0.18438 1.9736,-0.83114 l 0,-0.0207 c -0.2385,-0.64675 -1.28499,-0.85456 -1.9736,-0.83112 -0.0107,-0.002 -0.0213,-0.003 -0.0309,-0.003 z"
-       style="fill:url(#radialGradient4995);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17732501;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:connector-curvature="0" />
-    <g
-       id="g5048"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76"
-       transform="matrix(0.17732501,0,0,0.17732501,-790.09507,215.25418)">
-      <rect
-         mask="none"
-         clip-path="none"
-         rx="6.0620885"
-         y="1078.3146"
-         x="31.558502"
-         height="12.093904"
-         width="27.461296"
-         id="rect4960"
-         style="fill:url(#radialGradient5038);fill-opacity:1;stroke:#000000;stroke-width:0.64537716;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         style="fill:url(#radialGradient5035);fill-opacity:1;stroke:#000000;stroke-width:0.64537716;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect4974"
-         width="27.461296"
-         height="12.093904"
-         x="31.558502"
-         y="1094.3146"
-         rx="6.0620885"
-         clip-path="none"
-         mask="none" />
-      <rect
-         style="fill:url(#radialGradient5032);fill-opacity:1;stroke:#000000;stroke-width:0.64537716;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect4998"
-         width="27.461296"
-         height="12.093904"
-         x="61.558502"
-         y="1078.3146"
-         rx="6.0620885"
-         clip-path="none"
-         mask="none" />
-      <rect
-         mask="none"
-         clip-path="none"
-         rx="6.0620885"
-         y="1094.3146"
-         x="61.558502"
-         height="12.093904"
-         width="27.461296"
-         id="rect5000"
-         style="fill:url(#radialGradient5029);fill-opacity:1;stroke:#000000;stroke-width:0.64537716;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    </g>
-    <rect
-       mask="none"
-       clip-path="none"
-       rx="1.0749599"
-       y="409.30353"
-       x="-779.1792"
-       height="2.1445515"
-       width="4.8695745"
-       id="rect5261"
-       style="fill:url(#linearGradient5263);fill-opacity:1;stroke:none"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <rect
-       mask="none"
-       clip-path="none"
-       rx="1.0749599"
-       y="406.46637"
-       x="-784.49896"
-       height="2.1445515"
-       width="4.8695745"
-       id="rect5253"
-       style="fill:url(#linearGradient5255);fill-opacity:1;stroke:none"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <rect
-       style="fill:url(#linearGradient5259);fill-opacity:1;stroke:none"
-       id="rect5257"
-       width="4.8695745"
-       height="2.1445515"
-       x="-779.1792"
-       y="406.46637"
-       rx="1.0749599"
-       clip-path="none"
-       mask="none"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <rect
-       style="fill:url(#linearGradient5267);fill-opacity:1;stroke:none"
-       id="rect5265"
-       width="4.8695745"
-       height="2.1445515"
-       x="-784.49896"
-       y="409.30353"
-       rx="1.0749599"
-       clip-path="none"
-       mask="none"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <g
-       id="g5054"
-       transform="matrix(0.17732501,0,0,0.17732501,-787.96717,215.25418)"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76">
-      <rect
-         style="fill:url(#radialGradient5062);fill-opacity:1;stroke:#000000;stroke-width:0.64537716;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect5040"
-         width="27.461296"
-         height="12.093904"
-         x="17.558502"
-         y="1086.3146"
-         rx="6.0620885"
-         clip-path="none"
-         mask="none" />
-      <rect
-         mask="none"
-         clip-path="none"
-         rx="6.0620885"
-         y="1086.3146"
-         x="47.558502"
-         height="12.093904"
-         width="27.461296"
-         id="rect5042"
-         style="fill:url(#radialGradient5064);fill-opacity:1;stroke:#000000;stroke-width:0.64537716;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    </g>
-    <g
-       id="g5080"
-       transform="matrix(0.17732501,0,0,0.17732501,-789.38577,215.40376)"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76">
-      <g
-         id="g5076">
-        <rect
-           style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.3800742;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect4972"
-           width="8.1456375"
-           height="8.4338264"
-           x="1079.4452"
-           y="-17.777203"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <path
-           style="fill:url(#radialGradient5088);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.45954046;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 16.93507,1078.9819 c -1.280695,0.055 -2.015645,3.7671 -3.0848,4.4838 l -0.405712,0 c 0.110774,0 0.211877,0.01 0.300787,0.048 l 0.104925,0.064 c 1.107336,0.7424 1.760993,4.69 3.231692,4.4679 3.268041,0.1259 8.234418,-0.9911 9.366312,-4.4679 l 0,-0.1113 c -1.131894,-3.4766 -6.098271,-4.5937 -9.366312,-4.4677 -0.05071,-0.01 -0.101154,-0.018 -0.146892,-0.016 z"
-           id="path5058"
-           sodipodi:nodetypes="cccccccccc"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g5072">
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           transform="matrix(0,1,-1,0,0,0)"
-           y="-17.777203"
-           x="1095.4452"
-           height="8.4338264"
-           width="8.1456375"
-           id="rect5066"
-           style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.3800742;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           sodipodi:nodetypes="cccccccccc"
-           id="path5068"
-           d="m 16.93507,1094.9819 c -1.280695,0.055 -2.015645,3.7671 -3.0848,4.4838 l -0.405712,0 c 0.110774,0 0.211877,0.01 0.300787,0.048 l 0.104925,0.064 c 1.107336,0.7424 1.760993,4.69 3.231692,4.4679 3.268041,0.1259 8.234418,-0.9911 9.366312,-4.4679 l 0,-0.1113 c -1.131894,-3.4766 -6.098271,-4.5937 -9.366312,-4.4677 -0.05071,-0.01 -0.101154,-0.018 -0.146892,-0.016 z"
-           style="fill:url(#radialGradient5090);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.45954046;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <rect
-       mask="none"
-       clip-path="none"
-       rx="1.0749599"
-       y="407.88495"
-       x="-784.85364"
-       height="2.1445515"
-       width="4.8695745"
-       id="rect5269"
-       style="fill:url(#linearGradient5271);fill-opacity:1;stroke:none"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <rect
-       style="fill:url(#linearGradient5275);fill-opacity:1;stroke:none"
-       id="rect5273"
-       width="4.8695745"
-       height="2.1445515"
-       x="-779.53387"
-       y="407.88495"
-       rx="1.0749599"
-       clip-path="none"
-       mask="none"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <path
-       inkscape:export-ydpi="76"
-       inkscape:export-xdpi="76"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       sodipodi:nodetypes="cccccccccc"
-       id="path5293"
-       d="m -786.38276,406.73423 c -0.2271,0.01 -0.35742,0.668 -0.54701,0.79509 l -0.0719,0 c 0.0197,0 0.0376,0.002 0.0533,0.009 l 0.0186,0.0114 c 0.19636,0.13164 0.31227,0.83165 0.57306,0.79227 0.57951,0.0223 1.46017,-0.17575 1.66088,-0.79227 l 0,-0.0197 c -0.20071,-0.61649 -1.08137,-0.81458 -1.66088,-0.79223 -0.009,-0.002 -0.0179,-0.003 -0.026,-0.003 z"
-       style="fill:url(#linearGradient5341);fill-opacity:1;fill-rule:evenodd;stroke:none"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:url(#linearGradient5343);fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m -773.67222,408.11338 c -0.26986,0.0103 -0.42473,0.70077 -0.65001,0.83412 l -0.0855,0 c 0.0233,0 0.0446,0.002 0.0634,0.009 l 0.0221,0.0119 c 0.23333,0.1381 0.37106,0.87246 0.68096,0.83114 0.68861,0.0234 1.7351,-0.18438 1.9736,-0.83114 l 0,-0.0207 c -0.2385,-0.64675 -1.28499,-0.85456 -1.9736,-0.83112 -0.0107,-0.002 -0.0213,-0.003 -0.0309,-0.003 z"
-       id="path5285"
-       sodipodi:nodetypes="cccccccccc"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:url(#linearGradient5339);fill-opacity:1;fill-rule:evenodd;stroke:none"
-       d="m -786.38276,409.57143 c -0.2271,0.01 -0.35742,0.668 -0.54701,0.79509 l -0.0719,0 c 0.0197,0 0.0376,0.002 0.0533,0.009 l 0.0186,0.0114 c 0.19636,0.13164 0.31227,0.83165 0.57306,0.79227 0.57951,0.0223 1.46017,-0.17575 1.66088,-0.79227 l 0,-0.0197 c -0.20071,-0.61649 -1.08137,-0.81458 -1.66088,-0.79223 -0.009,-0.002 -0.0179,-0.003 -0.026,-0.003 z"
-       id="path5300"
-       sodipodi:nodetypes="cccccccccc"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76"
-       inkscape:connector-curvature="0" />
-    <rect
-       style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.17732501;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect5369"
-       width="3.4070756"
-       height="5.1946044"
-       x="407.25378"
-       y="761.99384"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <g
-       id="g4166"
-       transform="matrix(0.27178375,0,0,0.14966126,-802.97039,242.47978)">
-      <path
-         style="fill:url(#radialGradient4170);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.66411126;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 138.00882,1099.8817 c -3.26787,0.1511 -5.14321,10.3644 -7.8713,12.3366 l -1.03523,0 c 0.28266,0 0.54063,0.023 0.7675,0.1312 l 0.26773,0.175 c 2.82552,2.0425 4.49343,12.9037 8.24612,12.2928 8.33887,0.3464 21.01131,-2.7269 23.89948,-12.2928 l 0,-0.3062 c -2.88817,-9.5659 -15.56061,-12.6392 -23.89948,-12.2928 -0.1294,-0.021 -0.2581,-0.049 -0.37482,-0.044 z"
-         id="path5371"
-         sodipodi:nodetypes="cccccccccc"
-         inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76"
-         inkscape:connector-curvature="0" />
-      <rect
-         style="fill:url(#linearGradient4172);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect5387"
-         width="88"
-         height="33"
-         x="-107"
-         y="997.36218"
-         clip-path="url(#clipPath6699)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/civilian.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76"
-         transform="matrix(0.4381351,0,0,1.0066387,173.42985,91.76923)" />
-    </g>
-    <path
-       style="fill:url(#radialGradient5415);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.13010335;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -763.23145,406.92225 c -0.76915,0.0246 -1.21054,1.69001 -1.85265,2.01161 l -0.24366,0 c 0.0665,0 0.12725,0.004 0.18065,0.0214 l 0.063,0.0285 c 0.66504,0.33306 1.05761,2.10409 1.94087,2.00449 1.96271,0.0565 4.94539,-0.44467 5.62517,-2.00449 l 0,-0.0499 c -0.67978,-1.55982 -3.66246,-2.06096 -5.62517,-2.00449 -0.0305,-0.003 -0.0607,-0.008 -0.0882,-0.007 z"
-       id="path5411"
-       sodipodi:nodetypes="cccccccccc"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76"
-       inkscape:connector-curvature="0" />
-    <rect
-       style="fill:url(#linearGradient5417);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect5413"
-       width="88"
-       height="33"
-       x="-107"
-       y="997.36218"
-       clip-path="url(#clipPath6699)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/civilian.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76"
-       transform="matrix(0.10312288,0,0,0.16414284,-754.89448,242.5391)" />
-    <path
-       inkscape:export-ydpi="76"
-       inkscape:export-xdpi="76"
-       inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-       sodipodi:nodetypes="cccccccccc"
-       id="path5419"
-       d="m -759.94964,407.17855 c -0.58007,0.0215 -0.91296,1.47718 -1.39721,1.75825 l -0.18376,0 c 0.0502,0 0.096,0.003 0.13624,0.0187 l 0.0475,0.0249 c 0.50155,0.29112 0.79761,1.8391 1.46374,1.75203 1.4802,0.0494 3.72964,-0.38865 4.2423,-1.75203 l 0,-0.0436 c -0.51266,-1.36337 -2.7621,-1.8014 -4.2423,-1.75203 -0.023,-0.003 -0.0458,-0.007 -0.0665,-0.006 z"
-       style="fill:url(#radialGradient5423);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.105631;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:connector-curvature="0" />
-    <rect
-       transform="matrix(0.07777165,0,0,0.14347014,-753.6622,263.49836)"
-       inkscape:export-ydpi="76"
-       inkscape:export-xdpi="76"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/civilian.png"
-       clip-path="url(#clipPath6699)"
-       y="997.36218"
-       x="-107"
-       height="33"
-       width="88"
-       id="rect5421"
-       style="fill:url(#linearGradient5425);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <rect
-       transform="matrix(0,1,-1,0,0,0)"
-       y="923.78625"
-       x="286.14722"
-       height="0.5747478"
-       width="0.8266719"
-       id="rect4943"
-       style="fill:url(#radialGradient4945);fill-opacity:1;stroke:#000000;stroke-width:0.00439076;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-fighter.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <rect
-       transform="matrix(0,1,-1,0,0,0)"
-       y="922.15881"
-       x="284.78146"
-       height="2.7323008"
-       width="1.4908507"
-       id="rect4916"
-       style="fill:url(#radialGradient4920);fill-opacity:1;stroke:#000000;stroke-width:0.01285633;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-fighter.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <path
-       id="path4918"
-       d="m -924.88363,284.51608 -0.86807,0.15614 0,0.12612 0,1.45717 0,0.12626 0.86807,0.15614 0,-0.4384 0,-1.14491 0,-0.4384 z"
-       style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.03946846;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-fighter.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76"
-       inkscape:connector-curvature="0" />
-    <path
-       style="fill:url(#radialGradient4925);fill-opacity:1;stroke:#000000;stroke-width:0.02815939;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -923.0032,284.88894 0.70013,0.0985 0,0.0797 0,0.91969 0,0.0797 -0.70013,0.0985 0,-0.27668 0,-0.72265 0,-0.27668 z"
-       id="path4923"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-fighter.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76"
-       inkscape:connector-curvature="0" />
-    <rect
-       transform="matrix(0,1,-1,0,0,0)"
-       y="923.71857"
-       x="285.39798"
-       height="1.5096833"
-       width="0.72537088"
-       id="rect4931"
-       style="fill:url(#radialGradient4933);fill-opacity:1;stroke:#000000;stroke-width:0.0066659;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-fighter.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <rect
-       style="fill:url(#radialGradient4937);fill-opacity:1;stroke:#000000;stroke-width:0.00372114;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4935"
-       width="1.2686659"
-       height="0.26899046"
-       x="284.89255"
-       y="923.00598"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-fighter.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <rect
-       style="fill:url(#radialGradient4941);fill-opacity:1;stroke:#000000;stroke-width:0.00370286;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4939"
-       width="0.40293968"
-       height="0.83862114"
-       x="284.05646"
-       y="923.64215"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-fighter.png"
-       inkscape:export-xdpi="76"
-       inkscape:export-ydpi="76" />
-    <rect
-       y="911.19092"
-       x="281.4447"
-       height="1.8923098"
-       width="5.7304783"
-       id="rect4947"
-       style="fill:url(#radialGradient4963);fill-opacity:1;stroke:#000000;stroke-width:0.02097621;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       transform="matrix(0,1,-1,0,0,0)" />
-    <rect
-       style="fill:url(#radialGradient4965);fill-opacity:1;stroke:#000000;stroke-width:0.00629875;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4949"
-       width="1.1858984"
-       height="0.82450169"
-       x="285.72137"
-       y="911.53082"
-       transform="matrix(0,1,-1,0,0,0)" />
-    <rect
-       style="fill:url(#radialGradient4967);fill-opacity:1;stroke:#000000;stroke-width:0.01844298;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4951"
-       width="2.1386929"
-       height="3.9196093"
-       x="283.76215"
-       y="909.19623"
-       transform="matrix(0,1,-1,0,0,0)" />
-    <path
-       style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.05661929;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -913.10512,283.38138 -1.24528,0.22398 0,0.18096 0,2.09039 0,0.18094 1.24528,0.22397 0,-0.62889 0,-1.64245 0,-0.6289 z"
-       id="path4953"
-       inkscape:connector-curvature="0" />
-    <path
-       id="path4955"
-       d="m -910.40753,283.91626 1.00432,0.14139 0,0.11429 0,1.31936 0,0.11429 -1.00432,0.14139 0,-0.39693 0,-1.03664 0,-0.39694 z"
-       style="fill:url(#radialGradient4969);fill-opacity:1;stroke:#000000;stroke-width:0.04039593;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:connector-curvature="0" />
-    <rect
-       style="fill:url(#radialGradient4971);fill-opacity:1;stroke:#000000;stroke-width:0.00956253;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4957"
-       width="1.0405773"
-       height="2.1657093"
-       x="284.64655"
-       y="911.43396"
-       transform="matrix(0,1,-1,0,0,0)" />
-    <rect
-       transform="matrix(0,1,-1,0,0,0)"
-       y="910.41144"
-       x="283.92151"
-       height="0.38587901"
-       width="1.8199587"
-       id="rect4959"
-       style="fill:url(#radialGradient4973);fill-opacity:1;stroke:#000000;stroke-width:0.00533816;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <rect
-       transform="matrix(0,1,-1,0,0,0)"
-       y="911.3241"
-       x="282.72198"
-       height="1.20304"
-       width="0.57803524"
-       id="rect4961"
-       style="fill:url(#radialGradient4975);fill-opacity:1;stroke:#000000;stroke-width:0.00531194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <rect
-       transform="matrix(0,1,-1,0,0,0)"
-       y="910.61945"
-       x="281.5632"
-       height="3.0899293"
-       width="1.4156812"
-       id="rect4977"
-       style="fill:url(#radialGradient4979);fill-opacity:1;stroke:#000000;stroke-width:0.0133227;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <rect
-       transform="matrix(0,1,-1,0,0,0)"
-       y="911.29425"
-       x="281.93713"
-       height="2.09743"
-       width="0.90425032"
-       id="rect4981"
-       style="fill:url(#radialGradient4983);fill-opacity:1;stroke:#000000;stroke-width:0.0087725;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <rect
-       style="fill:url(#radialGradient4987);fill-opacity:1;stroke:#000000;stroke-width:0.00436611;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4985"
-       width="0.56727558"
-       height="0.82818031"
-       x="282.02515"
-       y="911.61145"
-       transform="matrix(0,1,-1,0,0,0)" />
-    <rect
-       transform="matrix(0.00458966,-0.99998947,0.99998947,0.00458966,0,0)"
-       y="-710.20581"
-       x="-288.71762"
-       height="2.5996509"
-       width="0.60816383"
-       id="rect4370"
-       style="fill:url(#radialGradient4373);fill-opacity:1;stroke:#000000;stroke-width:0.00800946;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-       inkscape:export-xdpi="87.310692"
-       inkscape:export-ydpi="87.310692" />
-    <rect
-       inkscape:export-ydpi="87.310692"
-       inkscape:export-xdpi="87.310692"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-       style="fill:url(#radialGradient4377);fill-opacity:1;stroke:#000000;stroke-width:0.00800946;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4375"
-       width="0.60816383"
-       height="2.5996506"
-       x="-288.35812"
-       y="-709.14349"
-       transform="matrix(0.00458966,-0.99998947,0.99998947,0.00458966,0,0)" />
-    <rect
-       transform="matrix(0.00458966,-0.99998947,0.99998947,0.00458966,0,0)"
-       y="-709.1402"
-       x="-289.06741"
-       height="2.5996509"
-       width="0.60816383"
-       id="rect4379"
-       style="fill:url(#radialGradient4381);fill-opacity:1;stroke:#000000;stroke-width:0.00800946;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-       inkscape:export-xdpi="87.310692"
-       inkscape:export-ydpi="87.310692" />
-    <rect
-       transform="matrix(0.99998947,0.00458966,-0.00458966,0.99998947,0,0)"
-       y="289.79721"
-       x="-702.53015"
-       height="2.5996513"
-       width="0.60816383"
-       id="rect4391"
-       style="fill:url(#radialGradient4393);fill-opacity:1;stroke:#000000;stroke-width:0.00800946;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ai-missile.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <g
-       id="g4411"
-       transform="matrix(0.14323209,0,0,0.06281666,-765.49341,285.42567)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/extra-harvester.png"
-       inkscape:export-xdpi="95.265663"
-       inkscape:export-ydpi="95.265663">
-      <path
-         sodipodi:nodetypes="cccccc"
-         id="path4413"
-         d="m 446.67105,502.52941 c 1.04509,-3.97845 1.65472,-6.14852 6.4447,-6.32935 -4.6158,-0.18084 -8.51868,-5.74552 -2.42235,-11.44194 -5.31252,4.52097 -15.12484,-2.7072 -15.12484,-2.7072 7.85125,7.68265 6.96724,14.05333 5.82543,21.00723 l 5.27706,-0.52874 z"
-         style="fill:#964104;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17747864px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#964104;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17747864px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 446.67105,504.57966 c 1.04509,3.97845 1.65472,6.14852 6.4447,6.32935 -4.6158,0.18084 -8.51868,5.74552 -2.42235,11.44194 -5.31252,-4.52097 -15.12484,2.7072 -15.12484,2.7072 7.85125,-7.68265 6.96724,-14.05333 5.82543,-21.00723 l 5.27706,0.52874 z"
-         id="path4415"
-         sodipodi:nodetypes="cccccc"
-         inkscape:connector-curvature="0" />
-    </g>
-    <path
-       style="fill:#864403;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.02589739px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m -701.84491,316.76067 c -0.56044,0 -0.72917,0.29539 -2.98224,0.29539 l -7.4e-4,10e-4 7.4e-4,7.4e-4 c 2.25307,0 2.4218,0.29539 2.98224,0.29539 0.56045,0 0.73392,-0.24117 0.89913,-0.24117 0.16521,0 0.13305,0.1222 0.45806,0.1222 0.325,0 0.42569,-0.17642 0.65877,-0.17642 l 7.3e-4,-7.4e-4 -7.3e-4,-10e-4 c -0.23308,0 -0.33377,-0.17723 -0.65877,-0.17723 -0.32501,0 -0.29285,0.12301 -0.45806,0.12301 -0.16521,0 -0.33868,-0.24117 -0.89913,-0.24117 z"
-       id="path4417"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/extra-harvester.png"
-       inkscape:export-xdpi="95.265663"
-       inkscape:export-ydpi="95.265663"
-       inkscape:connector-curvature="0" />
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient4431);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="path4419"
-       sodipodi:cx="455.29999"
-       sodipodi:cy="513.36218"
-       sodipodi:rx="0.89999998"
-       sodipodi:ry="2.8"
-       d="m 456.19999,513.36218 c 0,1.5464 -0.40295,2.8 -0.9,2.8 -0.49706,0 -0.9,-1.2536 -0.9,-2.8 0,-1.54639 0.40294,-2.8 0.9,-2.8 0.49705,0 0.9,1.25361 0.9,2.8 z"
-       transform="matrix(0.17732501,0,0,0.11399466,-780.93623,258.53674)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/extra-harvester.png"
-       inkscape:export-xdpi="95.265663"
-       inkscape:export-ydpi="95.265663" />
-    <g
-       id="g5380"
-       transform="matrix(0.26497307,0,0,0.26497307,-824.89613,163.47597)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-harvester.png"
-       inkscape:export-xdpi="66.98317"
-       inkscape:export-ydpi="66.98317">
-      <path
-         style="fill:url(#radialGradient5392);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.40174693;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 397.33181,639.22225 c 0,-0.90887 -2.18614,-2.16711 -6.26969,-2.09719 l 0,4.36355 c 4.08355,0.0699 6.26969,-1.18831 6.26969,-2.09719 l 0,-0.16917 z"
-         id="path5326"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.40174693;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 391.03424,637.12685 -1.87139,0.3367 0,0.27202 0,3.14253 0,0.27202 1.87139,0.3367 0,-0.94541 0,-2.46914 0,-0.94542 z"
-         id="path5328"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="g5384"
-       transform="matrix(0.17732501,0,0,0.17732501,-791.0269,242.19658)">
-      <path
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-         id="path5336"
-         d="m 397.33181,647.22225 c 0,-0.90887 -2.18614,-2.16711 -6.26969,-2.09719 l 0,4.36355 c 4.08355,0.0699 6.26969,-1.18831 6.26969,-2.09719 l 0,-0.16917 z"
-         style="fill:url(#radialGradient5390);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.40174693;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-         id="path5338"
-         d="m 391.03424,645.12685 -1.87139,0.3367 0,0.27202 0,3.14253 0,0.27202 1.87139,0.3367 0,-0.94541 0,-2.46914 0,-0.94542 z"
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.40174693;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="g5360"
-       transform="matrix(0.26497307,0,0,0.26497307,-825.95603,162.41608)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-harvester.png"
-       inkscape:export-xdpi="66.98317"
-       inkscape:export-ydpi="66.98317">
-      <path
-         transform="matrix(0.6176471,0,0,0.6176471,159.46332,245.62723)"
-         d="m 403.75,643.86218 c 0,4.41828 -3.58172,8 -8,8 -4.41828,0 -8,-3.58172 -8,-8 0,-4.41828 3.58172,-8 8,-8 4.41828,0 8,3.58172 8,8 z"
-         sodipodi:ry="8"
-         sodipodi:rx="8"
-         sodipodi:cy="643.86218"
-         sodipodi:cx="395.75"
-         id="path4452"
-         style="fill:url(#radialGradient5364);fill-opacity:1;stroke:#000000;stroke-opacity:1"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:nodetypes="cczccc"
-         style="fill:url(#radialGradient5366);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 408.23598,643.14837 c 0,-1.70291 -1.26745,-4.06032 -3.63498,-3.92933 0,0 1.85616,1.56212 1.85616,4.22795 0,2.66542 -1.85616,3.94765 -1.85616,3.94765 2.36753,0.13101 3.63498,-2.22643 3.63498,-3.92931 l 0,-0.31696 z"
-         id="path5234"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fighter.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92"
-         inkscape:connector-curvature="0" />
-    </g>
-    <path
-       style="fill:url(#radialGradient5219);fill-opacity:1;stroke:#000000;stroke-width:0.08866251;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -709.17391,332.4106 c -0.17769,0 -0.33481,0.0988 -0.4156,0.24382 -0.13439,0.0167 -0.25192,0.0889 -0.32695,0.19395 -0.053,-0.0504 -0.12617,-0.0831 -0.20503,-0.0831 -0.16314,0 -0.29369,0.13609 -0.29369,0.29923 0,0.16314 0.13055,0.2937 0.29369,0.2937 0.0585,0 0.1148,-0.015 0.1607,-0.0443 0.0743,0.16378 0.24076,0.28261 0.43223,0.28261 0.14046,0 0.26248,-0.0634 0.34911,-0.1607 0.11765,0.16757 0.31737,0.27707 0.53752,0.27707 0.3589,0 0.64834,-0.28944 0.64834,-0.64835 0,-0.3589 -0.28944,-0.65388 -0.64834,-0.65388 -0.10558,0 -0.20552,0.0273 -0.2937,0.072 -0.071,-0.0427 -0.14943,-0.072 -0.23828,-0.072 z m -1.71783,0.35465 c -0.16314,0 -0.2937,0.13609 -0.2937,0.29923 0,0.16314 0.13056,0.2937 0.2937,0.2937 0.16314,0 0.29923,-0.13056 0.29923,-0.2937 0,-0.16313 -0.1361,-0.29923 -0.29923,-0.29923 z"
-       id="path4418"
-       inkscape:export-filename="/media/pros/pyfl/art/projectiles/goo.png"
-       inkscape:export-xdpi="38"
-       inkscape:export-ydpi="38"
-       inkscape:connector-curvature="0" />
-    <g
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/extra-fighter.png"
-       transform="matrix(0.14323209,0,0,0.10343132,-765.49341,257.88097)"
-       id="g5223">
-      <path
-         style="fill:#964104;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17747864px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 446.67105,502.52941 c 1.04509,-3.97845 1.65472,-6.14852 6.4447,-6.32935 -4.6158,-0.18084 -8.51868,-5.74552 -2.42235,-11.44194 -5.31252,4.52097 -15.12484,-2.7072 -15.12484,-2.7072 7.85125,7.68265 6.96724,14.05333 5.82543,21.00723 l 5.27706,-0.52874 z"
-         id="path5225"
-         sodipodi:nodetypes="cccccc"
-         inkscape:connector-curvature="0" />
-      <path
-         sodipodi:nodetypes="cccccc"
-         id="path5227"
-         d="m 446.67105,504.57966 c 1.04509,3.97845 1.65472,6.14852 6.4447,6.32935 -4.6158,0.18084 -8.51868,5.74552 -2.42235,11.44194 -5.31252,-4.52097 -15.12484,2.7072 -15.12484,2.7072 7.85125,-7.68265 6.96724,-14.05333 5.82543,-21.00723 l 5.27706,0.52874 z"
-         style="fill:#964104;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.17747864px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         inkscape:connector-curvature="0" />
-    </g>
-    <path
-       style="fill:#864403;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.02589739px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-       d="m -700.3797,309.45255 c -0.325,0 -0.29473,0.12191 -0.45993,0.12191 -0.16521,0 -0.44255,0.0831 -1.003,0.0831 -0.56044,0 -0.73374,0.2937 -2.98682,0.29369 0.11182,0 0.19739,0.004 0.29924,0.006 -0.10186,0.001 -0.18741,0.006 -0.29924,0.006 l 0,0.006 c 2.25308,1e-5 2.42638,0.2937 2.98682,0.2937 0.56045,0 0.83779,0.0776 1.003,0.0776 0.1652,0 0.13493,0.12191 0.45993,0.12191 0.32501,10e-6 0.42635,-0.17732 0.65943,-0.17732 -0.23308,0 -0.33442,-0.17733 -0.65943,-0.17733 -0.325,0 -0.29473,0.0499 -0.45993,0.0499 -0.0715,-1e-5 -0.17134,-0.0955 -0.29924,-0.1995 0.1279,-0.10399 0.22774,-0.19949 0.29924,-0.19949 0.1652,0 0.13493,0.0554 0.45993,0.0554 0.32501,0 0.42635,-0.17733 0.65943,-0.17733 l 0,-0.006 c -0.23308,0 -0.33442,-0.17733 -0.65943,-0.17733 z"
-       id="path5229"
-       inkscape:connector-curvature="0" />
-    <path
-       transform="matrix(0.17732501,0,0,0.11399466,-780.8653,251.74512)"
-       d="m 456.19999,513.36218 c 0,1.5464 -0.40295,2.8 -0.9,2.8 -0.49706,0 -0.9,-1.2536 -0.9,-2.8 0,-1.54639 0.40294,-2.8 0.9,-2.8 0.49705,0 0.9,1.25361 0.9,2.8 z"
-       sodipodi:ry="2.8"
-       sodipodi:rx="0.89999998"
-       sodipodi:cy="513.36218"
-       sodipodi:cx="455.29999"
-       id="path5231"
-       style="fill:url(#radialGradient5243);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       sodipodi:type="arc" />
-    <path
-       sodipodi:type="arc"
-       style="fill:url(#radialGradient5247);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="path5245"
-       sodipodi:cx="455.29999"
-       sodipodi:cy="513.36218"
-       sodipodi:rx="0.89999998"
-       sodipodi:ry="2.8"
-       d="m 456.19999,513.36218 c 0,1.5464 -0.40295,2.8 -0.9,2.8 -0.49706,0 -0.9,-1.2536 -0.9,-2.8 0,-1.54639 0.40294,-2.8 0.9,-2.8 0.49705,0 0.9,1.25361 0.9,2.8 z"
-       transform="matrix(0.17732501,0,0,0.11399466,-780.8653,251.12448)" />
-    <path
-       sodipodi:type="star"
-       style="fill:url(#radialGradient5260);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-       id="path5256"
-       sodipodi:sides="3"
-       sodipodi:cx="477"
-       sodipodi:cy="994.36218"
-       sodipodi:r1="61.05735"
-       sodipodi:r2="30.528675"
-       sodipodi:arg1="0.55165498"
-       sodipodi:arg2="1.5988525"
-       inkscape:flatsided="false"
-       inkscape:rounded="0"
-       inkscape:randomized="0"
-       d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-       transform="matrix(-0.00527029,-0.17895367,0.22725583,-0.00415012,-901.53133,417.17897)"
-       inkscape:export-filename="/media/pros/pyfl/art/turrets/spotlight-red-small.png"
-       inkscape:export-xdpi="38"
-       inkscape:export-ydpi="38" />
-    <path
-       transform="matrix(-0.00411124,-0.09513712,0.17727734,-0.00220633,-853.14414,375.27809)"
-       d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-       inkscape:randomized="0"
-       inkscape:rounded="0"
-       inkscape:flatsided="false"
-       sodipodi:arg2="1.5988525"
-       sodipodi:arg1="0.55165498"
-       sodipodi:r2="30.528675"
-       sodipodi:r1="61.05735"
-       sodipodi:cy="994.36218"
-       sodipodi:cx="477"
-       sodipodi:sides="3"
-       id="path5258"
-       style="fill:url(#radialGradient5275);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-       sodipodi:type="star"
-       inkscape:export-filename="/media/pros/pyfl/art/turrets/spotlight-red-small.png"
-       inkscape:export-xdpi="38"
-       inkscape:export-ydpi="38" />
-    <rect
-       style="fill:url(#radialGradient5300);fill-opacity:1;stroke:#000000;stroke-width:0.02592898;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect5282"
-       width="2.1312284"
-       height="7.7744465"
-       x="242.61224"
-       y="912.26349"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <path
-       style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.04710076;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -920.09478,242.68197 -1.25476,0.15383 0,0.12422 0,1.43565 0,0.12435 1.25476,0.15382 0,-0.43191 0,-1.12801 0,-0.43191 z"
-       id="path5284"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       inkscape:connector-curvature="0" />
-    <path
-       id="path5286"
-       d="m -913.46801,242.76264 1.00433,0.14139 0,0.11429 0,1.31936 0,0.11415 -1.00433,0.14138 0,-0.39691 0,-1.03664 0,-0.39693 z"
-       style="fill:url(#radialGradient5303);fill-opacity:1;stroke:#000000;stroke-width:0.04039593;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92"
-       inkscape:connector-curvature="0" />
-    <rect
-       style="fill:url(#radialGradient5306);fill-opacity:1;stroke:#000000;stroke-width:0.00956253;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect5288"
-       width="1.0405773"
-       height="2.1657093"
-       x="243.49295"
-       y="918.42834"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <rect
-       transform="matrix(0,1,-1,0,0,0)"
-       y="913.47192"
-       x="242.76791"
-       height="0.38587901"
-       width="1.8199587"
-       id="rect5290"
-       style="fill:url(#radialGradient5309);fill-opacity:1;stroke:#000000;stroke-width:0.00533816;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <rect
-       transform="matrix(0,1,-1,0,0,0)"
-       y="914.09985"
-       x="242.70758"
-       height="1.8401026"
-       width="1.2344369"
-       id="rect5328"
-       style="fill:url(#radialGradient5330);fill-opacity:1;stroke:#000000;stroke-width:0.00960045;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       transform="matrix(0,1,-1,0,0,0)"
-       y="911.83936"
-       x="257.79211"
-       height="1.6326187"
-       width="1.7350316"
-       id="rect4545"
-       style="fill:url(#radialGradient4566);fill-opacity:1;stroke:#000000;stroke-width:0.01072091;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <path
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       style="fill:url(#radialGradient4568);fill-opacity:1;stroke:#000000;stroke-width:0.03269177;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -912.81933,257.91898 0.81279,0.11443 0,0.0924 0,1.06773 0,0.0924 -0.81279,0.11443 0,-0.32121 0,-0.83894 0,-0.32122 z"
-       id="path4549"
-       inkscape:connector-curvature="0" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       style="fill:url(#radialGradient4572);fill-opacity:1;stroke:#000000;stroke-width:0.00432008;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4553"
-       width="1.4728631"
-       height="0.31228563"
-       x="257.92325"
-       y="912.82251"
-       transform="matrix(0,1,-1,0,0,0)" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       style="fill:url(#radialGradient4574);fill-opacity:1;stroke:#000000;stroke-width:0.00423075;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4555"
-       width="1.002506"
-       height="0.44002628"
-       x="257.87265"
-       y="913.27161"
-       transform="matrix(0,1,-1,0,0,0)" />
-    <rect
-       style="fill:url(#radialGradient4580);fill-opacity:1;stroke:#000000;stroke-width:0.00747224;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4578"
-       width="1.7382631"
-       height="0.79161686"
-       x="257.73746"
-       y="918.57416"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <path
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       id="path4547"
-       d="m -919.2965,257.80064 -1.01547,0.12449 0,0.10056 0,1.16184 0,0.10056 1.01547,0.12449 0,-0.34953 0,-0.91289 0,-0.34954 z"
-       style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.03811788;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:connector-curvature="0" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-1.png"
-       transform="matrix(0,1,-1,0,0,0)"
-       style="fill:url(#radialGradient4584);fill-opacity:1;stroke:#000000;stroke-width:0.01059729;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4582"
-       width="2.0889261"
-       height="1.3249371"
-       x="257.5715"
-       y="916.98706" />
-    <rect
-       y="913.80353"
-       x="257.5715"
-       height="1.3249371"
-       width="2.0889261"
-       id="rect4590"
-       style="fill:url(#radialGradient4592);fill-opacity:1;stroke:#000000;stroke-width:0.01059729;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-1.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-1.png"
-       transform="matrix(0,1,-1,0,0,0)"
-       style="fill:url(#radialGradient4596);fill-opacity:1;stroke:#000000;stroke-width:0.01059729;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4594"
-       width="2.0889261"
-       height="1.3249371"
-       x="257.5715"
-       y="915.39526" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       transform="matrix(0,1,-1,0,0,0)"
-       y="918.52557"
-       x="258.45544"
-       height="0.65037143"
-       width="0.84509468"
-       id="rect4551"
-       style="fill:url(#radialGradient4570);fill-opacity:1;stroke:#000000;stroke-width:0.00472248;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-1.png"
-       y="912.66406"
-       x="-272.89642"
-       height="9.4186554"
-       width="0.89190841"
-       id="rect4695"
-       style="fill:url(#radialGradient4722);fill-opacity:1;stroke:#000000;stroke-width:0.01846248;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       transform="matrix(0,-1,-1,0,0,0)" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       transform="matrix(0,1,-1,0,0,0)"
-       y="911.83936"
-       x="271.55896"
-       height="1.6326187"
-       width="1.7350316"
-       id="rect4697"
-       style="fill:url(#radialGradient4725);fill-opacity:1;stroke:#000000;stroke-width:0.01072091;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <path
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       style="fill:url(#radialGradient4727);fill-opacity:1;stroke:#000000;stroke-width:0.03269177;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       d="m -912.81933,271.68578 0.81279,0.11442 0,0.0924 0,1.06773 0,0.0924 -0.81279,0.11441 0,-0.32122 0,-0.83894 0,-0.32122 z"
-       id="path4699"
-       inkscape:connector-curvature="0" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       style="fill:url(#radialGradient4729);fill-opacity:1;stroke:#000000;stroke-width:0.00432008;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4701"
-       width="1.4728631"
-       height="0.31228563"
-       x="271.69003"
-       y="912.82251"
-       transform="matrix(0,1,-1,0,0,0)" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       style="fill:url(#radialGradient4731);fill-opacity:1;stroke:#000000;stroke-width:0.00423075;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4703"
-       width="1.002506"
-       height="0.44002628"
-       x="271.6395"
-       y="913.27161"
-       transform="matrix(0,1,-1,0,0,0)" />
-    <rect
-       style="fill:url(#radialGradient4733);fill-opacity:1;stroke:#000000;stroke-width:0.00747224;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4705"
-       width="1.7382631"
-       height="0.79161686"
-       x="271.50424"
-       y="921.75781"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <path
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       id="path4707"
-       d="m -922.48017,271.56741 -1.01548,0.1245 0,0.10056 0,1.16184 0,0.10056 1.01548,0.12449 0,-0.34954 0,-0.91287 0,-0.34955 z"
-       style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.03811788;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       inkscape:connector-curvature="0" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-1.png"
-       transform="matrix(0,1,-1,0,0,0)"
-       style="fill:url(#radialGradient4735);fill-opacity:1;stroke:#000000;stroke-width:0.01059729;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4709"
-       width="2.0889261"
-       height="1.3249371"
-       x="271.33826"
-       y="916.98706" />
-    <rect
-       y="913.80353"
-       x="271.33826"
-       height="1.3249371"
-       width="2.0889261"
-       id="rect4711"
-       style="fill:url(#radialGradient4737);fill-opacity:1;stroke:#000000;stroke-width:0.01059729;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-1.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-1.png"
-       transform="matrix(0,1,-1,0,0,0)"
-       style="fill:url(#radialGradient4739);fill-opacity:1;stroke:#000000;stroke-width:0.01059729;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4713"
-       width="2.0889261"
-       height="1.3249371"
-       x="271.33826"
-       y="915.39526" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-harvester.png"
-       transform="matrix(0,1,-1,0,0,0)"
-       y="921.70917"
-       x="272.22223"
-       height="0.65037143"
-       width="0.84509468"
-       id="rect4715"
-       style="fill:url(#radialGradient4741);fill-opacity:1;stroke:#000000;stroke-width:0.00472248;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    <rect
-       y="920.17078"
-       x="271.33826"
-       height="1.3249371"
-       width="2.0889261"
-       id="rect4717"
-       style="fill:url(#radialGradient4743);fill-opacity:1;stroke:#000000;stroke-width:0.01059729;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       transform="matrix(0,1,-1,0,0,0)"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-1.png"
-       inkscape:export-xdpi="92"
-       inkscape:export-ydpi="92" />
-    <rect
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-1.png"
-       transform="matrix(0,1,-1,0,0,0)"
-       style="fill:url(#radialGradient4745);fill-opacity:1;stroke:#000000;stroke-width:0.01059729;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-       id="rect4719"
-       width="2.0889261"
-       height="1.3249371"
-       x="271.33826"
-       y="918.57898" />
-    <path
-       inkscape:export-ydpi="92"
-       inkscape:export-xdpi="92"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-0.png"
-       d="m 511,260.36218 c 0,51.91477 -42.08523,94 -94,94 -51.91477,0 -94,-42.08523 -94,-94 0,-51.91476 42.08523,-94 94,-94 51.91477,0 94,42.08524 94,94 z"
-       sodipodi:ry="94"
-       sodipodi:rx="94"
-       sodipodi:cy="260.36218"
-       sodipodi:cx="417"
-       id="path5121"
-       style="fill:none;stroke:none"
-       sodipodi:type="arc"
-       transform="matrix(0.1408539,0,0,0.1408539,-751.65704,228.29638)" />
-    <g
-       id="g7158"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/early-cargo.png"
-       inkscape:export-xdpi="72"
-       inkscape:export-ydpi="72"
-       transform="matrix(0.17732501,0,0,0.17732501,-712.18492,130.67902)">
-      <g
-         transform="translate(-84,-321)"
-         id="g9192">
-        <rect
-           style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.92721903;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9188"
-           width="35.994556"
-           height="13.443801"
-           x="838.58032"
-           y="820.06274"
-           transform="matrix(0.5,0.8660254,-0.8660254,0.5,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           transform="matrix(0.5,-0.8660254,-0.8660254,-0.5,0,0)"
-           y="-345.14755"
-           x="-1179.6232"
-           height="13.443801"
-           width="35.994556"
-           id="rect9190"
-           style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.92721903;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      </g>
-      <rect
-         style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.57189411;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect8143"
-         width="20.894966"
-         height="86.524452"
-         x="833.76282"
-         y="279.10986"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <g
-         transform="translate(-80,-317.03229)"
-         id="g9102">
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           transform="matrix(0,1,-1,0,0,0)"
-           y="174.96118"
-           x="1137.6921"
-           height="33.00893"
-           width="47.100937"
-           id="rect8151"
-           style="fill:url(#radialGradient9222);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           transform="matrix(0,1,-1,0,0,0)"
-           style="fill:url(#radialGradient9224);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8153"
-           width="47.100937"
-           height="33.00893"
-           x="1137.6921"
-           y="211.75078" />
-        <rect
-           y="248.41743"
-           x="1137.6921"
-           height="33.00893"
-           width="47.100937"
-           id="rect8288"
-           style="fill:url(#radialGradient9226);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/home/xymus/flagship1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-      </g>
-      <rect
-         transform="translate(-80,-537.91653)"
-         mask="url(#mask9121)"
-         clip-path="none"
-         style="fill:url(#linearGradient8217);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect8167"
-         width="117.31371"
-         height="52.071068"
-         x="-287.04163"
-         y="1356.0913"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <g
-         transform="translate(-80,-319.60787)"
-         id="g9206">
-        <path
-           transform="matrix(-0.1227841,-0.4083379,0.7741906,-0.2097482,-945.11813,1544.4522)"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="false"
-           sodipodi:arg2="1.5988525"
-           sodipodi:arg1="0.55165498"
-           sodipodi:r2="30.528675"
-           sodipodi:r1="61.05735"
-           sodipodi:cy="994.36218"
-           sodipodi:cx="477"
-           sodipodi:sides="3"
-           id="path9155"
-           style="fill:url(#radialGradient9218);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           sodipodi:type="star"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           inkscape:transform-center-x="-38.267021"
-           inkscape:transform-center-y="-18.153346" />
-        <path
-           inkscape:transform-center-y="18.153349"
-           inkscape:transform-center-x="-38.267021"
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-           sodipodi:type="star"
-           style="fill:url(#radialGradient9220);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           id="path9160"
-           sodipodi:sides="3"
-           sodipodi:cx="477"
-           sodipodi:cy="994.36218"
-           sodipodi:r1="61.05735"
-           sodipodi:r2="30.528675"
-           sodipodi:arg1="0.55165498"
-           sodipodi:arg2="1.5988525"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           transform="matrix(-0.1227841,0.4083379,0.7741906,0.2097482,-945.11813,783.18417)" />
-      </g>
-      <g
-         transform="translate(-85.072255,-318.36543)"
-         id="g8245">
-        <path
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-           sodipodi:nodetypes="csssc"
-           id="path8171"
-           d="m -274.47237,1177.6584 c -5.71368,0 -26.32077,-10.7002 -26.32077,-14.8855 0,-3.9881 20.60709,-15.2798 26.32077,-15.2798 5.71368,0 10.35087,6.757 10.35087,15.0827 0,8.3256 -4.63719,15.0826 -10.35087,15.0826 z"
-           style="fill:url(#radialGradient8203);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <rect
-           transform="translate(-246,662.66667)"
-           style="fill:url(#linearGradient8286);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8173"
-           width="43"
-           height="37"
-           x="-59"
-           y="481.36218"
-           clip-path="url(#clipPath6409)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <path
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-           sodipodi:nodetypes="csssc"
-           id="path8175"
-           d="m -269.54338,1173.5187 c -1.42037,0 0.18711,-4.5081 0.18711,-10.5486 0,-6.0405 -1.60748,-11.3373 -0.18711,-11.3373 1.42037,0 3.95324,5.0996 3.95324,11.1401 0,6.0405 -2.53287,10.7458 -3.95324,10.7458 z"
-           style="fill:url(#radialGradient8207);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         transform="translate(-84,-319.13156)"
-         id="g9196">
-        <rect
-           style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.68990612;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9164"
-           width="19.75042"
-           height="13.564315"
-           x="1129.7787"
-           y="298.07852"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <g
-           transform="matrix(0.7106575,0,0,0.9927764,-400.17305,35.326925)"
-           id="g9166">
-          <path
-             inkscape:export-ydpi="76"
-             inkscape:export-xdpi="76"
-             inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-             sodipodi:nodetypes="cccccccccc"
-             id="path9168"
-             d="m 138.00882,1099.8817 c -3.26787,0.1511 -5.14321,10.3644 -7.8713,12.3366 l -1.03523,0 c 0.28266,0 0.54063,0.023 0.7675,0.1312 l 0.26773,0.175 c 2.82552,2.0425 4.49343,12.9037 8.24612,12.2928 8.33887,0.3464 21.01131,-2.7269 23.89948,-12.2928 l 0,-0.3062 c -2.88817,-9.5659 -15.56061,-12.6392 -23.89948,-12.2928 -0.1294,-0.021 -0.2581,-0.049 -0.37482,-0.044 z"
-             style="fill:url(#radialGradient9210);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.66411126;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             inkscape:connector-curvature="0" />
-          <rect
-             transform="matrix(0.4381351,0,0,1.0066387,173.42985,91.76923)"
-             inkscape:export-ydpi="76"
-             inkscape:export-xdpi="76"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/civilian.png"
-             clip-path="url(#clipPath6699)"
-             y="997.36218"
-             x="-107"
-             height="33"
-             width="88"
-             id="rect9170"
-             style="fill:url(#linearGradient9212);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        </g>
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           transform="matrix(0,1,-1,0,0,0)"
-           y="298.07852"
-           x="1177.1548"
-           height="13.564315"
-           width="19.75042"
-           id="rect9176"
-           style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.68990612;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <g
-           id="g9178"
-           transform="matrix(0.7106575,0,0,0.9927764,-400.17305,82.703079)">
-          <path
-             style="fill:url(#radialGradient9214);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.66411126;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             d="m 138.00882,1099.8817 c -3.26787,0.1511 -5.14321,10.3644 -7.8713,12.3366 l -1.03523,0 c 0.28266,0 0.54063,0.023 0.7675,0.1312 l 0.26773,0.175 c 2.82552,2.0425 4.49343,12.9037 8.24612,12.2928 8.33887,0.3464 21.01131,-2.7269 23.89948,-12.2928 l 0,-0.3062 c -2.88817,-9.5659 -15.56061,-12.6392 -23.89948,-12.2928 -0.1294,-0.021 -0.2581,-0.049 -0.37482,-0.044 z"
-             id="path9180"
-             sodipodi:nodetypes="cccccccccc"
-             inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-             inkscape:export-xdpi="76"
-             inkscape:export-ydpi="76"
-             inkscape:connector-curvature="0" />
-          <rect
-             style="fill:url(#linearGradient9216);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect9182"
-             width="88"
-             height="33"
-             x="-107"
-             y="997.36218"
-             clip-path="url(#clipPath6699)"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/civilian.png"
-             inkscape:export-xdpi="76"
-             inkscape:export-ydpi="76"
-             transform="matrix(0.4381351,0,0,1.0066387,173.42985,91.76923)" />
-        </g>
-      </g>
-    </g>
-    <g
-       id="g10003"
-       transform="matrix(0.17732501,0,0,0.17732501,-660.79221,93.950056)">
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-         transform="matrix(0.04961838,0.3656302,0.6711268,-0.1141416,-1102.7476,962.5843)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path8086"
-         style="fill:url(#radialGradient10018);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         inkscape:transform-center-y="11.333333"
-         inkscape:transform-center-x="-32.466162"
-         sodipodi:type="star"
-         style="fill:url(#radialGradient10020);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path8090"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.04961838,-0.3656302,0.6711268,0.1141416,-1102.7476,1154.8067)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.7674368;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7955"
-         width="8.1129646"
-         height="40.860153"
-         x="1054.639"
-         y="439.74393"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <g
-         transform="matrix(1.4140738,0,0,1,-219.6575,65.00004)"
-         id="g8050">
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient10022);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5956915;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -160.6657,983.66443 c -3.2712,0.1214 -5.14846,8.3303 -7.87934,9.9154 l -1.03628,0 c 0.28295,0 0.54119,0.0187 0.76829,0.1055 l 0.26799,0.1406 c 2.82841,1.6417 4.49803,10.37127 8.25455,9.88027 8.34738,0.2784 21.03277,-2.1917 23.92388,-9.88027 l 0,-0.2461 c -2.89111,-7.6885 -15.5765,-10.1587 -23.92388,-9.8803 -0.12954,-0.0169 -0.25837,-0.0394 -0.37521,-0.0351 z"
-           id="path7967"
-           sodipodi:nodetypes="cccccccccc"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           style="fill:url(#linearGradient10024);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect7969"
-           width="88"
-           height="33"
-           x="-107"
-           y="997.36218"
-           clip-path="url(#clipPath6699)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/civilian.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           transform="matrix(0.4385825,0,0,0.8090801,-125.2085,173.39981)" />
-      </g>
-      <path
-         inkscape:connector-curvature="0"
-         id="path7999"
-         d="m -482.00979,1010.2014 c 10.81369,5.2207 11.90232,30.2204 12.39821,48.5098 -0.49625,18.2869 -1.59,43.2603 -12.39821,48.4784 24.49269,0.3335 35.00596,-21.3368 37.32166,-34.2476 -12.92635,0.09 -15.54507,-7.6127 -15.75182,-14.2308 0.20348,-6.6212 2.81636,-14.3205 15.75182,-14.2308 -2.3157,-12.9108 -12.82897,-34.6125 -37.32166,-34.279 z"
-         style="fill:url(#radialGradient10026);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.75587988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient10028);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.75587988;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -482.00979,1010.2014 c 10.81369,5.2207 11.90232,30.2204 12.39821,48.5098 -0.49625,18.2869 -1.59,43.2603 -12.39821,48.4784 24.49269,0.3335 35.00596,-21.3368 37.32166,-34.2476 -12.92635,0.09 -15.54507,-7.6127 -15.75182,-14.2308 0.20348,-6.6212 2.81636,-14.3205 15.75182,-14.2308 -2.3157,-12.9108 -12.82897,-34.6125 -37.32166,-34.279 z"
-         id="path8058" />
-      <rect
-         transform="translate(-395,65)"
-         mask="none"
-         style="fill:url(#linearGradient10030);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect8003"
-         width="47"
-         height="107"
-         x="-92.333336"
-         y="940.1955"
-         clip-path="url(#clipPath8078)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/nomad-fs-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         y="473.78644"
-         x="1046.3077"
-         height="13.522738"
-         width="24.775547"
-         id="rect7993"
-         style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.77151936;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <g
-         id="g8028"
-         transform="matrix(0.7084792,0,0,1.2453699,-575.56799,-326.60682)">
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:url(#radialGradient10032);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.66411126;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 138.00882,1099.8817 c -3.26787,0.1511 -5.14321,10.3644 -7.8713,12.3366 l -1.03523,0 c 0.28266,0 0.54063,0.023 0.7675,0.1312 l 0.26773,0.175 c 2.82552,2.0425 4.49343,12.9037 8.24612,12.2928 8.33887,0.3464 21.01131,-2.7269 23.89948,-12.2928 l 0,-0.3062 c -2.88817,-9.5659 -15.56061,-12.6392 -23.89948,-12.2928 -0.1294,-0.021 -0.2581,-0.049 -0.37482,-0.044 z"
-           id="path8030"
-           sodipodi:nodetypes="cccccccccc"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <rect
-           style="fill:url(#linearGradient10034);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8032"
-           width="88"
-           height="33"
-           x="-107"
-           y="997.36218"
-           clip-path="url(#clipPath6699)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/civilian.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           transform="matrix(0.4381351,0,0,1.0066387,173.42985,91.76923)" />
-      </g>
-    </g>
-    <g
-       id="human-base-cargo"
-       transform="matrix(0.17732501,0,0,0.17732501,-673.23297,68.682698)"
-       inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-base-mining.png"
-       inkscape:export-xdpi="72"
-       inkscape:export-ydpi="72"
-       inkscape:label="#g7066">
-      <g
-         style="filter:url(#filter7062)"
-         transform="matrix(0.6889987,0.6889987,-0.6889987,0.6889987,514.29268,686.90218)"
-         id="g5841">
-        <path
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           id="path5298"
-           d="m -556.62576,966.51747 c 0.005,0.18246 0.0156,0.36055 0.0156,0.54428 0,10.24805 -8.31965,18.56772 -18.56772,18.56772 -0.18593,0 -0.37521,-0.0101 -0.55983,-0.0156 l 0,16.63943 c 0.18462,-0.01 0.3739,-0.015 0.55983,-0.015 10.24806,0 18.56772,8.3196 18.56772,18.5676 0,0.1809 -0.0104,0.3648 -0.0156,0.5444 l 16.63942,0 c -0.005,-0.1797 -0.0155,-0.3635 -0.0155,-0.5444 0,-10.248 8.31964,-18.5676 18.5677,-18.5676 0.18374,0 0.36183,0.01 0.54429,0.015 l 0,-16.63943 c -0.18246,0.005 -0.36055,0.0156 -0.54429,0.0156 -10.24806,10e-6 -18.5677,-8.31966 -18.5677,-18.56772 0,-0.18379 0.0102,-0.36177 0.0155,-0.54428 l -16.63942,0 z"
-           style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.398444;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <g
-           id="g5829">
-          <g
-             inkscape:transform-center-x="-45.333334"
-             transform="translate(-0.8794326,-2.5375978e-6)"
-             id="g5621">
-            <rect
-               inkscape:export-ydpi="76"
-               inkscape:export-xdpi="76"
-               inkscape:export-filename="/home/xymus/flagship1.png"
-               transform="matrix(0,1,-1,0,0,0)"
-               y="481.02155"
-               x="974.97052"
-               height="39.010643"
-               width="39.010643"
-               id="rect5585"
-               style="fill:url(#radialGradient7341);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-            <rect
-               mask="url(#mask5603)"
-               clip-path="none"
-               style="fill:url(#linearGradient7343);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-               id="rect5383"
-               width="47.810165"
-               height="44.26965"
-               x="-546.61609"
-               y="1085.274"
-               inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-               inkscape:export-xdpi="76"
-               inkscape:export-ydpi="76"
-               transform="translate(21.276595,-113.47518)" />
-          </g>
-          <g
-             id="g5639"
-             transform="matrix(-1,0,0,1,-1095.7482,-2.5375978e-6)"
-             inkscape:transform-center-x="45.333311">
-            <rect
-               style="fill:url(#radialGradient7345);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-               id="rect5642"
-               width="39.010643"
-               height="39.010643"
-               x="974.97052"
-               y="481.02155"
-               transform="matrix(0,1,-1,0,0,0)"
-               inkscape:export-filename="/home/xymus/flagship1.png"
-               inkscape:export-xdpi="76"
-               inkscape:export-ydpi="76" />
-            <rect
-               transform="translate(21.276595,-113.47518)"
-               inkscape:export-ydpi="76"
-               inkscape:export-xdpi="76"
-               inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-               y="1085.274"
-               x="-546.61609"
-               height="44.26965"
-               width="47.810165"
-               id="rect5644"
-               style="fill:url(#linearGradient7347);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-               clip-path="none"
-               mask="url(#mask5603)" />
-          </g>
-          <rect
-             inkscape:export-ydpi="76"
-             inkscape:export-xdpi="76"
-             inkscape:export-filename="/home/xymus/flagship1.png"
-             transform="scale(-1,-1)"
-             y="-1059.6798"
-             x="529.35065"
-             height="39.010643"
-             width="39.010643"
-             id="rect5652"
-             style="fill:url(#radialGradient7349);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             mask="url(#mask5603)"
-             clip-path="none"
-             style="fill:url(#linearGradient7351);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect5654"
-             width="47.810165"
-             height="44.26965"
-             x="-546.61609"
-             y="1085.274"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-             inkscape:export-xdpi="76"
-             inkscape:export-ydpi="76"
-             transform="matrix(0,1,-1,0,559.09506,1561.978)" />
-          <rect
-             inkscape:export-ydpi="76"
-             inkscape:export-xdpi="76"
-             inkscape:export-filename="/home/xymus/flagship1.png"
-             y="928.1875"
-             x="-567.27698"
-             height="39.010643"
-             width="39.010643"
-             id="rect5662"
-             style="fill:url(#radialGradient7353);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             mask="url(#mask5603)"
-             clip-path="none"
-             style="fill:url(#linearGradient7355);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect5664"
-             width="47.810165"
-             height="44.26965"
-             x="-546.61609"
-             y="1085.274"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-             inkscape:export-xdpi="76"
-             inkscape:export-ydpi="76"
-             transform="matrix(0,-1,1,0,-1655.7227,425.88934)" />
-        </g>
-      </g>
-      <rect
-         mask="url(#mask7014)"
-         y="928.13745"
-         x="-614.33337"
-         height="132.66667"
-         width="133"
-         id="rect6023"
-         style="opacity:0.8;fill:#000000;fill-opacity:0.98380564;stroke:none" />
-      <g
-         id="g5855">
-        <path
-           style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.398444;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -556.62576,966.51747 c 0.005,0.18246 0.0156,0.36055 0.0156,0.54428 0,10.24805 -8.31965,18.56772 -18.56772,18.56772 -0.18593,0 -0.37521,-0.0101 -0.55983,-0.0156 l 0,16.63943 c 0.18462,-0.01 0.3739,-0.015 0.55983,-0.015 10.24806,0 18.56772,8.3196 18.56772,18.5676 0,0.1809 -0.0104,0.3648 -0.0156,0.5444 l 16.63942,0 c -0.005,-0.1797 -0.0155,-0.3635 -0.0155,-0.5444 0,-10.248 8.31964,-18.5676 18.5677,-18.5676 0.18374,0 0.36183,0.01 0.54429,0.015 l 0,-16.63943 c -0.18246,0.005 -0.36055,0.0156 -0.54429,0.0156 -10.24806,10e-6 -18.5677,-8.31966 -18.5677,-18.56772 0,-0.18379 0.0102,-0.36177 0.0155,-0.54428 l -16.63942,0 z"
-           id="path5857"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           inkscape:connector-curvature="0" />
-        <g
-           id="g5859">
-          <g
-             id="g5861"
-             transform="translate(-0.8794326,-2.5375978e-6)"
-             inkscape:transform-center-x="-45.333334">
-            <rect
-               style="fill:url(#radialGradient7357);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-               id="rect5863"
-               width="39.010643"
-               height="39.010643"
-               x="974.97052"
-               y="481.02155"
-               transform="matrix(0,1,-1,0,0,0)"
-               inkscape:export-filename="/home/xymus/flagship1.png"
-               inkscape:export-xdpi="76"
-               inkscape:export-ydpi="76" />
-            <rect
-               transform="translate(21.276595,-113.47518)"
-               inkscape:export-ydpi="76"
-               inkscape:export-xdpi="76"
-               inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-               y="1085.274"
-               x="-546.61609"
-               height="44.26965"
-               width="47.810165"
-               id="rect5865"
-               style="fill:url(#linearGradient7359);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-               clip-path="none"
-               mask="url(#mask5603)" />
-          </g>
-          <g
-             inkscape:transform-center-x="45.333311"
-             transform="matrix(-1,0,0,1,-1095.7482,-2.5375978e-6)"
-             id="g5867">
-            <rect
-               inkscape:export-ydpi="76"
-               inkscape:export-xdpi="76"
-               inkscape:export-filename="/home/xymus/flagship1.png"
-               transform="matrix(0,1,-1,0,0,0)"
-               y="481.02155"
-               x="974.97052"
-               height="39.010643"
-               width="39.010643"
-               id="rect5869"
-               style="fill:url(#radialGradient7361);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-            <rect
-               mask="url(#mask5603)"
-               clip-path="none"
-               style="fill:url(#linearGradient7363);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-               id="rect5871"
-               width="47.810165"
-               height="44.26965"
-               x="-546.61609"
-               y="1085.274"
-               inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-               inkscape:export-xdpi="76"
-               inkscape:export-ydpi="76"
-               transform="translate(21.276595,-113.47518)" />
-          </g>
-          <rect
-             style="fill:url(#radialGradient7365);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect5873"
-             width="39.010643"
-             height="39.010643"
-             x="529.35065"
-             y="-1059.6798"
-             transform="scale(-1,-1)"
-             inkscape:export-filename="/home/xymus/flagship1.png"
-             inkscape:export-xdpi="76"
-             inkscape:export-ydpi="76" />
-          <rect
-             transform="matrix(0,1,-1,0,559.09506,1561.978)"
-             inkscape:export-ydpi="76"
-             inkscape:export-xdpi="76"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-             y="1085.274"
-             x="-546.61609"
-             height="44.26965"
-             width="47.810165"
-             id="rect5875"
-             style="fill:url(#linearGradient7367);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             clip-path="none"
-             mask="url(#mask5603)" />
-          <rect
-             style="fill:url(#radialGradient7369);fill-opacity:1;stroke:#000000;stroke-width:0.9893561;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect5877"
-             width="39.010643"
-             height="39.010643"
-             x="-567.27698"
-             y="928.1875"
-             inkscape:export-filename="/home/xymus/flagship1.png"
-             inkscape:export-xdpi="76"
-             inkscape:export-ydpi="76" />
-          <rect
-             transform="matrix(0,-1,1,0,-1655.7227,425.88934)"
-             inkscape:export-ydpi="76"
-             inkscape:export-xdpi="76"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-             y="1085.274"
-             x="-546.61609"
-             height="44.26965"
-             width="47.810165"
-             id="rect5879"
-             style="fill:url(#linearGradient7371);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             clip-path="none"
-             mask="url(#mask5603)" />
-        </g>
-      </g>
-      <g
-         transform="matrix(0.9236055,-0.3833442,0.3833442,0.9236055,-423.38297,-134.85079)"
-         id="g5506">
-        <path
-           sodipodi:type="star"
-           style="fill:url(#radialGradient7373);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           id="path5305"
-           sodipodi:sides="3"
-           sodipodi:cx="477"
-           sodipodi:cy="994.36218"
-           sodipodi:r1="61.05735"
-           sodipodi:r2="30.528675"
-           sodipodi:arg1="0.55165498"
-           sodipodi:arg2="1.5988525"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           transform="matrix(0.1729575,-0.0805575,0.1400129,0.3264692,-754.73261,744.85446)" />
-        <path
-           transform="matrix(0.1792622,-0.06533672,-0.1318446,-0.3298527,-517.55342,1317.4558)"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="false"
-           sodipodi:arg2="1.5988525"
-           sodipodi:arg1="0.55165498"
-           sodipodi:r2="30.528675"
-           sodipodi:r1="61.05735"
-           sodipodi:cy="994.36218"
-           sodipodi:cx="477"
-           sodipodi:sides="3"
-           id="path5307"
-           style="fill:url(#radialGradient7375);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           sodipodi:type="star" />
-        <path
-           transform="matrix(0.06533672,-0.1792622,0.3298527,0.1318446,-870.87137,964.13773)"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="false"
-           sodipodi:arg2="1.5988525"
-           sodipodi:arg1="0.55165498"
-           sodipodi:r2="30.528675"
-           sodipodi:r1="61.05735"
-           sodipodi:cy="994.36218"
-           sodipodi:cx="477"
-           sodipodi:sides="3"
-           id="path5309"
-           style="fill:url(#radialGradient7377);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           sodipodi:type="star" />
-        <path
-           sodipodi:type="star"
-           style="fill:url(#radialGradient7379);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           id="path5311"
-           sodipodi:sides="3"
-           sodipodi:cx="477"
-           sodipodi:cy="994.36218"
-           sodipodi:r1="61.05735"
-           sodipodi:r2="30.528675"
-           sodipodi:arg1="0.55165498"
-           sodipodi:arg2="1.5988525"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           transform="matrix(0.0805575,-0.1729575,-0.3264692,-0.1400129,-298.27012,1201.3169)" />
-        <path
-           sodipodi:type="star"
-           style="fill:url(#radialGradient7382);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           id="path5313"
-           sodipodi:sides="3"
-           sodipodi:cx="477"
-           sodipodi:cy="994.36218"
-           sodipodi:r1="61.05735"
-           sodipodi:r2="30.528675"
-           sodipodi:arg1="0.55165498"
-           sodipodi:arg2="1.5988525"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           transform="matrix(-0.0805575,-0.1729575,0.3264692,-0.1400129,-797.84743,1201.3169)" />
-        <path
-           transform="matrix(-0.06533672,-0.1792622,-0.3298527,0.1318446,-225.24618,964.13776)"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="false"
-           sodipodi:arg2="1.5988525"
-           sodipodi:arg1="0.55165498"
-           sodipodi:r2="30.528675"
-           sodipodi:r1="61.05735"
-           sodipodi:cy="994.36218"
-           sodipodi:cx="477"
-           sodipodi:sides="3"
-           id="path5315"
-           style="fill:url(#radialGradient7384);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           sodipodi:type="star" />
-        <path
-           transform="matrix(-0.1792622,-0.06533672,0.1318446,-0.3298527,-578.56418,1317.4558)"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="false"
-           sodipodi:arg2="1.5988525"
-           sodipodi:arg1="0.55165498"
-           sodipodi:r2="30.528675"
-           sodipodi:r1="61.05735"
-           sodipodi:cy="994.36218"
-           sodipodi:cx="477"
-           sodipodi:sides="3"
-           id="path5317"
-           style="fill:url(#radialGradient7386);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           sodipodi:type="star" />
-        <path
-           sodipodi:type="star"
-           style="fill:url(#radialGradient7388);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-           id="path5319"
-           sodipodi:sides="3"
-           sodipodi:cx="477"
-           sodipodi:cy="994.36218"
-           sodipodi:r1="61.05735"
-           sodipodi:r2="30.528675"
-           sodipodi:arg1="0.55165498"
-           sodipodi:arg2="1.5988525"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           transform="matrix(-0.1729575,-0.0805575,-0.1400129,0.3264692,-341.38499,744.85444)" />
-        <path
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           transform="matrix(3.3315534,0,0,3.3315534,-2390.4589,-1344.468)"
-           d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 -3.31371,0 -6,-2.68629 -6,-6 0,-3.31371 2.68629,-6 6,-6 3.31371,0 6,2.68629 6,6 z"
-           sodipodi:ry="6"
-           sodipodi:rx="6"
-           sodipodi:cy="702.11218"
-           sodipodi:cx="553"
-           id="path5322"
-           style="fill:url(#radialGradient7390);fill-opacity:1;stroke:#000000;stroke-width:0.19625002;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:type="arc"
-           style="fill:url(#radialGradient7392);fill-opacity:1;stroke:none"
-           id="path5324"
-           sodipodi:cx="553"
-           sodipodi:cy="702.11218"
-           sodipodi:rx="6"
-           sodipodi:ry="6"
-           d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 -3.31371,0 -6,-2.68629 -6,-6 0,-3.31371 2.68629,-6 6,-6 3.31371,0 6,2.68629 6,6 z"
-           transform="matrix(3.3556167,0,0,3.3556167,-2403.7148,-1361.4397)"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-      </g>
-    </g>
-    <rect
-       y="236.61911"
-       x="-988.46368"
-       height="10.106177"
-       width="10.106177"
-       id="rect13520"
-       style="fill:url(#radialGradient13522);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.14712936;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-    <g
-       id="g9980"
-       transform="matrix(0.20506613,0,0,0.20506613,-904.26816,278.30433)">
-      <rect
-         y="154.56139"
-         x="-299.16644"
-         height="39.7659"
-         width="39.7659"
-         id="rect12987"
-         style="fill:url(#radialGradient13504);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.57892627;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         transform="scale(-1,-1)"
-         y="-154.12138"
-         x="265.71674"
-         height="20.678268"
-         width="20.678268"
-         id="rect13524"
-         style="fill:url(#radialGradient13770);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         transform="scale(-1,-1)"
-         y="-166.22485"
-         x="259.26157"
-         height="20.678268"
-         width="20.678268"
-         id="rect13532"
-         style="fill:url(#radialGradient13767);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         transform="matrix(0,-1,1,0,0,0)"
-         style="fill:url(#radialGradient13752);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13586"
-         width="20.678268"
-         height="20.678268"
-         x="-187.20416"
-         y="-259.76746" />
-      <rect
-         transform="matrix(0,-1,1,0,0,0)"
-         style="fill:url(#radialGradient13749);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13588"
-         width="20.678268"
-         height="20.678268"
-         x="-193.65933"
-         y="-271.87088" />
-      <rect
-         transform="scale(-1,-1)"
-         style="fill:url(#radialGradient13758);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13542"
-         width="20.678268"
-         height="20.678268"
-         x="252.8064"
-         y="-174.29382" />
-      <rect
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient13733);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13560"
-         width="20.678268"
-         height="20.678268"
-         x="160.07071"
-         y="298.7995" />
-      <rect
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient13730);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13562"
-         width="20.678268"
-         height="20.678268"
-         x="153.61554"
-         y="286.69604" />
-      <rect
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient13775);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13564"
-         width="20.678268"
-         height="20.678268"
-         x="114.88452"
-         y="268.13745" />
-      <rect
-         transform="matrix(0,1,-1,0,0,0)"
-         y="271.36502"
-         x="134.25003"
-         height="20.678268"
-         width="20.678268"
-         id="rect13566"
-         style="fill:url(#radialGradient13724);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         transform="matrix(0,1,-1,0,0,0)"
-         y="278.62708"
-         x="147.16039"
-         height="20.678268"
-         width="20.678268"
-         id="rect13568"
-         style="fill:url(#radialGradient13721);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         style="fill:url(#radialGradient13715);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13638"
-         width="20.678268"
-         height="20.678268"
-         x="-292.85019"
-         y="193.15347" />
-      <rect
-         style="fill:url(#radialGradient13712);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13640"
-         width="20.678268"
-         height="20.678268"
-         x="-299.30536"
-         y="181.05002" />
-      <rect
-         style="fill:url(#radialGradient13709);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13642"
-         width="20.678268"
-         height="20.678268"
-         x="-338.03638"
-         y="162.49139" />
-      <rect
-         y="165.71899"
-         x="-318.67087"
-         height="20.678268"
-         width="20.678268"
-         id="rect13644"
-         style="fill:url(#radialGradient13706);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         y="172.98108"
-         x="-305.76053"
-         height="20.678268"
-         width="20.678268"
-         id="rect13646"
-         style="fill:url(#radialGradient13703);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         transform="matrix(0,-1,1,0,0,0)"
-         style="fill:url(#radialGradient13746);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13590"
-         width="20.678268"
-         height="20.678268"
-         x="-232.39038"
-         y="-290.4295" />
-      <rect
-         transform="matrix(0,-1,1,0,0,0)"
-         y="-287.2019"
-         x="-213.02484"
-         height="20.678268"
-         width="20.678268"
-         id="rect13592"
-         style="fill:url(#radialGradient13743);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         transform="matrix(0,-1,1,0,0,0)"
-         y="-279.93985"
-         x="-200.1145"
-         height="20.678268"
-         width="20.678268"
-         id="rect13594"
-         style="fill:url(#radialGradient13740);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         transform="scale(-1,-1)"
-         style="fill:url(#radialGradient13761);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13538"
-         width="20.678268"
-         height="20.678268"
-         x="239.89606"
-         y="-181.55588" />
-      <rect
-         transform="matrix(0,-1,1,0,0,0)"
-         y="-242.01572"
-         x="-183.97656"
-         height="20.678268"
-         width="20.678268"
-         id="rect13584"
-         style="fill:url(#radialGradient13755);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.30104166;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-    </g>
-    <rect
-       y="253.41394"
-       x="-1014.3226"
-       height="7.2764478"
-       width="7.2764478"
-       id="rect13789"
-       style="fill:url(#radialGradient13791);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10593313;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-    <rect
-       style="fill:url(#radialGradient13795);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10593313;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-       id="rect13793"
-       width="7.2764478"
-       height="7.2764478"
-       x="-1005.5048"
-       y="235.98331" />
-    <g
-       id="g9892"
-       transform="matrix(0.20506613,0,0,0.20506613,-871.90264,280.92856)">
-      <rect
-         y="17.895721"
-         x="-474.92862"
-         height="35.483421"
-         width="35.483421"
-         id="rect13817"
-         style="fill:url(#radialGradient9924);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.51658034;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         y="28.895721"
-         x="-585.92859"
-         height="35.483421"
-         width="35.483421"
-         id="rect13801"
-         style="fill:url(#radialGradient9926);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.51658034;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         y="12.852676"
-         x="-563.97168"
-         height="29.569517"
-         width="29.569517"
-         id="rect13777"
-         style="fill:url(#radialGradient9928);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.43048361;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         style="fill:url(#radialGradient9930);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.45918253;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13781"
-         width="31.540819"
-         height="31.540819"
-         x="-551.95728"
-         y="22.867027" />
-      <rect
-         y="20.838318"
-         x="-533.98602"
-         height="27.598217"
-         width="27.598217"
-         id="rect13785"
-         style="fill:url(#radialGradient9932);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40178472;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         style="fill:url(#radialGradient9934);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13797"
-         width="23.655615"
-         height="23.655615"
-         x="-513.01471"
-         y="25.809631" />
-      <rect
-         style="fill:url(#radialGradient9936);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.51658034;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13805"
-         width="35.483421"
-         height="35.483421"
-         x="-494.92862"
-         y="16.895721" />
-      <rect
-         y="1.8526764"
-         x="-482.97168"
-         height="29.569517"
-         width="29.569517"
-         id="rect13809"
-         style="fill:url(#radialGradient9938);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.43048361;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         style="fill:url(#radialGradient9940);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.43048361;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13813"
-         width="29.569517"
-         height="29.569517"
-         x="-483.97165"
-         y="40.852692" />
-      <rect
-         style="fill:url(#radialGradient9942);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.51658034;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13821"
-         width="35.483421"
-         height="35.483421"
-         x="-595.92859"
-         y="-4.1042786" />
-      <rect
-         y="15.895721"
-         x="-610.92859"
-         height="35.483421"
-         width="35.483421"
-         id="rect13825"
-         style="fill:url(#radialGradient9944);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.51658034;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         style="fill:url(#radialGradient9946);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.51658034;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect13829"
-         width="35.483421"
-         height="35.483421"
-         x="-602.92859"
-         y="45.895721" />
-      <g
-         transform="translate(-100,-250)"
-         id="g13866">
-        <rect
-           y="340.80963"
-           x="-536.01471"
-           height="23.655615"
-           width="23.655615"
-           id="rect13845"
-           style="fill:url(#radialGradient9948);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        <rect
-           style="fill:url(#radialGradient9950);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.51658034;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           id="rect13861"
-           width="35.483421"
-           height="35.483421"
-           x="-520.92859"
-           y="292.89572" />
-        <rect
-           style="fill:url(#radialGradient9952);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.51658034;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           id="rect13833"
-           width="35.483421"
-           height="35.483421"
-           x="-526.92859"
-           y="314.89572" />
-        <rect
-           y="363.80963"
-           x="-534.01471"
-           height="23.655615"
-           width="23.655615"
-           id="rect13837"
-           style="fill:url(#radialGradient9954);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        <rect
-           style="fill:url(#radialGradient9956);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           id="rect13841"
-           width="23.655615"
-           height="23.655615"
-           x="-525.01471"
-           y="344.80963" />
-        <rect
-           style="fill:url(#radialGradient9958);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           id="rect13849"
-           width="23.655615"
-           height="23.655615"
-           x="-540.01471"
-           y="320.80963" />
-        <rect
-           y="307.80963"
-           x="-553.01471"
-           height="23.655615"
-           width="23.655615"
-           id="rect13853"
-           style="fill:url(#radialGradient9960);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        <rect
-           style="fill:url(#radialGradient9962);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           id="rect13857"
-           width="23.655615"
-           height="23.655615"
-           x="-533.01471"
-           y="304.80963" />
-      </g>
-      <g
-         transform="matrix(1,0,0,-1,-100,322.27487)"
-         id="g13876">
-        <rect
-           style="fill:url(#radialGradient9964);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           id="rect13878"
-           width="23.655615"
-           height="23.655615"
-           x="-536.01471"
-           y="340.80963" />
-        <rect
-           y="292.89572"
-           x="-520.92859"
-           height="35.483421"
-           width="35.483421"
-           id="rect13880"
-           style="fill:url(#radialGradient9966);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.51658034;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        <rect
-           y="314.89572"
-           x="-526.92859"
-           height="35.483421"
-           width="35.483421"
-           id="rect13882"
-           style="fill:url(#radialGradient9968);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.51658034;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        <rect
-           style="fill:url(#radialGradient9970);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           id="rect13884"
-           width="23.655615"
-           height="23.655615"
-           x="-534.01471"
-           y="363.80963" />
-        <rect
-           y="344.80963"
-           x="-525.01471"
-           height="23.655615"
-           width="23.655615"
-           id="rect13886"
-           style="fill:url(#radialGradient9972);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        <rect
-           y="320.80963"
-           x="-540.01471"
-           height="23.655615"
-           width="23.655615"
-           id="rect13888"
-           style="fill:url(#radialGradient9974);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        <rect
-           style="fill:url(#radialGradient9976);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           id="rect13890"
-           width="23.655615"
-           height="23.655615"
-           x="-553.01471"
-           y="307.80963" />
-        <rect
-           y="304.80963"
-           x="-533.01471"
-           height="23.655615"
-           width="23.655615"
-           id="rect13892"
-           style="fill:url(#radialGradient9978);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.34438691;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      </g>
-    </g>
-    <g
-       id="0enemy4"
-       transform="matrix(0,0.2124429,-0.2124429,0,-1008.7218,480.15051)"
-       inkscape:label="#g8498">
-      <path
-         id="path14688"
-         d="m -511.13133,229.92812 -23.73734,1.51269 0,1.22211 0,14.11841 0,1.22211 23.73734,1.51269 0,-4.24749 0,-11.09304 0,-4.24748 z"
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.64243132;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92"
-         inkscape:connector-curvature="0" />
-      <g
-         transform="translate(-100,-240)"
-         id="g14392">
-        <path
-           style="fill:url(#radialGradient8518);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40645409;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           d="m -211.15625,780.5625 4.25,42.96875 -4.25,42.96875 11.6875,-10.53125 3.15625,-32.03125 0.0937,0 -0.0312,-0.40625 0.0312,-0.40625 -0.0937,0 -3.15625,-32.03125 -11.6875,-10.53125 z"
-           id="rect13989"
-           transform="translate(-145,-343.80275)"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:url(#radialGradient8520);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40645409;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           d="m -193.125,787 -10.28125,36.125 -0.21875,0 0.125,0.40625 -0.125,0.40625 0.21875,0 10.28125,36.125 7,-14.125 -6.375,-22.40625 6.375,-22.40625 -7,-14.125 z"
-           id="rect13985"
-           transform="translate(-145,-343.80275)"
-           inkscape:connector-curvature="0" />
-        <rect
-           transform="matrix(0.810638,-0.5855477,0.9725813,0.232563,0,0)"
-           y="132.63065"
-           x="-731.745"
-           height="73.533791"
-           width="17.863205"
-           id="rect13975"
-           style="fill:url(#radialGradient8522);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.52763748;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        <rect
-           style="fill:url(#radialGradient8524);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848505;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           id="rect13965"
-           width="15.586174"
-           height="50.511223"
-           x="-679.02515"
-           y="96.866531"
-           transform="matrix(0.8036491,-0.5951035,0.9233175,0.3840375,0,0)" />
-        <rect
-           transform="matrix(0.9912629,-0.1319007,0.6221791,0.782875,0,0)"
-           y="426.55652"
-           x="-707.69171"
-           height="50.511238"
-           width="15.586171"
-           id="rect13961"
-           style="fill:url(#radialGradient8526);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848508;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        <rect
-           style="fill:url(#radialGradient8528);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.408485;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           id="rect13957"
-           width="15.586174"
-           height="50.511215"
-           x="-478.73419"
-           y="667.58844"
-           transform="matrix(0.8584252,0.5129388,6.3203069e-4,0.9999998,0,0)" />
-        <rect
-           style="fill:url(#radialGradient8530);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.52763748;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           id="rect14073"
-           width="17.863205"
-           height="73.533791"
-           x="499.27933"
-           y="-893.4173"
-           transform="matrix(0.810638,0.5855477,0.9725813,-0.232563,0,0)" />
-        <rect
-           transform="matrix(0.8036491,0.5951035,0.9233175,-0.3840375,0,0)"
-           y="-801.69507"
-           x="353.33795"
-           height="50.511223"
-           width="15.586174"
-           id="rect14075"
-           style="fill:url(#radialGradient8532);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848505;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        <rect
-           style="fill:url(#radialGradient8534);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848508;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           id="rect14077"
-           width="15.586171"
-           height="50.511238"
-           x="-12.032002"
-           y="-681.77661"
-           transform="matrix(0.9912629,0.1319007,0.6221791,-0.782875,0,0)" />
-        <rect
-           transform="matrix(0.8584252,-0.5129388,6.3203069e-4,-0.9999998,0,0)"
-           y="-292.21848"
-           x="-478.02753"
-           height="50.511215"
-           width="15.586174"
-           id="rect14079"
-           style="fill:url(#radialGradient8536);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.408485;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        <path
-           style="fill:url(#radialGradient8538);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.55027634;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           d="m -277.53125,784.90625 -21.90625,5.8125 33.6875,32.8125 -33.6875,32.8125 21.90625,5.8125 39.1875,-38.21875 0.84375,0 -0.40625,-0.40625 0.40625,-0.40625 -0.84375,0 -39.1875,-38.21875 z"
-           transform="translate(-145,-343.80275)"
-           id="rect13952"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:url(#radialGradient8540);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.55027634;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           d="m -279.21875,783.375 13.8125,40.15625 -13.8125,40.15625 22.1875,-4.6875 12.0625,-35.0625 0.28125,0 -0.125,-0.40625 0.125,-0.40625 -0.28125,0 -12.0625,-35.0625 -22.1875,-4.6875 z"
-           transform="translate(-145,-343.80275)"
-           id="rect13948"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:url(#radialGradient8542);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.55027634;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           d="m -345.23958,464.1035 0,15.21875 0,0.8125 0,15.21875 19.4375,-11.625 0,-3.59375 0,-0.8125 0,-3.59375 -19.4375,-11.625 z"
-           id="rect13926"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:url(#radialGradient8544);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.55027634;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           d="m -363.90625,456.1035 0,23.21875 0,0.8125 0,23.21875 19.4375,-11.625 0,-11.59375 0,-0.8125 0,-11.59375 -19.4375,-11.625 z"
-           id="rect13936"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:url(#radialGradient8546);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.55027634;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           d="m -237.90625,791.90625 0,31.21875 0,0.8125 0,31.21875 19.4375,-11.625 0,-19.59375 0,-0.8125 0,-19.59375 -19.4375,-11.625 z"
-           id="rect13940"
-           transform="translate(-145,-343.80275)"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:url(#radialGradient8548);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.55027634;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-           d="m -259.40625,785.1875 4.15625,38.34375 -4.15625,38.34375 20.5625,-9.46875 3.0625,-28.46875 0.0937,0 -0.0312,-0.40625 0.0312,-0.40625 -0.0937,0 -3.0625,-28.46875 -20.5625,-9.46875 z"
-           id="rect13944"
-           transform="translate(-145,-343.80275)"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <g
-       id="g9403"
-       transform="matrix(0.08604878,0,0,0.08604878,-929.9003,230.86461)">
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.64243132;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -511.13133,371.28221 -23.73734,1.51269 0,1.22211 0,14.11841 0,1.22211 23.73734,1.51269 0,-4.24749 0,-11.09304 0,-4.24748 z"
-         id="path14367" />
-      <rect
-         transform="matrix(0.99556127,0.09411568,0.5779981,0.81603811,0,0)"
-         y="498.36588"
-         x="-837.10077"
-         height="73.533791"
-         width="17.863205"
-         id="rect14347"
-         style="fill:url(#radialGradient15030);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.52763748;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         style="fill:url(#radialGradient15027);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.52763748;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect14349"
-         width="17.863205"
-         height="73.533791"
-         x="-757.35858"
-         y="164.56517"
-         transform="matrix(0.94016388,-0.34072259,0.87148099,0.49042929,0,0)" />
-      <rect
-         style="fill:url(#radialGradient15024);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848508;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect14351"
-         width="15.58616"
-         height="50.511223"
-         x="-699.70471"
-         y="308.52402"
-         transform="matrix(0.99140115,-0.13085781,0.6213551,0.7835291,0,0)" />
-      <rect
-         transform="matrix(0.93091943,0.36522461,0.1646102,0.9863587,0,0)"
-         y="562.1557"
-         x="-612.41876"
-         height="50.511272"
-         width="15.586151"
-         id="rect14353"
-         style="fill:url(#radialGradient15021);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848511;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         style="fill:url(#radialGradient15018);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.408485;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect14355"
-         width="15.586172"
-         height="50.511215"
-         x="-270.42682"
-         y="654.32996"
-         transform="matrix(0.5021051,0.86480661,-0.48426961,0.87491882,0,0)" />
-      <rect
-         style="fill:url(#radialGradient14986);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.52763748;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect14321"
-         width="17.863205"
-         height="73.533791"
-         x="-256.86426"
-         y="-501.04935"
-         transform="matrix(0.99556126,-0.09411574,0.5779981,-0.81603811,0,0)" />
-      <rect
-         transform="matrix(0.94016388,0.34072259,0.87148099,-0.49042929,0,0)"
-         y="-779.23853"
-         x="117.49645"
-         height="73.533791"
-         width="17.863205"
-         id="rect14317"
-         style="fill:url(#radialGradient14983);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.52763748;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient14979);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.32887241;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m -436.19505,353.12065 4.26873,28.00755 -4.26873,28.00755 11.73902,-6.8644 3.17015,-20.87835 0.0942,0 -0.0314,-0.2648 0.0314,-0.2648 -0.0942,0 -3.17015,-20.87835 -11.73902,-6.8644 z"
-         id="path14237" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient14976);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.37730351;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m -418.11858,349.68565 -10.29322,31.09289 -0.219,0 0.12514,0.34966 -0.12514,0.34966 0.219,0 10.29322,31.09289 7.00816,-12.15743 -6.38243,-19.28512 6.38243,-19.28512 -7.00816,-12.15743 z"
-         id="path14239" />
-      <rect
-         transform="matrix(0.81063797,-0.58554768,0.97258133,0.23256301,0,0)"
-         y="-50.061756"
-         x="-635.91595"
-         height="73.533791"
-         width="17.863205"
-         id="rect14241"
-         style="fill:url(#radialGradient14973);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.52763748;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         style="fill:url(#radialGradient14970);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.52763748;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect14249"
-         width="17.863205"
-         height="73.533791"
-         x="342.08887"
-         y="-865.21912"
-         transform="matrix(0.81063797,0.58554768,0.97258133,-0.23256301,0,0)" />
-      <rect
-         transform="matrix(0.99140115,0.13085781,0.6213551,-0.7835291,0,0)"
-         y="-570.63641"
-         x="-148.69623"
-         height="50.511223"
-         width="15.586167"
-         id="rect14251"
-         style="fill:url(#radialGradient14967);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848508;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         style="fill:url(#radialGradient14964);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848511;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect14253"
-         width="15.586165"
-         height="50.511272"
-         x="-466.44467"
-         y="-263.37027"
-         transform="matrix(0.93091943,-0.36522461,0.1646102,-0.9863587,0,0)" />
-      <rect
-         transform="matrix(0.5021051,-0.86480661,-0.48426961,-0.87491882,0,0)"
-         y="209.07086"
-         x="-699.87024"
-         height="50.511215"
-         width="15.586172"
-         id="rect14255"
-         style="fill:url(#radialGradient14961);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.408485;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient14958);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.55027634;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m -522.53125,342.5032 -21.90625,5.8125 33.6875,32.8125 -33.6875,32.8125 21.90625,5.8125 39.1875,-38.21875 0.84375,0 -0.40625,-0.40625 0.40625,-0.40625 -0.84375,0 -39.1875,-38.21875 z"
-         id="path14257" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient14955);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.55027634;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m -524.21875,340.97195 13.8125,40.15625 -13.8125,40.15625 22.1875,-4.6875 12.0625,-35.0625 0.28125,0 -0.125,-0.40625 0.125,-0.40625 -0.28125,0 -12.0625,-35.0625 -22.1875,-4.6875 z"
-         id="path14259" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient14952);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.50569606;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m -482.92854,354.48091 0,26.30498 0,0.68462 0,26.30498 19.48208,-9.79525 0,-16.50973 0,-0.68462 0,-16.50973 -19.48208,-9.79525 z"
-         id="path14265" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient14949);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.55027634;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m -504.40625,342.78445 4.15625,38.34375 -4.15625,38.34375 20.5625,-9.46875 3.0625,-28.46875 0.0937,0 -0.0312,-0.40625 0.0312,-0.40625 -0.0937,0 -3.0625,-28.46875 -20.5625,-9.46875 z"
-         id="path14267" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path14301"
-         d="m -462.9692,362.44025 0,18.44789 0,0.48012 0,18.44789 19.5634,-6.86948 0,-11.57841 0,-0.48012 0,-11.57841 -19.5634,-6.86948 z"
-         style="fill:url(#radialGradient14946);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.42437366;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient14943);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.37698457;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m -442.99289,366.41656 0,14.52266 0,0.37796 0,14.52266 19.61078,-5.40783 0,-9.11483 0,-0.37796 0,-9.11483 -19.61078,-5.40783 z"
-         id="path14305" />
-      <rect
-         transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)"
-         y="-35.118179"
-         x="-575.40039"
-         height="27.598217"
-         width="27.598217"
-         id="rect14313"
-         style="fill:url(#radialGradient14940);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40178472;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-    </g>
-    <g
-       id="g10123"
-       transform="translate(40.531278,-43.359041)">
-      <g
-         transform="matrix(0.20506613,0,0,0.20506613,-910.77887,263.48355)"
-         id="g14924">
-        <g
-           id="g14899">
-          <rect
-             style="fill:url(#radialGradient10146);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848508;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-             id="rect14750"
-             width="15.586154"
-             height="50.511215"
-             x="-5.1725564"
-             y="-818.74164"
-             transform="matrix(0.9990201,-0.04425871,0.4749996,-0.879986,0,0)" />
-          <rect
-             transform="matrix(0.8528477,-0.5221598,-0.01014439,-0.9999485,0,0)"
-             y="-489.58685"
-             x="-439.19659"
-             height="50.511269"
-             width="15.586154"
-             id="rect14752"
-             style="fill:url(#radialGradient10148);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848511;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-          <rect
-             style="fill:url(#radialGradient10150);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848503;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-             id="rect14754"
-             width="15.586171"
-             height="50.511215"
-             x="-832.28247"
-             y="96.296951"
-             transform="matrix(0.3433899,-0.9391929,-0.6295979,-0.7769212,0,0)" />
-        </g>
-        <g
-           id="g14910"
-           transform="matrix(1,0,0,-1,0,1319.6871)">
-          <rect
-             transform="matrix(0.9990201,-0.04425871,0.4749996,-0.879986,0,0)"
-             y="-818.74164"
-             x="-5.1725564"
-             height="50.511215"
-             width="15.586154"
-             id="rect14912"
-             style="fill:url(#radialGradient10152);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848508;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-          <rect
-             style="fill:url(#radialGradient10154);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848511;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-             id="rect14914"
-             width="15.586154"
-             height="50.511269"
-             x="-439.19659"
-             y="-489.58685"
-             transform="matrix(0.8528477,-0.5221598,-0.01014439,-0.9999485,0,0)" />
-          <rect
-             transform="matrix(0.3433899,-0.9391929,-0.6295979,-0.7769212,0,0)"
-             y="96.296951"
-             x="-832.28247"
-             height="50.511215"
-             width="15.586171"
-             id="rect14916"
-             style="fill:url(#radialGradient10156);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.40848503;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-        </g>
-      </g>
-      <path
-         inkscape:connector-curvature="0"
-         id="path14766"
-         d="m -977.01377,395.77824 0,2.97811 0,0.0775 0,2.97811 4.0215,-1.10897 0,-1.86914 0,-0.0775 0,-1.86914 -4.0215,-1.10897 z"
-         style="fill:url(#radialGradient10158);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.07730676;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <rect
-         style="fill:url(#radialGradient10160);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10746649;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="rect14768"
-         width="7.3817735"
-         height="7.3817735"
-         x="-977.86792"
-         y="-413.88641"
-         transform="matrix(0.70710678,-0.70710678,0.70710678,0.70710678,0,0)" />
-      <g
-         transform="matrix(0.20506613,0,0,0.20506613,-910.77887,263.43583)"
-         id="g14934">
-        <path
-           inkscape:connector-curvature="0"
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.71729606;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -421.16876,621.31964 -23.66248,1.89176 0,1.52836 0,17.65636 0,1.52836 23.66248,1.89175 0,-5.31187 0,-13.87286 0,-5.31186 z"
-           id="path14722" />
-        <path
-           inkscape:connector-curvature="0"
-           id="path14891"
-           d="m -421.16876,674.3362 -23.66248,1.89175 0,1.52836 0,17.65636 0,1.52836 23.66248,1.89176 0,-5.31188 0,-13.87285 0,-5.31186 z"
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.71729606;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <path
-           inkscape:connector-curvature="0"
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.71729606;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m -415.16876,648.3362 -23.66248,1.89175 0,1.52836 0,17.65636 0,1.52836 23.66248,1.89176 0,-5.31188 0,-13.87285 0,-5.31186 z"
-           id="path14897" />
-      </g>
-      <path
-         inkscape:connector-curvature="0"
-         id="path14756"
-         d="m -998.10159,385.75433 -3.39971,1.96244 5.22806,11.07833 -5.22806,11.07833 3.39971,1.96245 6.08156,-12.90362 0.13095,0 -0.063,-0.13716 0.063,-0.13716 -0.13095,0 -6.08156,-12.90361 z"
-         style="fill:url(#radialGradient10162);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.12595989;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path14758"
-         d="m -997.76043,386.88056 2.82341,11.91454 -2.82341,11.91454 4.53534,-1.3908 2.46569,-10.4032 0.0575,0 -0.0256,-0.12054 0.0256,-0.12053 -0.0575,0 -2.46569,-10.4032 -4.53534,-1.39081 z"
-         style="fill:url(#radialGradient10164);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.1355169;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path14760"
-         d="m -989.30454,393.33065 0,5.39426 0,0.14039 0,5.39426 3.99511,-2.00867 0,-3.38559 0,-0.14039 0,-3.38559 -3.99511,-2.00867 z"
-         style="fill:url(#radialGradient10166);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.10370113;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient10168);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.08702466;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m -985.21156,394.96284 0,3.78303 0,0.0985 0,3.78304 4.01179,-1.4087 0,-2.37434 0,-0.0985 0,-2.37434 -4.01179,-1.40869 z"
-         id="path14764" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient10170);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.0971;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         d="m -991.25597,392.15462 0.74726,6.64048 -0.74726,6.64048 3.69698,-1.63982 0.55062,-4.9303 0.0169,0 -0.006,-0.0704 0.006,-0.0703 -0.0169,0 -0.55062,-4.9303 -3.69698,-1.63983 z"
-         id="path14893" />
-      <path
-         inkscape:connector-curvature="0"
-         id="path14762"
-         d="m -993.70799,389.49754 0.74419,9.29756 -0.74419,9.29756 3.68177,-2.29597 0.54834,-6.90308 0.0168,0 -0.006,-0.0985 0.006,-0.0985 -0.0168,0 -0.54834,-6.90308 -3.68177,-2.29598 z"
-         style="fill:url(#radialGradient10172);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:0.11465897;stroke-linecap:round;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" />
-    </g>
-    <g
-       id="g10036"
-       transform="matrix(0.17732501,0,0,0.17732501,-538.32596,113.25322)">
-      <rect
-         style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect15040"
-         width="33.835915"
-         height="163.36963"
-         x="1214.7959"
-         y="399.80002"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         style="fill:url(#radialGradient10095);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect15044"
-         width="38.394318"
-         height="15.302893"
-         x="1212.5167"
-         y="423.54587"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/home/xymus/flagship1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         y="448.00156"
-         x="1212.5167"
-         height="15.302893"
-         width="38.394318"
-         id="rect15046"
-         style="fill:url(#radialGradient10097);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/home/xymus/flagship1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         style="fill:url(#radialGradient10099);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect15048"
-         width="38.394318"
-         height="15.302893"
-         x="1212.5167"
-         y="472.45724"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/home/xymus/flagship1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         y="496.91293"
-         x="1212.5167"
-         height="15.302893"
-         width="38.394318"
-         id="rect15050"
-         style="fill:url(#radialGradient10101);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/home/xymus/flagship1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         transform="matrix(0.09116836,-0.6582883,1.2331222,0.205503,-1729.8276,1316.7311)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path15052"
-         style="fill:url(#radialGradient10103);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient10105);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path15054"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.09116836,0.6582883,1.2331222,-0.205503,-1729.8276,1146.7657)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient10107);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -414.2631,1212.4931 c 0.14445,-2.5999 1.90726,-6.0848 6.48467,-11.4967 -7.12041,8.7049 22.37847,17.4097 48.82574,17.4097 -29.82955,1.5354 -24.67722,10.119 -22.21951,12.8711 l 0.85826,0 c 0,0 -0.20926,0.1968 -0.44504,0.4295 0.24674,0.2449 0.44504,0.4438 0.44504,0.4438 l -0.85826,0 c -2.45771,2.7521 -7.61004,11.3357 22.21951,12.8712 -26.44727,0 -55.94615,8.7048 -48.82574,17.4096 -16.13272,-19.0737 2.71501,-14.2997 4.03703,-30.7246 -0.95392,-11.7508 -10.88617,-12.6531 -10.5217,-19.2136 z"
-         id="path15058"
-         inkscape:export-filename="/home/xymus/flagship1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient10109);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -518.65317,1179.461 c -40.50905,-0.3529 -28.34704,31.7843 -79.6875,32.0313 26.47962,-0.097 43.87526,9.9518 44,19.9062 l 15.125,0 c 0.80992,-19.401 2.4991,-46.3576 20.5625,-51.9375 z m -20.5625,52.625 -15.125,0.031 c -0.12474,9.9545 -17.52038,19.9725 -44,19.875 51.34046,0.2471 39.17845,32.3842 79.6875,32.0313 -18.0634,-5.5799 -19.75258,-32.5364 -20.5625,-51.9375 z"
-         id="path15060" />
-      <rect
-         transform="translate(-601.80942,731.80479)"
-         y="461.36218"
-         x="183"
-         height="77"
-         width="106"
-         id="rect15062"
-         style="fill:url(#linearGradient10111);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         clip-path="url(#clipPath6331)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         clip-path="url(#clipPath6373)"
-         style="fill:url(#linearGradient10113);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect15064"
-         width="106"
-         height="45"
-         x="-117"
-         y="477.36218"
-         transform="translate(-401.80942,731.80479)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         transform="translate(-601.80942,731.80479)"
-         style="fill:url(#linearGradient10115);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect15066"
-         width="99"
-         height="115"
-         x="-5"
-         y="442.36218"
-         clip-path="url(#clipPath6325)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient10117);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -530.28179,1246.7966 c -5.71368,0 -26.32077,-10.7003 -26.32077,-14.8856 0,-3.9881 20.60709,-15.2798 26.32077,-15.2798 5.71368,0 10.35087,6.757 10.35087,15.0827 0,8.3256 -4.63719,15.0827 -10.35087,15.0827 z"
-         id="path15068"
-         sodipodi:nodetypes="csssc"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         clip-path="url(#clipPath6409)"
-         y="481.36218"
-         x="-59"
-         height="37"
-         width="43"
-         id="rect15070"
-         style="fill:url(#linearGradient10119);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="translate(-501.80942,731.80479)" />
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:url(#radialGradient10121);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -525.3528,1242.6568 c -1.42037,0 0.18711,-4.5081 0.18711,-10.5486 0,-6.0405 -1.60748,-11.3373 -0.18711,-11.3373 1.42037,0 3.95324,5.0996 3.95324,11.1401 0,6.0406 -2.53287,10.7458 -3.95324,10.7458 z"
-         id="path15072"
-         sodipodi:nodetypes="csssc"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/human-fs-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-    </g>
-    <g
-       id="g10053"
-       transform="matrix(0.17732501,0,0,0.17732501,-536.81314,66.734053)">
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         y="421.76572"
-         x="1354.7616"
-         height="141.43823"
-         width="33.90451"
-         id="rect15136"
-         style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.9314028;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient10069);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect15140"
-         width="38.394318"
-         height="15.302893"
-         x="1352.5167"
-         y="448.00156" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         y="472.45724"
-         x="1352.5167"
-         height="15.302893"
-         width="38.394318"
-         id="rect15142"
-         style="fill:url(#radialGradient10071);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient10073);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect15144"
-         width="38.394318"
-         height="15.302893"
-         x="1352.5167"
-         y="496.91293" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         sodipodi:type="star"
-         style="fill:url(#radialGradient10075);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path15146"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.09116836,-0.6582883,1.2331222,0.205503,-1729.8276,1456.7311)" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         transform="matrix(0.09116836,0.6582883,1.2331222,-0.205503,-1729.8276,1286.7657)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path15148"
-         style="fill:url(#radialGradient10077);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         id="path15150"
-         d="m -438.2631,1352.4931 c 0.14445,-2.5999 1.90726,-6.0848 6.48467,-11.4967 -7.12041,8.7049 22.37847,17.4097 48.82574,17.4097 -29.82955,1.5354 -24.67722,10.119 -22.21951,12.8711 l 0.85826,0 c 0,0 -0.20926,0.1968 -0.44504,0.4295 0.24674,0.2449 0.44504,0.4438 0.44504,0.4438 l -0.85826,0 c -2.45771,2.7521 -7.61004,11.3357 22.21951,12.8712 -26.44727,0 -55.94615,8.7048 -48.82574,17.4096 -16.13272,-19.0737 2.71501,-14.2997 4.03703,-30.7246 -0.95392,-11.7508 -10.88617,-12.6531 -10.5217,-19.2136 z"
-         style="fill:url(#radialGradient10079);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         id="path15152"
-         d="m -518.65317,1319.461 c -40.50905,-0.3529 -28.34704,31.7843 -79.6875,32.0313 26.47962,-0.097 43.87526,9.9518 44,19.9062 l 15.125,0 c 0.80992,-19.401 2.4991,-46.3576 20.5625,-51.9375 z m -20.5625,52.625 -15.125,0.031 c -0.12474,9.9545 -17.52038,19.9725 -44,19.875 51.34046,0.2471 39.17845,32.3842 79.6875,32.0313 -18.0634,-5.5799 -19.75258,-32.5364 -20.5625,-51.9375 z"
-         style="fill:url(#radialGradient10081);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         clip-path="url(#clipPath6331)"
-         style="fill:url(#linearGradient10083);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect15154"
-         width="106"
-         height="77"
-         x="183"
-         y="461.36218"
-         transform="translate(-625.80942,871.80479)" />
-      <rect
-         transform="translate(224.19058,711.80479)"
-         mask="none"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         y="637.36218"
-         x="-743"
-         height="45"
-         width="106"
-         id="rect15156"
-         style="fill:url(#linearGradient10085);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         clip-path="url(#clipPath15244)" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         clip-path="url(#clipPath6325)"
-         y="442.36218"
-         x="-5"
-         height="115"
-         width="99"
-         id="rect15158"
-         style="fill:url(#linearGradient10087);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="translate(-601.80942,871.80479)" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         sodipodi:nodetypes="csssc"
-         id="path15161"
-         d="m -530.28179,1386.7966 c -5.71368,0 -26.32077,-10.7003 -26.32077,-14.8856 0,-3.9881 20.60709,-15.2798 26.32077,-15.2798 5.71368,0 10.35087,6.757 10.35087,15.0827 0,8.3256 -4.63719,15.0827 -10.35087,15.0827 z"
-         style="fill:url(#radialGradient10089);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         transform="translate(-501.80942,871.80479)"
-         style="fill:url(#linearGradient10091);fill-opacity:1;stroke:#000000;stroke-width:0;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect15163"
-         width="43"
-         height="37"
-         x="-59"
-         y="481.36218"
-         clip-path="url(#clipPath6409)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/human-ai-fs-0.png"
-         sodipodi:nodetypes="csssc"
-         id="path15165"
-         d="m -525.3528,1382.6568 c -1.42037,0 0.18711,-4.5081 0.18711,-10.5486 0,-6.0405 -1.60748,-11.3373 -0.18711,-11.3373 1.42037,0 3.95324,5.0996 3.95324,11.1401 0,6.0406 -2.53287,10.7458 -3.95324,10.7458 z"
-         style="fill:url(#radialGradient10093);fill-opacity:1;fill-rule:nonzero;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    </g>
-    <g
-       id="g5835"
-       transform="matrix(0.17732501,0,0,0.17732501,-790.09507,218.80068)">
-      <rect
-         inkscape:transform-center-y="-0.84380591"
-         inkscape:transform-center-x="13.140439"
-         transform="matrix(-0.1996539,-0.9798665,-0.9917446,0.128229,0,0)"
-         y="-348.00293"
-         x="-527.92078"
-         height="9.1381941"
-         width="3.339313"
-         id="rect2765"
-         style="fill:url(#radialGradient5825);fill-opacity:1;stroke:#000000;stroke-width:0.03518798;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         style="fill:url(#radialGradient5822);fill-opacity:1;stroke:#000000;stroke-width:0.03553731;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2767"
-         width="3.1279557"
-         height="9.9503231"
-         x="247.03175"
-         y="-552.4646"
-         transform="matrix(-0.2131445,0.9770207,-0.9108003,-0.4128473,0,0)" />
-      <rect
-         transform="matrix(-0.2131445,0.9770207,-0.9108003,-0.4128473,0,0)"
-         y="-552.4646"
-         x="247.03175"
-         height="9.9503231"
-         width="3.1279557"
-         id="rect2769"
-         style="fill:url(#radialGradient5819);fill-opacity:1;stroke:#000000;stroke-width:0.03553731;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         transform="matrix(-0.2131445,-0.9770207,-0.9108003,0.4128473,0,0)"
-         y="-347.11377"
-         x="-630.46515"
-         height="9.9503231"
-         width="3.1279557"
-         id="rect2773"
-         style="fill:url(#radialGradient5813);fill-opacity:1;stroke:#000000;stroke-width:0.03553731;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         style="fill:url(#radialGradient5810);fill-opacity:1;stroke:#000000;stroke-width:0.03553731;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2775"
-         width="3.1279557"
-         height="9.9503231"
-         x="-630.46515"
-         y="-347.11377"
-         transform="matrix(-0.2131445,-0.9770207,-0.9108003,0.4128473,0,0)" />
-      <rect
-         style="fill:url(#radialGradient5816);fill-opacity:1;stroke:#000000;stroke-width:0.03518798;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect2771"
-         width="3.339313"
-         height="9.1381941"
-         x="408.86853"
-         y="-536.59344"
-         transform="matrix(-0.1996539,0.9798665,-0.9917446,-0.128229,0,0)"
-         inkscape:transform-center-x="13.140519"
-         inkscape:transform-center-y="-0.84380701" />
-    </g>
-    <g
-       id="g6700"
-       transform="matrix(0.17732501,0,0,0.17732501,-790.09507,218.80068)">
-      <g
-         transform="translate(-20,-0.118083)"
-         id="g5827">
-        <rect
-           inkscape:transform-center-y="-0.84380591"
-           inkscape:transform-center-x="13.140439"
-           transform="matrix(-0.1996539,-0.9798665,-0.9917446,0.128229,0,0)"
-           y="-387.3006"
-           x="-533.06342"
-           height="9.1381941"
-           width="3.339313"
-           id="rect5767"
-           style="fill:url(#radialGradient6687);fill-opacity:1;stroke:#000000;stroke-width:0.03518798;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#radialGradient6689);fill-opacity:1;stroke:#000000;stroke-width:0.03553731;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5769"
-           width="3.1279557"
-           height="9.9503231"
-           x="230.14409"
-           y="-592.42999"
-           transform="matrix(-0.2131445,0.9770207,-0.9108003,-0.4128473,0,0)" />
-        <rect
-           transform="matrix(-0.2131445,0.9770207,-0.9108003,-0.4128473,0,0)"
-           y="-592.42999"
-           x="230.14409"
-           height="9.9503231"
-           width="3.1279557"
-           id="rect5771"
-           style="fill:url(#radialGradient6691);fill-opacity:1;stroke:#000000;stroke-width:0.03553731;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           transform="matrix(-0.2131445,-0.9770207,-0.9108003,0.4128473,0,0)"
-           y="-387.07913"
-           x="-647.35278"
-           height="9.9503231"
-           width="3.1279557"
-           id="rect5775"
-           style="fill:url(#radialGradient6693);fill-opacity:1;stroke:#000000;stroke-width:0.03553731;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#radialGradient6695);fill-opacity:1;stroke:#000000;stroke-width:0.03553731;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5777"
-           width="3.1279557"
-           height="9.9503231"
-           x="-647.35278"
-           y="-387.07913"
-           transform="matrix(-0.2131445,-0.9770207,-0.9108003,0.4128473,0,0)" />
-        <rect
-           style="fill:url(#radialGradient6698);fill-opacity:1;stroke:#000000;stroke-width:0.03518798;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5773"
-           width="3.339313"
-           height="9.1381941"
-           x="403.72589"
-           y="-575.89111"
-           transform="matrix(-0.1996539,0.9798665,-0.9917446,-0.128229,0,0)"
-           inkscape:transform-center-x="13.140519"
-           inkscape:transform-center-y="-0.84380701" />
-      </g>
-      <rect
-         transform="translate(-20,0)"
-         clip-path="url(#clipPath6659)"
-         y="464.80569"
-         x="479.86823"
-         height="12.263598"
-         width="11.263598"
-         id="rect5843"
-         style="fill:url(#radialGradient6643);fill-opacity:1;fill-rule:nonzero;stroke:none" />
-    </g>
-    <g
-       id="g9541"
-       transform="matrix(0.15598709,0,0,0.15598709,-890.40292,359.18571)">
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         y="102.18186"
-         x="28.619856"
-         height="109.24566"
-         width="3.9352574"
-         id="rect6773"
-         style="fill:url(#radialGradient9563);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient9565);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6748"
-         width="7.4949331"
-         height="136.63443"
-         x="4.0167823"
-         y="77.323845" />
-      <g
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         style="stroke-width:0.40137941;stroke-miterlimit:4;stroke-dasharray:none"
-         transform="matrix(1.2457042,0,0,1.2457042,-363.96054,364.3103)"
-         id="g6162">
-        <rect
-           y="-291.42798"
-           x="-286.242"
-           height="90.047585"
-           width="2.321456"
-           id="rect6768"
-           style="fill:url(#radialGradient9567);fill-opacity:1;stroke:#000000;stroke-width:0.40137941;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)" />
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#515151;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.40137941;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 210.67206,-296.99408 c 0,7.06134 -8.53244,12.65155 -5.88444,15.88799 2.648,3.23645 2.35377,7.944 9.70932,7.944 7.35556,0 64.43466,-0.29422 64.43466,-0.29422 0,0 -9.70934,-7.06133 -2.35378,-7.64978 7.35554,-0.58844 -2.05956,-5.88444 7.944,-8.23822 10.00355,-2.35377 -14.12267,-7.64977 0.88267,-7.94399 15.00532,-0.29422 -74.73243,0.29422 -74.73243,0.29422 z"
-           id="path6766" />
-        <rect
-           y="-287.3812"
-           x="-291.53644"
-           height="82.043823"
-           width="3.421258"
-           id="rect5972"
-           style="fill:url(#radialGradient9569);fill-opacity:1;stroke:#000000;stroke-width:0.40137941;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,1,-1,0,0,0)"
-           style="fill:url(#radialGradient9571);fill-opacity:1;stroke:#000000;stroke-width:0.40137941;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6752"
-           width="4.7192378"
-           height="82.459137"
-           x="-283.80011"
-           y="-281.70441" />
-        <rect
-           y="-288.92792"
-           x="-274.54718"
-           height="83.666153"
-           width="2.3955874"
-           id="rect6756"
-           style="fill:url(#radialGradient9573);fill-opacity:1;stroke:#000000;stroke-width:0.40137941;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,1,-1,0,0,0)"
-           style="fill:url(#radialGradient9575);fill-opacity:1;stroke:#000000;stroke-width:0.40137941;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6158"
-           width="2.3955874"
-           height="83.666153"
-           x="-299.01859"
-           y="-285.87073" />
-      </g>
-      <path
-         inkscape:connector-curvature="0"
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         id="path5976"
-         d="m -209.94375,-24.27129 c 5.18328,4.146633 11.40322,5.701613 9.32991,11.403237 -2.07331,5.7016238 3.10997,16.0681858 1.03666,18.6598158 -2.07332,2.59167 4.14662,14.5132202 6.73827,15.5498702 2.59165,1.03666 3.6283,6.73828 -1.55499,8.29326 -5.18328,1.555 -16.58652,6.21995 -15.54985,9.32993 1.03666,3.10996 17.62316,2.59163 17.10484,7.25659 -0.51832,4.66496 154.461952,0.51834 154.461952,0.51834 l 0,-6.73828 c 0,0 -9.848236,1.03666 -22.288126,-1.03665 -12.439889,-2.07332 -38.356344,-5.18329 -36.283006,-9.84827 2.073306,-4.66495 1.036653,-8.29325 1.036653,-8.29325 0,0 3.10997,-8.29325 8.811583,-15.5498702 5.701624,-7.256589 -14.513206,-17.1048328 15.031544,-17.1048328 29.54474,0 23.32479,-12.43989 23.32479,-12.43989 l -161.20023,0 z"
-         style="fill:#6a6a6a;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         y="36.127712"
-         x="-27.14216"
-         height="181.74619"
-         width="4.9341793"
-         id="rect5822"
-         style="fill:url(#radialGradient9577);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient9579);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect5944"
-         width="6.1808052"
-         height="169.36826"
-         x="-17.820223"
-         y="44.908314" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         y="84.848648"
-         x="1.9176534"
-         height="125.25235"
-         width="7.5127239"
-         id="rect5948"
-         style="fill:url(#radialGradient9581);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient9583);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect5952"
-         width="3.9352574"
-         height="109.24566"
-         x="26.287382"
-         y="93.629425" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         y="93.634438"
-         x="17.972281"
-         height="109.23569"
-         width="4.9504442"
-         id="rect5956"
-         style="fill:url(#radialGradient9585);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         y="65.581345"
-         x="-15.956082"
-         height="83.233894"
-         width="3.4192595"
-         id="rect5960"
-         style="fill:url(#radialGradient9587);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient9589);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect5964"
-         width="2.4204099"
-         height="162.11682"
-         x="37.138554"
-         y="55.790672" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         y="36.124004"
-         x="44.94791"
-         height="161.02043"
-         width="4.9430947"
-         id="rect5968"
-         style="fill:url(#radialGradient9591);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient9593);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6777"
-         width="5.0552545"
-         height="87.979858"
-         x="7.4577432"
-         y="119.31747" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-2.png"
-         y="75.175888"
-         x="1.9316355"
-         height="86.073807"
-         width="3.4083645"
-         id="rect6781"
-         style="fill:url(#radialGradient9595);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-    </g>
-    <g
-       id="g8366"
-       transform="matrix(0.15598709,0,0,0.15598709,-891.43723,353.56447)">
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8396);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6891"
-         width="6.427166"
-         height="84.605515"
-         x="80.662849"
-         y="122.25317" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8398);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6879"
-         width="4.5093379"
-         height="54.00174"
-         x="145.2135"
-         y="-19.346031" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8400);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6867"
-         width="6.1894522"
-         height="56.977684"
-         x="120.14159"
-         y="132.8504" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         y="108.27434"
-         x="150.24918"
-         height="86.174164"
-         width="5.0637031"
-         id="rect6862"
-         style="fill:url(#radialGradient8402);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <path
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         sodipodi:nodetypes="ccsscsccscscscc"
-         id="path6787"
-         d="m -33.793653,-106.22602 -5.463356,2.27638 c 0,0 -15.479518,3.64225 -12.292543,5.918629 3.186942,2.276403 -6.956369,3.249301 0,12.292564 4.552784,5.918637 4.552784,7.284468 4.552784,7.284468 0,0 -21.853413,-0.455259 -18.666471,1.365842 3.186964,1.821133 -0.45528,3.642233 -0.45528,3.642233 l -131.120551,0 c 0,0 -1.36584,-5.008075 -9.1056,-5.008075 -7.73975,0 1.82113,-1.821101 1.82113,-1.821101 0,0 20.77486,-7.625336 10.01615,-10.016161 -8.19504,-1.821123 -8.65033,-3.186954 -8.65033,-3.186954 0,0 21.41353,-5.781366 10.01617,-9.105595 -10.92672,-3.18698 -5.91863,-3.64223 -5.91863,-3.64223 l 165.266527,0 z"
-         style="fill:#515151;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         y="142.74875"
-         x="75.874527"
-         height="73.464073"
-         width="6.0893259"
-         id="rect6822"
-         style="fill:url(#radialGradient8404);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8406);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6826"
-         width="4.886086"
-         height="73.556656"
-         x="103.55882"
-         y="141.40665" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8408);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6842"
-         width="4.3958201"
-         height="135.78418"
-         x="95.640259"
-         y="30.599815" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8410);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6850"
-         width="3.7193239"
-         height="67.9841"
-         x="90.27697"
-         y="157.15112" />
-      <path
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         sodipodi:nodetypes="ccsscssssccscssccc"
-         id="path6785"
-         d="m -178.6901,-180.02516 62.19946,0 c 0,0 3.62831,0.51833 -1.55498,1.55498 -5.18329,1.03666 -3.62831,4.14663 2.59164,4.14663 6.21994,0 58.571166,4.14664 58.571166,4.14664 0,0 -8.811604,18.1415 9.848236,15.54986 18.659818,-2.59165 27.989738,-4.14664 32.654709,-2.07331 4.66495,2.07331 20.214809,1.55498 23.843119,-1.55499 3.6283,-3.10998 -1.55499,8.81158 1.55498,14.5132 3.10998,5.70163 -3.10997,4.14664 -3.10997,4.14664 l -137.35712,0 c 0,0 -8.29327,7.2566 1.55499,11.40323 9.84825,4.14663 5.70164,2.0733 5.70164,2.0733 0,0 -20.21486,1.55499 -19.69654,7.77493 0.51834,6.21994 -17.10484,8.29327 -11.92156,20.73317 5.18332,12.439879 13.47655,12.958206 13.47655,12.958206 l -38.35632,-0.518327 0,-94.854159 z"
-         style="fill:#6e6b6b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient8412);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6789"
-         width="5.057724"
-         height="150.25169"
-         x="-172.59126"
-         y="39.54031" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         y="96.311813"
-         x="-181.64758"
-         height="94.76152"
-         width="3.4737413"
-         id="rect6793"
-         style="fill:url(#radialGradient8414);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         y="46.304008"
-         x="86.723824"
-         height="92.713356"
-         width="4.0871334"
-         id="rect6875"
-         style="fill:url(#radialGradient8416);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient8418);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6797"
-         width="7.0400586"
-         height="54.286972"
-         x="-90.882095"
-         y="130.0256" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8420);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6801"
-         width="3.5366228"
-         height="56.139004"
-         x="131.70494"
-         y="139.23056" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         y="128.34567"
-         x="113.56345"
-         height="56.139004"
-         width="3.5366228"
-         id="rect6805"
-         style="fill:url(#radialGradient8422);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8424);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6809"
-         width="3.5366228"
-         height="56.139004"
-         x="124.96672"
-         y="110.72252" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         y="-21.242264"
-         x="136.06064"
-         height="100.81548"
-         width="5.7101383"
-         id="rect6813"
-         style="fill:url(#radialGradient8426);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8429);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6817"
-         width="4.7610912"
-         height="100.90309"
-         x="69.929939"
-         y="53.612427" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         y="29.221092"
-         x="77.674995"
-         height="92.15126"
-         width="4.5616908"
-         id="rect6830"
-         style="fill:url(#radialGradient8431);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8434);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6834"
-         width="4.5616908"
-         height="92.15126"
-         x="137.80113"
-         y="96.08548" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         y="28.424164"
-         x="152.81322"
-         height="53.315483"
-         width="7.1922135"
-         id="rect6838"
-         style="fill:url(#radialGradient8436);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8438);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6846"
-         width="7.1952953"
-         height="91.415733"
-         x="103.95922"
-         y="23.887199" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         y="97.648598"
-         x="159.31993"
-         height="86.174164"
-         width="5.0637031"
-         id="rect6854"
-         style="fill:url(#radialGradient8440);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8442);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6858"
-         width="5.0637031"
-         height="86.174164"
-         x="146.36168"
-         y="85.20871" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8444);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6871"
-         width="3.4046221"
-         height="36.051346"
-         x="98.209167"
-         y="147.2011" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         y="-22.292549"
-         x="152.63356"
-         height="33.459965"
-         width="3.6640568"
-         id="rect6883"
-         style="fill:url(#radialGradient8446);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-1.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8448);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6887"
-         width="4.4627233"
-         height="74.208633"
-         x="145.08717"
-         y="-3.8164673" />
-    </g>
-    <g
-       id="nomad-base-military"
-       inkscape:label="#g9570"
-       transform="matrix(0.15598709,0,0,0.15598709,-909.89271,315.34086)">
-      <rect
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7257);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6938"
-         width="5.9386377"
-         height="42.83989"
-         x="188.05348"
-         y="-109.91568" />
-      <path
-         sodipodi:nodetypes="ccsscsccscscscc"
-         id="path6940"
-         d="m 154.70705,-211.67363 -2.76637,2.10336 c 0,0 -7.83802,3.36539 -6.22431,5.46875 1.6137,2.10338 -3.52234,3.00232 0,11.3582 2.3053,5.46878 2.3053,6.73078 2.3053,6.73078 0,0 -11.06545,-0.42064 -9.45174,1.26203 1.61371,1.6827 -0.23053,3.3654 -0.23053,3.3654 l -66.39272,0 c 0,0 -0.69159,-4.62743 -4.6106,-4.62743 -3.919,0 0.92213,-1.68267 0.92213,-1.68267 0,0 10.51932,-7.04574 5.07165,-9.25484 -4.14954,-1.68271 -4.38007,-2.94471 -4.38007,-2.94471 0,0 10.84271,-5.34192 5.07167,-8.41349 -5.53273,-2.94473 -2.9969,-3.36538 -2.9969,-3.36538 l 83.68249,0 z"
-         style="fill:#515151;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.57112491;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <rect
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7246);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6946"
-         width="4.0616941"
-         height="68.754135"
-         x="201.89244"
-         y="-156.32425" />
-      <rect
-         y="-99.537781"
-         x="183.62906"
-         height="37.198437"
-         width="5.6264772"
-         id="rect6942"
-         style="fill:url(#radialGradient7253);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7249);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6944"
-         width="4.5146952"
-         height="37.245316"
-         x="209.20909"
-         y="-100.21735" />
-      <rect
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7243);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6948"
-         width="3.4366186"
-         height="34.423656"
-         x="196.93678"
-         y="-92.245148" />
-      <rect
-         y="-148.37247"
-         x="193.65373"
-         height="46.945286"
-         width="3.7764707"
-         id="rect6950"
-         style="fill:url(#radialGradient7240);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7234);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6954"
-         width="4.3992014"
-         height="51.092144"
-         x="178.13637"
-         y="-144.67184" />
-      <rect
-         y="-157.02237"
-         x="185.29274"
-         height="46.660664"
-         width="4.2149577"
-         id="rect6956"
-         style="fill:url(#radialGradient7231);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7228);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6958"
-         width="6.6483822"
-         height="46.288235"
-         x="209.57907"
-         y="-159.72321" />
-      <rect
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7225);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6960"
-         width="3.1458371"
-         height="18.254551"
-         x="204.26604"
-         y="-97.283356" />
-      <rect
-         y="196.03856"
-         x="99.643921"
-         height="42.83989"
-         width="5.9386377"
-         id="rect7153"
-         style="fill:url(#radialGradient7299);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="scale(1,-1)" />
-      <path
-         style="fill:#676767;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.57112491;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 123.26405,-151.24723 -2.10337,-2.76637 c 0,0 -3.36538,-7.83803 -5.46875,-6.22431 -2.10337,1.6137 -3.00231,-3.52235 -11.3582,0 -5.46877,2.3053 -6.73077,2.3053 -6.73077,2.3053 0,0 0.42064,-11.06546 -1.26203,-9.45174 -1.6827,1.61371 -3.3654,-0.23053 -3.3654,-0.23053 l 0,-66.39272 c 0,0 4.62743,-0.69159 4.62743,-4.6106 0,-3.91901 1.68267,0.92212 1.68267,0.92212 0,0 7.04574,10.51932 9.25484,5.07166 1.6827,-4.14954 2.94471,-4.38007 2.94471,-4.38007 0,0 5.34192,10.8427 8.41349,5.07167 2.94473,-5.53273 3.36538,-2.9969 3.36538,-2.9969 l 0,83.68249 z"
-         id="path7155"
-         sodipodi:nodetypes="ccsscsccscscscc"
-         inkscape:connector-curvature="0" />
-      <rect
-         transform="scale(1,-1)"
-         style="fill:url(#radialGradient7295);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7157"
-         width="5.6264772"
-         height="37.198437"
-         x="95.219513"
-         y="206.41649" />
-      <rect
-         y="205.73695"
-         x="120.79953"
-         height="37.245316"
-         width="4.5146952"
-         id="rect7159"
-         style="fill:url(#radialGradient7292);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="scale(1,-1)" />
-      <rect
-         y="149.62999"
-         x="113.48288"
-         height="68.754135"
-         width="4.0616941"
-         id="rect7161"
-         style="fill:url(#radialGradient7289);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="scale(1,-1)" />
-      <rect
-         y="213.70915"
-         x="108.52722"
-         height="34.423656"
-         width="3.4366186"
-         id="rect7163"
-         style="fill:url(#radialGradient7284);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="scale(1,-1)" />
-      <rect
-         transform="scale(1,-1)"
-         style="fill:url(#radialGradient7281);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7165"
-         width="3.7764707"
-         height="46.945286"
-         x="105.24417"
-         y="157.5818" />
-      <rect
-         y="199.97412"
-         x="-109.08636"
-         height="27.488136"
-         width="6.5049448"
-         id="rect7167"
-         style="fill:url(#radialGradient7278);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="scale(-1,-1)" />
-      <rect
-         y="161.28241"
-         x="89.726837"
-         height="51.092144"
-         width="4.3992014"
-         id="rect7169"
-         style="fill:url(#radialGradient7272);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="scale(1,-1)" />
-      <rect
-         transform="scale(1,-1)"
-         style="fill:url(#radialGradient7268);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7171"
-         width="4.2149577"
-         height="46.660664"
-         x="96.883179"
-         y="148.9319" />
-      <rect
-         y="146.23106"
-         x="121.16953"
-         height="46.288235"
-         width="6.6483822"
-         id="rect7173"
-         style="fill:url(#radialGradient7265);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="scale(1,-1)" />
-      <rect
-         y="208.67091"
-         x="115.85648"
-         height="18.254551"
-         width="3.1458371"
-         id="rect7175"
-         style="fill:url(#radialGradient7260);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="scale(1,-1)" />
-      <rect
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient7237);fill-opacity:1;stroke:#000000;stroke-width:0.57112491;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6952"
-         width="6.5049448"
-         height="27.488136"
-         x="-197.49594"
-         y="-105.98013" />
-    </g>
-    <g
-       id="nomad-builder"
-       inkscape:label="#g9376"
-       transform="matrix(0.19669655,0,0,0.19669655,-977.3669,270.08392)">
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-1.png"
-         y="-328.96506"
-         x="19.306763"
-         height="40.339664"
-         width="4.5420651"
-         id="rect6101"
-         style="fill:#555555;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-1.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         y="-333.15335"
-         x="-26.110413"
-         height="8.30019"
-         width="8.8208542"
-         id="rect6103"
-         style="fill:url(#radialGradient6194);fill-opacity:1;stroke:#000000;stroke-width:0.05450483;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-1.png"
-         style="fill:url(#radialGradient6196);fill-opacity:1;stroke:#000000;stroke-width:0.16620407;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 328.17136,-25.465645 4.1322,0.58161 0,0.46989 0,5.42834 0,0.46988 -4.1322,0.58161 0,-1.63311 0,-4.26512 0,-1.6331 z"
-         id="path6105"
-         inkscape:connector-curvature="0" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-1.png"
-         style="fill:url(#radialGradient6198);fill-opacity:1;stroke:#000000;stroke-width:0.02196322;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6107"
-         width="7.4879966"
-         height="1.5876518"
-         x="-25.44397"
-         y="-328.1554"
-         transform="matrix(0,1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-1.png"
-         style="fill:url(#radialGradient6200);fill-opacity:1;stroke:#000000;stroke-width:0.02150907;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6109"
-         width="5.096714"
-         height="2.237082"
-         x="-25.700989"
-         y="-325.87204"
-         transform="matrix(0,1,-1,0,0,0)" />
-      <rect
-         style="fill:url(#radialGradient6202);fill-opacity:1;stroke:#000000;stroke-width:0.03798869;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6111"
-         width="8.8372831"
-         height="4.0245595"
-         x="-26.388397"
-         y="-290.82144"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-1.png"
-         id="path6113"
-         d="m 287.14887,-26.067305 -5.16272,0.63287 0,0.5113 0,5.90679 0,0.5113 5.16272,0.63287 0,-1.77704 0,-4.64105 0,-1.77704 z"
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.19379027;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-1.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient6204);fill-opacity:1;stroke:#000000;stroke-width:0.05387633;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6115"
-         width="10.620045"
-         height="6.7359452"
-         x="-27.232208"
-         y="-306.98248" />
-      <rect
-         y="-323.16815"
-         x="-27.232208"
-         height="6.7359452"
-         width="10.620045"
-         id="rect6117"
-         style="fill:url(#radialGradient6206);fill-opacity:1;stroke:#000000;stroke-width:0.05387633;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-1.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-1.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient6208);fill-opacity:1;stroke:#000000;stroke-width:0.05387633;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6119"
-         width="10.620045"
-         height="6.7359452"
-         x="-27.232208"
-         y="-315.07532" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-1.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         y="-291.06833"
-         x="-22.738098"
-         height="3.3064713"
-         width="4.2964387"
-         id="rect6121"
-         style="fill:url(#radialGradient6210);fill-opacity:1;stroke:#000000;stroke-width:0.02400891;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-1.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient6212);fill-opacity:1;stroke:#000000;stroke-width:0.05387633;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6123"
-         width="10.620045"
-         height="6.7359452"
-         x="-27.232208"
-         y="-298.88965" />
-    </g>
-    <g
-       id="g8010"
-       transform="matrix(0.19669655,0,0,0.19669655,-979.88402,284.55737)">
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         y="-341.77972"
-         x="162.87018"
-         height="24.728901"
-         width="4.560514"
-         id="rect6125"
-         style="fill:#555555;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         y="-345.95035"
-         x="-169.68307"
-         height="8.30019"
-         width="8.8208542"
-         id="rect6127"
-         style="fill:url(#radialGradient6216);fill-opacity:1;stroke:#000000;stroke-width:0.05450483;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         style="fill:url(#radialGradient6218);fill-opacity:1;stroke:#000000;stroke-width:0.16620407;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 340.96836,-169.0383 4.1322,0.58161 0,0.46989 0,5.42834 0,0.46988 -4.1322,0.58162 0,-1.63311 0,-4.26512 0,-1.63311 z"
-         id="path6129"
-         inkscape:connector-curvature="0" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         style="fill:url(#radialGradient6220);fill-opacity:1;stroke:#000000;stroke-width:0.02196322;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6131"
-         width="7.4879966"
-         height="1.5876518"
-         x="-169.01663"
-         y="-340.95239"
-         transform="matrix(0,1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         style="fill:url(#radialGradient6222);fill-opacity:1;stroke:#000000;stroke-width:0.02150907;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6133"
-         width="5.096714"
-         height="2.237082"
-         x="-169.27362"
-         y="-338.66904"
-         transform="matrix(0,1,-1,0,0,0)" />
-      <rect
-         style="fill:url(#radialGradient6224);fill-opacity:1;stroke:#000000;stroke-width:0.03798869;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6135"
-         width="8.8372831"
-         height="4.0245595"
-         x="-169.96106"
-         y="-319.80411"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         id="path6137"
-         d="m 316.13154,-169.63996 -5.16271,0.63288 0,0.51129 0,5.90679 0,0.5113 5.16271,0.63287 0,-1.77704 0,-4.64105 0,-1.77704 z"
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.19379027;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <rect
-         y="-335.96515"
-         x="-170.80484"
-         height="6.7359452"
-         width="10.620045"
-         id="rect6139"
-         style="fill:url(#radialGradient6226);fill-opacity:1;stroke:#000000;stroke-width:0.05387633;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient6228);fill-opacity:1;stroke:#000000;stroke-width:0.05387633;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6141"
-         width="10.620045"
-         height="6.7359452"
-         x="-170.80484"
-         y="-327.87231" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         y="-320.05099"
-         x="-166.31076"
-         height="3.3064713"
-         width="4.2964387"
-         id="rect6143"
-         style="fill:url(#radialGradient6230);fill-opacity:1;stroke:#000000;stroke-width:0.02400891;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-    </g>
-    <g
-       id="g8275"
-       transform="matrix(0.15598709,0,0,0.15598709,-892.73178,346.87602)">
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8450);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6994"
-         width="3.7489741"
-         height="41.892933"
-         x="218.37421"
-         y="140.28326" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8452);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6989"
-         width="3.1746275"
-         height="46.016438"
-         x="279.8844"
-         y="129.4044" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8454);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6215"
-         width="3.1942155"
-         height="40.75095"
-         x="302.91907"
-         y="127.34793" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8456);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6207"
-         width="2.5737734"
-         height="61.270813"
-         x="229.53192"
-         y="96.828552" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         y="65.181602"
-         x="215.50189"
-         height="79.347931"
-         width="3.6212127"
-         id="rect6194"
-         style="fill:url(#radialGradient8458);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <path
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         sodipodi:nodetypes="ccsssssscsscsscc"
-         id="path7308"
-         d="m -171.01891,-208.83881 106.865534,0 c 0,0 -19.786532,-3.21631 -24.6192,-5.07187 -4.832646,-1.85554 5.288582,-2.35037 14.042059,-4.82445 -24.436834,-9.89627 -24.801553,-1.97924 -29.543043,-8.90666 -4.74147,-6.9274 -3.28255,-14.84442 -9.48294,-21.77183 -6.2004,-6.9274 -14.22443,-17.81333 -17.87171,-26.71999 -3.64729,-8.90666 -2.91785,-36.61628 -13.13022,-36.61628 -10.21241,0 -29.1783,10e-6 -29.1783,10e-6 0,0 2.5531,8.90667 1.09419,9.89629 8.38875,8.90669 9.84767,34.63701 6.5651,36.61628 -3.28255,1.97927 -3.28255,1.97927 -3.28255,1.97927 0,0 5.47093,4.94813 6.20039,12.86518 0.72946,7.91704 2.55309,12.86515 -2.18838,20.7822 -4.74147,7.91703 -5.83565,4.94813 -5.83565,4.94813 0,0 2.5531,10.88593 0.36472,16.82372 z"
-         style="fill:#515151;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         y="114.27197"
-         x="263.75568"
-         height="94.641212"
-         width="4.1635294"
-         id="rect6926"
-         style="fill:url(#radialGradient8460);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         y="149.67732"
-         x="245.38519"
-         height="62.449261"
-         width="4.3394585"
-         id="rect6918"
-         style="fill:url(#radialGradient8462);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8464);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6914"
-         width="4.3394585"
-         height="62.449261"
-         x="249.4958"
-         y="68.052254" />
-      <path
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         sodipodi:nodetypes="ccssccccscs"
-         id="path6896"
-         d="m -52.038313,-273.59422 -136.693057,0 c 0,0 18.92673,4.20592 -11.91684,10.51483 -30.84356,6.30892 21.02971,7.7109 15.42179,10.51486 -5.60791,2.80397 -11.91683,3.50496 -11.91683,3.50496 l 18.22574,3.50494 c -6.30891,4.90694 -14.72079,5.60792 -14.72079,5.60792 l 103.746537,0 c 0,0 -15.421797,-11.91683 -2.10298,-12.61782 13.318813,-0.70099 9.112874,-0.70099 9.112874,-0.70099 -9.813871,-3.50496 -16.122769,-4.90692 4.205939,-5.60792 2.803956,-5.60791 46.26535,-7.00989 46.26535,-7.00989 0,0 7.009883,-3.50497 26.637616,-4.20594 19.627724,-0.70099 -46.265349,-2.80398 -46.265349,-3.50495 z"
-         style="fill:#6e6b6b;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8466);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6898"
-         width="4.0756965"
-         height="113.86179"
-         x="238.47029"
-         y="84.626602" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8468);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6934"
-         width="3.9381139"
-         height="66.595055"
-         x="266.35983"
-         y="134.73117" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         y="3.0358734"
-         x="262.58105"
-         height="113.79314"
-         width="4.5942631"
-         id="rect6902"
-         style="fill:url(#radialGradient8470);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8472);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6906"
-         width="5.1847014"
-         height="100.29003"
-         x="258.46878"
-         y="120.48039" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         y="88.149986"
-         x="272.52963"
-         height="113.86179"
-         width="4.0756965"
-         id="rect6910"
-         style="fill:url(#radialGradient8474);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8476);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6922"
-         width="3.5705431"
-         height="111.59496"
-         x="252.52283"
-         y="79.887703" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         y="123.93282"
-         x="245.18059"
-         height="59.540558"
-         width="4.3578358"
-         id="rect6930"
-         style="fill:url(#radialGradient8478);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8480);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6170"
-         width="3.7325149"
-         height="45.987083"
-         x="311.16483"
-         y="135.59363" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         y="134.41917"
-         x="299.42023"
-         height="45.987083"
-         width="3.7325149"
-         id="rect6174"
-         style="fill:url(#radialGradient8482);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8484);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6178"
-         width="5.4226561"
-         height="44.74107"
-         x="289.47308"
-         y="129.75711" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         y="86.923058"
-         x="223.14981"
-         height="89.303017"
-         width="3.5933783"
-         id="rect6182"
-         style="fill:url(#radialGradient8486);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8488);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6186"
-         width="3.6212127"
-         height="79.347931"
-         x="207.28064"
-         y="64.007141" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         y="136.22046"
-         x="206.6774"
-         height="41.797314"
-         width="6.0022812"
-         id="rect6190"
-         style="fill:url(#radialGradient8490);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient8492);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect6199"
-         width="3.677557"
-         height="61.20013"
-         x="215.47375"
-         y="83.35759" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         y="111.5752"
-         x="230.18503"
-         height="61.139053"
-         width="4.7909398"
-         id="rect6203"
-         style="fill:url(#radialGradient8494);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         y="124.40248"
-         x="282.35669"
-         height="36.07172"
-         width="3.2128286"
-         id="rect6211"
-         style="fill:url(#radialGradient8496);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-    </g>
-    <g
-       id="0enemy0"
-       inkscape:label="#g7829"
-       transform="matrix(0,0.45689792,-0.45689792,0,-946.44237,237.67483)">
-      <path
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.48962611;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -11.204538,238.655 -15.87036,1.31421 0,1.06178 0,12.2661 0,1.06178 15.87036,1.31422 0,-3.69023 0,-9.63765 0,-3.69021 z"
-         id="path10984-6"
-         inkscape:connector-curvature="0" />
-      <g
-         id="g6583"
-         transform="matrix(0.4499059,0,0,0.4499059,-257.16797,130.25048)">
-        <rect
-           style="fill:url(#radialGradient6629);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6585"
-           width="11.175753"
-           height="47.771706"
-           x="254.6692"
-           y="-579.22253"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           y="-588.13434"
-           x="254.52138"
-           height="47.771706"
-           width="11.175753"
-           id="rect6591"
-           style="fill:url(#radialGradient6682);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(0.8860162,-0.4636543,-0.4636543,-0.8860162,0,0)"
-           y="-505.88068"
-           x="367.69363"
-           height="37.529438"
-           width="8.7796688"
-           id="rect6593"
-           style="fill:url(#radialGradient6637);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient6639);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6595"
-           width="11.175754"
-           height="47.771709"
-           x="-432.88586"
-           y="-487.5528"
-           transform="matrix(-0.2999797,-0.9539456,-0.9539456,0.2999797,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)"
-           style="fill:url(#radialGradient6688);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6601"
-           width="11.175752"
-           height="47.771702"
-           x="337.38953"
-           y="455.1207"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient6648);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6603"
-           width="8.7796688"
-           height="37.529438"
-           x="-595.98267"
-           y="-95.398209"
-           transform="matrix(-0.8445445,-0.5354854,-0.5354854,0.8445445,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(-0.6761513,0.7367628,0.7367628,0.6761513,0,0)"
-           y="533.44781"
-           x="-198.95117"
-           height="47.771706"
-           width="11.175753"
-           id="rect6605"
-           style="fill:url(#radialGradient6652);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient6654);fill-opacity:1;stroke:#000000;stroke-width:0.1156273;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6607"
-           width="8.7796659"
-           height="37.5294"
-           x="-617.54431"
-           y="-2.4763238"
-           transform="matrix(-0.91611805,-0.40090862,-0.40090862,0.91611805,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(0.110862,0.99383581,0.99383581,-0.110862,0,0)"
-           y="491.98224"
-           x="305.88071"
-           height="37.52943"
-           width="8.7796679"
-           id="rect6609"
-           style="fill:url(#radialGradient6656);fill-opacity:1;stroke:#000000;stroke-width:0.11562737;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           y="7.4695349"
-           x="-608.83209"
-           height="47.771702"
-           width="11.175752"
-           id="rect6615"
-           style="fill:url(#radialGradient6686);fill-opacity:1;stroke:#000000;stroke-width:0.14718357;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(-0.04147169,0.9991397,0.9991397,0.04147169,0,0)"
-           y="533.92865"
-           x="241.3437"
-           height="37.529434"
-           width="8.7796679"
-           id="rect6617"
-           style="fill:url(#radialGradient6668);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient6670);fill-opacity:1;stroke:#000000;stroke-width:0.14718363;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6619"
-           width="11.175761"
-           height="47.771736"
-           x="568.29419"
-           y="-179.64594"
-           transform="matrix(0.976131,0.2171828,0.2171828,-0.976131,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient6673);fill-opacity:1;stroke:#000000;stroke-width:0.11562733;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6621"
-           width="8.779665"
-           height="37.529423"
-           x="272.36176"
-           y="-554.25104"
-           transform="matrix(0.805256,-0.5929273,-0.5929273,-0.805256,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient6676);fill-opacity:1;stroke:#000000;stroke-width:0.14718363;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6623"
-           width="11.175761"
-           height="47.771736"
-           x="455.41907"
-           y="327.67331"
-           transform="matrix(0.976131,-0.2171828,0.2171828,0.976131,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(-0.6761513,-0.7367628,0.7367628,-0.6761513,0,0)"
-           y="182.03529"
-           x="-581.86475"
-           height="47.771706"
-           width="11.175753"
-           id="rect6625"
-           style="fill:url(#radialGradient6678);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(-0.2999797,0.9539456,-0.9539456,-0.2999797,0,0)"
-           y="-643.45966"
-           x="62.903164"
-           height="47.771709"
-           width="11.175754"
-           id="rect6627"
-           style="fill:url(#radialGradient6680);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-      </g>
-    </g>
-    <g
-       id="0enemy_kamikaze"
-       inkscape:label="#g7849"
-       transform="matrix(0,-0.27564039,0.27564039,0,-1147.5912,209.78815)">
-      <path
-         id="path6627"
-         d="m -0.96873254,309.08465 -21.93189046,1.81617 0,1.46732 0,16.95102 0,1.4673 21.93189046,1.81618 0,-5.09967 0,-13.31865 0,-5.09967 z"
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.67663407;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92"
-         inkscape:connector-curvature="0" />
-      <g
-         transform="matrix(0.6217431,0,0,0.6217431,-352.87551,165.59648)"
-         id="g6629">
-        <rect
-           y="210.81995"
-           x="552.86206"
-           height="47.771706"
-           width="11.175753"
-           id="rect6784"
-           style="fill:url(#radialGradient6797);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="scale(-1,-1)"
-           style="fill:url(#radialGradient6816);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6633"
-           width="11.175753"
-           height="47.771706"
-           x="-563.73352"
-           y="-288.5733" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(0.40090862,-0.91611805,-0.91611805,-0.40090862,0,0)"
-           y="-631.9978"
-           x="-15.065587"
-           height="37.5294"
-           width="8.7796659"
-           id="rect6645"
-           style="fill:url(#radialGradient6812);fill-opacity:1;stroke:#000000;stroke-width:0.1156273;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient6818);fill-opacity:1;stroke:#000000;stroke-width:0.11562737;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6647"
-           width="8.7796679"
-           height="37.52943"
-           x="-540.54022"
-           y="284.98111"
-           transform="matrix(-0.99383581,0.110862,0.110862,0.99383581,0,0)" />
-        <rect
-           transform="matrix(-0.4636543,-0.88601619,-0.88601619,0.4636543,0,0)"
-           y="-399.94464"
-           x="-478.60767"
-           height="37.529438"
-           width="8.7796688"
-           id="rect6786"
-           style="fill:url(#radialGradient6801);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(0.99383581,-0.110862,-0.110862,-0.99383581,0,0)"
-           y="-335.14285"
-           x="513.99719"
-           height="37.52943"
-           width="8.7796679"
-           id="rect6792"
-           style="fill:url(#radialGradient6808);fill-opacity:1;stroke:#000000;stroke-width:0.11562737;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(0.95394559,-0.2999797,-0.2999797,-0.95394559,0,0)"
-           y="-447.24771"
-           x="437.54703"
-           height="47.771709"
-           width="11.175754"
-           id="rect6637"
-           style="fill:url(#radialGradient6821);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient6825);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6661"
-           width="11.175754"
-           height="47.771709"
-           x="-627.80524"
-           y="-112.23487"
-           transform="matrix(-0.95394559,-0.2999797,0.2999797,-0.95394559,0,0)" />
-        <rect
-           style="fill:url(#radialGradient6804);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect6788"
-           width="11.175754"
-           height="47.771709"
-           x="-477.99741"
-           y="364.15924"
-           transform="matrix(-0.95394559,0.2999797,0.2999797,0.95394559,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(0.95394559,0.2999797,-0.2999797,0.95394559,0,0)"
-           y="29.146273"
-           x="587.35486"
-           height="47.771709"
-           width="11.175754"
-           id="rect6794"
-           style="fill:url(#radialGradient6810);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-      </g>
-    </g>
-    <g
-       id="nomad-frigate-0"
-       transform="matrix(0.1713069,0,0,0.1713069,-912.12431,292.73741)"
-       inkscape:label="#g7660">
-      <rect
-         y="-111.28361"
-         x="266.55795"
-         height="52.046757"
-         width="4.2648067"
-         id="rect7623"
-         style="fill:url(#radialGradient7678);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         inkscape:export-xdpi="90"
-         inkscape:export-ydpi="90" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         y="-150.3107"
-         x="261.5463"
-         height="24.873594"
-         width="2.7541168"
-         id="rect7648"
-         style="fill:url(#radialGradient7680);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7682);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7644"
-         width="3.0345404"
-         height="32.903114"
-         x="281.04599"
-         y="-114.37068" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7684);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7607"
-         width="4.7799897"
-         height="39.36261"
-         x="297.61523"
-         y="-108.64375" />
-      <path
-         sodipodi:nodetypes="ccccc"
-         id="path6827"
-         d="m 123.66667,-310.19592 c 0,0 -26.942809,15.29983 -28.942809,56.63317 -2.57462,-2.92228 -5.149241,-3.51033 -7.723861,-3.9665 3.33334,-23.33333 -5.33333,-36.66667 -5.33333,-52.66667 l 42,0 z"
-         style="fill:#515151;fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         sodipodi:nodetypes="cccccc"
-         id="path7601"
-         d="m 75.152866,-281.31269 -6.692141,17.56688 c 30.804412,-2.47903 57.402205,-3.7548 69.195295,1.77933 3.88373,-9.65654 12.9229,-16.4881 28.04993,-19.9736 l -26.78825,0.26227 c -2.07594,4.13529 -14.50661,14.91257 -63.764834,0.36512 z"
-         style="fill:#6e6b6b;fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <rect
-         y="-125.11982"
-         x="307.53781"
-         height="52.515762"
-         width="4.2624111"
-         id="rect7603"
-         style="fill:url(#radialGradient7686);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         inkscape:export-xdpi="90"
-         inkscape:export-ydpi="90" />
-      <rect
-         y="-173.70354"
-         x="281.11011"
-         height="46.917034"
-         width="3.8491316"
-         id="rect7611"
-         style="fill:url(#radialGradient7688);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         inkscape:export-xdpi="90"
-         inkscape:export-ydpi="90" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7690);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7615"
-         width="3.9686525"
-         height="26.766161"
-         x="266.90823"
-         y="-147.60034" />
-      <rect
-         y="-154.42358"
-         x="273.52002"
-         height="44.183899"
-         width="2.5302091"
-         id="rect7619"
-         style="fill:url(#radialGradient7692);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         inkscape:export-xdpi="90"
-         inkscape:export-ydpi="90" />
-      <rect
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7694);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7628"
-         width="2.7158735"
-         height="30.492205"
-         x="298.0993"
-         y="-118.94318"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         inkscape:export-xdpi="90"
-         inkscape:export-ydpi="90" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7696);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7632"
-         width="3.1006806"
-         height="17.884314"
-         x="257.44272"
-         y="-97.433182" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7698);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7636"
-         width="3.9070544"
-         height="36.132652"
-         x="273.06726"
-         y="-105.85024" />
-      <rect
-         y="-114.33553"
-         x="287.20941"
-         height="36.132652"
-         width="3.9070544"
-         id="rect7640"
-         style="fill:url(#radialGradient7700);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         inkscape:export-xdpi="90"
-         inkscape:export-ydpi="90" />
-      <rect
-         inkscape:export-ydpi="90"
-         inkscape:export-xdpi="90"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:url(#radialGradient7702);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7652"
-         width="2.6281912"
-         height="22.781881"
-         x="262.6377"
-         y="-83.639236" />
-      <rect
-         y="-113.92846"
-         x="267.34845"
-         height="41.693661"
-         width="2.5399709"
-         id="rect7656"
-         style="fill:url(#radialGradient7704);fill-opacity:1;stroke:#000000;stroke-width:0.63184452;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,-1,-1,0,0,0)"
-         inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-         inkscape:export-xdpi="90"
-         inkscape:export-ydpi="90" />
-    </g>
-    <g
-       id="human-frigate-0"
-       inkscape:label="#g7863"
-       transform="matrix(0.17732501,0,0,0.17732501,-789.91774,218.26871)">
-      <rect
-         style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7747"
-         width="19.213734"
-         height="29.294256"
-         x="1120.6637"
-         y="-158.47311"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <g
-         style="stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none"
-         transform="translate(-8.013877,1.8112557)"
-         id="g7785">
-        <path
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           sodipodi:nodetypes="cccccccccc"
-           id="path7755"
-           d="m 151.4937,1116.9828 c -4.33752,0.1389 -6.82671,9.5306 -10.44777,11.3442 l -1.37409,0 c 0.3752,0 0.7176,0.021 1.01873,0.1206 l 0.35536,0.1609 c 3.75039,1.8782 5.96424,11.8657 10.94528,11.304 11.06838,0.3185 27.88882,-2.5076 31.72236,-11.304 l 0,-0.2815 c -3.83354,-8.7964 -20.65398,-11.6225 -31.72236,-11.304 -0.17176,-0.019 -0.34258,-0.045 -0.49751,-0.04 z"
-           style="fill:url(#radialGradient7877);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="fill:url(#linearGradient7881);fill-opacity:1;stroke:none"
-         id="g7803"
-         transform="translate(-8.013877,1.8112557)">
-        <path
-           style="fill:url(#linearGradient7879);fill-opacity:1;fill-rule:evenodd;stroke:none"
-           d="m 151.4937,1116.9828 c -4.33752,0.1389 -6.82671,9.5306 -10.44777,11.3442 l -1.37409,0 c 0.3752,0 0.7176,0.021 1.01873,0.1206 l 0.35536,0.1609 c 3.75039,1.8782 5.96424,11.8657 10.94528,11.304 11.06838,0.3185 27.88882,-2.5076 31.72236,-11.304 l 0,-0.2815 c -3.83354,-8.7964 -20.65398,-11.6225 -31.72236,-11.304 -0.17176,-0.019 -0.34258,-0.045 -0.49751,-0.04 z"
-           id="path7805"
-           sodipodi:nodetypes="cccccccccc"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="stroke-width:0.5;stroke-miterlimit:4;stroke-dasharray:none"
-         transform="translate(39.854498,-2.0911921)"
-         id="g7735">
-        <path
-           style="fill:url(#radialGradient7883);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 92.61437,1127.6029 c -3.35729,0.1617 -7.21458,3.8859 -9.91562,4.7039 0,0.039 0,0.078 0,0.117 2.665473,1.0624 6.674697,4.4685 10.09017,4.6871 3.88336,0.1321 9.78483,-1.0398 11.12984,-4.6871 l 0,-0.1167 c -1.34501,-3.6473 -7.24648,-4.8192 -11.12984,-4.687 -0.06026,-0.01 -0.1202,-0.019 -0.17455,-0.017 l 0,-2e-4 z"
-           id="path7727"
-           sodipodi:nodetypes="ccccccccc"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-         sodipodi:nodetypes="cccccccccc"
-         id="path7795"
-         d="m 169.29386,1120.6674 c -3.2712,0.1214 -5.14846,8.3303 -7.87934,9.9154 l -1.03628,0 c 0.28295,0 0.54119,0.019 0.76829,0.1055 l 0.26799,0.1406 c 2.82841,1.6417 4.49803,10.3713 8.25455,9.8803 8.34738,0.2784 21.03277,-2.1917 23.92388,-9.8803 l 0,-0.2461 c -2.89111,-7.6885 -15.5765,-10.1587 -23.92388,-9.8803 -0.12954,-0.017 -0.25837,-0.039 -0.37521,-0.035 z"
-         style="fill:url(#radialGradient7886);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <rect
-         transform="matrix(0.4385825,0,0,0.8090801,204.75106,310.40274)"
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/civilian.png"
-         clip-path="url(#clipPath6699)"
-         y="997.36218"
-         x="-107"
-         height="33"
-         width="88"
-         id="rect7797"
-         style="fill:url(#linearGradient7888);fill-opacity:1;stroke:#000000;stroke-width:0.83936065;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <g
-         style="fill:url(#linearGradient7892);fill-opacity:1;stroke:none"
-         id="g7815"
-         transform="translate(39.854498,-2.0911921)">
-        <path
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-           sodipodi:nodetypes="ccccccccc"
-           id="path7817"
-           d="m 92.61437,1127.6029 c -3.35729,0.1617 -7.21458,3.8859 -9.91562,4.7039 0,0.039 0,0.078 0,0.117 2.665473,1.0624 6.674697,4.4685 10.09017,4.6871 3.88336,0.1321 9.78483,-1.0398 11.12984,-4.6871 l 0,-0.1167 c -1.34501,-3.6473 -7.24648,-4.8192 -11.12984,-4.687 -0.06026,-0.01 -0.1202,-0.019 -0.17455,-0.017 l 0,-2e-4 z"
-           style="fill:url(#linearGradient7890);fill-opacity:1;fill-rule:evenodd;stroke:none"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <g
-       id="evolved-frigate-0"
-       transform="matrix(0.11917329,0,0,0.11917329,-931.37606,273.02976)"
-       inkscape:label="#g8142">
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient8428);fill-opacity:1;stroke:none;filter:url(#filter4164-0-1)"
-         id="path8287"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.08381222,0.52325547,0.66546069,0.09897094,218.65422,705.86723)" />
-      <path
-         transform="matrix(-0.08381222,-0.52325547,0.66546069,-0.09897094,218.65422,1376.3159)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path4235-8"
-         style="fill:url(#radialGradient4239-3-5);fill-opacity:1;stroke:none;filter:url(#filter4164-0-1)"
-         sodipodi:type="star" />
-      <path
-         transform="matrix(-0.04840045,0.27767819,0.51950522,0.07417861,344.6792,847.33453)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path8289"
-         style="fill:url(#radialGradient8297-8);fill-opacity:1;stroke:none;filter:url(#filter4074-1-7)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient8244-2);fill-opacity:1;stroke:none;filter:url(#filter4074-1-7)"
-         id="path4237-5"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.04840045,-0.27767819,0.51950522,-0.07417861,344.6792,1234.8485)" />
-      <path
-         sodipodi:nodetypes="ccccc"
-         style="fill:url(#radialGradient8515);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39804062px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 791.67457,1047.9257 8.06494,-1.9738 c 26.10021,29.9372 53.48075,22.3483 74.08403,-4.3982 3.93777,-3.6139 9.19344,1.2807 5.35869,5.4488 -26.86251,26.2922 -61.15618,28.6218 -87.50766,0.9232 z"
-         id="path6506-3"
-         inkscape:connector-curvature="0" />
-      <path
-         sodipodi:nodetypes="ccccc"
-         style="fill:url(#radialGradient8512);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.29948455px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 792.33535,1034.2747 7.17385,1.2615 c 10.61289,-16.092 20.76768,-25.063 38.88202,7.1424 2.87965,5.0515 9.34072,2.5611 6.72561,-2.4618 -16.96847,-23.0247 -35.04777,-31.0521 -52.78148,-5.9421 z"
-         id="path6532-2"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:url(#radialGradient8509);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.39353082px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 821.75451,1040.2293 c 0,-4.9459 -10.84757,-11.7928 -31.11002,-11.4123 l 0,23.7452 c 20.26245,0.3805 31.11002,-6.4664 31.11002,-11.4123 l 0,-0.9206 z"
-         id="path3650-5"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.46274474;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 790.50201,1028.8358 -10.17576,1.8308 0,1.4791 0,17.0878 0,1.4791 10.17576,1.8308 0,-5.1408 0,-13.426 0,-5.1408 z"
-         id="path3674-4"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fs-0.png"
-         inkscape:export-xdpi="92"
-         inkscape:export-ydpi="92"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:url(#radialGradient8505);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.36297879px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-         d="m 797.72685,1049.7204 c 12.27939,-1.6024 18.7963,-5.5806 18.7963,-8.6553 l 0,-0.7357 c -10e-6,-3.0748 -6.51692,-7.0485 -18.7963,-8.6553 l 0,1.5448 c 10.25826,1.4563 15.72624,4.6359 15.72624,7.1351 l 0,0.662 c 0,2.4991 -5.46881,5.6787 -15.72624,7.1352 l 0,1.5692 z"
-         id="path8160"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       id="ai-scaffolding"
-       inkscape:label="#g13830"
-       transform="matrix(0.20506613,0,0,0.20506613,-979.20985,271.2686)">
-      <rect
-         y="237.83109"
-         x="-192.35057"
-         height="48.663616"
-         width="4.775207"
-         id="rect13697"
-         style="fill:url(#radialGradient13828);fill-opacity:1;stroke:#000000;stroke-width:0.09710328;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <rect
-         transform="matrix(-0.96592583,-0.25881904,0.25881904,-0.96592583,0,0)"
-         style="fill:url(#radialGradient13844);fill-opacity:1;stroke:#000000;stroke-width:0.08532777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect13701"
-         width="4.1961279"
-         height="42.76228"
-         x="113.5394"
-         y="-323.77707" />
-      <rect
-         y="107.72643"
-         x="-297.98178"
-         height="48.663616"
-         width="4.775207"
-         id="rect13706"
-         style="fill:url(#radialGradient13824);fill-opacity:1;stroke:#000000;stroke-width:0.09710328;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)" />
-      <rect
-         transform="matrix(-0.96592583,0.25881905,-0.25881905,-0.96592583,0,0)"
-         style="fill:url(#radialGradient13846);fill-opacity:1;stroke:#000000;stroke-width:0.08532777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect13710"
-         width="4.1961279"
-         height="42.762283"
-         x="249.24484"
-         y="-225.44498" />
-      <rect
-         y="-57.763149"
-         x="-324.40881"
-         height="48.663616"
-         width="4.775207"
-         id="rect13715"
-         style="fill:url(#radialGradient13820);fill-opacity:1;stroke:#000000;stroke-width:0.09710328;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0.5,-0.8660254,0.8660254,0.5,0,0)" />
-      <rect
-         transform="matrix(-0.70710678,0.70710678,-0.70710678,-0.70710678,0,0)"
-         style="fill:url(#radialGradient13848);fill-opacity:1;stroke:#000000;stroke-width:0.08532777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect13719"
-         width="4.1961274"
-         height="42.76228"
-         x="317.60318"
-         y="-72.434166" />
-      <rect
-         transform="matrix(0,-1,1,0,0,0)"
-         style="fill:url(#radialGradient13816);fill-opacity:1;stroke:#000000;stroke-width:0.09710328;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect13728"
-         width="4.775207"
-         height="48.663616"
-         x="-264.55048"
-         y="-214.2948" />
-      <rect
-         y="94.256294"
-         x="300.29788"
-         height="42.76228"
-         width="4.1961279"
-         id="rect13730"
-         style="fill:url(#radialGradient13850);fill-opacity:1;stroke:#000000;stroke-width:0.08532777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(-0.25881904,0.96592583,-0.96592583,-0.25881904,0,0)" />
-      <rect
-         transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,0,0)"
-         style="fill:url(#radialGradient13812);fill-opacity:1;stroke:#000000;stroke-width:0.09710328;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect13732"
-         width="4.775207"
-         height="48.663616"
-         x="-134.4458"
-         y="-319.92599" />
-      <rect
-         y="229.96178"
-         x="201.96576"
-         height="42.762283"
-         width="4.1961279"
-         id="rect13734"
-         style="fill:url(#radialGradient13852);fill-opacity:1;stroke:#000000;stroke-width:0.08532777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0.25881905,0.96592583,-0.96592583,0.25881905,0,0)" />
-      <rect
-         transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)"
-         style="fill:url(#radialGradient13808);fill-opacity:1;stroke:#000000;stroke-width:0.09710328;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect13736"
-         width="4.775207"
-         height="48.663616"
-         x="31.043734"
-         y="-346.35303" />
-      <rect
-         y="298.32013"
-         x="48.954975"
-         height="42.76228"
-         width="4.1961274"
-         id="rect13738"
-         style="fill:url(#radialGradient13854);fill-opacity:1;stroke:#000000;stroke-width:0.08532777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)" />
-    </g>
-    <g
-       id="g10174"
-       transform="matrix(1.4973945,0,0,1.4973945,463.86337,-207.06765)">
-      <g
-         inkscape:label="#g14745"
-         transform="matrix(0.12021337,0,0,0.12021337,-934.86175,347.69675)"
-         id="nomad-scaffolding">
-        <rect
-           transform="scale(-1,1)"
-           style="fill:url(#radialGradient10206);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13917"
-           width="2.7318375"
-           height="78.336815"
-           x="-215.67648"
-           y="-317.95172"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-267.77655"
-           x="-272.94351"
-           height="32.19397"
-           width="4.1221213"
-           id="rect13919"
-           style="fill:url(#radialGradient10208);fill-opacity:1;stroke:#000000;stroke-width:0.50501919;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(-1,1)" />
-        <rect
-           transform="scale(-1,1)"
-           style="fill:url(#radialGradient10210);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13921"
-           width="4.7820134"
-           height="35.60569"
-           x="-274.02835"
-           y="-316.2803"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-298.87674"
-           x="-261.66373"
-           height="60.72533"
-           width="4.4741859"
-           id="rect13923"
-           style="fill:url(#radialGradient10212);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(-1,1)" />
-        <rect
-           transform="scale(-1,1)"
-           style="fill:url(#radialGradient10214);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13925"
-           width="2.2995594"
-           height="54.427925"
-           x="-254.39224"
-           y="-312.67722"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-276.00116"
-           x="-228.80762"
-           height="38.450047"
-           width="4.6841664"
-           id="rect13927"
-           style="fill:url(#radialGradient10216);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(-1,1)" />
-        <rect
-           transform="scale(-1,1)"
-           style="fill:url(#radialGradient10218);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13929"
-           width="3.8531256"
-           height="37.593605"
-           x="-230.54428"
-           y="-318.15802"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-292.79315"
-           x="-244.64835"
-           height="54.604404"
-           width="3.8012629"
-           id="rect13931"
-           style="fill:url(#radialGradient10220);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(-1,1)" />
-        <rect
-           transform="scale(-1,1)"
-           style="fill:url(#radialGradient10222);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13933"
-           width="3.8698997"
-           height="32.811504"
-           x="-238.28418"
-           y="-318.69965"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-287.78955"
-           x="-234.03448"
-           height="47.240097"
-           width="2.0356438"
-           id="rect13935"
-           style="fill:url(#radialGradient10224);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(-1,1)" />
-        <rect
-           transform="scale(-1,1)"
-           style="fill:url(#radialGradient10226);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13937"
-           width="2.0356438"
-           height="47.240097"
-           x="-221.50409"
-           y="-312.31714"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-312.85751"
-           x="-248.9715"
-           height="40.855915"
-           width="2.0499597"
-           id="rect13939"
-           style="fill:url(#radialGradient10228);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(-1,1)" />
-        <rect
-           transform="scale(-1,1)"
-           style="fill:url(#radialGradient10230);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13941"
-           width="3.1227739"
-           height="25.132671"
-           x="-249.5079"
-           y="-265.93839"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-276.46524"
-           x="-267.86929"
-           height="33.225819"
-           width="3.0542238"
-           id="rect13943"
-           style="fill:url(#radialGradient10232);fill-opacity:1;stroke:#000000;stroke-width:0.56854999;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(-1,1)" />
-        <rect
-           style="fill:#6e6b6b;fill-opacity:1;stroke:#000000;stroke-width:0.28861144;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13856"
-           width="33.855797"
-           height="33.855797"
-           x="224.13258"
-           y="-296.29013" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-283.30698"
-           x="305.0903"
-           height="83.602539"
-           width="3.7318952"
-           id="rect13858"
-           style="fill:url(#radialGradient10234);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient10236);fill-opacity:1;stroke:#000000;stroke-width:0.53084809;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13862"
-           width="4.0962925"
-           height="35.795559"
-           x="247.26979"
-           y="-238.64572"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-280.62152"
-           x="250.67247"
-           height="32.6968"
-           width="4.8330283"
-           id="rect13866"
-           style="fill:url(#radialGradient10238);fill-opacity:1;stroke:#000000;stroke-width:0.41863555;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient10240);fill-opacity:1;stroke:#000000;stroke-width:0.50655383;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13870"
-           width="4.4676318"
-           height="62.419128"
-           x="260.13959"
-           y="-266.22885"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-278.33224"
-           x="267.40778"
-           height="54.427925"
-           width="2.2995594"
-           id="rect13874"
-           style="fill:url(#radialGradient10242);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient10244);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13879"
-           width="4.6841664"
-           height="38.450047"
-           x="292.9924"
-           y="-241.65619"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-283.81305"
-           x="291.25574"
-           height="37.593605"
-           width="3.8531256"
-           id="rect13885"
-           style="fill:url(#radialGradient10246);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient10248);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13889"
-           width="3.8012629"
-           height="54.604404"
-           x="277.15167"
-           y="-263.25861"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-287.82053"
-           x="283.24924"
-           height="32.811504"
-           width="3.8698997"
-           id="rect13893"
-           style="fill:url(#radialGradient10250);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient10252);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13897"
-           width="2.0356438"
-           height="47.240097"
-           x="287.76553"
-           y="-253.44458"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-277.97217"
-           x="300.29593"
-           height="47.240097"
-           width="2.0356438"
-           id="rect13901"
-           style="fill:url(#radialGradient10254);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient10256);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13905"
-           width="2.0499597"
-           height="40.855915"
-           x="272.82852"
-           y="-278.51254"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-        <rect
-           inkscape:export-ydpi="90"
-           inkscape:export-xdpi="90"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           y="-231.59341"
-           x="272.29211"
-           height="25.132671"
-           width="3.1227739"
-           id="rect13909"
-           style="fill:url(#radialGradient10258);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient10260);fill-opacity:1;stroke:#000000;stroke-width:0.51423144;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect13913"
-           width="3.1085424"
-           height="26.705437"
-           x="253.90355"
-           y="-235.57274"
-           inkscape:export-filename="/home/xymus/xypros/pyfl/trunk/src/client/imgs/ships/nomad-fs-0.png"
-           inkscape:export-xdpi="90"
-           inkscape:export-ydpi="90" />
-      </g>
-    </g>
-    <g
-       id="0enemy3"
-       inkscape:label="#g9434"
-       transform="matrix(0,0.23040922,-0.23040922,0,-1015.0075,74.33802)">
-      <path
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/ai-fs-2.png"
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.88464981;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1109.5405,161.10857 -28.6744,2.37452 0,1.9184 0,22.16223 0,1.91839 28.6744,2.37452 0,-6.66745 0,-17.41316 0,-6.66745 z"
-         id="path10984-0"
-         inkscape:connector-curvature="0" />
-      <g
-         id="g8550">
-        <g
-           transform="translate(2.697347,-7.9720367)"
-           id="g8865"
-           inkscape:transform-center-x="-40.25722">
-          <rect
-             style="fill:url(#radialGradient8583);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect2797-8"
-             width="11.175754"
-             height="47.771709"
-             x="-189.43822"
-             y="-1193.5015"
-             transform="matrix(-0.2999797,0.95394559,-0.95394559,-0.2999797,0,0)"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92" />
-          <rect
-             transform="matrix(-0.2999797,-0.95394559,-0.95394559,0.2999797,0,0)"
-             y="-1083.0226"
-             x="-540.76453"
-             height="47.771709"
-             width="11.175754"
-             id="rect2799-8"
-             style="fill:url(#radialGradient8585);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92" />
-          <rect
-             y="-1183.3315"
-             x="178.80289"
-             height="47.771706"
-             width="11.175753"
-             id="rect2801-3"
-             style="fill:url(#radialGradient8587);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             transform="matrix(0,1,-1,0,0,0)"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92" />
-          <rect
-             style="fill:url(#radialGradient8589);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect2805-2"
-             width="11.175754"
-             height="47.771709"
-             x="-533.20209"
-             y="-1058.9735"
-             transform="matrix(-0.2999797,-0.95394559,-0.95394559,0.2999797,0,0)"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92" />
-          <rect
-             transform="matrix(-0.2999797,0.95394559,-0.95394559,-0.2999797,0,0)"
-             y="-1169.4524"
-             x="-181.87564"
-             height="47.771709"
-             width="11.175754"
-             id="rect2849-8"
-             style="fill:url(#radialGradient8591);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92" />
-        </g>
-        <g
-           inkscape:transform-center-x="14.761464"
-           id="g8872"
-           transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,1520.2821,1236.4936)"
-           inkscape:transform-center-y="-32.732782">
-          <rect
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             transform="matrix(-0.2999797,0.95394559,-0.95394559,-0.2999797,0,0)"
-             y="-1193.5015"
-             x="-189.43822"
-             height="47.771709"
-             width="11.175754"
-             id="rect8874"
-             style="fill:url(#radialGradient8593);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             style="fill:url(#radialGradient8595);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect8876"
-             width="11.175754"
-             height="47.771709"
-             x="-540.76453"
-             y="-1083.0226"
-             transform="matrix(-0.2999797,-0.95394559,-0.95394559,0.2999797,0,0)" />
-          <rect
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             transform="matrix(0,1,-1,0,0,0)"
-             style="fill:url(#radialGradient8597);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect8878"
-             width="11.175753"
-             height="47.771706"
-             x="178.80289"
-             y="-1183.3315" />
-          <rect
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             transform="matrix(-0.2999797,-0.95394559,-0.95394559,0.2999797,0,0)"
-             y="-1058.9735"
-             x="-533.20209"
-             height="47.771709"
-             width="11.175754"
-             id="rect8880"
-             style="fill:url(#radialGradient8599);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             style="fill:url(#radialGradient8601);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect8882"
-             width="11.175754"
-             height="47.771709"
-             x="-181.87564"
-             y="-1169.4524"
-             transform="matrix(-0.2999797,0.95394559,-0.95394559,-0.2999797,0,0)" />
-        </g>
-        <g
-           inkscape:transform-center-y="32.732842"
-           transform="matrix(-0.5,0.8660254,-0.8660254,-0.5,1839.2286,-700.00615)"
-           id="g8894"
-           inkscape:transform-center-x="14.761431">
-          <rect
-             style="fill:url(#radialGradient8603);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect8896"
-             width="11.175754"
-             height="47.771709"
-             x="-189.43822"
-             y="-1193.5015"
-             transform="matrix(-0.2999797,0.95394559,-0.95394559,-0.2999797,0,0)"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92" />
-          <rect
-             transform="matrix(-0.2999797,-0.95394559,-0.95394559,0.2999797,0,0)"
-             y="-1083.0226"
-             x="-540.76453"
-             height="47.771709"
-             width="11.175754"
-             id="rect8898"
-             style="fill:url(#radialGradient8605);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92" />
-          <rect
-             y="-1183.3315"
-             x="178.80289"
-             height="47.771706"
-             width="11.175753"
-             id="rect8900"
-             style="fill:url(#radialGradient8607);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             transform="matrix(0,1,-1,0,0,0)"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92" />
-          <rect
-             style="fill:url(#radialGradient8609);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect8902"
-             width="11.175754"
-             height="47.771709"
-             x="-533.20209"
-             y="-1058.9735"
-             transform="matrix(-0.2999797,-0.95394559,-0.95394559,0.2999797,0,0)"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92" />
-          <rect
-             transform="matrix(-0.2999797,0.95394559,-0.95394559,-0.2999797,0,0)"
-             y="-1169.4524"
-             x="-181.87564"
-             height="47.771709"
-             width="11.175754"
-             id="rect8904"
-             style="fill:url(#radialGradient8611);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92" />
-        </g>
-        <g
-           id="g8782"
-           transform="matrix(1.196721,0,0,1.196721,-102.93745,-44.406547)">
-          <rect
-             style="fill:url(#radialGradient8613);fill-opacity:1;stroke:#000000;stroke-width:0.09710328;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect13697-3"
-             width="4.775207"
-             height="48.663616"
-             x="1019.7657"
-             y="160.87718" />
-          <rect
-             y="64.273468"
-             x="-1037.3579"
-             height="42.76228"
-             width="4.1961279"
-             id="rect13701-3"
-             style="fill:url(#radialGradient8615);fill-opacity:1;stroke:#000000;stroke-width:0.08532777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             transform="matrix(-0.96592583,-0.25881904,0.25881904,-0.96592583,0,0)" />
-          <rect
-             transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)"
-             style="fill:url(#radialGradient8617);fill-opacity:1;stroke:#000000;stroke-width:0.09710328;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect13706-6"
-             width="4.775207"
-             height="48.663616"
-             x="790.21869"
-             y="647.14056" />
-          <rect
-             y="-464.832"
-             x="-941.48676"
-             height="42.762283"
-             width="4.1961279"
-             id="rect13710-4"
-             style="fill:url(#radialGradient8619);fill-opacity:1;stroke:#000000;stroke-width:0.08532777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             transform="matrix(-0.96592583,0.25881905,-0.25881905,-0.96592583,0,0)" />
-          <rect
-             transform="matrix(0.5,-0.8660254,0.8660254,0.5,0,0)"
-             style="fill:url(#radialGradient8621);fill-opacity:1;stroke:#000000;stroke-width:0.09710328;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect13715-9"
-             width="4.775207"
-             height="48.663616"
-             x="348.29337"
-             y="953.4834" />
-          <rect
-             y="-875.11517"
-             x="-593.9071"
-             height="42.76228"
-             width="4.1961274"
-             id="rect13719-8"
-             style="fill:url(#radialGradient8623);fill-opacity:1;stroke:#000000;stroke-width:0.08532777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             transform="matrix(-0.70710678,0.70710678,-0.70710678,-0.70710678,0,0)" />
-          <rect
-             y="997.82147"
-             x="-187.59657"
-             height="48.663616"
-             width="4.775207"
-             id="rect13728-4"
-             style="fill:url(#radialGradient8625);fill-opacity:1;stroke:#000000;stroke-width:0.09710328;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             transform="matrix(0,-1,1,0,0,0)" />
-          <rect
-             transform="matrix(-0.25881904,0.96592583,-0.96592583,-0.25881904,0,0)"
-             style="fill:url(#radialGradient8627);fill-opacity:1;stroke:#000000;stroke-width:0.08532777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect13730-6"
-             width="4.1961279"
-             height="42.76228"
-             x="-87.75264"
-             y="-1056.6409" />
-          <rect
-             y="768.27448"
-             x="-673.85992"
-             height="48.663616"
-             width="4.775207"
-             id="rect13732-9"
-             style="fill:url(#radialGradient8629);fill-opacity:1;stroke:#000000;stroke-width:0.09710328;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,0,0)" />
-          <rect
-             transform="matrix(0.25881905,0.96592583,-0.96592583,0.25881905,0,0)"
-             style="fill:url(#radialGradient8631);fill-opacity:1;stroke:#000000;stroke-width:0.08532777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect13734-9"
-             width="4.1961279"
-             height="42.762283"
-             x="441.35278"
-             y="-960.76978" />
-          <rect
-             y="326.34915"
-             x="-980.20282"
-             height="48.663616"
-             width="4.775207"
-             id="rect13736-7"
-             style="fill:url(#radialGradient8633);fill-opacity:1;stroke:#000000;stroke-width:0.09710328;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)" />
-          <rect
-             transform="matrix(0.70710678,0.70710678,-0.70710678,0.70710678,0,0)"
-             style="fill:url(#radialGradient8635);fill-opacity:1;stroke:#000000;stroke-width:0.08532777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect13738-8"
-             width="4.1961274"
-             height="42.76228"
-             x="851.63599"
-             y="-613.19012" />
-        </g>
-      </g>
-      <path
-         sodipodi:type="arc"
-         style="opacity:0;fill:#ffd700;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
-         id="path9266"
-         sodipodi:cx="318.85852"
-         sodipodi:cy="726.92743"
-         sodipodi:rx="19.195496"
-         sodipodi:ry="19.195496"
-         d="m 338.05402,726.92743 c 0,10.60138 -8.59412,19.19549 -19.1955,19.19549 -10.60138,0 -19.1955,-8.59411 -19.1955,-19.19549 0,-10.60138 8.59412,-19.1955 19.1955,-19.1955 10.60138,0 19.1955,8.59412 19.1955,19.1955 z"
-         transform="matrix(0,-4.2210956,4.2210956,0,-1947.7478,1524.1718)" />
-    </g>
-    <g
-       id="123"
-       inkscape:label="#g7485"
-       transform="matrix(0,-0.14537333,0.14537333,0,-1044.5631,434.08533)">
-      <g
-         id="g7375"
-         transform="matrix(1.1195175,0,0,1.1195175,293.06123,-136.20874)">
-        <g
-           id="g7939">
-          <rect
-             inkscape:transform-center-y="-2.9377944"
-             inkscape:transform-center-x="-7.9296433"
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             transform="matrix(0,1,-1,0,0,0)"
-             y="-579.08923"
-             x="251.33665"
-             height="47.771706"
-             width="11.175753"
-             id="rect7377"
-             style="fill:url(#radialGradient7917);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             inkscape:transform-center-y="0.66921726"
-             inkscape:transform-center-x="-22.822161"
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             transform="matrix(0,1,-1,0,0,0)"
-             style="fill:url(#radialGradient7913);fill-opacity:1;stroke:#000000;stroke-width:0.13633616;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect7383"
-             width="9.5869751"
-             height="47.782555"
-             x="257.04868"
-             y="-593.98199" />
-          <rect
-             inkscape:transform-center-y="-0.7877961"
-             inkscape:transform-center-x="-8.2516517"
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             style="fill:url(#radialGradient7910);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect7385"
-             width="8.7796688"
-             height="37.529438"
-             x="367.69363"
-             y="-505.88068"
-             transform="matrix(0.88601619,-0.4636543,-0.4636543,-0.88601619,0,0)" />
-          <rect
-             inkscape:transform-center-y="0.81162357"
-             inkscape:transform-center-x="-6.6517057"
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             transform="matrix(-0.91611805,-0.40090862,-0.40090862,0.91611805,0,0)"
-             y="-2.0300751"
-             x="-616.35736"
-             height="37.5294"
-             width="8.7796659"
-             id="rect7399"
-             style="fill:url(#radialGradient7904);fill-opacity:1;stroke:#000000;stroke-width:0.1156273;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             style="fill:url(#radialGradient7884);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect7816"
-             width="11.175753"
-             height="47.771706"
-             x="333.05524"
-             y="458.94684"
-             transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92"
-             inkscape:transform-center-x="-7.9296433"
-             inkscape:transform-center-y="-2.9377944" />
-          <rect
-             y="444.05408"
-             x="338.76727"
-             height="47.782555"
-             width="9.5869751"
-             id="rect7818"
-             style="fill:url(#radialGradient7881);fill-opacity:1;stroke:#000000;stroke-width:0.13633616;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             transform="matrix(0.8660254,-0.5,0.5,0.8660254,0,0)"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92"
-             inkscape:transform-center-x="-22.822161"
-             inkscape:transform-center-y="0.66921726" />
-          <rect
-             transform="matrix(-0.8445445,-0.53548538,-0.53548538,0.8445445,0,0)"
-             y="-96.994781"
-             x="-589.91229"
-             height="37.529438"
-             width="8.7796688"
-             id="rect7820"
-             style="fill:url(#radialGradient7878);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92"
-             inkscape:transform-center-x="-8.2516517"
-             inkscape:transform-center-y="-0.7877961" />
-          <rect
-             style="fill:url(#radialGradient7872);fill-opacity:1;stroke:#000000;stroke-width:0.1156273;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect7824"
-             width="8.7796659"
-             height="37.5294"
-             x="301.84454"
-             y="488.99142"
-             transform="matrix(0.11086198,0.99383581,0.99383581,-0.11086198,0,0)"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92"
-             inkscape:transform-center-x="-6.6517057"
-             inkscape:transform-center-y="0.81162357" />
-          <rect
-             inkscape:transform-center-y="-2.9377944"
-             inkscape:transform-center-x="-7.9296433"
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)"
-             y="10.6992"
-             x="-606.76965"
-             height="47.771706"
-             width="11.175753"
-             id="rect7842"
-             style="fill:url(#radialGradient7937);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             inkscape:transform-center-y="0.66921726"
-             inkscape:transform-center-x="-22.822161"
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             transform="matrix(-0.8660254,-0.5,0.5,-0.8660254,0,0)"
-             style="fill:url(#radialGradient7933);fill-opacity:1;stroke:#000000;stroke-width:0.13633616;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect7844"
-             width="9.5869751"
-             height="47.782555"
-             x="-601.05768"
-             y="-4.193562" />
-          <rect
-             inkscape:transform-center-y="-0.7877961"
-             inkscape:transform-center-x="-8.2516517"
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             style="fill:url(#radialGradient7929);fill-opacity:1;stroke:#000000;stroke-width:0.11562739;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect7846"
-             width="8.7796688"
-             height="37.529438"
-             x="242.99622"
-             y="527.87335"
-             transform="matrix(-0.0414717,0.99913968,0.99913968,0.0414717,0,0)" />
-          <rect
-             inkscape:transform-center-y="0.81162357"
-             inkscape:transform-center-x="-6.6517057"
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             transform="matrix(0.80525607,-0.59292719,-0.59292719,-0.80525607,0,0)"
-             y="-551.70551"
-             x="267.98068"
-             height="37.5294"
-             width="8.7796659"
-             id="rect7850"
-             style="fill:url(#radialGradient7923);fill-opacity:1;stroke:#000000;stroke-width:0.1156273;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             inkscape:transform-center-y="8.6660356"
-             inkscape:transform-center-x="-23.220018"
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             transform="matrix(-0.2999797,-0.95394559,-0.95394559,0.2999797,0,0)"
-             y="-487.5528"
-             x="-432.88586"
-             height="47.771709"
-             width="11.175754"
-             id="rect7387"
-             style="fill:url(#radialGradient7907);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             inkscape:transform-center-y="-8.6660355"
-             inkscape:transform-center-x="-23.220042"
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             style="fill:url(#radialGradient7899);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect7419"
-             width="11.175754"
-             height="47.771709"
-             x="62.903164"
-             y="-643.45966"
-             transform="matrix(-0.2999797,0.95394559,-0.95394559,-0.2999797,0,0)" />
-          <rect
-             style="fill:url(#radialGradient7875);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect7822"
-             width="11.175754"
-             height="47.771709"
-             x="-199.4512"
-             y="527.19104"
-             transform="matrix(-0.67615126,0.73676283,0.73676283,0.67615126,0,0)"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92"
-             inkscape:transform-center-x="-23.220018"
-             inkscape:transform-center-y="8.6660356" />
-          <rect
-             transform="matrix(0.97613096,-0.21718276,0.21718276,0.97613096,0,0)"
-             y="322.25635"
-             x="452.24802"
-             height="47.771709"
-             width="11.175754"
-             id="rect7826"
-             style="fill:url(#radialGradient7868);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             inkscape:export-xdpi="92"
-             inkscape:export-ydpi="92"
-             inkscape:transform-center-x="-23.220042"
-             inkscape:transform-center-y="-8.6660355" />
-          <rect
-             inkscape:transform-center-y="8.6660356"
-             inkscape:transform-center-x="-23.220018"
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             transform="matrix(0.97613096,0.21718276,0.21718276,-0.97613096,0,0)"
-             y="-182.3412"
-             x="562.62543"
-             height="47.771709"
-             width="11.175754"
-             id="rect7848"
-             style="fill:url(#radialGradient7926);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             inkscape:transform-center-y="-8.6660355"
-             inkscape:transform-center-x="-23.220042"
-             inkscape:export-ydpi="92"
-             inkscape:export-xdpi="92"
-             inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-             style="fill:url(#radialGradient7920);fill-opacity:1;stroke:#000000;stroke-width:0.14718358;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect7852"
-             width="11.175754"
-             height="47.771709"
-             x="-578.75903"
-             y="176.58089"
-             transform="matrix(-0.67615126,-0.73676283,0.73676283,-0.67615126,0,0)" />
-        </g>
-      </g>
-    </g>
-    <g
-       id="human-builder"
-       inkscape:label="#g9121"
-       transform="matrix(0.14452663,0,0,0.14452663,-769.50303,249.55802)">
-      <g
-         style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
-         transform="translate(1.0368466,-3.393316)"
-         id="g8311">
-        <rect
-           style="fill:url(#radialGradient8335);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5000-8"
-           width="27.461296"
-           height="12.093904"
-           x="227.73466"
-           y="687.12103"
-           rx="6.0620885"
-           clip-path="none"
-           mask="none" />
-        <rect
-           mask="none"
-           clip-path="none"
-           rx="6.0620885"
-           y="687.12103"
-           x="227.73466"
-           height="12.093904"
-           width="27.461296"
-           id="rect5261-9"
-           style="fill:url(#linearGradient8337);fill-opacity:1;stroke:none"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-      </g>
-      <g
-         style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
-         transform="matrix(0.79174965,0,0,0.99801056,211.42483,-395.25225)"
-         id="g5076-0">
-        <rect
-           style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect4972-9"
-           width="8.1456375"
-           height="8.4338264"
-           x="1079.4452"
-           y="-17.777203"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <path
-           style="fill:url(#radialGradient8285);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 16.93507,1078.9819 c -1.280695,0.055 -2.015645,3.7671 -3.0848,4.4838 l -0.405712,0 c 0.110774,0 0.211877,0.01 0.300787,0.048 l 0.104925,0.064 c 1.107336,0.7424 1.760993,4.69 3.231692,4.4679 3.268041,0.1259 8.234418,-0.9911 9.366312,-4.4679 l 0,-0.1113 c -1.131894,-3.4766 -6.098271,-4.5937 -9.366312,-4.4677 -0.05071,-0.01 -0.101154,-0.018 -0.146892,-0.016 z"
-           id="path5058-2"
-           sodipodi:nodetypes="cccccccccc"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           inkscape:connector-curvature="0" />
-      </g>
-      <path
-         style="fill:url(#radialGradient8271);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 275.53398,686.11057 c 0,3.33801 -5.82457,6.04711 -13.00128,6.04711 -7.17671,0 -8.46595,-2.40675 -8.46595,-5.74475 0,-3.33801 1.28924,-6.34946 8.46595,-6.34946 7.17671,0 13.00128,2.7091 13.00128,6.0471 z"
-         id="path8174"
-         inkscape:export-filename="/media/pros/pyfl/art/harvester.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76"
-         inkscape:connector-curvature="0" />
-      <path
-         style="fill:url(#radialGradient8265);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 274.28754,686.07026 c 0,2.27722 -2.90441,4.1657 -4.34712,4.1657 -1.44272,0 -0.19477,-1.84817 -0.19477,-4.12539 0,-2.27721 -1.24795,-4.12539 0.19477,-4.12539 1.44271,0 4.34712,1.80786 4.34712,4.08508 z"
-         id="path8178"
-         sodipodi:nodetypes="csssc"
-         inkscape:export-filename="/media/pros/pyfl/art/harvester.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76"
-         inkscape:connector-curvature="0" />
-      <g
-         style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
-         transform="translate(1.0368466,5.278492)"
-         id="g8315">
-        <rect
-           mask="none"
-           clip-path="none"
-           rx="6.0620885"
-           y="671.12103"
-           x="227.73466"
-           height="12.093904"
-           width="27.461296"
-           id="rect4998-8"
-           style="fill:url(#radialGradient8339);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#linearGradient8341);fill-opacity:1;stroke:none"
-           id="rect5257-7"
-           width="27.461296"
-           height="12.093904"
-           x="227.73466"
-           y="671.12103"
-           rx="6.0620885"
-           clip-path="none"
-           mask="none"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-      </g>
-    </g>
-    <g
-       id="evolved-builder"
-       inkscape:label="#g9313"
-       transform="matrix(0.17732501,0,0,0.17732501,-772.36257,236.53318)">
-      <g
-         inkscape:export-ydpi="92"
-         inkscape:export-xdpi="92"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fighter.png"
-         style="stroke-width:0.69999999;stroke-miterlimit:4;stroke-dasharray:none"
-         transform="matrix(0.37275677,0,0,0.86789607,230.25744,-186.12499)"
-         id="g8122-5">
-        <path
-           style="fill:url(#radialGradient8126-6);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.69999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 187.25,869.4375 c -10.15586,2.01292 -15.70208,4.75653 -20.34375,7.5625 l 7.125,-0.0625 c 3.26763,-2.12593 7.12471,-4.19945 13.21875,-5.90625 l 0,-1.59375 z"
-           id="path8065-4"
-           inkscape:connector-curvature="0" />
-        <path
-           id="path8118-6"
-           d="m 187.25,889.89966 c -10.15586,-2.01292 -15.70208,-4.75653 -20.34375,-7.5625 l 7.125,0.0625 c 3.26763,2.12593 7.12471,4.19945 13.21875,5.90625 l 0,1.59375 z"
-           style="fill:url(#radialGradient9280);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.69999999;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g9134"
-         transform="matrix(1.4942792,0,0,1.4942792,-296.25582,-378.06292)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-harvester.png"
-         inkscape:export-xdpi="66.98317"
-         inkscape:export-ydpi="66.98317">
-        <path
-           style="fill:url(#radialGradient9146);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.65968627;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 409.15675,639.22724 c 0,-0.85521 -6.26434,-2.03917 -17.96566,-1.97338 l 0,4.10595 c 11.70132,0.0658 17.96566,-1.11816 17.96566,-1.97338 l 0,-0.15919 z"
-           id="path9136"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.40174693;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 391.03424,637.12685 -1.87139,0.3367 0,0.27202 0,3.14253 0,0.27202 1.87139,0.3367 0,-0.94541 0,-2.46914 0,-0.94542 z"
-           id="path9138"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g9140"
-         transform="matrix(1.4942792,0,0,1.4942792,-291.29278,-383.77344)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-harvester.png"
-         inkscape:export-xdpi="66.98317"
-         inkscape:export-ydpi="66.98317">
-        <path
-           transform="matrix(0.6176471,0,0,0.6176471,159.46332,245.62723)"
-           d="m 403.75,643.86218 c 0,4.41828 -3.58172,8 -8,8 -4.41828,0 -8,-3.58172 -8,-8 0,-4.41828 3.58172,-8 8,-8 4.41828,0 8,3.58172 8,8 z"
-           sodipodi:ry="8"
-           sodipodi:rx="8"
-           sodipodi:cy="643.86218"
-           sodipodi:cx="395.75"
-           id="path9142"
-           style="fill:url(#radialGradient9149);fill-opacity:1;stroke:#000000;stroke-opacity:1"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:nodetypes="cczccc"
-           style="fill:url(#radialGradient9152);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 408.23598,643.14837 c 0,-1.70291 -1.26745,-4.06032 -3.63498,-3.92933 0,0 1.85616,1.56212 1.85616,4.22795 0,2.66542 -1.85616,3.94765 -1.85616,3.94765 2.36753,0.13101 3.63498,-2.22643 3.63498,-3.92931 l 0,-0.31696 z"
-           id="path9144"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fighter.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         id="g9230"
-         transform="matrix(1.4942792,0,0,1.4942792,-291.99016,-386.93529)"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-harvester.png"
-         inkscape:export-xdpi="66.98317"
-         inkscape:export-ydpi="66.98317">
-        <path
-           style="fill:url(#radialGradient9236);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.40174693;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 397.33181,639.22225 c 0,-0.90887 -2.18614,-2.16711 -6.26969,-2.09719 l 0,4.36355 c 4.08355,0.0699 6.26969,-1.18831 6.26969,-2.09719 l 0,-0.16917 z"
-           id="path9232"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92"
-           inkscape:connector-curvature="0" />
-        <path
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.40174693;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 391.03424,637.12685 -1.87139,0.3367 0,0.27202 0,3.14253 0,0.27202 1.87139,0.3367 0,-0.94541 0,-2.46914 0,-0.94542 z"
-           id="path9234"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         inkscape:export-ydpi="66.98317"
-         inkscape:export-xdpi="66.98317"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-harvester.png"
-         transform="matrix(1.4942792,0,0,1.4942792,-291.99016,-368.80621)"
-         id="g9246">
-        <path
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-           id="path9248"
-           d="m 397.33181,639.22225 c 0,-0.90887 -2.18614,-2.16711 -6.26969,-2.09719 l 0,4.36355 c 4.08355,0.0699 6.26969,-1.18831 6.26969,-2.09719 l 0,-0.16917 z"
-           style="fill:url(#radialGradient9252);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.40174693;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-           id="path9250"
-           d="m 391.03424,637.12685 -1.87139,0.3367 0,0.27202 0,3.14253 0,0.27202 1.87139,0.3367 0,-0.94541 0,-2.46914 0,-0.94542 z"
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.40174693;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <g
-       id="ai-builder"
-       inkscape:label="#g9368"
-       transform="matrix(0.17732501,0,0,0.17732501,-772.36257,236.53318)">
-      <rect
-         inkscape:export-ydpi="87.310692"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         style="fill:url(#radialGradient9356);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect9344"
-         width="3.4296565"
-         height="14.660379"
-         x="-274.77222"
-         y="295.97195"
-         transform="matrix(0.00458966,-0.99998947,0.99998947,0.00458966,0,0)" />
-      <rect
-         inkscape:export-ydpi="87.310692"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         style="fill:url(#radialGradient9358);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect9346"
-         width="3.4296565"
-         height="14.660381"
-         x="-346.36105"
-         y="212.26732"
-         transform="matrix(-0.25438305,-0.96710354,0.96710354,-0.25438305,0,0)" />
-      <rect
-         transform="matrix(0.26324959,-0.96472776,0.96472776,0.26324959,0,0)"
-         y="353.59045"
-         x="-184.59995"
-         height="14.660379"
-         width="3.4296565"
-         id="rect9348"
-         style="fill:url(#radialGradient9360);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-ydpi="87.310692" />
-      <rect
-         transform="matrix(0.00458966,-0.99998947,0.99998947,0.00458966,0,0)"
-         y="299.9718"
-         x="-274.75372"
-         height="14.660374"
-         width="3.4296565"
-         id="rect9350"
-         style="fill:url(#radialGradient9362);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-ydpi="87.310692" />
-      <rect
-         inkscape:export-ydpi="87.310692"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         style="fill:url(#radialGradient9364);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect9352"
-         width="3.4296565"
-         height="14.660372"
-         x="-343.61072"
-         y="225.3988"
-         transform="matrix(-0.25438305,-0.96710354,0.96710354,-0.25438305,0,0)" />
-      <rect
-         transform="matrix(0.26324959,-0.96472776,0.96472776,0.26324959,0,0)"
-         y="366.74658"
-         x="-187.22935"
-         height="14.660374"
-         width="3.4296565"
-         id="rect9354"
-         style="fill:url(#radialGradient9366);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-ydpi="87.310692" />
-    </g>
-    <g
-       id="g8303"
-       transform="matrix(0.15598709,0,0,0.15598709,-937.12672,392.52761)">
-      <g
-         inkscape:label="#g8843"
-         id="nomad-base-cargo">
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9662);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8830"
-           width="2.2208073"
-           height="11.831706"
-           x="208.39229"
-           y="-37.384022" />
-        <rect
-           y="-34.588818"
-           x="211.40857"
-           height="11.831706"
-           width="2.2208073"
-           id="rect8832"
-           style="fill:url(#radialGradient9664);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           y="-21.654379"
-           x="208.39229"
-           height="11.831706"
-           width="2.2208073"
-           id="rect8821"
-           style="fill:url(#radialGradient9666);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9668);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8823"
-           width="2.2208073"
-           height="11.831706"
-           x="211.40857"
-           y="-18.859177" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9670);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8776"
-           width="4.2556205"
-           height="24.876326"
-           x="134.41058"
-           y="-13.994645" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9672);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8724"
-           width="4.1698985"
-           height="15.176208"
-           x="101.74566"
-           y="-14.800114" />
-        <rect
-           y="-38.299667"
-           x="183.78966"
-           height="37.348793"
-           width="3.0185483"
-           id="rect8720"
-           style="fill:url(#radialGradient9674);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           y="-118.36275"
-           x="35.066547"
-           height="28.076361"
-           width="3.7781601"
-           id="rect8704"
-           style="fill:url(#radialGradient9676);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           y="-263.00754"
-           x="22.146629"
-           height="46.945286"
-           width="3.7764707"
-           id="rect8688"
-           style="fill:url(#radialGradient9678);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <path
-           style="fill:#515151;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 169.45946,-80.30376 c 0,0 -8.3228,40.821327 -5.54853,67.375001 1.52377,14.5846027 21.80348,25.886356 47.16251,26.553688 15.06029,0.396318 11.09705,2.377935 32.49854,5.548534 -32.10222,3.566903 -28.53531,15.060289 -42.01031,16.249271 C 188.13302,36.607628 153.60651,24.325665 134.97931,23.533016 116.33108,22.739459 123.48593,8.869045 94.950634,7.680078 c 24.175736,-9.9080862 49.540436,-1.5853 51.125736,-23.383089 1.58529,-21.797805 4.37667,-46.5437 3.96324,-51.918396 13.87133,-4.359552 19.41985,-12.682353 19.41985,-12.682353 z"
-           id="path8395"
-           sodipodi:nodetypes="csscsscscc"
-           inkscape:connector-curvature="0" />
-        <rect
-           y="22.181015"
-           x="158.95703"
-           height="25.428501"
-           width="3.0954421"
-           id="rect8736"
-           style="fill:url(#radialGradient9680);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           y="-10.698835"
-           x="145.27269"
-           height="66.660622"
-           width="4.3369479"
-           id="rect8732"
-           style="fill:url(#radialGradient9682);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <path
-           style="fill:#6a6a6a;fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 81.871957,-46.436787 39.632363,0 c 0,0 26.95,13.475003 56.27794,13.475003 29.32795,0 11.09707,-3.963235 33.2912,-3.963235 22.19412,0 15.06028,0 15.06028,0 l 0,7.926469 39.63236,0 c 0,0 -39.63236,7.133849 -53.90001,21.4014868 C 158.36241,-10.37133 163.91094,-24.242665 111.59623,-24.638983 112.38888,-34.943401 83.457242,-44.851488 81.871957,-46.436787 z"
-           id="path7621"
-           sodipodi:nodetypes="ccsscccccc"
-           inkscape:connector-curvature="0" />
-        <rect
-           y="-168.83052"
-           x="58.936462"
-           height="42.83989"
-           width="5.9386377"
-           id="rect7153-1"
-           style="fill:url(#radialGradient9684);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <path
-           style="fill:#676767;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.5;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 213.62184,-82.55658 -2.76637,2.10336 c 0,0 -7.83803,3.365392 -6.22431,5.468748 1.6137,2.10338 -3.52235,3.00232 0,11.3582 2.3053,5.46877 2.3053,6.73077 2.3053,6.73077 0,0 -11.06546,-0.42064 -9.45174,1.26203 1.61371,1.6827 -0.23053,3.3654 -0.23053,3.3654 l -66.39272,0 c 0,0 -0.69159,-4.62743 -4.6106,-4.62743 -3.91901,0 0.92212,-1.68267 0.92212,-1.68267 0,0 10.51932,-7.04573 5.07166,-9.25483 -4.14954,-1.6827 -4.38007,-2.94471 -4.38007,-2.94471 0,0 10.8427,-5.34192 5.07167,-8.413486 -5.53273,-2.944732 -2.9969,-3.365382 -2.9969,-3.365382 l 83.68249,0 z"
-           id="path7155-2"
-           sodipodi:nodetypes="ccsscsccscscscc"
-           inkscape:connector-curvature="0" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient9686);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect7157-2"
-           width="5.6264772"
-           height="37.198437"
-           x="54.512024"
-           y="-158.45259" />
-        <rect
-           y="-159.13213"
-           x="80.092041"
-           height="37.245316"
-           width="4.5146952"
-           id="rect7159-0"
-           style="fill:url(#radialGradient9688);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           y="-215.23909"
-           x="72.775391"
-           height="68.754135"
-           width="4.0616941"
-           id="rect7161-2"
-           style="fill:url(#radialGradient9690);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           y="-151.15993"
-           x="67.819763"
-           height="34.423656"
-           width="3.4366186"
-           id="rect7163-1"
-           style="fill:url(#radialGradient9692);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient9694);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect7165-7"
-           width="3.7764707"
-           height="46.945286"
-           x="64.536682"
-           y="-207.28728" />
-        <rect
-           y="-164.89494"
-           x="-68.378906"
-           height="27.488136"
-           width="6.5049448"
-           id="rect7167-5"
-           style="fill:url(#radialGradient9696);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)" />
-        <rect
-           y="-203.58667"
-           x="49.019348"
-           height="51.092144"
-           width="4.3992014"
-           id="rect7169-1"
-           style="fill:url(#radialGradient9698);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient9700);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect7171-7"
-           width="4.2149577"
-           height="46.660664"
-           x="56.17572"
-           y="-215.93718" />
-        <rect
-           y="-218.63802"
-           x="80.462097"
-           height="46.288235"
-           width="6.6483822"
-           id="rect7173-4"
-           style="fill:url(#radialGradient9702);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           y="-156.19817"
-           x="75.149048"
-           height="18.254551"
-           width="3.1458371"
-           id="rect7175-1"
-           style="fill:url(#radialGradient9704);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient9706);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8656"
-           width="4.1940799"
-           height="39.293465"
-           x="18.32196"
-           y="-250.23041" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient9708);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8660"
-           width="4.5146952"
-           height="37.245316"
-           x="36.102364"
-           y="-231.11522" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient9710);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8664"
-           width="3.4366186"
-           height="34.423656"
-           x="5.9676113"
-           y="-221.81001" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient9712);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8668"
-           width="4.0721145"
-           height="66.098511"
-           x="44.243538"
-           y="-142.72797" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient9714);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8672"
-           width="4.5271702"
-           height="29.891787"
-           x="20.162121"
-           y="-130.06793" />
-        <rect
-           y="-180.8223"
-           x="-31.252047"
-           height="61.209061"
-           width="4.5009241"
-           id="rect8700"
-           style="fill:url(#radialGradient9716);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,1,-1,0,0,0)"
-           style="fill:url(#radialGradient9718);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8676"
-           width="5.4847808"
-           height="27.534388"
-           x="-35.076519"
-           y="-185.17999" />
-        <rect
-           y="-155.41805"
-           x="37.24683"
-           height="46.660664"
-           width="4.2149577"
-           id="rect8680"
-           style="fill:url(#radialGradient9720);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           y="-248.96011"
-           x="26.885244"
-           height="60.18552"
-           width="4.1430058"
-           id="rect8684"
-           style="fill:url(#radialGradient9722);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           y="-233.3566"
-           x="13.067636"
-           height="74.8629"
-           width="4.0385618"
-           id="rect8692"
-           style="fill:url(#radialGradient9724);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           y="-205.92307"
-           x="21.305683"
-           height="70.383987"
-           width="3.5587175"
-           id="rect8696"
-           style="fill:url(#radialGradient9726);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,-1,-1,0,0,0)" />
-        <rect
-           transform="matrix(0,-1,-1,0,0,0)"
-           style="fill:url(#radialGradient9728);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8708"
-           width="3.8553257"
-           height="17.755966"
-           x="31.028904"
-           y="-117.86812" />
-        <rect
-           y="-39.372509"
-           x="200.0461"
-           height="24.431343"
-           width="4.3644185"
-           id="rect8712"
-           style="fill:url(#radialGradient9730);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9732);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8716"
-           width="3.1297245"
-           height="20.930515"
-           x="224.25789"
-           y="-29.55732" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9734);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8728"
-           width="4.6097713"
-           height="25.343206"
-           x="167.79762"
-           y="-20.699598" />
-        <rect
-           y="-33.164417"
-           x="152.66676"
-           height="34.276596"
-           width="5.5450363"
-           id="rect8740"
-           style="fill:url(#radialGradient9736);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9738);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8813"
-           width="3.2258813"
-           height="24.759129"
-           x="192.55058"
-           y="-40.736122" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9740);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8744"
-           width="4.6736135"
-           height="18.741945"
-           x="189.62724"
-           y="-23.930769" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9742);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8817"
-           width="3.0963998"
-           height="25.296158"
-           x="178.01875"
-           y="-25.941502" />
-        <rect
-           y="-35.927952"
-           x="174.96402"
-           height="18.741945"
-           width="4.6736135"
-           id="rect8748"
-           style="fill:url(#radialGradient9744);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9746);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8752"
-           width="3.080354"
-           height="25.004391"
-           x="115.2859"
-           y="-22.182255" />
-        <rect
-           y="-23.8729"
-           x="119.87827"
-           height="26.68902"
-           width="3.0683255"
-           id="rect8756"
-           style="fill:url(#radialGradient9748);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9750);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8760"
-           width="3.0541873"
-           height="28.748575"
-           x="129.05794"
-           y="-25.939524" />
-        <rect
-           y="-25.000113"
-           x="124.46851"
-           height="27.812342"
-           width="3.0605409"
-           id="rect8764"
-           style="fill:url(#radialGradient9752);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9754);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8768"
-           width="3.1163435"
-           height="20.327442"
-           x="110.6816"
-           y="-17.48731" />
-        <rect
-           y="-28.510498"
-           x="141.19722"
-           height="24.876326"
-           width="4.2556205"
-           id="rect8772"
-           style="fill:url(#radialGradient9756);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           y="5.756238"
-           x="152.21405"
-           height="11.831706"
-           width="2.2208073"
-           id="rect8780"
-           style="fill:url(#radialGradient9758);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9760);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8784"
-           width="2.2208073"
-           height="11.831706"
-           x="155.23033"
-           y="3.3055096" />
-        <rect
-           y="-0.087806687"
-           x="158.43513"
-           height="11.831706"
-           width="2.2208073"
-           id="rect8788"
-           style="fill:url(#radialGradient9762);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9764);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8792"
-           width="2.2208073"
-           height="11.831706"
-           x="161.26289"
-           y="-4.4237108" />
-        <rect
-           y="-21.013256"
-           x="160.3203"
-           height="11.831706"
-           width="2.2208073"
-           id="rect8796"
-           style="fill:url(#radialGradient9766);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9768);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8801"
-           width="2.2208073"
-           height="11.831706"
-           x="162.95955"
-           y="-23.841019" />
-        <rect
-           transform="scale(1,-1)"
-           style="fill:url(#radialGradient9770);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8805"
-           width="2.2208073"
-           height="11.831706"
-           x="208.39229"
-           y="-29.652502" />
-        <rect
-           y="-26.8573"
-           x="211.40857"
-           height="11.831706"
-           width="2.2208073"
-           id="rect8807"
-           style="fill:url(#radialGradient9772);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-        <rect
-           y="-26.520578"
-           x="133.80896"
-           height="16.447176"
-           width="3.1498795"
-           id="rect8839"
-           style="fill:url(#radialGradient9774);fill-opacity:1;stroke:#000000;stroke-width:0.5;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="scale(1,-1)" />
-      </g>
-    </g>
-    <g
-       inkscape:label="#g7893"
-       transform="matrix(0.13541314,0,0,0.13541314,-963.34618,300.08516)"
-       id="evolved-base-heavy-military">
-      <g
-         inkscape:transform-center-y="1.6845862"
-         transform="matrix(0.9753025,-0.22087333,0.22087333,0.9753025,-95.217109,211.3849)"
-         inkscape:transform-center-x="-1.8177429"
-         id="g9074">
-        <path
-           transform="matrix(-0.0297211,-1.0091846,1.281578,-0.02340402,-294.24259,1035.68)"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="false"
-           sodipodi:arg2="1.5988525"
-           sodipodi:arg1="0.55165498"
-           sodipodi:r2="30.528675"
-           sodipodi:r1="61.05735"
-           sodipodi:cy="994.36218"
-           sodipodi:cx="477"
-           sodipodi:sides="3"
-           id="path9076"
-           style="fill:url(#radialGradient9123);fill-opacity:1;stroke:none;filter:url(#filter4164-4)"
-           sodipodi:type="star" />
-        <path
-           sodipodi:type="star"
-           style="fill:url(#radialGradient9125);fill-opacity:1;stroke:none;filter:url(#filter4164-4)"
-           id="path9078"
-           sodipodi:sides="3"
-           sodipodi:cx="477"
-           sodipodi:cy="994.36218"
-           sodipodi:r1="61.05735"
-           sodipodi:r2="30.528675"
-           sodipodi:arg1="0.55165498"
-           sodipodi:arg2="1.5988525"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           transform="matrix(0.88884005,0.47885307,-0.62052052,1.1215811,1056.5049,-753.18059)" />
-        <path
-           transform="matrix(-0.85911895,0.53033153,-0.66105748,-1.0981771,1930.3299,1311.0313)"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="false"
-           sodipodi:arg2="1.5988525"
-           sodipodi:arg1="0.55165498"
-           sodipodi:r2="30.528675"
-           sodipodi:r1="61.05735"
-           sodipodi:cy="994.36218"
-           sodipodi:cx="477"
-           sodipodi:sides="3"
-           id="path9080"
-           style="fill:url(#radialGradient9127);fill-opacity:1;stroke:none;filter:url(#filter4164-4)"
-           sodipodi:type="star" />
-      </g>
-      <path
-         transform="matrix(3.7115334,0,0,3.7115334,-4857.063,-2662.3361)"
-         d="m 1570.7284,860.47284 c 0,11.24446 -9.1154,20.3599 -20.3599,20.3599 -11.2444,0 -20.3599,-9.11544 -20.3599,-20.3599 0,-11.24446 9.1155,-20.3599 20.3599,-20.3599 11.2445,0 20.3599,9.11544 20.3599,20.3599 z"
-         sodipodi:ry="20.359898"
-         sodipodi:rx="20.359898"
-         sodipodi:cy="860.47284"
-         sodipodi:cx="1550.3685"
-         id="path9082"
-         style="fill:#00eeff;fill-opacity:0;stroke:none"
-         sodipodi:type="arc" />
-      <g
-         style="stroke-width:0.94423282;stroke-miterlimit:6.14433336;stroke-dasharray:none"
-         id="use9084"
-         transform="matrix(-0.5,0.8660254,-0.8660254,-0.5,1807.3912,21.133764)">
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ccccc"
-           style="fill:url(#radialGradient9519);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.94423282;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:6.14433336;stroke-opacity:1;stroke-dasharray:none"
-           d="m 882.86989,526.00729 21.63838,1.84894 c 19.2285,-42.1886 48.7001,-38.66535 51.12267,12.30933 l 3.31683,-27.23789 c -19.46342,-32.2193 -54.04278,-15.41835 -76.07788,13.07962 z"
-           id="path9511" />
-        <g
-           style="stroke-width:2.06832051;stroke-miterlimit:6.14433336;stroke-dasharray:none"
-           id="g9513"
-           transform="matrix(0,0.45652152,-0.45652152,0,1341.8117,-4.3883847)">
-          <rect
-             style="fill:url(#radialGradient9521);fill-opacity:1;stroke:#000000;stroke-width:2.06832051;stroke-linejoin:miter;stroke-miterlimit:6.14433336;stroke-opacity:1;stroke-dasharray:none"
-             id="rect9515"
-             width="144.60124"
-             height="38.052959"
-             x="1105.6993"
-             y="821.33569"
-             rx="19.02648" />
-          <rect
-             rx="19.02648"
-             y="821.33569"
-             x="1105.6993"
-             height="38.052959"
-             width="144.60124"
-             id="rect9517"
-             style="fill:url(#linearGradient9523);fill-opacity:1;stroke:#000000;stroke-width:2.06832051;stroke-linejoin:miter;stroke-miterlimit:6.14433336;stroke-opacity:1;stroke-dasharray:none" />
-        </g>
-      </g>
-      <g
-         style="stroke-width:0.94423282;stroke-miterlimit:6.14433336;stroke-dasharray:none"
-         id="use9086"
-         transform="matrix(-0.5,-0.8660254,0.8660254,-0.5,883.81927,1574.8822)">
-        <path
-           inkscape:connector-curvature="0"
-           sodipodi:nodetypes="ccccc"
-           style="fill:url(#radialGradient9535);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.94423282;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:6.14433336;stroke-opacity:1;stroke-dasharray:none"
-           d="m 882.86989,526.00729 21.63838,1.84894 c 19.2285,-42.1886 48.7001,-38.66535 51.12267,12.30933 l 3.31683,-27.23789 c -19.46342,-32.2193 -54.04278,-15.41835 -76.07788,13.07962 z"
-           id="path9527" />
-        <g
-           style="stroke-width:2.06832051;stroke-miterlimit:6.14433336;stroke-dasharray:none"
-           id="g9529"
-           transform="matrix(0,0.45652152,-0.45652152,0,1341.8117,-4.3883847)">
-          <rect
-             style="fill:url(#radialGradient9537);fill-opacity:1;stroke:#000000;stroke-width:2.06832051;stroke-linejoin:miter;stroke-miterlimit:6.14433336;stroke-opacity:1;stroke-dasharray:none"
-             id="rect9531"
-             width="144.60124"
-             height="38.052959"
-             x="1105.6993"
-             y="821.33569"
-             rx="19.02648" />
-          <rect
-             rx="19.02648"
-             y="821.33569"
-             x="1105.6993"
-             height="38.052959"
-             width="144.60124"
-             id="rect9533"
-             style="fill:url(#linearGradient9539);fill-opacity:1;stroke:#000000;stroke-width:2.06832051;stroke-linejoin:miter;stroke-miterlimit:6.14433336;stroke-opacity:1;stroke-dasharray:none" />
-        </g>
-      </g>
-      <g
-         id="g9088"
-         transform="translate(0,-2)">
-        <path
-           sodipodi:nodetypes="ccccc"
-           style="fill:url(#radialGradient9129);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.37870178px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
-           d="m 882.86989,526.00729 21.63838,1.84894 c 19.2285,-42.1886 48.7001,-38.66535 51.12267,12.30933 l 3.31683,-27.23789 c -19.46342,-32.2193 -54.04278,-15.41835 -76.07788,13.07962 z"
-           id="path9090"
-           inkscape:connector-curvature="0" />
-        <g
-           id="g9092"
-           transform="matrix(0,0.45652152,-0.45652152,0,1341.8117,-4.3883847)">
-          <rect
-             style="fill:url(#radialGradient9134);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect9094"
-             width="144.60124"
-             height="38.052959"
-             x="1105.6993"
-             y="821.33569"
-             rx="19.02648" />
-          <rect
-             rx="19.02648"
-             y="821.33569"
-             x="1105.6993"
-             height="38.052959"
-             width="144.60124"
-             id="rect9096"
-             style="fill:url(#linearGradient9136);fill-opacity:1;stroke:#000000;stroke-width:1.0350405;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        </g>
-      </g>
-      <g
-         transform="matrix(0.9753025,-0.22087333,0.22087333,0.9753025,-95.217109,211.3849)"
-         inkscape:transform-center-y="4.9836678"
-         inkscape:transform-center-x="-6.3866378"
-         id="g9098">
-        <path
-           sodipodi:type="star"
-           style="fill:url(#radialGradient9138);fill-opacity:1;stroke:none;filter:url(#filter4074-7)"
-           id="path9100"
-           sodipodi:sides="3"
-           sodipodi:cx="477"
-           sodipodi:cy="994.36218"
-           sodipodi:r1="61.05735"
-           sodipodi:r2="30.528675"
-           sodipodi:arg1="0.55165498"
-           sodipodi:arg2="1.5988525"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           transform="matrix(-0.02318479,-0.5365127,0.9997312,-0.01244228,-21.369681,799.38578)" />
-        <path
-           transform="matrix(0.47622602,0.24817773,-0.48909027,0.87201375,1124.7052,-398.71863)"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           inkscape:randomized="0"
-           inkscape:rounded="0"
-           inkscape:flatsided="false"
-           sodipodi:arg2="1.5988525"
-           sodipodi:arg1="0.55165498"
-           sodipodi:r2="30.528675"
-           sodipodi:r1="61.05735"
-           sodipodi:cy="994.36218"
-           sodipodi:cx="477"
-           sodipodi:sides="3"
-           id="path9102"
-           style="fill:url(#radialGradient9140);fill-opacity:1;stroke:none;filter:url(#filter4074-7)"
-           sodipodi:type="star" />
-        <path
-           sodipodi:type="star"
-           style="fill:url(#radialGradient9142);fill-opacity:1;stroke:none;filter:url(#filter4074-7)"
-           id="path9104"
-           sodipodi:sides="3"
-           sodipodi:cx="477"
-           sodipodi:cy="994.36218"
-           sodipodi:r1="61.05735"
-           sodipodi:r2="30.528675"
-           sodipodi:arg1="0.55165498"
-           sodipodi:arg2="1.5988525"
-           inkscape:flatsided="false"
-           inkscape:rounded="0"
-           inkscape:randomized="0"
-           d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-           transform="matrix(-0.45304123,0.28833497,-0.51064093,-0.85957147,1589.2566,1192.8636)" />
-      </g>
-      <path
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient9144);fill-opacity:1;stroke:#000000;stroke-width:1.25;stroke-miterlimit:6.14433336;stroke-opacity:1;stroke-dasharray:none"
-         id="path9106"
-         sodipodi:cx="1550.3685"
-         sodipodi:cy="860.47284"
-         sodipodi:rx="20.359898"
-         sodipodi:ry="20.359898"
-         d="m 1570.7284,860.47284 c 0,11.24446 -9.1154,20.3599 -20.3599,20.3599 -11.2444,0 -20.3599,-9.11544 -20.3599,-20.3599 0,-11.24446 9.1155,-20.3599 20.3599,-20.3599 11.2445,0 20.3599,9.11544 20.3599,20.3599 z"
-         transform="matrix(1.0254091,0,0,1.0254091,-692.58043,-350.99907)" />
-      <path
-         style="fill:url(#radialGradient9147);fill-opacity:1;stroke:#000000;stroke-width:1.11524773;stroke-miterlimit:6.14433336;stroke-opacity:1;stroke-dasharray:none"
-         d="m 1550.375,842.3125 c -10.0323,0 -18.1562,8.12396 -18.1562,18.15625 0,10.03229 8.1239,18.15625 18.1562,18.15625 10.0323,0 18.1562,-8.12396 18.1562,-18.15625 0,-10.03229 -8.1239,-18.15625 -18.1562,-18.15625 z m 0,2.75 c 8.5171,0 15.4063,6.88918 15.4062,15.40625 0,8.51707 -6.8891,15.4375 -15.4062,15.4375 -8.5171,0 -15.4375,-6.92043 -15.4375,-15.4375 0,-8.51707 6.9204,-15.40625 15.4375,-15.40625 z"
-         transform="translate(-653.1869,-329.13519)"
-         id="path9108"
-         inkscape:connector-curvature="0" />
-    </g>
-    <g
-       inkscape:label="#g9468"
-       id="human-base-carrier"
-       transform="matrix(0.17732501,0,0,0.17732501,-766.31129,268.68057)">
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient9219);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path9177"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.327223,-0.14697,0.1819325,0.4174948,-117.41651,476.11229)" />
-      <path
-         transform="matrix(0.3353051,-0.1274582,-0.1665678,-0.4238591,193.96517,1227.8542)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path9179"
-         style="fill:url(#radialGradient9221);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         transform="matrix(0.1274582,-0.3353051,0.4238591,0.1665678,-240.58878,793.30019)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path9181"
-         style="fill:url(#radialGradient9223);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient9225);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path9183"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.14697,-0.327223,-0.4174948,-0.1819325,511.1531,1104.6819)" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient9227);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path9185"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.14697,-0.327223,0.4174948,-0.1819325,-103.30922,1104.6819)" />
-      <path
-         transform="matrix(-0.1274582,-0.3353051,-0.4238591,0.1665678,648.43266,793.30022)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path9187"
-         style="fill:url(#radialGradient9229);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         transform="matrix(-0.3353051,-0.1274582,0.1665678,-0.4238591,213.87867,1227.8542)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path9189"
-         style="fill:url(#radialGradient9231);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient9233);fill-opacity:1;stroke:none;filter:url(#filter4164)"
-         id="path9191"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.327223,-0.14697,-0.1819325,0.4174948,525.26035,476.11227)" />
-      <path
-         style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:0.65381742;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 190.23152,738.3687 c 0.009,0.29939 0.0255,0.59164 0.0255,0.89312 0,16.81631 -13.65194,30.46827 -30.46827,30.46827 -0.30509,0 -0.6157,-0.0166 -0.91864,-0.0255 l 0,27.30405 c 0.30294,-0.009 0.61355,-0.0255 0.91864,-0.0255 16.81631,-3e-5 30.46827,13.65194 30.46827,30.4683 0,0.29662 -0.0171,0.59849 -0.0255,0.89311 l 27.30406,0 c -0.008,-0.29474 -0.0255,-0.59641 -0.0255,-0.89311 0,-16.81636 13.65194,-30.4683 30.46826,-30.4683 0.30149,0 0.59374,0.0168 0.89313,0.0255 l 0,-27.30405 c -0.29939,0.009 -0.59164,0.0255 -0.89313,0.0255 -16.81632,10e-6 -30.46826,-13.65194 -30.46826,-30.46827 0,-0.30158 0.0168,-0.59363 0.0255,-0.89312 l -27.30406,0 z"
-         id="path9193"
-         inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76"
-         inkscape:connector-curvature="0" />
-      <g
-         id="g9312"
-         transform="translate(-156.92608,-14.261912)">
-        <path
-           sodipodi:end="3.1415927"
-           sodipodi:start="1.5707963"
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           transform="matrix(9.6294254,0,0,9.6294254,-4970.2753,-5957.3185)"
-           d="m 553,708.11218 c -3.31371,0 -6,-2.68629 -6,-6 0,0 0,0 0,0 l 6,0 z"
-           sodipodi:ry="6"
-           sodipodi:rx="6"
-           sodipodi:cy="702.11218"
-           sodipodi:cx="553"
-           id="path9275"
-           style="fill:url(#radialGradient9333);fill-opacity:1;stroke:#000000;stroke-width:0.10384836;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:end="3.1415927"
-           sodipodi:start="1.5707963"
-           sodipodi:type="arc"
-           style="fill:url(#radialGradient9335);fill-opacity:1;stroke:none"
-           id="path9277"
-           sodipodi:cx="553"
-           sodipodi:cy="702.11218"
-           sodipodi:rx="6"
-           sodipodi:ry="6"
-           d="m 553,708.11218 c -3.31371,0 -6,-2.68629 -6,-6 0,0 0,0 0,0 l 6,0 z"
-           transform="matrix(9.6294254,0,0,9.6294254,-4970.1935,-5957.441)"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-      </g>
-      <g
-         id="g9308"
-         transform="translate(-144.92608,-14.261912)">
-        <path
-           sodipodi:end="1.5707963"
-           sodipodi:start="0"
-           sodipodi:type="arc"
-           style="fill:url(#radialGradient9329);fill-opacity:1;stroke:#000000;stroke-width:0.10384836;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="path9279"
-           sodipodi:cx="553"
-           sodipodi:cy="702.11218"
-           sodipodi:rx="6"
-           sodipodi:ry="6"
-           d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 l 0,-6 z"
-           transform="matrix(9.6294254,0,0,9.6294254,-4970.2753,-5957.3185)"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <path
-           sodipodi:end="1.5707963"
-           sodipodi:start="0"
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           transform="matrix(9.6294254,0,0,9.6294254,-4970.1935,-5957.441)"
-           d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 l 0,-6 z"
-           sodipodi:ry="6"
-           sodipodi:rx="6"
-           sodipodi:cy="702.11218"
-           sodipodi:cx="553"
-           id="path9281"
-           style="fill:url(#radialGradient9331);fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-      </g>
-      <g
-         id="g9316"
-         transform="translate(-156.92608,-26.261912)">
-        <path
-           sodipodi:end="4.712389"
-           sodipodi:start="3.1415927"
-           sodipodi:type="arc"
-           style="fill:url(#radialGradient9337);fill-opacity:1;stroke:none"
-           id="path9263"
-           sodipodi:cx="553"
-           sodipodi:cy="702.11218"
-           sodipodi:rx="6"
-           sodipodi:ry="6"
-           d="m 547,702.11218 c 0,-3.31371 2.68629,-6 6,-6 l 0,6 z"
-           transform="matrix(9.6294254,0,0,9.6294254,-4970.1935,-5957.441)"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <path
-           sodipodi:end="4.712389"
-           sodipodi:start="3.1415927"
-           sodipodi:type="arc"
-           style="fill:url(#radialGradient9339);fill-opacity:1;stroke:#000000;stroke-width:0.10384836;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="path9271"
-           sodipodi:cx="553"
-           sodipodi:cy="702.11218"
-           sodipodi:rx="6"
-           sodipodi:ry="6"
-           d="m 547,702.11218 c 0,-3.31371 2.68629,-6 6,-6 l 0,6 z"
-           transform="matrix(9.6294254,0,0,9.6294254,-4970.2753,-5957.3185)"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-        <path
-           sodipodi:type="arc"
-           style="fill:url(#radialGradient9341);fill-opacity:1;stroke:none"
-           id="path9283"
-           sodipodi:cx="553"
-           sodipodi:cy="702.11218"
-           sodipodi:rx="6"
-           sodipodi:ry="6"
-           d="m 547,702.11218 c 0,-3.31371 2.68629,-6 6,-6 l 0,6 z"
-           transform="matrix(9.6294254,0,0,9.6294254,-4970.1935,-5957.441)"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76"
-           sodipodi:start="3.1415927"
-           sodipodi:end="4.712389" />
-      </g>
-      <g
-         id="g9321"
-         transform="translate(-144.92608,-26.261912)">
-        <path
-           sodipodi:end="6.2831853"
-           sodipodi:start="4.712389"
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           transform="matrix(9.6294254,0,0,9.6294254,-4970.2753,-5957.3185)"
-           d="m 553,696.11218 c 3.31371,0 6,2.68629 6,6 l -6,0 z"
-           sodipodi:ry="6"
-           sodipodi:rx="6"
-           sodipodi:cy="702.11218"
-           sodipodi:cx="553"
-           id="path9267"
-           style="fill:url(#radialGradient9325);fill-opacity:1;stroke:#000000;stroke-width:0.10384836;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:end="6.2831853"
-           sodipodi:start="4.712389"
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-           transform="matrix(9.6294254,0,0,9.6294254,-4970.1935,-5957.441)"
-           d="m 553,696.11218 c 3.31371,0 6,2.68629 6,6 l -6,0 z"
-           sodipodi:ry="6"
-           sodipodi:rx="6"
-           sodipodi:cy="702.11218"
-           sodipodi:cx="553"
-           id="path9273"
-           style="fill:url(#radialGradient9327);fill-opacity:1;stroke:none"
-           sodipodi:type="arc" />
-      </g>
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-         transform="matrix(6.0174568,0,0,6.0174568,-3123.7828,-3441.5732)"
-         d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 -3.31371,0 -6,-2.68629 -6,-6 0,-3.31371 2.68629,-6 6,-6 3.31371,0 6,2.68629 6,6 z"
-         sodipodi:ry="6"
-         sodipodi:rx="6"
-         sodipodi:cy="702.11218"
-         sodipodi:cx="553"
-         id="path9195"
-         style="fill:url(#radialGradient9235);fill-opacity:1;stroke:#000000;stroke-width:0.10865344;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         sodipodi:type="arc" />
-      <path
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient9237);fill-opacity:1;stroke:none"
-         id="path9197"
-         sodipodi:cx="553"
-         sodipodi:cy="702.11218"
-         sodipodi:rx="6"
-         sodipodi:ry="6"
-         d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 -3.31371,0 -6,-2.68629 -6,-6 0,-3.31371 2.68629,-6 6,-6 3.31371,0 6,2.68629 6,6 z"
-         transform="matrix(6.0174568,0,0,6.0174568,-3123.7317,-3441.6498)"
-         inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         transform="matrix(0.1729575,-0.0805575,0.1400129,0.3264692,-2.751886,533.55479)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path9199"
-         style="fill:url(#radialGradient9239);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient9241);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path9201"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.1792622,-0.06533672,-0.1318446,-0.3298527,234.4273,1106.1561)" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient9243);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path9203"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(0.06533672,-0.1792622,0.3298527,0.1318446,-118.89065,752.83806)" />
-      <path
-         transform="matrix(0.0805575,-0.1729575,-0.3264692,-0.1400129,453.7106,990.01719)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path9205"
-         style="fill:url(#radialGradient9245);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         transform="matrix(-0.0805575,-0.1729575,0.3264692,-0.1400129,-45.866712,990.01719)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path9207"
-         style="fill:url(#radialGradient9247);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient9249);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path9209"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.06533672,-0.1792622,-0.3298527,0.1318446,526.73454,752.83809)" />
-      <path
-         sodipodi:type="star"
-         style="fill:url(#radialGradient9251);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         id="path9211"
-         sodipodi:sides="3"
-         sodipodi:cx="477"
-         sodipodi:cy="994.36218"
-         sodipodi:r1="61.05735"
-         sodipodi:r2="30.528675"
-         sodipodi:arg1="0.55165498"
-         sodipodi:arg2="1.5988525"
-         inkscape:flatsided="false"
-         inkscape:rounded="0"
-         inkscape:randomized="0"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         transform="matrix(-0.1792622,-0.06533672,0.1318446,-0.3298527,173.41654,1106.1561)" />
-      <path
-         transform="matrix(-0.1729575,-0.0805575,-0.1400129,0.3264692,410.59573,533.55477)"
-         d="m 529,1026.3622 -52.85641,-1.4834 -52.8564,-1.4833 L 451,978.36218 l 27.71281,-45.03332 25.1436,46.51666 z"
-         inkscape:randomized="0"
-         inkscape:rounded="0"
-         inkscape:flatsided="false"
-         sodipodi:arg2="1.5988525"
-         sodipodi:arg1="0.55165498"
-         sodipodi:r2="30.528675"
-         sodipodi:r1="61.05735"
-         sodipodi:cy="994.36218"
-         sodipodi:cx="477"
-         sodipodi:sides="3"
-         id="path9213"
-         style="fill:url(#radialGradient9253);fill-opacity:1;stroke:none;filter:url(#filter4074)"
-         sodipodi:type="star" />
-      <path
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient9255);fill-opacity:1;stroke:#000000;stroke-width:0.19625002;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="path9215"
-         sodipodi:cx="553"
-         sodipodi:cy="702.11218"
-         sodipodi:rx="6"
-         sodipodi:ry="6"
-         d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 -3.31371,0 -6,-2.68629 -6,-6 0,-3.31371 2.68629,-6 6,-6 3.31371,0 6,2.68629 6,6 z"
-         transform="matrix(3.3315534,0,0,3.3315534,-1638.4782,-1555.7677)"
-         inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/orbitalbase.png"
-         transform="matrix(3.3556167,0,0,3.3556167,-1651.7341,-1572.7394)"
-         d="m 559,702.11218 c 0,3.31371 -2.68629,6 -6,6 -3.31371,0 -6,-2.68629 -6,-6 0,-3.31371 2.68629,-6 6,-6 3.31371,0 6,2.68629 6,6 z"
-         sodipodi:ry="6"
-         sodipodi:rx="6"
-         sodipodi:cy="702.11218"
-         sodipodi:cx="553"
-         id="path9217"
-         style="fill:url(#radialGradient9257);fill-opacity:1;stroke:none"
-         sodipodi:type="arc" />
-    </g>
-    <g
-       inkscape:label="#g9313"
-       id="evolved-transport"
-       transform="matrix(0.17732501,0,0,0.17732501,-772.36257,244.02125)">
-      <g
-         inkscape:export-ydpi="66.98317"
-         inkscape:export-xdpi="66.98317"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-harvester.png"
-         transform="matrix(1.4942792,0,0,1.4942792,-296.25582,-378.06292)"
-         id="g7924">
-        <path
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-           id="path7926"
-           d="m 409.15675,639.22724 c 0,-0.85521 -6.26434,-2.03917 -17.96566,-1.97338 l 0,4.10595 c 11.70132,0.0658 17.96566,-1.11816 17.96566,-1.97338 l 0,-0.15919 z"
-           style="fill:url(#radialGradient7953);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.65968627;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <path
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-bomber.png"
-           id="path7928"
-           d="m 391.03424,637.12685 -1.87139,0.3367 0,0.27202 0,3.14253 0,0.27202 1.87139,0.3367 0,-0.94541 0,-2.46914 0,-0.94542 z"
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.40174693;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         inkscape:export-ydpi="66.98317"
-         inkscape:export-xdpi="66.98317"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-harvester.png"
-         transform="matrix(1.4942792,0,0,1.4942792,-291.29278,-383.77344)"
-         id="g7930">
-        <path
-           transform="matrix(0.6176471,0,0,0.6176471,149.56782,245.62723)"
-           d="m 403.75,643.86218 c 0,4.41828 -3.58172,8 -8,8 -4.41828,0 -8,-3.58172 -8,-8 0,-4.41828 3.58172,-8 8,-8 4.41828,0 8,3.58172 8,8 z"
-           sodipodi:ry="8"
-           sodipodi:rx="8"
-           sodipodi:cy="643.86218"
-           sodipodi:cx="395.75"
-           id="path7964"
-           style="fill:url(#radialGradient7966);fill-opacity:1;stroke:#000000;stroke-opacity:1"
-           sodipodi:type="arc" />
-        <path
-           sodipodi:type="arc"
-           style="fill:url(#radialGradient7955);fill-opacity:1;stroke:#000000;stroke-opacity:1"
-           id="path7932"
-           sodipodi:cx="395.75"
-           sodipodi:cy="643.86218"
-           sodipodi:rx="8"
-           sodipodi:ry="8"
-           d="m 403.75,643.86218 c 0,4.41828 -3.58172,8 -8,8 -4.41828,0 -8,-3.58172 -8,-8 0,-4.41828 3.58172,-8 8,-8 4.41828,0 8,3.58172 8,8 z"
-           transform="matrix(0.6176471,0,0,0.6176471,159.46332,245.62723)" />
-        <path
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/evolved-fighter.png"
-           id="path7934"
-           d="m 408.23598,643.14837 c 0,-1.70291 -1.26745,-4.06032 -3.63498,-3.92933 0,0 1.85616,1.56212 1.85616,4.22795 0,2.66542 -1.85616,3.94765 -1.85616,3.94765 2.36753,0.13101 3.63498,-2.22643 3.63498,-3.92931 l 0,-0.31696 z"
-           style="fill:url(#radialGradient7957);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           sodipodi:nodetypes="cczccc"
-           inkscape:connector-curvature="0" />
-      </g>
-    </g>
-    <g
-       inkscape:label="#g9368"
-       id="0enemy_missile"
-       transform="matrix(0,-0.25232202,0.15953877,0,-1101.39,274.99735)">
-      <path
-         sodipodi:type="arc"
-         style="fill:url(#radialGradient12050);fill-opacity:1;stroke:none"
-         id="path10477"
-         sodipodi:cx="19.087404"
-         sodipodi:cy="34.843845"
-         sodipodi:rx="0.28277636"
-         sodipodi:ry="1.6966581"
-         d="m 19.370181,34.843845 c 0,0.937039 -0.126604,1.696659 -0.282777,1.696659 -0.156173,0 -0.282776,-0.75962 -0.282776,-1.696659 0,-0.937038 0.126603,-1.696658 0.282776,-1.696658 0.156173,0 0.282777,0.75962 0.282777,1.696658 z"
-         transform="matrix(0,8.545724,-6.3374436,0,512.18355,111.25878)" />
-      <rect
-         transform="matrix(-0.25438305,-0.96710354,0.96710354,-0.25438305,0,0)"
-         y="214.71028"
-         x="-344.93561"
-         height="14.660381"
-         width="3.4296565"
-         id="rect7976"
-         style="fill:url(#radialGradient7988);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-ydpi="87.310692" />
-      <rect
-         inkscape:export-ydpi="87.310692"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         style="fill:url(#radialGradient7991);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7978"
-         width="3.4296565"
-         height="14.660379"
-         x="-186.0029"
-         y="356.04639"
-         transform="matrix(0.26324959,-0.96472776,0.96472776,0.26324959,0,0)" />
-      <rect
-         transform="matrix(0.00621594,-0.99998068,0.99999426,0.00338885,0,0)"
-         y="299.37161"
-         x="-275.11508"
-         height="19.814735"
-         width="3.4227021"
-         id="rect7974"
-         style="fill:url(#radialGradient7986);fill-opacity:1;stroke:#000000;stroke-width:0.05245829;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-ydpi="87.310692" />
-      <rect
-         inkscape:export-ydpi="87.310692"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         style="fill:url(#radialGradient7994);fill-opacity:1;stroke:#000000;stroke-width:0.04807777;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7980"
-         width="3.4269116"
-         height="16.623205"
-         x="-274.88446"
-         y="307.95728"
-         transform="matrix(0.00520834,-0.99998644,0.99999182,0.00404447,0,0)" />
-      <rect
-         inkscape:export-ydpi="87.310692"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         style="fill:url(#radialGradient8006);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect8001"
-         width="3.4296565"
-         height="14.660372"
-         x="-186.3788"
-         y="-372.35928"
-         transform="matrix(0.25438305,-0.96710354,-0.96710354,-0.25438305,0,0)" />
-      <rect
-         transform="matrix(0.25438305,-0.96710354,-0.96710354,-0.25438305,0,0)"
-         y="-378.1619"
-         x="-184.85252"
-         height="14.660372"
-         width="3.4296565"
-         id="rect7982"
-         style="fill:url(#radialGradient7997);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-ydpi="87.310692" />
-      <rect
-         transform="matrix(-0.26324959,-0.96472776,-0.96472776,0.26324959,0,0)"
-         y="-229.54305"
-         x="-349.94162"
-         height="14.660374"
-         width="3.4296565"
-         id="rect8004"
-         style="fill:url(#radialGradient8008);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-ydpi="87.310692" />
-      <rect
-         inkscape:export-ydpi="87.310692"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         style="fill:url(#radialGradient7999);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect7984"
-         width="3.4296565"
-         height="14.660374"
-         x="-351.52109"
-         y="-235.33142"
-         transform="matrix(-0.26324959,-0.96472776,-0.96472776,0.26324959,0,0)" />
-      <rect
-         inkscape:export-ydpi="87.310692"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         style="fill:url(#radialGradient8883);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect8875"
-         width="3.4296565"
-         height="14.660372"
-         x="-183.3262"
-         y="-383.96451"
-         transform="matrix(0.25438305,-0.96710354,-0.96710354,-0.25438305,0,0)" />
-      <rect
-         transform="matrix(-0.26324959,-0.96472776,-0.96472776,0.26324959,0,0)"
-         y="-241.1198"
-         x="-353.10056"
-         height="14.660374"
-         width="3.4296565"
-         id="rect8877"
-         style="fill:url(#radialGradient8885);fill-opacity:1;stroke:#000000;stroke-width:0.04516825;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/art/ships/ai-harvester.png"
-         inkscape:export-xdpi="87.310692"
-         inkscape:export-ydpi="87.310692" />
-    </g>
-    <g
-       id="nomad-transport"
-       transform="matrix(0.19669655,0,0,0.19669655,-979.88402,310.41035)"
-       inkscape:label="#g8022">
-      <rect
-         transform="matrix(0,-1,-1,0,0,0)"
-         style="fill:#555555;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect8024"
-         width="4.2727599"
-         height="43.769943"
-         x="163.01405"
-         y="-341.63583"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         style="fill:url(#radialGradient8045);fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect8026"
-         width="8.8208542"
-         height="8.30019"
-         x="-169.68307"
-         y="-345.95035"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <path
-         id="path8028"
-         d="m 340.96836,-169.0383 4.1322,0.58161 0,0.46989 0,5.42834 0,0.46988 -4.1322,0.58162 0,-1.63311 0,-4.26512 0,-1.63311 z"
-         style="fill:url(#radialGradient8047);fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76"
-         inkscape:connector-curvature="0" />
-      <rect
-         transform="matrix(0,1,-1,0,0,0)"
-         y="-340.95239"
-         x="-169.01663"
-         height="1.5876518"
-         width="7.4879966"
-         id="rect8030"
-         style="fill:url(#radialGradient8049);fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         transform="matrix(0,1,-1,0,0,0)"
-         y="-338.66904"
-         x="-169.27362"
-         height="2.237082"
-         width="5.096714"
-         id="rect8033"
-         style="fill:url(#radialGradient8051);fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         y="-299.80411"
-         x="-169.96106"
-         height="4.0245595"
-         width="8.8372831"
-         id="rect8035"
-         style="fill:url(#radialGradient8086);fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-      <path
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m 296.13154,-169.63996 -5.16271,0.63288 0,0.51129 0,5.90679 0,0.5113 5.16271,0.63287 0,-1.77704 0,-4.64105 0,-1.77704 z"
-         id="path8037"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76"
-         inkscape:connector-curvature="0" />
-      <rect
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         transform="matrix(0,1,-1,0,0,0)"
-         style="fill:url(#radialGradient8864);fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect8039"
-         width="10.482475"
-         height="16.401289"
-         x="-170.73605"
-         y="-335.51932" />
-      <rect
-         style="fill:url(#radialGradient8084);fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         id="rect8043"
-         width="4.2964387"
-         height="3.3064713"
-         x="-166.31076"
-         y="-300.05099"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-      <rect
-         y="-317.70441"
-         x="-170.73605"
-         height="16.401289"
-         width="10.482475"
-         id="rect8870"
-         style="fill:url(#radialGradient8872);fill-opacity:1;stroke:#000000;stroke-width:0.25;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         transform="matrix(0,1,-1,0,0,0)"
-         inkscape:export-filename="/media/pros/pyfl/trunk/src/client/imgs/ships/nomad-harvester-0.png"
-         inkscape:export-xdpi="76"
-         inkscape:export-ydpi="76" />
-    </g>
-    <g
-       transform="matrix(0.14452663,0,0,0.14452663,-769.50303,255.79839)"
-       inkscape:label="#g9121"
-       id="human-transport">
-      <g
-         id="g8889"
-         transform="translate(1.0368466,-3.393316)"
-         style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">
-        <rect
-           mask="none"
-           clip-path="none"
-           rx="6.0620885"
-           y="687.12103"
-           x="227.73466"
-           height="12.093904"
-           width="27.461296"
-           id="rect8891"
-           style="fill:url(#radialGradient8911);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-           style="fill:url(#linearGradient8913);fill-opacity:1;stroke:none"
-           id="rect8893"
-           width="27.461296"
-           height="12.093904"
-           x="227.73466"
-           y="687.12103"
-           rx="6.0620885"
-           clip-path="none"
-           mask="none" />
-      </g>
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/harvester.png"
-         id="path8901"
-         d="m 275.53398,686.11057 c 0,3.33801 -5.82457,6.04711 -13.00128,6.04711 -7.17671,0 -8.46595,-2.40675 -8.46595,-5.74475 0,-3.33801 1.28924,-6.34946 8.46595,-6.34946 7.17671,0 13.00128,2.7091 13.00128,6.0471 z"
-         style="fill:url(#radialGradient8917);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <path
-         inkscape:export-ydpi="76"
-         inkscape:export-xdpi="76"
-         inkscape:export-filename="/media/pros/pyfl/art/harvester.png"
-         sodipodi:nodetypes="csssc"
-         id="path8903"
-         d="m 274.28754,686.07026 c 0,2.27722 -2.90441,4.1657 -4.34712,4.1657 -1.44272,0 -0.19477,-1.84817 -0.19477,-4.12539 0,-2.27721 -1.24795,-4.12539 0.19477,-4.12539 1.44271,0 4.34712,1.80786 4.34712,4.08508 z"
-         style="fill:url(#radialGradient8919);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:bevel;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <g
-         style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
-         transform="translate(-24.238449,5.278492)"
-         id="g8958">
-        <rect
-           mask="none"
-           clip-path="none"
-           rx="6.0620885"
-           y="671.12103"
-           x="227.73466"
-           height="12.093904"
-           width="27.461296"
-           id="rect8960"
-           style="fill:url(#radialGradient8968);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           style="fill:url(#linearGradient8970);fill-opacity:1;stroke:none"
-           id="rect8962"
-           width="27.461296"
-           height="12.093904"
-           x="227.73466"
-           y="671.12103"
-           rx="6.0620885"
-           clip-path="none"
-           mask="none"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-      </g>
-      <g
-         id="g8895"
-         transform="matrix(0.79174965,0,0,0.99801056,185.82243,-395.25225)"
-         style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           transform="matrix(0,1,-1,0,0,0)"
-           y="-17.777203"
-           x="1079.4452"
-           height="8.4338264"
-           width="8.1456375"
-           id="rect8897"
-           style="fill:#3c3c4a;fill-opacity:1;stroke:#000000;stroke-width:1;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <path
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian.png"
-           sodipodi:nodetypes="cccccccccc"
-           id="path8899"
-           d="m 16.93507,1078.9819 c -1.280695,0.055 -2.015645,3.7671 -3.0848,4.4838 l -0.405712,0 c 0.110774,0 0.211877,0.01 0.300787,0.048 l 0.104925,0.064 c 1.107336,0.7424 1.760993,4.69 3.231692,4.4679 3.268041,0.1259 8.234418,-0.9911 9.366312,-4.4679 l 0,-0.1113 c -1.131894,-3.4766 -6.098271,-4.5937 -9.366312,-4.4677 -0.05071,-0.01 -0.101154,-0.018 -0.146892,-0.016 z"
-           style="fill:url(#radialGradient8950);fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-      </g>
-      <g
-         style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none"
-         transform="translate(-24.238449,-3.393316)"
-         id="g8952">
-        <rect
-           style="fill:url(#radialGradient8964);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8954"
-           width="27.461296"
-           height="12.093904"
-           x="227.73466"
-           y="687.12103"
-           rx="6.0620885"
-           clip-path="none"
-           mask="none" />
-        <rect
-           mask="none"
-           clip-path="none"
-           rx="6.0620885"
-           y="687.12103"
-           x="227.73466"
-           height="12.093904"
-           width="27.461296"
-           id="rect8956"
-           style="fill:url(#linearGradient8966);fill-opacity:1;stroke:none"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-           inkscape:export-xdpi="76"
-           inkscape:export-ydpi="76" />
-      </g>
-      <g
-         id="g8905"
-         transform="translate(1.0368466,5.278492)"
-         style="stroke-width:1;stroke-miterlimit:4;stroke-dasharray:none">
-        <rect
-           style="fill:url(#radialGradient8921);fill-opacity:1;stroke:#000000;stroke-width:1;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect8907"
-           width="27.461296"
-           height="12.093904"
-           x="227.73466"
-           y="671.12103"
-           rx="6.0620885"
-           clip-path="none"
-           mask="none" />
-        <rect
-           inkscape:export-ydpi="76"
-           inkscape:export-xdpi="76"
-           inkscape:export-filename="/media/pros/pyfl/art/civilian-1.png"
-           mask="none"
-           clip-path="none"
-           rx="6.0620885"
-           y="671.12103"
-           x="227.73466"
-           height="12.093904"
-           width="27.461296"
-           id="rect8909"
-           style="fill:url(#linearGradient8923);fill-opacity:1;stroke:none" />
-      </g>
-    </g>
-    <g
-       id="0boss"
-       inkscape:label="#g11889"
-       transform="matrix(2.0023953,0,0,2.0023953,987.50332,-408.78486)">
-      <path
-         inkscape:connector-curvature="0"
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.16405076;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         d="m -984.09457,389.38526 -0.29082,-8.05096 -0.23498,0 -2.71443,0 -0.23498,0 -0.29082,8.05096 0.81661,0 2.13281,0 0.81661,0 z"
-         id="path11887" />
-      <path
-         id="path11460-7"
-         d="m -992.95916,389.38526 -0.29082,-8.05096 -0.23498,0 -2.71443,0 -0.23498,0 -0.29082,8.05096 0.81661,0 2.13281,0 0.81661,0 z"
-         style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.16405076;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-         inkscape:connector-curvature="0" />
-      <g
-         id="g11255">
-        <rect
-           style="fill:url(#radialGradient11826);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5641"
-           width="2.2886989"
-           height="9.7832384"
-           x="397.00565"
-           y="983.52228"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient11814);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect4903"
-           width="2.2886989"
-           height="9.7832384"
-           x="670.92316"
-           y="811.23511"
-           transform="matrix(-0.29997967,0.95394559,-0.95394559,-0.29997967,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(-0.29997967,-0.95394559,-0.95394559,0.29997967,0,0)"
-           y="1050.0604"
-           x="-88.549438"
-           height="9.7832384"
-           width="2.2886989"
-           id="rect4905"
-           style="fill:url(#radialGradient11811);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           y="977.60144"
-           x="396.97537"
-           height="9.7832384"
-           width="2.2886989"
-           id="rect4907"
-           style="fill:url(#radialGradient11808);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0,1,-1,0,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(0.8860162,-0.46365429,-0.46365429,-0.8860162,0,0)"
-           y="101.86884"
-           x="-1061.1072"
-           height="7.6857085"
-           width="1.7980012"
-           id="rect5419"
-           style="fill:url(#radialGradient11805);fill-opacity:1;stroke:#000000;stroke-width:0.0236795;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient11802);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect4911"
-           width="2.2886989"
-           height="9.7832384"
-           x="-87.00071"
-           y="1054.9855"
-           transform="matrix(-0.29997967,-0.95394559,-0.95394559,0.29997967,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient11799);fill-opacity:1;stroke:#000000;stroke-width:0.03014195;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5442"
-           width="2.2886994"
-           height="9.7832394"
-           x="-1060.2721"
-           y="155.43199"
-           transform="matrix(0.97613095,-0.21718279,0.21718279,0.97613095,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(-0.67615131,0.73676279,0.73676279,0.67615131,0,0)"
-           y="-478.52658"
-           x="955.73804"
-           height="9.7832384"
-           width="2.2886989"
-           id="rect5444"
-           style="fill:url(#radialGradient11795);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(0.86602539,-0.50000003,0.50000003,0.86602539,0,0)"
-           style="fill:url(#radialGradient11791);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5446"
-           width="2.2886989"
-           height="9.7832384"
-           x="-1057.7631"
-           y="-167.53886"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(0.97613095,-0.21718279,0.21718279,0.97613095,0,0)"
-           y="159.43359"
-           x="-1059.0137"
-           height="9.7832394"
-           width="2.2886994"
-           id="rect5448"
-           style="fill:url(#radialGradient11787);fill-opacity:1;stroke:#000000;stroke-width:0.03014195;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient11783);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5450"
-           width="2.2886989"
-           height="9.7832384"
-           x="956.9964"
-           y="-474.52496"
-           transform="matrix(-0.67615131,0.73676279,0.73676279,0.67615131,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(0.86602539,-0.50000003,0.50000003,0.86602539,0,0)"
-           style="fill:url(#radialGradient11779);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5452"
-           width="2.2886989"
-           height="9.7832384"
-           x="-1057.7631"
-           y="-163.12766"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient11775);fill-opacity:1;stroke:#000000;stroke-width:0.0236795;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5460"
-           width="1.7980012"
-           height="7.6857085"
-           x="624.09296"
-           y="861.88678"
-           transform="matrix(-0.84454448,-0.5354854,-0.5354854,0.84454448,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(-0.67615131,0.73676279,0.73676279,0.67615131,0,0)"
-           y="-469.59995"
-           x="958.5451"
-           height="9.7832384"
-           width="2.2886989"
-           id="rect5456"
-           style="fill:url(#radialGradient11771);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient11767);fill-opacity:1;stroke:#000000;stroke-width:0.02367949;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5423"
-           width="1.7980007"
-           height="7.6857061"
-           x="745.0448"
-           y="756.93579"
-           transform="matrix(-0.91611806,-0.4009086,-0.4009086,0.91611806,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(0.11086198,0.99383581,0.99383581,-0.11086198,0,0)"
-           y="-1033.1045"
-           x="283.21951"
-           height="7.6857071"
-           width="1.7980008"
-           id="rect5462"
-           style="fill:url(#radialGradient11764);fill-opacity:1;stroke:#000000;stroke-width:0.0236795;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(-0.67615131,-0.73676279,0.73676279,-0.67615131,0,0)"
-           y="-1016.8365"
-           x="369.173"
-           height="9.7832384"
-           width="2.2886989"
-           id="rect5486"
-           style="fill:url(#radialGradient11761);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient11758);fill-opacity:1;stroke:#000000;stroke-width:0.03014195;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5488"
-           width="2.2886994"
-           height="9.7832394"
-           x="-887.36456"
-           y="-621.70319"
-           transform="matrix(0.97613095,0.21718279,0.21718279,-0.97613095,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           y="-857.01477"
-           x="657.50641"
-           height="9.7832384"
-           width="2.2886989"
-           id="rect5490"
-           style="fill:url(#radialGradient11755);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(-0.86602539,-0.50000003,0.50000003,-0.86602539,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient11752);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5492"
-           width="2.2886989"
-           height="9.7832384"
-           x="370.43137"
-           y="-1012.8349"
-           transform="matrix(-0.67615131,-0.73676279,0.73676279,-0.67615131,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(0.97613095,0.21718279,0.21718279,-0.97613095,0,0)"
-           y="-617.7016"
-           x="-886.1062"
-           height="9.7832394"
-           width="2.2886994"
-           id="rect5494"
-           style="fill:url(#radialGradient11749);fill-opacity:1;stroke:#000000;stroke-width:0.03014195;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           y="-852.60358"
-           x="657.50641"
-           height="9.7832384"
-           width="2.2886989"
-           id="rect5496"
-           style="fill:url(#radialGradient11746);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(-0.86602539,-0.50000003,0.50000003,-0.86602539,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(-0.0414717,0.99913968,0.99913968,0.0414717,0,0)"
-           y="-977.54834"
-           x="439.68771"
-           height="7.6857085"
-           width="1.7980013"
-           id="rect5504"
-           style="fill:url(#radialGradient11743);fill-opacity:1;stroke:#000000;stroke-width:0.0236795;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient11740);fill-opacity:1;stroke:#000000;stroke-width:0.03014195;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5500"
-           width="2.2886994"
-           height="9.7832394"
-           x="-884.5575"
-           y="-612.77655"
-           transform="matrix(0.97613095,0.21718279,0.21718279,-0.97613095,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient11737);fill-opacity:1;stroke:#000000;stroke-width:0.02367949;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5506"
-           width="1.7980006"
-           height="7.6857057"
-           x="-1036.0881"
-           y="261.86816"
-           transform="matrix(0.80525605,-0.59292722,-0.59292722,-0.80525605,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient11733);fill-opacity:1;stroke:#000000;stroke-width:0.03014195;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect5454"
-           width="2.2886994"
-           height="9.7832394"
-           x="-1057.465"
-           y="164.35864"
-           transform="matrix(0.97613095,-0.21718279,0.21718279,0.97613095,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(-0.67615131,-0.73676279,0.73676279,-0.67615131,0,0)"
-           y="-1007.9099"
-           x="371.9801"
-           height="9.7832384"
-           width="2.2886989"
-           id="rect5498"
-           style="fill:url(#radialGradient11730);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(-0.29997967,0.95394559,-0.95394559,-0.29997967,0,0)"
-           y="816.16016"
-           x="672.47186"
-           height="9.7832384"
-           width="2.2886989"
-           id="rect4909"
-           style="fill:url(#radialGradient11727);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           style="fill:url(#radialGradient11828);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect2650"
-           width="2.2886989"
-           height="9.7832384"
-           x="670.86475"
-           y="811.04926"
-           transform="matrix(-0.29997967,0.95394559,-0.95394559,-0.29997967,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(-0.29997967,-0.95394559,-0.95394559,0.29997967,0,0)"
-           y="1049.8745"
-           x="-88.607857"
-           height="9.7832384"
-           width="2.2886989"
-           id="rect2652"
-           style="fill:url(#radialGradient11831);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(-0.86602541,0.49999998,-0.49999998,-0.86602541,0,0)"
-           y="143.6366"
-           x="1055.6797"
-           height="9.7832375"
-           width="2.2886987"
-           id="rect9270"
-           style="fill:url(#radialGradient11718);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient11715);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9272"
-           width="2.2886989"
-           height="9.7832375"
-           x="1046.0553"
-           y="-191.56062"
-           transform="matrix(-0.97613096,0.21718274,-0.21718274,-0.97613096,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(0.67615127,-0.73676282,-0.73676282,-0.67615127,0,0)"
-           y="442.44238"
-           x="-970.09558"
-           height="9.7832375"
-           width="2.2886989"
-           id="rect9274"
-           style="fill:url(#radialGradient11711);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(-0.86602541,0.49999998,-0.49999998,-0.86602541,0,0)"
-           style="fill:url(#radialGradient11707);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9276"
-           width="2.2886987"
-           height="9.7832375"
-           x="1055.6494"
-           y="133.30452" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(-0.97613096,0.21718274,-0.21718274,-0.97613096,0,0)"
-           y="-187.55902"
-           x="1047.3137"
-           height="9.7832375"
-           width="2.2886989"
-           id="rect9278"
-           style="fill:url(#radialGradient11704);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient11701);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9280"
-           width="2.2886989"
-           height="9.7832375"
-           x="-968.83728"
-           y="446.444"
-           transform="matrix(0.67615127,-0.73676282,-0.73676282,-0.67615127,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(-0.86602541,0.49999998,-0.49999998,-0.86602541,0,0)"
-           style="fill:url(#radialGradient11698);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9282"
-           width="2.2886987"
-           height="9.7832375"
-           x="1055.6494"
-           y="137.71571" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient11695);fill-opacity:1;stroke:#000000;stroke-width:0.0236795;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9284"
-           width="1.7980012"
-           height="7.6857085"
-           x="-622.35187"
-           y="-871.14362"
-           transform="matrix(0.84454448,0.5354854,0.5354854,-0.84454448,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(0.67615127,-0.73676282,-0.73676282,-0.67615127,0,0)"
-           y="451.36902"
-           x="-967.28851"
-           height="9.7832375"
-           width="2.2886989"
-           id="rect9286"
-           style="fill:url(#radialGradient11687);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(0.67615127,0.73676282,-0.73676282,0.67615127,0,0)"
-           y="980.79285"
-           x="-383.48633"
-           height="9.7832394"
-           width="2.2886992"
-           id="rect9288"
-           style="fill:url(#radialGradient11684);fill-opacity:1;stroke:#000000;stroke-width:0.03014195;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient11681);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9290"
-           width="2.2886989"
-           height="9.7832375"
-           x="873.13477"
-           y="585.63324"
-           transform="matrix(-0.97613095,-0.2171828,-0.2171828,0.97613095,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           y="822.83246"
-           x="-659.73779"
-           height="9.7832375"
-           width="2.2886987"
-           id="rect9292"
-           style="fill:url(#radialGradient11678);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0.86602541,0.49999998,-0.49999998,0.86602541,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient11675);fill-opacity:1;stroke:#000000;stroke-width:0.03014195;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9294"
-           width="2.2886992"
-           height="9.7832394"
-           x="-382.22797"
-           y="984.79443"
-           transform="matrix(0.67615127,0.73676282,-0.73676282,0.67615127,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(-0.97613095,-0.2171828,-0.2171828,0.97613095,0,0)"
-           y="589.63483"
-           x="874.39313"
-           height="9.7832375"
-           width="2.2886989"
-           id="rect9296"
-           style="fill:url(#radialGradient11672);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           y="827.24365"
-           x="-659.73779"
-           height="9.7832375"
-           width="2.2886987"
-           id="rect9298"
-           style="fill:url(#radialGradient11669);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           transform="matrix(0.86602541,0.49999998,-0.49999998,0.86602541,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(0.0414717,-0.99913968,-0.99913968,-0.0414717,0,0)"
-           y="968.4198"
-           x="-437.9382"
-           height="7.685708"
-           width="1.7980012"
-           id="rect9300"
-           style="fill:url(#radialGradient11666);fill-opacity:1;stroke:#000000;stroke-width:0.0236795;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient11663);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9302"
-           width="2.2886989"
-           height="9.7832375"
-           x="875.94189"
-           y="594.55988"
-           transform="matrix(-0.97613095,-0.2171828,-0.2171828,0.97613095,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(-0.11086193,-0.99383582,-0.99383582,0.11086193,0,0)"
-           y="1023.6416"
-           x="-288.45779"
-           height="7.6857057"
-           width="1.7980006"
-           id="rect9304"
-           style="fill:url(#radialGradient11659);fill-opacity:1;stroke:#000000;stroke-width:0.02367949;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient11655);fill-opacity:1;stroke:#000000;stroke-width:0.0236795;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9306"
-           width="1.7980008"
-           height="7.6857066"
-           x="1030.9447"
-           y="-271.41788"
-           transform="matrix(-0.80525608,0.59292718,0.59292718,0.80525608,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(0.29997969,-0.95394559,0.95394559,0.29997969,0,0)"
-           y="-839.40167"
-           x="-682.745"
-           height="9.7832375"
-           width="2.2886987"
-           id="rect9314"
-           style="fill:url(#radialGradient12040);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient12042);fill-opacity:1;stroke:#000000;stroke-width:0.03014195;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9316"
-           width="2.2886992"
-           height="9.7832394"
-           x="76.784859"
-           y="-1078.245"
-           transform="matrix(0.29997967,0.95394559,0.95394559,-0.29997967,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(0,-1,1,0,0,0)"
-           style="fill:url(#radialGradient11636);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9318"
-           width="2.2886987"
-           height="9.7832375"
-           x="-399.1929"
-           y="-1003.0892" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient11633);fill-opacity:1;stroke:#000000;stroke-width:0.0236795;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9320"
-           width="1.7980012"
-           height="7.6857085"
-           x="1062.9636"
-           y="-111.06889"
-           transform="matrix(-0.8860162,0.46365429,0.46365429,0.8860162,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(0.29997967,0.95394559,0.95394559,-0.29997967,0,0)"
-           y="-1073.3199"
-           x="78.333588"
-           height="9.7832394"
-           width="2.2886992"
-           id="rect9322"
-           style="fill:url(#radialGradient11630);fill-opacity:1;stroke:#000000;stroke-width:0.03014195;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(0.91611806,0.4009086,0.4009086,-0.91611806,0,0)"
-           y="-766.52417"
-           x="-750.31091"
-           height="7.6857057"
-           width="1.7980005"
-           id="rect9324"
-           style="fill:url(#radialGradient11626);fill-opacity:1;stroke:#000000;stroke-width:0.02367949;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(0.67615127,0.73676282,-0.73676282,0.67615127,0,0)"
-           y="989.71948"
-           x="-380.6792"
-           height="9.7832394"
-           width="2.2886992"
-           id="rect9326"
-           style="fill:url(#radialGradient11623);fill-opacity:1;stroke:#000000;stroke-width:0.03014195;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient11620);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9328"
-           width="2.2886987"
-           height="9.7832375"
-           x="-681.19623"
-           y="-834.47662"
-           transform="matrix(0.29997969,-0.95394559,0.95394559,0.29997969,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient11616);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9330"
-           width="2.2886989"
-           height="9.7832375"
-           x="1048.8624"
-           y="-182.63397"
-           transform="matrix(-0.97613096,0.21718274,-0.21718274,-0.97613096,0,0)" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           transform="matrix(-0.97613096,0.21718274,-0.21718274,-0.97613096,0,0)"
-           y="-191.56062"
-           x="1046.0553"
-           height="9.7832375"
-           width="2.2886989"
-           id="rect9332"
-           style="fill:url(#radialGradient11612);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <rect
-           inkscape:export-ydpi="92"
-           inkscape:export-xdpi="92"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           style="fill:url(#radialGradient11609);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect9334"
-           width="2.2886989"
-           height="9.7832375"
-           x="-970.09558"
-           y="442.44238"
-           transform="matrix(0.67615127,-0.73676282,-0.73676282,-0.67615127,0,0)" />
-        <rect
-           style="fill:url(#radialGradient11643);fill-opacity:1;stroke:#000000;stroke-width:0.03014194;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect11883"
-           width="2.2886987"
-           height="9.7832375"
-           x="-682.745"
-           y="-839.40167"
-           transform="matrix(0.29997969,-0.95394559,0.95394559,0.29997969,0,0)"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-        <rect
-           transform="matrix(0.29997967,0.95394559,0.95394559,-0.29997967,0,0)"
-           y="-1078.245"
-           x="76.784859"
-           height="9.7832394"
-           width="2.2886992"
-           id="rect11885"
-           style="fill:url(#radialGradient11639);fill-opacity:1;stroke:#000000;stroke-width:0.03014195;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:export-filename="/media/pros/pyfl/art/ships/ai-base.png"
-           inkscape:export-xdpi="92"
-           inkscape:export-ydpi="92" />
-      </g>
-    </g>
-    <g
-       id="0boss_left"
-       transform="matrix(2.0023953,0,0,2.0023953,987.50332,-408.78486)"
-       inkscape:label="#g11960">
-      <g
-         id="33"
-         transform="matrix(0,0.1642615,-0.1642615,0,-978.57801,391.19481)"
-         inkscape:label="#g8221">
-        <path
-           id="path11460"
-           d="m 34.896015,163.64094 -21.068058,1.46374 0,1.18257 0,13.66159 0,1.18256 21.068058,1.46375 0,-4.11005 0,-10.73411 0,-4.11005 z"
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.59536153;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           inkscape:connector-curvature="0" />
-        <rect
-           style="fill:url(#radialGradient11975);fill-opacity:1;stroke:#000000;stroke-width:0.18682455;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           id="rect11470"
-           width="14.185725"
-           height="60.638103"
-           x="-12.364876"
-           y="-188.99033"
-           transform="matrix(0.94132244,-0.33750861,-0.33750861,-0.94132244,0,0)" />
-        <g
-           transform="matrix(0,1,-1,0,463.35157,-229.97867)"
-           id="g11474">
-          <rect
-             style="fill:url(#radialGradient11977);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect11476"
-             width="14.185763"
-             height="60.638252"
-             x="475.43542"
-             y="197.62344"
-             transform="matrix(0.9539456,0.2999797,-0.2999797,0.9539456,0,0)" />
-          <rect
-             transform="matrix(-0.9539456,0.2999797,0.2999797,0.9539456,0,0)"
-             y="439.36383"
-             x="-293.30667"
-             height="60.638252"
-             width="14.185763"
-             id="rect11478"
-             style="fill:url(#radialGradient11979);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             style="fill:url(#radialGradient11981);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect11480"
-             width="14.185763"
-             height="60.638252"
-             x="396.14844"
-             y="345.0737" />
-          <rect
-             transform="matrix(0.9539456,0.2999797,-0.2999797,0.9539456,0,0)"
-             y="222.42607"
-             x="483.23499"
-             height="60.638252"
-             width="14.185763"
-             id="rect11482"
-             style="fill:url(#radialGradient11983);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             style="fill:url(#radialGradient11985);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect11484"
-             width="14.185763"
-             height="60.638252"
-             x="-285.50723"
-             y="464.16644"
-             transform="matrix(-0.9539456,0.2999797,0.2999797,0.9539456,0,0)" />
-          <rect
-             style="fill:url(#radialGradient11987);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect11486"
-             width="14.185763"
-             height="60.638252"
-             x="396.14844"
-             y="372.41516" />
-          <rect
-             style="fill:url(#radialGradient11989);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect11488"
-             width="14.185763"
-             height="60.638252"
-             x="492.83441"
-             y="252.95233"
-             transform="matrix(0.9539456,0.2999797,-0.2999797,0.9539456,0,0)" />
-          <rect
-             transform="matrix(-0.9539456,0.2999797,0.2999797,0.9539456,0,0)"
-             y="494.69269"
-             x="-275.90793"
-             height="60.638252"
-             width="14.185763"
-             id="rect11490"
-             style="fill:url(#radialGradient11991);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        </g>
-      </g>
-      <path
-         sodipodi:type="arc"
-         style="opacity:0;fill:#00ffff;fill-opacity:0.23137255;stroke:none"
-         id="path11958"
-         sodipodi:cx="86.152527"
-         sodipodi:cy="208.84557"
-         sodipodi:rx="21.396744"
-         sodipodi:ry="16.966581"
-         d="m 107.54927,208.84557 c 0,9.37038 -9.579648,16.96658 -21.396743,16.96658 -11.817095,0 -21.396744,-7.5962 -21.396744,-16.96658 0,-9.37039 9.579649,-16.96659 21.396744,-16.96659 11.817095,0 21.396743,7.5962 21.396743,16.96659 z"
-         transform="translate(-1076.5874,189.01437)" />
-    </g>
-    <g
-       id="0boss_right"
-       transform="matrix(-2.0023953,0,0,2.0023953,-2978.9805,-408.78486)"
-       inkscape:label="#g11993">
-      <g
-         inkscape:label="#g8221"
-         transform="matrix(0,0.1642615,-0.1642615,0,-978.57801,391.19481)"
-         id="g11995">
-        <path
-           inkscape:connector-curvature="0"
-           style="fill:#494949;fill-opacity:1;stroke:#000000;stroke-width:0.59536153;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-           d="m 34.896015,163.64094 -21.068058,1.46374 0,1.18257 0,13.66159 0,1.18256 21.068058,1.46375 0,-4.11005 0,-10.73411 0,-4.11005 z"
-           id="path11997" />
-        <rect
-           transform="matrix(0.94132244,-0.33750861,-0.33750861,-0.94132244,0,0)"
-           y="-188.99033"
-           x="-12.364876"
-           height="60.638103"
-           width="14.185725"
-           id="rect11999"
-           style="fill:url(#radialGradient12021);fill-opacity:1;stroke:#000000;stroke-width:0.18682455;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-        <g
-           id="g12001"
-           transform="matrix(0,1,-1,0,463.35157,-229.97867)">
-          <rect
-             transform="matrix(0.9539456,0.2999797,-0.2999797,0.9539456,0,0)"
-             y="197.62344"
-             x="475.43542"
-             height="60.638252"
-             width="14.185763"
-             id="rect12003"
-             style="fill:url(#radialGradient12023);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             style="fill:url(#radialGradient12025);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect12005"
-             width="14.185763"
-             height="60.638252"
-             x="-293.30667"
-             y="439.36383"
-             transform="matrix(-0.9539456,0.2999797,0.2999797,0.9539456,0,0)" />
-          <rect
-             y="345.0737"
-             x="396.14844"
-             height="60.638252"
-             width="14.185763"
-             id="rect12007"
-             style="fill:url(#radialGradient12027);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             style="fill:url(#radialGradient12029);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect12009"
-             width="14.185763"
-             height="60.638252"
-             x="483.23499"
-             y="222.42607"
-             transform="matrix(0.9539456,0.2999797,-0.2999797,0.9539456,0,0)" />
-          <rect
-             transform="matrix(-0.9539456,0.2999797,0.2999797,0.9539456,0,0)"
-             y="464.16644"
-             x="-285.50723"
-             height="60.638252"
-             width="14.185763"
-             id="rect12011"
-             style="fill:url(#radialGradient12031);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             y="372.41516"
-             x="396.14844"
-             height="60.638252"
-             width="14.185763"
-             id="rect12013"
-             style="fill:url(#radialGradient12033);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             transform="matrix(0.9539456,0.2999797,-0.2999797,0.9539456,0,0)"
-             y="252.95233"
-             x="492.83441"
-             height="60.638252"
-             width="14.185763"
-             id="rect12015"
-             style="fill:url(#radialGradient12036);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
-          <rect
-             style="fill:url(#radialGradient12038);fill-opacity:1;stroke:#000000;stroke-width:0.18682513;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
-             id="rect12017"
-             width="14.185763"
-             height="60.638252"
-             x="-275.90793"
-             y="494.69269"
-             transform="matrix(-0.9539456,0.2999797,0.2999797,0.9539456,0,0)" />
-        </g>
-      </g>
-      <path
-         transform="translate(-1076.5874,189.01437)"
-         d="m 107.54927,208.84557 c 0,9.37038 -9.579648,16.96658 -21.396743,16.96658 -11.817095,0 -21.396744,-7.5962 -21.396744,-16.96658 0,-9.37039 9.579649,-16.96659 21.396744,-16.96659 11.817095,0 21.396743,7.5962 21.396743,16.96659 z"
-         sodipodi:ry="16.966581"
-         sodipodi:rx="21.396744"
-         sodipodi:cy="208.84557"
-         sodipodi:cx="86.152527"
-         id="path12019"
-         style="opacity:0;fill:#00ffff;fill-opacity:0.23137255;stroke:none"
-         sodipodi:type="arc" />
-    </g>
-  </g>
-</svg>
diff --git a/examples/shoot/assets/boss.png b/examples/shoot/assets/boss.png
deleted file mode 100644 (file)
index 49cf0c2..0000000
Binary files a/examples/shoot/assets/boss.png and /dev/null differ
diff --git a/examples/shoot/assets/boss_left.png b/examples/shoot/assets/boss_left.png
deleted file mode 100644 (file)
index c9de48a..0000000
Binary files a/examples/shoot/assets/boss_left.png and /dev/null differ
diff --git a/examples/shoot/assets/boss_right.png b/examples/shoot/assets/boss_right.png
deleted file mode 100644 (file)
index 7901bdf..0000000
Binary files a/examples/shoot/assets/boss_right.png and /dev/null differ
diff --git a/examples/shoot/assets/enemy.png b/examples/shoot/assets/enemy.png
deleted file mode 100644 (file)
index 893a4d8..0000000
Binary files a/examples/shoot/assets/enemy.png and /dev/null differ
diff --git a/examples/shoot/assets/enemy0.png b/examples/shoot/assets/enemy0.png
deleted file mode 100644 (file)
index 088d683..0000000
Binary files a/examples/shoot/assets/enemy0.png and /dev/null differ
diff --git a/examples/shoot/assets/enemy1.png b/examples/shoot/assets/enemy1.png
deleted file mode 100644 (file)
index c250e0b..0000000
Binary files a/examples/shoot/assets/enemy1.png and /dev/null differ
diff --git a/examples/shoot/assets/enemy2.png b/examples/shoot/assets/enemy2.png
deleted file mode 100644 (file)
index 28e1ab1..0000000
Binary files a/examples/shoot/assets/enemy2.png and /dev/null differ
diff --git a/examples/shoot/assets/enemy3.png b/examples/shoot/assets/enemy3.png
deleted file mode 100644 (file)
index da510e4..0000000
Binary files a/examples/shoot/assets/enemy3.png and /dev/null differ
diff --git a/examples/shoot/assets/enemy4.png b/examples/shoot/assets/enemy4.png
deleted file mode 100644 (file)
index c4c2ac3..0000000
Binary files a/examples/shoot/assets/enemy4.png and /dev/null differ
diff --git a/examples/shoot/assets/enemy4_turret.png b/examples/shoot/assets/enemy4_turret.png
deleted file mode 100644 (file)
index 1afd8a4..0000000
Binary files a/examples/shoot/assets/enemy4_turret.png and /dev/null differ
diff --git a/examples/shoot/assets/enemy_kamikaze.png b/examples/shoot/assets/enemy_kamikaze.png
deleted file mode 100644 (file)
index d2f64e3..0000000
Binary files a/examples/shoot/assets/enemy_kamikaze.png and /dev/null differ
diff --git a/examples/shoot/assets/enemy_missile.png b/examples/shoot/assets/enemy_missile.png
deleted file mode 100644 (file)
index 8a167bc..0000000
Binary files a/examples/shoot/assets/enemy_missile.png and /dev/null differ
diff --git a/examples/shoot/assets/enemy_shoot.png b/examples/shoot/assets/enemy_shoot.png
deleted file mode 100644 (file)
index 6282d8e..0000000
Binary files a/examples/shoot/assets/enemy_shoot.png and /dev/null differ
diff --git a/examples/shoot/assets/explosion.png b/examples/shoot/assets/explosion.png
deleted file mode 100644 (file)
index eac7821..0000000
Binary files a/examples/shoot/assets/explosion.png and /dev/null differ
diff --git a/examples/shoot/assets/hitbox.png b/examples/shoot/assets/hitbox.png
deleted file mode 100644 (file)
index 1c382c9..0000000
Binary files a/examples/shoot/assets/hitbox.png and /dev/null differ
diff --git a/examples/shoot/assets/money.png b/examples/shoot/assets/money.png
deleted file mode 100644 (file)
index c34b8e4..0000000
Binary files a/examples/shoot/assets/money.png and /dev/null differ
diff --git a/examples/shoot/assets/player.png b/examples/shoot/assets/player.png
deleted file mode 100644 (file)
index d522fcc..0000000
Binary files a/examples/shoot/assets/player.png and /dev/null differ
diff --git a/examples/shoot/assets/player_missile.png b/examples/shoot/assets/player_missile.png
deleted file mode 100644 (file)
index 0ea26ca..0000000
Binary files a/examples/shoot/assets/player_missile.png and /dev/null differ
diff --git a/examples/shoot/assets/player_shoot.png b/examples/shoot/assets/player_shoot.png
deleted file mode 100755 (executable)
index db5d808..0000000
Binary files a/examples/shoot/assets/player_shoot.png and /dev/null differ
diff --git a/examples/shoot/assets/splash.png b/examples/shoot/assets/splash.png
deleted file mode 100644 (file)
index 8b6a04e..0000000
Binary files a/examples/shoot/assets/splash.png and /dev/null differ
diff --git a/examples/shoot/assets/splash_play.png b/examples/shoot/assets/splash_play.png
deleted file mode 100644 (file)
index bdd0b7e..0000000
Binary files a/examples/shoot/assets/splash_play.png and /dev/null differ
diff --git a/examples/shoot/assets/star0.png b/examples/shoot/assets/star0.png
deleted file mode 100644 (file)
index 405bbb2..0000000
Binary files a/examples/shoot/assets/star0.png and /dev/null differ
diff --git a/examples/shoot/assets/star1.png b/examples/shoot/assets/star1.png
deleted file mode 100644 (file)
index 4ba64b6..0000000
Binary files a/examples/shoot/assets/star1.png and /dev/null differ
diff --git a/examples/shoot/assets/star2.png b/examples/shoot/assets/star2.png
deleted file mode 100644 (file)
index 2a254f2..0000000
Binary files a/examples/shoot/assets/star2.png and /dev/null differ
diff --git a/examples/shoot/assets/up_missile.png b/examples/shoot/assets/up_missile.png
deleted file mode 100644 (file)
index 06ebe21..0000000
Binary files a/examples/shoot/assets/up_missile.png and /dev/null differ
diff --git a/examples/shoot/org.nitlanguage.shoot_android.txt b/examples/shoot/org.nitlanguage.shoot_android.txt
deleted file mode 100644 (file)
index d43de74..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-Categories:Nit,Games
-License:Apache2
-Web Site:http://nitlanguage.org
-Source Code:http://nitlanguage.org/nit.git/tree/HEAD:/examples/shoot
-Issue Tracker:https://github.com/nitlang/nit/issues
-
-Summary:A shoot'em up in space
-Description:
-*piew* *piew* *boom* *piew* *boom* etc.
-.
diff --git a/examples/shoot/package.ini b/examples/shoot/package.ini
deleted file mode 100644 (file)
index 099ba60..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-[package]
-name=shoot
-tags=game
-maintainer=Jean Privat <jean@pryen.org>
-license=Apache-2.0
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/examples/shoot/
-git=https://github.com/nitlang/nit.git
-git.directory=examples/shoot/
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
-apk=http://nitlanguage.org/fdroid/apk/shoot_android.apk
diff --git a/examples/shoot/src/shoot.nit b/examples/shoot/src/shoot.nit
deleted file mode 100644 (file)
index fd94447..0000000
+++ /dev/null
@@ -1,413 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Space shooter.
-# This program is a fun game but also a good example of the scene2d module
-module shoot is
-       app_name("Space Shooter")
-       app_version(0, 1, git_revision)
-end
-
-import mnit
-import shoot_logic
-
-redef class Sprite
-       # mnit specific method to draw a sprite
-       # app is used to optain the assets and the display
-       # Each sprite should implements this method
-       fun draw_on_display(app: App) do end
-
-       # Helper function to draw an image centered on the current sprite position
-       fun draw_image(app: App, img: Image)
-       do
-               app.display.blit_centered(img, (self.x.to_f/app.scale).to_i, (self.y.to_f/app.scale).to_i)
-       end
-
-       # Helper function to draw an image translated and rotated on the current sprite position
-       fun draw_rotated_image(app: App, img: Image, dx, dy: Int, angle: Float)
-       do
-               app.display.blit_rotated(img, self.x.to_f/app.scale, self.y.to_f/app.scale, angle)
-       end
-end
-
-redef class Player
-       redef fun draw_on_display(app)
-       do
-               if protected_ttl > 30  and protected_ttl%10 > 5 then return # blink on protected
-               draw_image(app, app.img_player)
-       end
-end
-
-redef class Shoot
-       redef fun draw_on_display(app)
-       do
-               var img = if enemy then app.img_enemy_shoot else app.img_player_shoot
-               draw_image(app, img)
-       end
-end
-
-redef class Missile
-       redef fun draw_on_display(app)
-       do
-               var angle = velocity_angle
-               var img = if enemy then app.img_enemy_missile else app.img_player_missile
-               draw_rotated_image(app, img, 0, 0, angle)
-       end
-end
-
-redef class Enemy0
-       redef fun draw_on_display(app)
-       do
-               draw_image(app, app.img_enemy0)
-       end
-end
-
-redef class Enemy1
-       redef fun draw_on_display(app)
-       do
-               draw_image(app, app.img_enemy1)
-       end
-end
-
-redef class Enemy2
-       redef fun draw_on_display(app)
-       do
-               draw_image(app, app.img_enemy2)
-       end
-end
-
-redef class Enemy3
-       redef fun draw_on_display(app)
-       do
-               draw_image(app, app.img_enemy3)
-       end
-end
-
-redef class Enemy4
-       redef fun draw_on_display(app)
-       do
-               draw_image(app, app.img_enemy4)
-               draw_rotated_image(app, app.img_enemy4_turret, 0, 0, self.angle)
-       end
-end
-
-redef class EnemyKamikaze
-       redef fun draw_on_display(app)
-       do
-               var angle = self.velocity_angle
-               draw_rotated_image(app, app.img_enemy_kamikaze, 0, 0, angle)
-       end
-end
-
-redef class Boss
-       redef fun draw_on_display(app)
-       do
-               if flick_ttl > 0 then return
-               draw_image(app, app.img_boss)
-       end
-end
-
-redef class BossPart
-       redef fun draw_on_display(app)
-       do
-               if flick_ttl > 0 then return
-               if relx > 0 then
-                       self.boss.draw_image(app, app.img_boss_right)
-               else
-                       self.boss.draw_image(app, app.img_boss_left)
-               end
-       end
-end
-
-redef class Money
-       redef fun draw_on_display(app)
-       do
-               draw_image(app, app.img_money)
-       end
-end
-
-redef class UpMissile
-       redef fun draw_on_display(app)
-       do
-               draw_image(app, app.img_upmissile)
-       end
-end
-
-redef class Explosion
-       redef fun draw_on_display(app)
-       do
-               draw_image(app, app.img_explosion)
-       end
-end
-
-redef class Star
-       redef fun draw_on_display(app)
-       do
-               # Simulate depth:
-               # More a star is fast, more it requires a bright image
-               var img: Image
-               if self.vy < 20 then
-                       img = app.img_star0
-               else if self.vy < 40 then
-                       img = app.img_star1
-               else
-                       img = app.img_star2
-               end
-               draw_image(app, img)
-       end
-end
-
-redef class Scene
-       fun draw_on_display(app: App) do end
-       fun input(app: App, input_event: InputEvent): Bool do return false
-end
-
-redef class PlayScene
-       redef fun draw_on_display(app)
-       do
-               app.display.clear( 0.0, 0.0, 0.0 )
-               self.sprites.draw(app)
-               for i in [0..player.money[
-               do
-                       app.display.blit(app.img_money, 10, app.display.height-10-i)
-               end
-               for i in [1..player.nbshoots]
-               do
-                       app.display.blit(app.img_player_shoot, 30, app.display.height-10 - i*10)
-               end
-               for i in [1..player.nbmissiles]
-               do
-                       app.display.blit(app.img_player_missile, 40, app.display.height-10 - i*20)
-               end
-       end
-
-       redef fun input(app, input_event)
-       do
-               var speed = 400
-               if input_event isa KeyEvent then
-                       if input_event.is_arrow_down then
-                               if input_event.is_down then
-                                       player.vy = speed
-                               else
-                                       player.vy = 0
-                               end
-                       else if input_event.is_arrow_up then
-                               if input_event.is_down then
-                                       player.vy = -speed
-                               else
-                                       player.vy = 0
-                               end
-                       else if input_event.is_arrow_left then
-                               if input_event.is_down then
-                                       player.vx = -speed
-                               else
-                                       player.vx = 0
-                               end
-                       else if input_event.is_arrow_right then
-                               if input_event.is_down then
-                                       player.vx = speed
-                               else
-                                       player.vx = 0
-                               end
-                       end
-                       return true
-               else if input_event isa PointerEvent and input_event.pressed then
-                       var x = (input_event.x * app.scale).to_i
-                       var y = (input_event.y * app.scale).to_i
-                       player.goes_to(x, y, speed)
-                       return true
-               end
-               return false # unknown event, can be handled by something else
-       end
-end
-
-###
-
-redef class MenuScene
-       redef fun draw_on_display(app)
-       do
-               var display = app.display
-               assert display != null
-               blit_fs(display, app.img_splash)
-               sprites.draw(app)
-               if not play or ttl%10 > 5 then
-                       blit_fs(display, app.img_splash_play)
-               end
-       end
-
-       fun blit_fs(d: Display, img: Image)
-       do
-               var w = d.width.to_f
-               var h = d.height.to_f
-               d.blit_stretched(img, 0.0,0.0, 0.0,h, w,h, w,0.0)
-       end
-
-       redef fun input(app, input_event)
-       do
-               if input_event isa KeyEvent then
-                       play = true
-                       return true
-               else if input_event isa PointerEvent then
-                       play = true
-                       return true
-               end
-               return false
-       end
-end
-
-###
-
-redef class App
-       super View
-
-       var debug: Bool = false
-
-       redef fun draw_sprite(s: Sprite)
-       do
-               s.draw_on_display(self)
-               if debug and s.width != 0 and s.height != 0 then
-                       var left = s.left.to_f/scale
-                       var right = s.right.to_f/scale
-                       var top = s.top.to_f/scale
-                       var bot = s.bottom.to_f/scale
-                       display.blit_stretched(img_hitbox, right, top, right, bot, left, bot, left, top)
-               end
-       end
-
-       var scene: ShotScene
-
-       var img_hitbox: Image
-
-       var img_splash: Image
-       var img_splash_play: Image
-
-       var img_player: Image
-       var img_player_shoot: Image
-       var img_player_missile: Image
-       var img_enemy0: Image
-       var img_enemy1: Image
-       var img_enemy2: Image
-       var img_enemy3: Image
-       var img_enemy4: Image
-       var img_enemy4_turret: Image
-       var img_enemy_kamikaze: Image
-       var img_enemy_shoot: Image
-       var img_enemy_missile: Image
-       var img_money: Image
-       var img_upmissile: Image
-       var img_explosion: Image
-       var img_star0: Image
-       var img_star1: Image
-       var img_star2: Image
-
-       var img_boss: Image
-       var img_boss_left: Image
-       var img_boss_right: Image
-
-       redef fun on_create
-       do
-               super
-
-               scale = (800.0 * 600.0 / display.width.to_f / display.height.to_f).sqrt * 100.0
-
-               debug = args.length > 0 and args.first == "--debug"
-
-               # TODO load assets here
-               # ex: img = load_image( "img.png" )
-               #     to get file located at assets/img.png before deployement
-               self.img_hitbox = load_image("hitbox.png")
-
-               self.img_splash = load_image("splash.png")
-               self.img_splash_play = load_image("splash_play.png")
-
-               self.img_player = load_image("player.png")
-               self.img_player_shoot = load_image("player_shoot.png")
-               self.img_player_missile = load_image("player_missile.png")
-               self.img_enemy0 = load_image("enemy0.png")
-               self.img_enemy1 = load_image("enemy1.png")
-               self.img_enemy2 = load_image("enemy2.png")
-               self.img_enemy3 = load_image("enemy3.png")
-               self.img_enemy4 = load_image("enemy4.png")
-               self.img_enemy4_turret = load_image("enemy4_turret.png")
-               self.img_enemy_kamikaze = load_image("enemy_kamikaze.png")
-               self.img_enemy_shoot = load_image("enemy_shoot.png")
-               self.img_enemy_missile = load_image("enemy_missile.png")
-               self.img_money = load_image("money.png")
-               self.img_upmissile = load_image("up_missile.png")
-               self.img_explosion = load_image("explosion.png")
-               self.img_star0 = load_image("star0.png")
-               self.img_star1 = load_image("star1.png")
-               self.img_star2 = load_image("star2.png")
-               self.img_boss = load_image("boss.png")
-               self.img_boss_left = load_image("boss_left.png")
-               self.img_boss_right = load_image("boss_right.png")
-
-               var w = (display.width.to_f * scale).to_i
-               var h = (display.height.to_f * scale).to_i
-               self.scene = new MenuScene(w, h)
-       end
-
-       # Whole scaling to convert display pixels to game pixels
-       var scale: Float = 200.0
-
-       redef fun load_image(filename)
-       do
-               var res = super
-               res.scale = 100.0 / self.scale
-               return res
-       end
-
-       redef fun frame_core( display )
-       # the arg display is not null but otherwise the same than self.display
-       do
-               if not paused then
-                       self.scene.update
-                       var next = self.scene.next_scene
-                       if next != null then
-                               self.scene = next
-                       end
-                       if not self.scene.exists then quit = true
-               end
-               self.scene.draw_on_display(self)
-       end
-
-       var paused: Bool = false
-
-       redef fun input( input_event )
-       do
-               if input_event isa QuitEvent then # close window button
-                       quit = true # orders system to quit
-                       return true # this event has been handled
-               else if input_event isa KeyEvent then
-                       if input_event.to_c == 'p' then
-                               paused = input_event.is_down
-                               return true # this event has been handled
-                       else if input_event.to_c == 'q' then
-                               quit = true # orders system to quit
-                               return true # this event has been handled
-                       end
-               end
-
-               # Maybe the event is specific to the scene
-               return self.scene.input(self, input_event)
-       end
-end
-
-if args.length > 0 and args.first == "--headless" then
-       headless_run
-       return
-end
-
-app.setup
-app.run
diff --git a/examples/shoot/src/shoot_logic.nit b/examples/shoot/src/shoot_logic.nit
deleted file mode 100644 (file)
index 824af57..0000000
+++ /dev/null
@@ -1,1077 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Space shooter.
-# This program is a fun game but also a good example of the scene2d module
-module shoot_logic
-
-import scene2d
-
-# The ship of the player
-class Player
-       super Sprite
-
-       # Where the player is going
-       var going_target = new GoingTarget
-
-       # Activate the `going_target`
-       fun goes_to(x,y: Int, speed: Int)
-       do
-               going_target.x = x
-               going_target.y = y
-               going_target.active = true
-               var angle = angle_to(going_target)
-               set_velocity(angle, speed)
-       end
-
-       # Current forture of the player
-       var money: Int = 0 is writable
-
-       # Number of basic bullets fired together
-       var nbshoots: Int = 1 is writable
-
-       # Time bebore the player shoot again a basic bullet (cooldown)
-       # Shoot if 0
-       var shoot_ttl = 0
-
-       # Number of missiles
-       var nbmissiles: Int = 0 is writable
-
-       # Time bebore the player shoot again a missile (cooldown)
-       # Shoot if 0
-       var missile_ttl = 0
-
-       # Remainind time when the player is protected from impacts
-       var protected_ttl = 0
-
-       # The associated play scene
-       # (mainly used to registed shoots)
-       var scene: PlayScene
-
-       init(scene: PlayScene) do
-               self.scene = scene
-               self.width = 2400
-               self.height = 2400
-       end
-
-       redef fun update
-       do
-               super
-
-               # Out of screen?
-               if self.y < 0 then
-                       self.y = 0
-                       self.vy = 0
-               else if self.y > scene.height then
-                       self.y = scene.height
-                       self.vy = 0
-               end
-               if self.x < 0 then
-                       self.x = 0
-                       self.vx = 0
-               else if self.x > scene.width then
-                       self.x = scene.width
-                       self.vx = 0
-               end
-
-               # Update of the player protection if any
-               if protected_ttl > 0 then protected_ttl -= 1
-
-               # Need to shoot basic bullets?
-               if shoot_ttl > 0 then
-                       shoot_ttl -= 1
-               else
-                       shoot_ttl = 30
-                       for i in [0..nbshoots[ do
-                               var shoot = new Shoot(scene)
-                               shoot.x = x
-                               shoot.y = top
-                               shoot.vy = -500
-                               shoot.vx = (i - nbshoots / 2) * 100
-                               scene.player_shoots.add(shoot)
-                       end
-               end
-
-               # Need to shoot missiles?
-               if missile_ttl > 0 then
-                       missile_ttl -= 1
-               else if nbmissiles > 0 then
-                       missile_ttl = 500 / nbmissiles
-                       var shoot = new Missile(scene)
-                       shoot.x = x
-                       shoot.y = top
-                       shoot.vy = -300
-                       shoot.vx = 0
-                       scene.player_shoots.add(shoot)
-               end
-
-       end
-
-       # Time before the player is respawned by the scene
-       var respawn_ttl: Int = 0
-
-       fun hit
-       do
-               if self.protected_ttl > 0 then return
-               self.scene.explosion(self.x, self.y, 10)
-               self.exists = false
-
-               # Reset the position for respawn
-               self.x = scene.width / 2
-               self.y = scene.height - 10000
-               self.vx = 0
-               self.vy = 0
-               self.respawn_ttl = 50
-       end
-
-end
-
-# Sprites that may be hit by the player.
-# Eq. enemies, bullets, loots, etc.
-class Hitable
-       super Sprite
-
-       # What do do when self is hit by the player.
-       # By defaut, do nothing
-       fun hit_by_player(player: Player) do end
-end
-
-# Destination for the player (pointer position)
-class GoingTarget
-       super Hitable
-
-       # true in on move, false if player is at rest
-       var active = false is writable
-
-       init do
-               self.width = 500
-               self.height = 500
-       end
-
-       redef fun hit_by_player(player)
-       do
-               if not active then return
-               active = false
-               player.vx = 0
-               player.vy = 0
-       end
-end
-
-# A bullet shooted by a ship
-class Shoot
-       super Hitable
-
-       # Was the shoot fired by an enemy.
-       # Since there is no frendly fire, it is important to distinguish ownership
-       var enemy: Bool = false
-
-       # The scene of the sprite
-       # Is used with bound limits
-       var scene: PlayScene
-
-       init(scene: PlayScene)
-       do
-               self.scene = scene
-               self.width = 800
-               self.height = 800
-       end
-
-       redef fun update
-       do
-               super
-
-               # Out of screen ?
-               if self.y < -100 * 100 or self.y > scene.height + 10000 or self.x < -100 * 100 or self.x > scene.width + 10000 then
-                       self.exists = false
-               end
-       end
-
-       redef fun hit_by_player(player)
-       do
-               player.hit
-               self.exists = false
-       end
-end
-
-# A advanced bullet that aims a target (player or enemy)
-class Missile
-       super Shoot
-
-       # The target aquired by the missile
-       var target: nullable Sprite = null
-
-       # When ttl is 0 then the angle stay fixed
-       # The angle is updated toward the target if ttl>0
-       var ttl: Int = 200
-
-       redef fun update
-       do
-               super
-
-               # Do we still update the angle ?
-               if ttl <= 0 then return
-               ttl -= 1
-
-               # Do we have a target?
-               var target = self.target
-               if target == null or not target.exists then return
-
-               # Just update the angle
-               var angle = self.angle_to(target)
-               self.set_velocity(angle, 300)
-       end
-end
-
-# A enemy ship
-# Various enemies exists, each kind has its own subclass
-abstract class Enemy
-       super Hitable
-
-       # The scene of the ship
-       # Is used to store created bullets or to get info about the player
-       var scene: PlayScene
-
-       # Time bebore the enemy shoot again (cooldown)
-       # Shoot if 0
-       # The default value is used as a grace period to avoid a first shoot on
-       # the first update
-       var shoot_ttl = 50
-
-       init(scene: PlayScene)
-       do
-               self.width = 2400
-               self.height = 2400
-               self.scene = scene
-               scene.enemies.add(self)
-       end
-
-       redef fun update
-       do
-               super
-
-               # Out of screen ?
-               if self.y > scene.height + 10000 or self.x < -100 * 100 or self.x > scene.width + 10000 then
-                       # Note: no control on the top to let ennemies appear
-                       self.exists = false
-               end
-
-               # Need to shoot?
-               if shoot_ttl > 0 then
-                       shoot_ttl -= 1
-               else
-                       shoot
-               end
-       end
-
-       # Each enemy has its own kind of shoot strategy
-       # Note: is automatically called by update when shoot_ttl is expired
-       fun shoot do end
-
-       # Money given when the enemy is destroyed
-       fun loot: Int is abstract
-
-       # What to do when the enemy is hit by a player shoot (or by the player himself)?
-       # By default it kill the enemy in an explosion and generate a loot
-       fun hit
-       do
-               self.exists = false
-               scene.explosion(self.x, self.y, 5)
-               if 100.rand < 3 then
-                       var upmissile = new UpMissile(scene)
-                       upmissile.x = self.x
-                       upmissile.y = self.y
-                       upmissile.vx = 0
-                       upmissile.vy = 0
-                       scene.loots.add(upmissile)
-                       scene.hitables.add(new LootArea(upmissile, 2000))
-               else
-                       for i in [0..self.loot[ do
-                               var money = new Money(scene)
-                               money.x = self.x
-                               money.y = self.y
-                               money.set_velocity(100.rand.to_f*pi/50.0, (500+self.loot).rand)
-                               scene.loots.add(money)
-                               scene.hitables.add(new LootArea(money, 2000))
-                       end
-               end
-       end
-
-       redef fun hit_by_player(player)
-       do
-               player.hit
-               hit
-       end
-end
-
-# Basic enemy, do not shoot
-class Enemy0
-       super Enemy
-
-       redef fun loot do return 3
-
-       redef init(scene)
-       do
-               self.width = 3600
-               self.height = 3600
-       end
-end
-
-# Simple shooter of pairs of basic bullets
-class Enemy1
-       super Enemy
-
-       redef init(scene)
-       do
-               self.width = 4400
-               self.height = 4400
-       end
-
-       redef fun shoot
-       do
-               # Next shoot
-               shoot_ttl = 50
-
-               # two bullets shoot each time
-               for dx in [-11, 11] do
-                       var shoot = new Shoot(scene)
-                       shoot.enemy = true
-                       shoot.x = self.x + dx * 100
-                       shoot.y = self.bottom
-                       shoot.vy = 500
-                       scene.enemy_shoots.add(shoot)
-               end
-       end
-
-       redef fun loot do return 5
-end
-
-# Enemy that shoot missiles
-class Enemy2
-       super Enemy
-
-       redef init(scene)
-       do
-               self.width = 6000
-               self.height = 6000
-       end
-
-       redef fun shoot
-       do
-               # Next shoot
-               shoot_ttl = 200
-
-               # The missile targets the player
-               var shoot = new Missile(scene)
-               shoot.enemy = true
-               shoot.x = self.x
-               shoot.y = self.bottom
-               shoot.vy = 500
-               shoot.target = scene.player
-               scene.enemy_shoots.add(shoot)
-       end
-
-       redef fun loot do return 10
-end
-
-# Enemy that shoot rings of basic bullets
-class Enemy3
-       super Enemy
-
-       redef init(scene)
-       do
-               self.width = 5800
-               self.height = 5800
-       end
-
-       redef fun shoot
-       do
-               # Next shoot
-               shoot_ttl = 50
-
-               for i in [0..10[ do
-                       var shoot = new Shoot(scene)
-                       shoot.enemy = true
-                       shoot.x = self.x
-                       shoot.y = self.bottom
-                       shoot.set_velocity(pi/5.0*i.to_f, 500)
-                       scene.enemy_shoots.add(shoot)
-               end
-       end
-
-       redef fun loot do return 20
-end
-
-# Enemy with a turret that shoot burst of bullets toward the player
-class Enemy4
-       super Enemy
-
-       # The angle of the turret
-       var angle: Float = 0.0
-
-       redef init(scene)
-       do
-               self.width = 4200
-               self.height = 4200
-       end
-
-       redef fun update
-       do
-               super
-
-               # Rotate the turret toward the player
-               var target = scene.player
-               if target.exists then
-                       angle = self.angle_to(target)
-               end
-       end
-
-       # Shoots come in burst
-       var nbshoots: Int = 0
-
-       redef fun shoot
-       do
-               # Next shoot: is there still bullets in the burst?
-               if self.nbshoots < 10 then
-                       # Is ther
-                       self.nbshoots += 1
-                       shoot_ttl = 5
-               else
-                       self.nbshoots = 0
-                       shoot_ttl = 80
-               end
-
-               # Shoot with the turret angle
-               var shoot = new Shoot(scene)
-               shoot.enemy = true
-               shoot.x = self.x
-               shoot.y = self.y
-               shoot.set_velocity(angle, 500)
-               scene.enemy_shoots.add(shoot)
-       end
-
-       redef fun loot do return 20
-end
-
-# Enemy that rush directly on the player
-class EnemyKamikaze
-       super Enemy
-
-       redef init(scene)
-       do
-               self.width = 3200
-               self.height = 3200
-       end
-
-       redef fun update
-       do
-               super
-
-               # Try to target the player
-               var target = scene.player
-               if not target.exists then return
-
-               var angle = self.angle_to(target)
-               self.set_velocity(angle, 600)
-       end
-
-       redef fun loot do return 5
-end
-
-# The boss has two semi-independent arms
-class Boss
-       super Enemy
-
-       # Left arm
-       var left_part: BossPart
-
-       # Right arm
-       var right_part: BossPart
-
-       init(scene)
-       do
-               super
-               self.width = 140 * 100
-               self.height = 96 * 100
-               self.x = scene.width / 2
-               self.y = -100 * 100
-               self.left_part = new BossPart(self, -66*100)
-               self.right_part = new BossPart(self, 66*100)
-       end
-
-       var flick_ttl: Int = 0
-
-       redef fun update
-       do
-               if flick_ttl > 0 then flick_ttl -= 1
-
-               # Path of the boss (down then left<->right)
-               if self.y < 20000 then
-                       self.vx = 0
-                       self.vy = 100
-               else if self.vx == 0 then
-                       self.vx = 100
-                       self.vy = 0
-               else if self.x > scene.width - 10000 and self.vx > 0 then
-                       self.vx = -self.vx
-               else if self.x < 10000 and self.vx < 0 then
-                       self.vx = -self.vx
-               end
-
-               super
-       end
-
-       redef fun shoot
-       do
-               # Do not shoot if not ready
-               if self.vy != 0 then return
-
-               # Try to target the player
-               var target = scene.player
-               if not target.exists then return
-
-               # Next shoot: burst if no arms remains
-               if left_part.exists or right_part.exists then
-                       shoot_ttl = 60
-               else
-                       shoot_ttl = 20
-               end
-
-               # Shoot the player with a basic bullet
-               var shoot = new Shoot(scene)
-               shoot.enemy = true
-               shoot.x = self.x
-               shoot.y = self.bottom
-               var angle = shoot.angle_to(target)
-               shoot.set_velocity(angle, 500)
-               scene.enemy_shoots.add(shoot)
-       end
-
-       redef fun loot do return 100
-
-       var live: Int = 20
-
-       redef fun hit
-       do
-               # Protected while an arm remains
-               if left_part.exists or right_part.exists then return
-
-               if live > 0 then
-                       live -= 1
-                       flick_ttl = 2
-               else
-                       super
-                       scene.explosion(self.x, self.y, 30)
-               end
-       end
-end
-
-# An arm of a boss
-class BossPart
-       super Enemy
-
-       # The associated boss
-       var boss: Boss
-
-       # Relative x coordonate (center to center) of the arm
-       var relx: Int
-
-       # Relative y coordonate (center to center) of the arm
-       var rely: Int = 36 * 100
-
-       var live: Int = 10
-
-       init(boss: Boss, relx: Int)
-       do
-               self.boss = boss
-               self.relx = relx
-               super(boss.scene)
-               self.width = 38 * 100
-               self.height = 48 * 100
-
-               # Alternate the shoots of the arms
-               if relx > 0 then
-                       shoot_ttl += 300
-               end
-               self.x = boss.x + relx
-               self.y = boss.y + rely
-       end
-
-       redef fun update
-       do
-               self.x = boss.x + relx
-               self.y = boss.y + rely
-
-               super
-
-               if flick_ttl > 0 then flick_ttl -= 1
-       end
-
-       redef fun shoot
-       do
-               # Do not shoot if not ready
-               if self.boss.vy != 0 then return
-
-               # Next shoot
-               shoot_ttl = 600
-
-               # Shoot a missile that targets the player
-               var shoot = new Missile(scene)
-               shoot.enemy = true
-               shoot.x = self.x
-               shoot.y = self.bottom
-               shoot.vy = 500
-               shoot.target = scene.player
-               scene.enemy_shoots.add(shoot)
-       end
-
-       var flick_ttl: Int = 0
-
-       redef fun hit
-       do
-               if live > 0 then
-                       live -= 1
-                       flick_ttl = 2
-               else
-                       super
-               end
-       end
-
-       redef fun loot do return 10
-end
-
-# Whatever reward or bonus that can be picked by the player
-abstract class Loot
-       super Hitable
-
-       var scene: PlayScene
-
-       init(scene: PlayScene)
-       do
-               self.scene = scene
-               self.width = 400
-               self.height = 400
-       end
-
-       # Magnet effect: The loot will move to the target if set
-       # See LootArea for details
-       var target: nullable Sprite = null
-
-       redef fun update
-       do
-               super
-
-               # Out of screen ?
-               if self.y > scene.height + 10000 then
-                       self.exists = false
-               end
-
-               var target = self.target
-               if target == null then
-                       # Not magneted: deploy
-
-                       # Heavy fuild friction to stops the explosion
-                       # Loots are placed with a explosion, see `Enemy::hit'
-                       self.vx = self.vx*7/8
-                       self.vy = self.vy*7/8
-
-                       # Background scroling
-                       self.y += 50
-
-               else if target.exists then
-                       # Magneted: rush toward the target
-                       var angle = self.angle_to(target)
-                       self.set_velocity(angle, 800)
-
-               else
-                       # Magneted but dead target: reset the loot
-                       self.vx = 0
-                       self.vy = 0
-                       self.target = null
-               end
-       end
-end
-
-# Basic money loot
-class Money
-       super Loot
-
-       redef fun hit_by_player(player)
-       do
-               self.exists = false
-               player.money += 1
-               if player.money > 100 then
-                       player.money -= 100
-                       player.nbshoots += 1
-               end
-       end
-end
-
-# Increase the number of missiles
-class UpMissile
-       super Loot
-
-       redef fun hit_by_player(player)
-       do
-               self.exists = false
-               player.nbmissiles += 1
-       end
-end
-
-# A loot area is an invisible field used to implement the magnet effets of loots
-# The principle is:
-#  * the loot is an invisible sprite with a hitbox larger than the loot hitbox
-#  * the lootbox remains centered on the loot
-#  * when the player hit the lootarea, then the loot is set to target the player
-#  * when the player hit the loot, then the player gains effectively the loot
-class LootArea
-       super Hitable
-
-       # The associated loot
-       var loot: Loot
-
-       init(loot: Loot, radius: Int)
-       do
-               self.loot = loot
-               self.width = radius * 2 + loot.width
-               self.height = radius * 2 + loot.height
-       end
-
-       redef fun update
-       do
-               # position remains centered on the loot
-               self.x = loot.x
-               self.y = loot.y
-
-               # No area if no loot
-               if not loot.exists then self.exists = false
-
-               # the super is useless but it is a good practice to call it
-               super
-       end
-
-       redef fun hit_by_player(player)
-       do
-               # Kill the area
-               self.exists = false
-
-               # The loot now targets the player
-               loot.target = player
-       end
-end
-
-# A non interactive element of an explosion
-# A real explosion is made of many Explosion object
-# Use the `PlayScene::explosion` method to generate a full explosion
-class Explosion
-       super Sprite
-
-       # Time before the sprite vanishes
-       var ttl: Int = 10
-
-       redef fun update
-       do
-               # Heavy fuild friction to stops the explosion
-               self.vx = self.vx*7/8
-               self.vy = self.vy*7/8
-
-               # Background scrolling
-               self.y += 50
-
-               super
-
-               # Vanishes?
-               if ttl > 0 then
-                       ttl -= 1
-               else
-                       exists = false
-               end
-       end
-end
-
-# A star is a non-interactive background element
-# Stars are used to simulate a continuous global scroling
-class Star
-       super Sprite
-
-       # The scene of the sprite
-       # Is used with bound limits
-       var scene: ShotScene
-
-       init(scene: ShotScene)
-       do
-               self.scene = scene
-               # Randomely places stars on the plane
-               self.x = scene.width.rand
-               self.y = scene.height.rand
-               self.vy = 40.rand + 11
-       end
-
-       redef fun update
-       do
-               super
-
-               # Replace the star on the top
-               if self.y > scene.height then
-                       self.y = 200.rand * -100
-                       self.x = scene.width.rand
-                       self.vy = 40.rand + 11
-               end
-       end
-end
-
-class ShotScene
-       super Scene
-
-       # When a scene need to be replaced, just assign the next_scene to a non null value
-       var next_scene: nullable ShotScene = null is writable
-
-       # The width of the whole scene
-       var width: Int is writable
-
-       # The height of the whole scene
-       var height: Int is writable
-
-       init(w,h: Int)
-       do
-               width = w
-               height = h
-       end
-end
-
-# The main play state
-class PlayScene
-       super ShotScene
-
-       # The player ship
-       var player: Player
-
-       # Shoots of the player
-       var player_shoots = new LiveGroup[Shoot]
-
-       # Enemy ships
-       var enemies = new LiveGroup[Enemy]
-
-       # Soots of the enemy
-       var enemy_shoots = new LiveGroup[Shoot]
-
-       # Collectible loots
-       var loots = new LiveGroup[Loot]
-
-       # Non active stuff like explosions
-       var pasive_stuff = new LiveGroup[LiveObject]
-
-       # Background stuff like stars
-       var background = new LiveGroup[LiveObject]
-
-       # All other hitable sprites
-       var hitables = new LiveGroup[Hitable]
-
-       # All sprites
-       var sprites = new LiveGroup[LiveObject]
-
-       init(w,h)
-       do
-               super
-               self.player = new Player(self)
-               player.x = self.width / 2
-               player.y = self.height - 10000
-               self.sprites.add(background)
-               self.sprites.add(pasive_stuff)
-               self.sprites.add(loots)
-               self.sprites.add(player_shoots)
-               self.sprites.add(enemy_shoots)
-               self.sprites.add(enemies)
-               self.sprites.add(self.player)
-               self.sprites.add(hitables)
-
-               for i in [0..100[ do
-                       background.add(new Star(self))
-               end
-
-               hitables.add(player.going_target)
-       end
-
-       # Generate an explosion
-       fun explosion(x, y: Int, radius: Int)
-       do
-               # Project explosion parts from the given position
-               # The strong friction and the short ttl of each part will achieve the effect
-               for i in [0..radius[ do
-                       var ex = new Explosion
-                       ex.x = x
-                       ex.y = y
-                       ex.set_velocity(100.rand.to_f*pi/50.0, (50*radius).rand)
-                       ex.ttl += radius.rand
-                       pasive_stuff.add(ex)
-               end
-       end
-
-       var enemy_remains: Int = 15
-       var boss_wait_ttl: Int = 0
-       var boss: nullable Boss
-
-       redef fun update
-       do
-               sprites.gc
-               sprites.update
-
-               if enemy_remains == 0 then
-                       if boss_wait_ttl > 0 then
-                               boss_wait_ttl -= 1
-                       else if boss == null then
-                               boss = new Boss(self)
-                               enemy_remains = 15
-                       else if not boss.exists then
-                               boss = null
-                       end
-               else if 100.rand < 1 then
-                       enemy_remains -= 1
-                       if enemy_remains == 0 then
-                               boss_wait_ttl = 500
-                       end
-                       var rnd = 100.rand
-                       var enemy: Enemy
-                       if rnd < 40 then
-                               enemy = new Enemy0(self)
-                       else if rnd < 60 then
-                               enemy = new Enemy1(self)
-                       else if rnd < 70 then
-                               enemy = new EnemyKamikaze(self)
-                       else if rnd < 90 then
-                               enemy = new Enemy2(self)
-                       else if rnd < 95 then
-                               enemy = new Enemy3(self)
-                       else
-                               enemy = new Enemy4(self)
-                       end
-                       enemy.x = (self.width - 20000).rand + 10000
-                       enemy.vy = 200.rand + 100
-                       if 10.rand < 3 then
-                               enemy.vx = 200.rand - 100
-                       end
-               end
-
-               for ps in player_shoots do
-                       if not ps.exists then continue
-                       var target: nullable Enemy = null
-                       var td = 100000 # big int
-                       for e in enemies do
-                               if not e.exists then continue
-                               if ps.overlaps(e) then
-                                       ps.exists = false
-                                       e.hit
-                               end
-                               var d = (e.x - ps.x).abs + (e.y - ps.y).abs
-                               if td > d then
-                                       target = e
-                                       td = d
-                               end
-                       end
-                       if ps isa Missile and (ps.target == null or not ps.target.exists) then
-                               ps.target = target
-                       end
-               end
-
-               for e in enemies do
-                       if not e.exists then continue
-                       if player.exists and player.overlaps(e) then
-                               e.hit_by_player(player)
-                       end
-               end
-               for s in enemy_shoots do
-                       if not s.exists then continue
-                       if player.exists and player.overlaps(s) then
-                               s.hit_by_player(player)
-                       end
-               end
-               for l in loots do
-                       if not l.exists then continue
-                       if player.exists and player.overlaps(l) then
-                               l.hit_by_player(player)
-                       end
-               end
-               for l in hitables do
-                       if not l.exists then continue
-                       if player.exists and player.overlaps(l) then
-                               l.hit_by_player(player)
-                       end
-               end
-               if not player.exists then
-                       if player.respawn_ttl > 0 then
-                               player.respawn_ttl -= 1
-                       else
-                               player.exists = true
-                               player.protected_ttl = 100
-                               self.sprites.add(self.player)
-                       end
-               end
-       end
-end
-
-###
-
-class MenuScene
-       super ShotScene
-
-       var sprites = new LiveGroup[LiveObject]
-
-       init(w,h)
-       do
-               super
-               for i in [0..100[ do
-                       sprites.add(new Star(self))
-               end
-       end
-
-       var play: Bool = false is writable
-       var ttl: Int = 50
-
-       redef fun update
-       do
-               sprites.update
-
-               if not play then return
-               if ttl > 0 then
-                       ttl -= 1
-                       return
-               end
-               next_scene = new PlayScene(width,height)
-       end
-end
-
-fun headless_run
-do
-       srand_from 0
-       print "Headless run"
-       # Only run the playscene
-       var scene = new PlayScene(80000,60000)
-       # beefup the player
-       scene.player.nbshoots = 5
-       scene.player.nbmissiles = 5
-       # play
-       print "Play"
-       var turns = 10
-       if args.length > 0 then
-               turns = args.first.to_i
-       end
-       for i in [0..turns[ do
-               for j in [0..10000[ do
-                       scene.update
-               end
-               print "{i}: money={scene.player.money} enemies={scene.enemies.length} shoots={scene.player_shoots.length}"
-       end
-       print "Game Over"
-end
-
-headless_run
diff --git a/examples/shoot/src/shoot_null.nit b/examples/shoot/src/shoot_null.nit
deleted file mode 100644 (file)
index 4f6f3bb..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Dummy (null) version of the shoot program
-module shoot_null
-
-import shoot
-import mnit::mnit_null
index 35fe57c..e4e08cb 100644 (file)
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # a "Framework" to make Multi-Agent Simulations in Nit
-module agent_simulation is no_warning("missing-doc")
+module agent_simulation is example, no_warning("missing-doc")
 
 import actors
 
index d8be6c6..ea08535 100644 (file)
@@ -17,7 +17,7 @@
 # The steps consist of each agent greeting each other, and
 # waiting for every other agent to respond before notifying
 # to the `ClockAgent` that they finished their step.
-module simple_simulation
+module simple_simulation is example
 
 import agent_simulation
 
index 60361a8..4b8ba9f 100644 (file)
@@ -17,7 +17,7 @@
 #
 # Complete description of the chameneos-redux :
 # https://benchmarksgame.alioth.debian.org/u64q/chameneosredux-description.html#chameneosredux
-module chameneosredux is no_warning("missing-doc")
+module chameneosredux is example, no_warning("missing-doc")
 
 import actors
 
index 3b24800..42c251c 100644 (file)
@@ -17,7 +17,7 @@
 #
 # Complete description of the fannkuch-redux :
 # https://benchmarksgame.alioth.debian.org/u64q/fannkuchredux-description.html#fannkuchredux
-module fannkuchredux is no_warning("missing-doc")
+module fannkuchredux is example, no_warning("missing-doc")
 
 import actors
 
index e04d4ec..f756970 100644 (file)
@@ -17,7 +17,7 @@
 #
 # Complete description of mandelbrot :
 # https://benchmarksgame.alioth.debian.org/u64q/mandelbrot-description.html#mandelbrot
-module mandelbrot is no_warning("missing-doc")
+module mandelbrot is example, no_warning("missing-doc")
 
 import actors
 
index 8c98b40..7788240 100644 (file)
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # A very simple example of the actor model
-module simple
+module simple is example
 
 import actors
 
index 18da93a..3c227b4 100644 (file)
@@ -17,7 +17,7 @@
 #
 # Complete description of the thread-ring :
 # http://benchmarksgame.alioth.debian.org/u64q/threadring-description.html#threadring
-module thread_ring
+module thread_ring is example
 
 import actors
 
index 0583035..dd85629 100644 (file)
@@ -25,7 +25,7 @@
 #
 # The argument "abcd.fgeh" is the grid
 #
-# ~~~
+# ~~~raw
 # abc
 # d.f
 # geh
@@ -33,7 +33,7 @@
 #
 # The goal is:
 #
-# ~~~
+# ~~~raw
 # abc
 # def
 # gh.
@@ -41,6 +41,8 @@
 #
 # The shortest plan, in two steps, is to move *up* the tile under the hole (e),
 # then to move *left* the tile after the hole (h).
+module puzzle is example
+
 import ai::search
 
 # The state (`S`) is a square grid, modeled as a one-dimensional array of Tile.
index 0e86903..2e33ff6 100644 (file)
@@ -28,7 +28,7 @@
 #
 # This program takes an integer n as argument then display all solutions for the
 # n-queens proglem (ie. on a n*n board).
-module queens
+module queens is example
 
 import ai::backtrack
 
index cbe6ad4..2f712f1 100644 (file)
@@ -32,7 +32,7 @@ public class NitActivity extends Activity {
         */
 
        static {
-               System.loadLibrary("main");
+               System.loadLibrary("nit_app");
        }
 
        /*
index b6bcf7e..ffd961c 100644 (file)
@@ -8,29 +8,52 @@ file can be specified using the `-o` and `--dir` options.
 
 # Host system configuration
 
-Some configuration is required to compile for the Android platform from a GNU/Linux host.
+To compile Android apps from a 64 bits GNU/Linux host you can reuse an existing Android Studio
+installation or make a clean install with command line tools only.
 
-1. Download and install the latest Android SDK __and__ NDK.
+Note that this guide supports only 64 bits GNU/Linux hosts with support for a Java 8 JDK,
+it may be possible to support other platforms with some tweaks.
 
-2. Update PATH so it includes the tools `android`, `ndk-build` and `ant`.
-       You should add something like the following snippet to your .bashrc or equivalent,
-       be careful to replace `ANDROID_SDK` and `ANDROID_NDK` with the full path where you installed each package.
+1.     Install the required SDK packages using one of these two methods:
+
+       a.      Using Android Studio, open `Tools > Android > SDK Manager`, in the SDK Tools tab,
+               install "Android SDK Build-Tools", CMake and NDK.
+
+       b.      From the command line, run this script for a quick setup without Android Studio.
+               You will probably need to tweak it to you system or update the download URL
+               to the latest SDK tools from https://developer.android.com/studio/index.html#command-tools
+
+               ~~~
+               # Fetch and extract SDK tools
+               mkdir -p ~/Android/Sdk
+               cd ~/Android/Sdk
+               wget https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip
+               unzip sdk-tools-linux-3859397.zip
+
+               # Update tools
+               tools/bin/sdkmanager --update
+
+               # Accept the licenses
+               tools/bin/sdkmanager --licenses
+
+               # Install the basic build tools
+               tools/bin/sdkmanager "build-tools;27.0.0" ndk-bundle
+               ~~~
+
+3.     Set the environment variable ANDROID_HOME to the SDK installation directory, usually `~/Android/Sdk/`.
+       Use the following command to setup the variable for bash.
 
        ~~~
-       export PATH=$PATH:ANDROID_SDK/tools/:ANDROID_SDK/platform-tools/:ANDROID_NDK/
+       echo "export ANDROID_HOME=~/Android/Sdk/" >> ~/.bashrc
        ~~~
 
-2. Using the `android` executable, download the latest `tools, build-tools` and within the Android 4.0.3 (API 15) folder, install `SDK platform`.
-       You may have to install additional SDK platforms for applications with different targets.
-
-3. Using your OS package manager, install `apt openjdk-7-jdk lib32stdc++6 lib32z1`.
-       On Debian and Ubuntu the command is:
+4.     Install Java 8 JDK, on Debian/Ubuntu systems you can use the following command:
 
        ~~~
-       sudo apt-get install apt openjdk-7-jdk lib32stdc++6 lib32z1
+       sudo apt install openjdk-8-jdk
        ~~~
 
-# Configure your Android application
+# Configure the Android application
 
 The _app.nit_ framework and this project offers some services to
 customize the generated Android application.
@@ -79,6 +102,20 @@ Importing `android::landscape` or `android::portrait` locks the generated
 application in the specified orientation. This can be useful for games and
 other multimedia applications.
 
+## Resources and application icon
+
+Resources specific to the Android platform should be placed in an `android/` folder at the root of the project.
+The folder should adopt the structure of a normal Android project, e.g., a custom XML resource file can be placed
+at `android/res/values/color.xml` to be compiled with the Android application.
+
+The application icon should also be placed in the `android/` folder.
+Place the classic bitmap version at `android/res/mipmap-hdpi/ic_launcher.png` (and others),
+and the adaptive version at `android/res/mipmap-anydpi-v26/ic_launcher.xml`.
+The Nit compiler detects these files and uses them as the application icon.
+
+Additional `android/` folders may be placed next to more specific Nit modules to change the Android resources
+for application variants. The more specific resources will have priority over the project level `android/` files.
+
 # Compilation modes
 
 There are two compilation modes for the Android platform, debug and release.
index 40dace2..930bc17 100644 (file)
@@ -327,6 +327,10 @@ private extern class NativeBitmap in "Java" `{ android.graphics.Bitmap `}
                return self.hasAlpha();
        `}
 
+       fun recycle in "Java" `{
+               self.recycle();
+       `}
+
        # HACK for bug #845
        redef fun new_global_ref import sys, Sys.jni_env `{
                Sys sys = NativeBitmap_sys(self);
index a8d0afe..6d4fe1a 100644 (file)
@@ -28,8 +28,8 @@
 #
 # ~~~nitish
 # # Note that you need to specify the path from "assets" folder and the extension
-# var s = app.load_sound("sounds/test_sound.ogg")
-# var m = app.load_music("sounds/test_music.ogg")
+# var s = new Sound("sounds/test_sound.ogg")
+# var m = new Music("sounds/test_music.ogg")
 # s.play
 # m.play
 # ~~~
@@ -152,6 +152,13 @@ private extern class NativeMediaPlayer in "Java" `{ android.media.MediaPlayer `}
                }
        `}
        fun reset in "Java" `{ self.reset(); `}
+
+       # HACK for bug #845
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = NativeMediaPlayer_sys(self);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, self);
+       `}
 end
 
 # Sound Pool from Java, used to play sounds simultaneously
@@ -203,6 +210,13 @@ private extern class NativeSoundPool in "Java" `{ android.media.SoundPool `}
        fun stop(stream_id: Int) in "Java" `{ self.stop((int)stream_id); `}
        fun unload(sound_id: Int): Bool in "Java" `{ return self.unload((int)sound_id); `}
        fun release in "Java" `{ self.release(); `}
+
+       # HACK for bug #845
+       redef fun new_global_ref import sys, Sys.jni_env `{
+               Sys sys = NativeSoundPool_sys(self);
+               JNIEnv *env = Sys_jni_env(sys);
+               return (*env)->NewGlobalRef(env, self);
+       `}
 end
 
 
@@ -238,7 +252,7 @@ class SoundPool
        # Stream priority
        private var priority = 1
 
-       init do self.nsoundpool = new NativeSoundPool(max_streams, stream_type, src_quality)
+       init do self.nsoundpool = (new NativeSoundPool(max_streams, stream_type, src_quality)).new_global_ref
 
        # Load the sound from an asset file descriptor
        # this function is for advanced use
@@ -364,7 +378,7 @@ class MediaPlayer
 
        # Create a new MediaPlayer, but no sound is attached, you'll need
        # to use `load_sound` before using it
-       init do self.nmedia_player = new NativeMediaPlayer
+       init do self.nmedia_player = (new NativeMediaPlayer).new_global_ref
 
        # Init the mediaplayer with a sound resource id
        init from_id(context: NativeActivity, id: Int) do
@@ -528,14 +542,22 @@ redef class Sound
 
        redef fun load do
                if is_loaded then return
-               var retval_resources = app.default_soundpool.load_name_rid(app.resource_manager, app.native_activity, path.strip_extension)
-               if retval_resources == -1 then
-                       self.error = new Error("Failed to load " + path)
+
+               # Try resources (res)
+               var rid = app.default_soundpool.load_name_rid(app.resource_manager, app.native_activity, path.strip_extension)
+               if rid > 0 then
+                       self.soundpool_id = rid
+                       self.soundpool = app.default_soundpool
+                       self.error = null
+                       self.soundpool.error = null
+               else
+                       # Try assets
                        var nam = app.asset_manager.open_fd(path)
                        if nam.is_java_null then
                                self.error = new Error("Failed to get file descriptor for " + path)
                        else
                                var retval_assets = app.default_soundpool.load_asset_fd_rid(nam)
+                               nam.close
                                if retval_assets == -1 then
                                        self.error = new Error("Failed to load " + path)
                                else
@@ -545,11 +567,6 @@ redef class Sound
                                        self.soundpool.error = null
                                end
                        end
-               else
-                       self.soundpool_id = retval_resources
-                       self.soundpool = app.default_soundpool
-                       self.error = null
-                       self.soundpool.error = null
                end
                is_loaded = true
 
@@ -597,14 +614,25 @@ redef class Music
 
        redef fun load do
                if is_loaded then return
-               var mp_sound_resources = app.default_mediaplayer.load_sound(app.resource_manager.raw_id(path.strip_extension), app.native_activity)
-               if mp_sound_resources.error != null then
+
+               # Try resources (res)
+               var rid = app.resource_manager.raw_id(path.strip_extension)
+               if rid > 0 then
+                       var mp_sound_resources = app.default_mediaplayer.load_sound(rid, app.native_activity)
+                       if mp_sound_resources.error != null then
+                               self.media_player = app.default_mediaplayer
+                               self.error = null
+                               self.media_player.error = null
+                       end
                        self.error = mp_sound_resources.error
+               else
+                       # Try assets
                        var nam = app.asset_manager.open_fd(path)
                        if nam.is_java_null then
                                self.error = new Error("Failed to get file descriptor for " + path)
                        else
                                var mp_sound_assets = app.default_mediaplayer.data_source_fd(nam)
+                               nam.close
                                if mp_sound_assets.error != null then
                                        self.error = mp_sound_assets.error
                                else
@@ -613,10 +641,6 @@ redef class Music
                                        self.media_player.error = null
                                end
                        end
-               else
-                       self.media_player = app.default_mediaplayer
-                       self.error = null
-                       self.media_player.error = null
                end
                is_loaded = true
 
@@ -656,14 +680,14 @@ redef class App
        var default_soundpool: SoundPool is lazy do return new SoundPool
 
        # Get the native audio manager
-       private fun audio_manager: NativeAudioManager import native_activity in "Java" `{
-               return (AudioManager)App_native_activity(self).getSystemService(Context.AUDIO_SERVICE);
+       private fun audio_manager(native_activity: NativeContext): NativeAudioManager in "Java" `{
+               return (AudioManager)native_activity.getSystemService(Context.AUDIO_SERVICE);
        `}
 
        # Sets the stream of the app to STREAM_MUSIC.
        # STREAM_MUSIC is the default stream used by android apps.
-       private fun manage_audio_stream import native_activity in "Java" `{
-               App_native_activity(self).setVolumeControlStream(AudioManager.STREAM_MUSIC);
+       private fun manage_audio_stream(native_activity: NativeActivity) in "Java" `{
+               native_activity.setVolumeControlStream(AudioManager.STREAM_MUSIC);
        `}
 
        # Same as `load_sound` but load the sound from the `res/raw` folder
@@ -688,18 +712,18 @@ redef class App
                                s.paused = false
                        end
                end
-               audio_manager.abandon_audio_focus
+               audio_manager(native_activity).abandon_audio_focus
        end
 
        redef fun on_create do
                super
-               audio_manager.request_audio_focus
-               manage_audio_stream
+               audio_manager(native_activity).request_audio_focus
+               manage_audio_stream native_activity
        end
 
        redef fun on_resume do
                super
-               audio_manager.request_audio_focus
+               audio_manager(native_activity).request_audio_focus
                for s in sounds do
                        # Resumes only the sounds paused by the App
                        if not s.paused then s.resume
index 4f63a92..c6316ad 100644 (file)
@@ -16,6 +16,7 @@
 
 # Test for app.nit's UI services
 module ui_test is
+       example
        app_name "app.nit UI test"
        app_version(0, 1, git_revision)
        app_namespace "org.nitlanguage.ui_test"
index f83350e..6b9c0b5 100644 (file)
@@ -37,7 +37,7 @@
 #   main activity of the running application. Use it to get anything related
 #   to the `Context` and as anchor to execute Java UI code.
 module native_app_glue is
-       ldflags "-landroid"
+       ldflags("-landroid", "-lnative_app_glue")
        android_activity "android.app.NativeActivity"
 end
 
@@ -52,12 +52,27 @@ in "C header" `{
 in "C body" `{
        struct android_app* native_app_glue_data;
 
+       // Was `android_main` called?
+       int android_main_launched = 0;
+
        // Entry point called by the native_app_glue_framework framework
        // We relay the call to the Nit application.
        void android_main(struct android_app* app) {
                native_app_glue_data = app;
-               app_dummy();
-               main(0, NULL);
+
+               if (android_main_launched) {
+                       // Second call to `android_main`, may happen if `exit 0` was not
+                       // called previously to force unloading the Nit app state.
+                       // This happens sometimes when the `destroy` lifecycle command
+                       // was not correctly received.
+                       // We `exit 0` here hoping the system restarts the app nicely
+                       // without an error popup.
+                       exit(0);
+               } else {
+                       android_main_launched = 1;
+                       int main(int argc, char ** argv);
+                       main(0, NULL);
+               }
        }
 
        // Main callback on the native_app_glue framework
@@ -194,7 +209,7 @@ redef class App
        # Notification from the Android framework, the system is running low on memory
        #
        # Try to reduce your memory use.
-       fun low_memory do end
+       fun low_memory do force_garbage_collection
 
        # Notification from the Android framework, the current device configuration has changed
        fun config_changed do end
@@ -215,7 +230,7 @@ redef class App
        # Raised when the soft input window being shown or hidden, and similar events.
        fun content_rect_changed do end
 
-       # Call the `ALooper` to retrieve events and callback the application
+       # Call the `ALooper_pollAll` to retrieve events and callback the application
        fun poll_looper(timeout_ms: Int) import handle_looper_event `{
                int ident;
                int event;
@@ -225,6 +240,16 @@ redef class App
                }
        `}
 
+       # Call the `ALooper_pollOnce` to retrieve at most one event and callback the application
+       fun poll_looper_pause(timeout_ms: Int) import handle_looper_event `{
+               int event;
+               void* source;
+               int ident = ALooper_pollOnce(timeout_ms, NULL, &event, &source);
+               if (ident >= 0) {
+                       App_handle_looper_event(self, ident, event, source);
+               }
+       `}
+
        # Handle an event retrieved by the `ALooper` and `poll_looper` without a callback
        protected fun handle_looper_event(ident, event: Int, data: Pointer) import native_app_glue,
                save_state, init_window, term_window, gained_focus, lost_focus, pause, stop,
@@ -349,7 +374,7 @@ extern class NativeAppGlue `{ struct android_app* `}
 
        # This is non-zero when the application's NativeActivity is being
        # destroyed and waiting for the app thread to complete.
-       fun detroy_request: Bool `{ return self->destroyRequested; `}
+       fun destroy_requested: Bool `{ return self->destroyRequested; `}
 end
 
 # Android NDK's struture holding configurations of the native app
index 1bdf597..f084958 100644 (file)
@@ -64,6 +64,7 @@ in "C body" `{
                global_jvm = vm;
 
                // Invoke Nit system and main
+               int main(int argc, char ** argv);
                main(0, NULL);
 
                return JNI_VERSION_1_2;
@@ -286,7 +287,7 @@ class Activity
        # Notification from Android, the system is running low on memory
        #
        # Try to reduce your memory use.
-       fun on_low_memory do end
+       fun on_low_memory do force_garbage_collection
 
        # Notification from Android, the current window of the activity has lost or gained focus
        fun on_window_focus_changed(has_focus: Bool) do end
index f2c4bb4..d57a5d6 100644 (file)
@@ -37,8 +37,8 @@
 # ~~~~
 module sensors
 
-import game
-import mnit
+import android
+import gamnit
 
 in "C header" `{
        #include <jni.h>
@@ -239,11 +239,11 @@ redef class App
        var eventqueue: ASensorEventQueue
        var sensors_support_enabled = false is writable
 
-       private fun extern_input_sensor_accelerometer(event: ASensorAccelerometer) do input(event)
-       private fun extern_input_sensor_magnetic_field(event: ASensorMagneticField) do input(event)
-       private fun extern_input_sensor_gyroscope(event: ASensorGyroscope) do input(event)
-       private fun extern_input_sensor_light(event: ASensorLight) do input(event)
-       private fun extern_input_sensor_proximity(event: ASensorProximity) do input(event)
+       private fun extern_input_sensor_accelerometer(event: ASensorAccelerometer) do accept_event(event)
+       private fun extern_input_sensor_magnetic_field(event: ASensorMagneticField) do accept_event(event)
+       private fun extern_input_sensor_gyroscope(event: ASensorGyroscope) do accept_event(event)
+       private fun extern_input_sensor_light(event: ASensorLight) do accept_event(event)
+       private fun extern_input_sensor_proximity(event: ASensorProximity) do accept_event(event)
 
        # Sensors support
        # The user decides which sensors he wants to use by setting them enabled
index 6603b8e..b0767d6 100644 (file)
@@ -25,7 +25,7 @@ public class NitService extends Service {
        protected int nitService = 0;
 
        static {
-               System.loadLibrary("main");
+               System.loadLibrary("nit_app");
        }
 
        @Override
index c3798f5..60f7909 100644 (file)
@@ -208,6 +208,7 @@ redef class Android_widget_ArrayAdapter
        private new (context: NativeContext, res: Int, sender: ListLayout)
        import ListLayout.create_view in "Java" `{
                final int final_sender_object = sender;
+               ListLayout_incr_ref(sender);
 
                return new android.widget.ArrayAdapter(context, (int)res) {
                                @Override
@@ -349,6 +350,7 @@ redef class Android_app_Fragment
        private new (nit_window: Window)
        import Window.on_create_fragment in "Java" `{
                final int final_nit_window = nit_window;
+               Window_incr_ref(nit_window);
 
                return new android.app.Fragment(){
                        @Override
index b26ae7b..87b510f 100644 (file)
@@ -27,6 +27,7 @@ import core::error
 # Platform variations
 import linux::audio is conditional(linux)
 import android::audio is conditional(android)
+import ios::audio is conditional(ios)
 
 # Abstraction of a playable Audio
 abstract class PlayableAudio
index 2dfc094..946b7a5 100644 (file)
@@ -4,22 +4,22 @@ android: http_request_example.apk ui_example.apk
 
 ios: http_request_example.app ui_example.app
 
-http_request_example: $(shell nitls -M http_request_example.nit linux)
+http_request_example: $(shell nitls -M http_request_example.nit -m linux)
        nitc http_request_example.nit -m linux
 
-http_request_example.apk: $(shell nitls -M http_request_example.nit android)
+http_request_example.apk: $(shell nitls -M http_request_example.nit -m android)
        nitc http_request_example.nit -m android
 
-http_request_example.app: $(shell nitls -M http_request_example.nit ios)
+http_request_example.app: $(shell nitls -M http_request_example.nit -m ios)
        nitc http_request_example.nit -m ios
 
-ui_example: $(shell nitls -M ui_example.nit linux)
+ui_example: $(shell nitls -M ui_example.nit -m linux)
        nitc ui_example.nit -m linux
 
-ui_example.apk: $(shell nitls -M ui_example.nit android)
+ui_example.apk: $(shell nitls -M ui_example.nit -m android)
        nitc ui_example.nit -m android
 
-ui_example.app: $(shell nitls -M ui_example.nit ios)
+ui_example.app: $(shell nitls -M ui_example.nit -m ios)
        nitc ui_example.nit -m ios
 
 clean:
index daa5314..a121f6c 100644 (file)
@@ -14,6 +14,7 @@
 
 # Example for the `app::http_request` main service `AsyncHttpRequest`
 module http_request_example is
+       example
        app_name "app.nit HTTP"
        app_namespace "org.nitlanguage.http_example"
        android_api_target 15
@@ -56,7 +57,7 @@ class MyHttpRequest
        redef fun after do win.button_request.enabled = true
 end
 
-# Simpe window with a label and a button
+# Simple window with a label and a button
 class HttpRequestClientWindow
        super Window
 
@@ -81,11 +82,4 @@ class HttpRequestClientWindow
        end
 end
 
-redef class App
-       redef fun on_create
-       do
-               # Create the main window
-               push_window new HttpRequestClientWindow
-               super
-       end
-end
+redef fun root_window do return new HttpRequestClientWindow
index 5d01592..8f4f8f1 100644 (file)
@@ -14,6 +14,7 @@
 
 # User interface example using `app::ui`
 module ui_example is
+       example
        app_name "app.nit UI"
        app_namespace "org.nitlanguage.ui_example"
        android_api_min 21
index 60a59aa..3d3bd82 100644 (file)
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-module blink
+module blink is example
 
 import bcm2835
 
index 8acff6b..889ba51 100644 (file)
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-module input
+module input is example
 
 import bcm2835
 
index 775e6e4..e99f43f 100644 (file)
@@ -15,7 +15,7 @@
 # limitations under the License.
 
 # Test extern classes from the Cocoa framework and extern factories
-module cocoa_extern_types
+module cocoa_extern_types is example
 
 import cocoa
 
index 4e96768..0f43d9e 100644 (file)
@@ -15,7 +15,7 @@
 # limitations under the License.
 
 # Simple message box using the Cocoa framework
-module cocoa_message_box
+module cocoa_message_box is example
 
 import cocoa
 
index 960b001..56fc059 100644 (file)
@@ -15,7 +15,7 @@
 # limitations under the License.
 
 # Hello world using the Cocoa framework
-module hello_cocoa
+module hello_cocoa is example
 
 import cocoa::foundation
 
index 83566a6..eb2bdba 100644 (file)
@@ -93,7 +93,7 @@
 #
 # The `IniConfig` class extends `Config` to add an easy way to link your
 # configuration to an ini file.
-
+#
 # ~~~
 # class MyIniConfig
 #      super IniConfig
index f394594..2501758 100644 (file)
@@ -35,12 +35,12 @@ Core classes and methods used by default by Nit programs and libraries.
 
 ### Other
 
-[[list: kernel]]
+[[defs: kernel]]
 
 ## Core Collections
 
-[[doc: collection]]
+[[doc: core::collection]]
 
 ## String and Text manipulation
 
-[[doc: text]]
+[[doc: core::text]]
index 309d048..04dabfa 100644 (file)
@@ -859,6 +859,36 @@ interface SequenceRead[E]
                end
        end
 
+       # Try to get an element, return `null` if the `index` is invalid.
+       #
+       # ~~~
+       # var a = [10,20,30]
+       # assert a.get_or_null(1) == 20
+       # assert a.get_or_null(3) == null
+       # assert a.get_or_null(-1) == null
+       # assert a.get_or_null(-10) == null
+       # ~~~
+       fun get_or_null(index: Int): nullable E
+       do
+               if index >= 0 and index < length then return self[index]
+               return null
+       end
+
+       # Try to get an element, return `default` if the `index` is invalid.
+       #
+       # ~~~
+       # var a = [10,20,30]
+       # assert a.get_or_default(1, -1) == 20
+       # assert a.get_or_default(3, -1) == -1
+       # assert a.get_or_default(-1, -1) == -1
+       # assert a.get_or_default(-10, -1) == -1
+       # ~~~
+       fun get_or_default(index: Int, default: E): E
+       do
+               if index >= 0 and index < length then return self[index]
+               return default
+       end
+
        # Get the last item.
        # Is equivalent with `self[length-1]`.
        #
index 6eaff6e..97a4271 100644 (file)
 
 # Standard classes and methods used by default by Nit programs and libraries.
 # This module is implicitly imported by every module.
-module core is
-       new_annotation test
-       new_annotation before
-       new_annotation before_all
-       new_annotation after
-       new_annotation after_all
-end
+module core
 
 import posix
 import environ
index fedc5de..1d82705 100644 (file)
@@ -327,6 +327,9 @@ class Process
                                close(err_fd[1]);
                        } else
                                result->err_fd = -1;
+               } else {
+                       perror("Process:");
+                       return NULL;
                }
 
                return result;
index a09843d..3f37a81 100644 (file)
@@ -1915,35 +1915,23 @@ redef class Float
                        return  "-inf"
                end
 
-               if decimals == 0 then return self.to_i.to_s
-               var f = self
-               for i in [0..decimals[ do f = f * 10.0
-               if self > 0.0 then
-                       f = f + 0.5
-               else
-                       f = f - 0.5
-               end
-               var i = f.to_i
-               if i == 0 then return "0." + "0"*decimals
-
-               # Prepare both parts of the float, before and after the "."
-               var s = i.abs.to_s
-               var sl = s.length
-               var p1
-               var p2
-               if sl > decimals then
-                       # Has something before the "."
-                       p1 = s.substring(0, sl-decimals)
-                       p2 = s.substring(sl-decimals, decimals)
-               else
-                       p1 = "0"
-                       p2 = "0"*(decimals-sl) + s
-               end
+               var size = to_precision_size(decimals)
+               var cstr = new CString(size+1)
+               to_precision_fill(decimals, size+1, cstr)
+               return cstr.to_s_unsafe(byte_length=size, copy=false)
+       end
 
-               if i < 0 then p1 = "-" + p1
+       # Required string length to hold `self` with `nb` decimals
+       #
+       # The length does not include the terminating null byte.
+       private fun to_precision_size(nb: Int): Int `{
+               return snprintf(NULL, 0, "%.*f", (int)nb, self);
+       `}
 
-               return p1 + "." + p2
-       end
+       # Fill `cstr` with `self` and `nb` decimals
+       private fun to_precision_fill(nb, size: Int, cstr: CString) `{
+               snprintf(cstr, size, "%.*f", (int)nb, self);
+       `}
 end
 
 redef class Char
index f88e2d9..82d5652 100644 (file)
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module repeating_key_xor_solve is example
+
 import base64
 import crapto
 
index 6ae0b9a..0e49515 100644 (file)
@@ -100,6 +100,13 @@ class CurlHTTPRequest
        # Data for the body of a POST request
        var data: nullable HeaderMap is writable
 
+       # Raw body string
+       #
+       # Set this value to send raw data instead of the POST formatted `data`.
+       #
+       # If `data` is set, the body will not be sent.
+       var body: nullable String is writable
+
        # Header content of the request
        var headers: nullable HeaderMap is writable
 
@@ -156,6 +163,9 @@ class CurlHTTPRequest
                        var postdatas = data.to_url_encoded(self.curl)
                        err = self.curl.native.easy_setopt(new CURLOption.postfields, postdatas)
                        if not err.is_ok then return answer_failure(err.to_i, err.to_s)
+               else if body != null then
+                       err = self.curl.native.easy_setopt(new CURLOption.postfields, body.as(not null))
+                       if not err.is_ok then return answer_failure(err.to_i, err.to_s)
                end
 
                var err_resp = perform
index 9eed5b8..e4fdf79 100644 (file)
@@ -15,7 +15,7 @@
 # limitations under the License.
 
 # Example use of the Curl module
-module curl_http
+module curl_http is example
 
 import curl
 
index 5a1b8c0..0dfee06 100644 (file)
@@ -58,13 +58,13 @@ redef class XMLStartTag
        # var xml = code.to_xml
        # assert xml["animal"].first["tiger"].first.as(XMLStartTag).data == "This is a white tiger!"
        # ~~~
-       fun data: String
+       fun data: nullable String
        do
                for child in children do
                        if child isa PCDATA then return child.content
                        if child isa CDATA then return child.content
                end
-               abort
+               return null
        end
 end
 
index cc3b341..31fc682 100644 (file)
@@ -9,7 +9,7 @@
 # another product.
 
 # Simple XML validity checker using the `dom` module
-module checker
+module checker is example
 
 import dom
 
index 7ebe6b0..94f718b 100644 (file)
@@ -187,7 +187,6 @@ class XMLProcessor
                                end
                        end
                else
-                       if tag_name.has("xml") then return new XMLError(st_loc, "Forbidden keyword xml in Processing Instruction")
                        var cont_st = pos
                        var cont_end = ignore_until("?>")
                        if cont_end == -1 then
index 2361e0d..306ec52 100644 (file)
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 # Example from http://www.graphviz.org/content/cluster
+module clusters is example
 
 import dot
 
index 645620e..d4cbfcf 100644 (file)
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 # Example from http://www.graphviz.org/content/hello
+module hello is example
 
 import dot
 
index 4b42567..9ef6e53 100644 (file)
@@ -13,6 +13,7 @@
 # limitations under the License.
 
 # Example from http://www.graphviz.org/Gallery/undirected/fdpclust.html
+module undirected_clusters is example
 
 import dot
 
index a39b1c6..5d8f4f9 100644 (file)
@@ -216,6 +216,8 @@ class EGLConfigAttribs
        fun red_size: Int do return display.config_attrib(config, 0x3024)
        fun depth_size: Int do return display.config_attrib(config, 0x3025)
        fun stencil_size: Int do return display.config_attrib(config, 0x3026)
+       fun samples: Int do return display.config_attrib(config, 0x3031)
+       fun sample_buffers: Int do return display.config_attrib(config, 0x3032)
 
        fun native_visual_id: Int do return display.config_attrib(config, 0x302E)
        fun native_visual_type: Int do return display.config_attrib(config, 0x302F)
@@ -427,7 +429,8 @@ class EGLConfigChooser
        fun alpha_size=(size: Int) do insert_attrib_with_val(0x3021, size)
        fun depth_size=(size: Int) do insert_attrib_with_val(0x3025, size)
        fun stencil_size=(size: Int) do insert_attrib_with_val(0x3026, size)
-       fun sample_buffers=(size: Int) do insert_attrib_with_val(0x3031, size)
+       fun samples=(count: Int) do insert_attrib_with_val(0x3031, count)
+       fun sample_buffers=(size: Int) do insert_attrib_with_val(0x3032, size)
 
        fun caveat=(caveat: EGLConfigCaveat) do insert_attrib_with_val(0x3050, caveat.to_i)
 
diff --git a/lib/fca/fca.nit b/lib/fca/fca.nit
new file mode 100644 (file)
index 0000000..b3b487a
--- /dev/null
@@ -0,0 +1,253 @@
+# This file is part of NIT (http://www.nitlanguage.org).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Formal Concept Analysis
+#
+# Formal concept analysis (FCA) is a principled way of deriving a concept hierarchy
+# or formal ontology from a collection of objects and their properties.
+# This means deriving implicit relationships between objects regarding their
+# attributes.
+#
+# Each concept in the hierarchy represents the set of objects sharing the same
+# values for a certain set of properties; and each sub-concept in the hierarchy
+# contains a subset of the objects in the concepts above it.
+#
+# Formal concept analysis finds practical application in fields including data
+# mining, text mining, machine learning or semantic web.
+#
+# ## Building a FormalContext
+#
+# We use the example from https://en.wikipedia.org/wiki/Formal_concept_analysis:
+#
+# ~~~
+# var fc = new FormalContext[Int, String]
+# fc.set_object_attributes(1, ["odd", "square"])
+# fc.set_object_attributes(2, ["even", "prime"])
+# fc.set_object_attributes(3, ["odd", "prime"])
+# fc.set_object_attributes(4, ["even", "composite", "square"])
+# fc.set_object_attributes(5, ["odd", "prime"])
+# fc.set_object_attributes(6, ["even", "composite"])
+# fc.set_object_attributes(7, ["odd", "prime"])
+# fc.set_object_attributes(8, ["even", "composite"])
+# fc.set_object_attributes(9, ["odd", "square", "composite"])
+# fc.set_object_attributes(10, ["even", "composite"])
+# ~~~
+#
+# ## Computing the set of FormalConcept
+#
+# ~~~
+# var concepts = fc.formal_concepts
+# for concept in concepts do
+#      print concept
+# end
+# ~~~
+#
+# ## Visualizing formal concept with ConceptLattice
+#
+# ~~~nitish
+# var cl = new ConceptLattice[Int, String].from_concepts(concepts)
+# cl.show_dot
+# ~~~
+module fca
+
+import poset
+
+# Formal Context
+#
+# A formal context is a triple *K = (G, M, I)*, where *G* is a set of `objects`,
+# *M* is a set of `attributes`, and *I ⊆ G × M* is a binary relation called incidence
+# that expresses which objects have which attributes (`objects_attributes`).
+#
+# Predicate *gIm* designates object *g*'s having attribute *m*.
+# For a subset *A ⊆ G* of objects and a subset *B ⊆ M* of attributes, one defines
+# two derivation operators as follows:
+#
+# * *A' = {m ∈ M | ∀ g ∈ A, gIm}*, and dually
+# * *B' = {g ∈ G | ∀ m ∈ B, gIm}*.
+class FormalContext[O: Object, A: Object]
+
+       # Objects in the context
+       var objects = new HashSet[O]
+
+       # Attributes considered to build concepts
+       var attributes = new HashSet[A]
+
+       # Association between objects and attributes
+       var objects_attributes = new HashMap[O, Set[A]]
+
+       # Associate a set of `attributes` to `object`
+       fun set_object_attributes(object: O, attributes: Collection[A]) do
+               for attribute in attributes do
+                       set_object_attribute(object, attribute)
+               end
+       end
+
+       # Associate an `attribute` to `object`
+       fun set_object_attribute(object: O, attribute: A) do
+               attributes.add attribute
+               objects.add object
+               if not objects_attributes.has_key(object) then
+                       objects_attributes[object] = new HashSet[A]
+               end
+               objects_attributes[object].add attribute
+       end
+
+       # Derive the set of formal concepts from the objects and attributes
+       fun formal_concepts: Set[FormalConcept[O, A]] do
+               # black magic!
+
+               var concepts = new HashSet[FormalConcept[O, A]]
+
+               var extentsByAttr = new HashMap[Set[A], Set[O]]
+               for attribute in attributes do
+                       var ka = new HashSet[A].from([attribute])
+                       extentsByAttr[ka] = new HashSet[O]
+                       for object in objects do
+                               if not objects_attributes[object].has(attribute) then continue
+                               extentsByAttr[ka].add(object)
+                       end
+               end
+
+               var nextents = new HashMap[Set[A], Set[O]]
+               for k1, v1 in extentsByAttr do
+                       for k2, v2 in extentsByAttr do
+                               if k1 == k2 then continue
+                               var n = v1.intersection(v2)
+                               if extentsByAttr.values.has(n) then continue
+                               var ka = k1.union(k2)
+                               nextents[ka] = n
+                       end
+               end
+               extentsByAttr.add_all nextents
+
+               var contained = true
+               for k1, v1 in extentsByAttr do
+                       if not contained then break
+                       for k2, v2 in extentsByAttr do
+                               if k1 == k2 then continue
+                               var n = v1.intersection(v2)
+                               if extentsByAttr.values.has(n) then continue
+                               contained = false
+                               break
+                       end
+               end
+
+               if contained then
+                       extentsByAttr[new HashSet[A]] = new HashSet[O].from(objects)
+               end
+
+               var extents = new HashSet[Set[O]]
+               for objects in extentsByAttr.values do
+                       extents.add objects
+               end
+
+               for extent in extents do
+                       var intents: Set[A] = new HashSet[A]
+                       var count = 0
+                       var cl = new FormalConcept[O, A]
+                       if extent.is_empty then
+                               intents.add_all(attributes)
+                       else
+                               for object in objects do
+                                       if not extent.has(object) then continue
+                                       var prev = objects_attributes[object]
+                                       if count > 0 then
+                                               intents = prev.intersection(intents)
+                                       else
+                                               intents = prev
+                                       end
+                                       count += 1
+                                       cl.objects.add(object)
+                               end
+                       end
+                       cl.attributes.add_all intents
+                       concepts.add cl
+               end
+
+               return concepts
+       end
+end
+
+# Formal Concept
+#
+# A pair *(A,B)* is a formal concept of a FormalContext *(G, M, I)* provided that:
+#
+# * *A ⊆ G*,
+# * *B ⊆ M*,
+# * *A′ = B*, and
+# * *B′ = A*.
+#
+# Equivalently and more intuitively, *(A,B)* is a formal concept precisely when:
+#
+# * every object in *A* has every attribute in *B*,
+# * for every object in *G* that is not in *A*, there is some attribute in *B* that
+#   the object does not have,
+# * for every attribute in *M* that is not in *B*, there is some object in *A*
+#   that does not have that attribute.
+class FormalConcept[O: Object, A: Object]
+
+       # Concept attributes
+       var attributes = new HashSet[A]
+
+       # Concept objects
+       var objects = new HashSet[O]
+
+       # Is `self` a subconcept of `super_concept`?
+       #
+       # A concept C1 is a subconcept of C2 if C2 has all the objects of C1.
+       fun is_subconcept(super_concept: FormalConcept[O, A]): Bool do
+               if self == super_concept then return false
+               if objects.length > super_concept.objects.length then return false
+               return super_concept.objects.has_all(objects)
+       end
+
+       redef fun to_s do return "{attributes}\n{objects}"
+end
+
+# Concept Lattice
+#
+# Formal concepts are partially ordered with regard to inclusion of their extents
+# or (which is equivalent) inverse inclusion of their intent.
+class ConceptLattice[O: Object, A: Object]
+       super POSet[FormalConcept[O, A]]
+
+       # Build `self` from a set of formal `concepts`.
+       init from_concepts(concepts: Set[FormalConcept[O, A]]) do
+               for c in concepts do
+                       add_node c
+               end
+               for c1 in concepts do
+                       for c2 in concepts do
+                               if c1 == c2 then continue
+                               if not is_lower_neighbour(c1, c2, concepts) then continue
+                               add_edge(c2, c1)
+                       end
+               end
+       end
+
+       # Is `sub` the greatest lower bound of `sup` considering all `concepts`?
+       fun is_lower_neighbour(sub, sup: FormalConcept[O, A], concepts: Set[FormalConcept[O, A]]): Bool
+       do
+               if sub == sup then return false
+               if not sub.is_subconcept(sup) then return false
+               for concept in concepts do
+                       if sub == concept then continue
+                       if sup == concept then continue
+                       if not sub.is_subconcept(concept) then continue
+                       if not concept.is_subconcept(sup) then continue
+                       return false
+               end
+               return true
+       end
+end
index dba4c4e..68370d9 100644 (file)
@@ -6,18 +6,25 @@ It is based on the portability framework _app.nit_ and the OpenGL ES 2.0 standar
 # System configuration
 
 To compile the _gamnit_ apps packaged with the Nit repository on GNU/Linux you need to install the dev version of a few libraries and some tools.
-Under Debian 8.2, this command should install everything needed:
+On Debian 8.2, this command should install everything needed:
 
 ~~~
 apt-get install libgles2-mesa-dev libsdl2-dev libsdl2-image-dev libsdl2-mixer-dev inkscape
 ~~~
 
-Under Windows 64 bits, using msys2, you can install the required packages with:
+On Windows 64 bits, using msys2, you can install the required packages with:
 
 ~~~
 pacman -S mingw-w64-x86_64-angleproject-git mingw-w64-x86_64-SDL2 mingw-w64-x86_64-SDL2_image mingw-w64-x86_64-SDL2_mixer
 ~~~
 
+While macOS isn't supported, it can create iOS apps.
+You need to install and setup Xcode, and you may install the GLSL shader validation tool via `brew`:
+
+~~~
+brew install glslang
+~~~
+
 # Services by submodules
 
 _gamnit_ is modular, different services of the framework are available through different submodules:
index 3325ece..49e4894 100644 (file)
@@ -22,6 +22,7 @@ end
 
 import android
 intrude import display_android
+intrude import gamnit_android
 intrude import android::load_image
 
 in "Java" `{
index cdeef2d..d052922 100644 (file)
@@ -283,7 +283,7 @@ end
 #     var pos: Point3d[Float] = ui_camera.top_left.offset(128.0, -128.0, 0.0)
 #     var ui_text = new TextSprites(font, pos)
 #
-#     redef fun on_create
+#     redef fun create_scene
 #     do
 #         super
 #
index c83ace3..33aac41 100644 (file)
@@ -245,10 +245,10 @@ class UICamera
        var bottom: IPoint3d[Float] = new CameraAnchor(self, 0.5, -1.0)
 
        # Center of the left border of the screen, at z = 0
-       var left: IPoint3d[Float] = new CameraAnchor(self, 0.0, -1.0)
+       var left: IPoint3d[Float] = new CameraAnchor(self, 0.0, -0.5)
 
        # Center of the right border of the screen, at z = 0
-       var right: IPoint3d[Float] = new CameraAnchor(self, 1.0, -1.0)
+       var right: IPoint3d[Float] = new CameraAnchor(self, 1.0, -0.5)
 
        # Top left corner of the screen, at z = 0
        var top_left: IPoint3d[Float] = new CameraAnchor(self, 0.0, 0.0)
index ccecf15..35c0f76 100644 (file)
@@ -80,7 +80,7 @@ redef class App
                end
        end
 
-       redef fun on_create
+       redef fun create_scene
        do
                super
                initialize_head_tracker
index 1230c4a..a7864f9 100644 (file)
@@ -25,19 +25,24 @@ import shadow
 
 redef class App
 
-       redef fun on_create
+       redef fun create_scene
        do
-               super
-
                # Move the camera back a bit
                world_camera.reset_height(10.0)
                world_camera.near = 0.1
 
+               super
+       end
+
+       redef fun create_gamnit
+       do
+               super
+
                # Cull the invisible triangles in the back of the geometries
                glCullFace gl_BACK
 
                # Prepare programs
-               var programs = [versatile_program, normals_program, explosion_program, smoke_program, static_program, selection_program: GamnitProgram]
+               var programs = [blinn_phong_program, normals_program, explosion_program, smoke_program, static_program, selection_program: GamnitProgram]
                for program in programs do
                        program.compile_and_link
                        var gamnit_error = program.error
@@ -65,6 +70,7 @@ redef class App
                for actor in actors do
                        for leaf in actor.model.leaves do
                                leaf.material.draw(actor, leaf, app.world_camera)
+                               assert glGetError == gl_NO_ERROR else print_error "Gamnit error on material {leaf.material.class_name}"
                        end
                end
                perfs["gamnit depth actors"].add frame_core_depth_clock.lapse
@@ -74,15 +80,19 @@ redef class App
 
                # Toggle writing to the depth buffer for particles effects
                glDepthMask false
-               for system in particle_systems do system.draw
+               for system in particle_systems do
+                       system.draw
+                       assert glGetError == gl_NO_ERROR else print_error "OpenGL error in {system}"
+               end
                glDepthMask true
                perfs["gamnit depth particles"].add frame_core_depth_clock.lapse
 
+               # Stop using the dynamic resolution before drawing UI sprites
+               frame_core_dynamic_resolution_after display
+
                frame_core_ui_sprites display
                perfs["gamnit depth ui_sprites"].add frame_core_depth_clock.lapse
 
-               frame_core_dynamic_resolution_after display
-
                # Debug, show the light point of view
                #frame_core_shadow_debug display
        end
index 588b321..e7e42de 100644 (file)
@@ -84,7 +84,7 @@ end
 
 # 3D model composed of `Mesh` and `Material`, loaded from the assets folder by default
 #
-# Instances can be created at any time and must be loaded after or at the end of `on_create`.
+# Instances can be created at any time and must be loaded after or at the end of `create_scene`.
 # If loading fails, the model is replaced by `placeholder_model`.
 #
 # ~~~
@@ -185,7 +185,10 @@ end
 # ~~~
 class Mesh
 
-       # Vertices coordinates
+       # Number for vertices
+       fun n_vertices: Int do return vertices.length / 3
+
+       # Vertices relative coordinates, 3 floats per vertex
        var vertices = new Array[Float] is lazy, writable
 
        # Indices to draw triangles with `glDrawElements`
@@ -195,10 +198,10 @@ class Mesh
 
        private var indices_c = new CUInt16Array.from(indices) is lazy, writable
 
-       # Normals on each vertex
+       # Normals, 3 floats per vertex
        var normals = new Array[Float] is lazy, writable
 
-       # Coordinates on the texture per vertex
+       # Coordinates on the texture, 2 floats per vertex
        var texture_coords = new Array[Float] is lazy, writable
 
        # `GLDrawMode` used to display this mesh, defaults to `gl_TRIANGLES`
index 2546da3..6674c04 100644 (file)
@@ -49,16 +49,20 @@ class SmoothMaterial
 
        redef fun draw(actor, model, camera)
        do
-               var program = app.versatile_program
+               var program = app.blinn_phong_program
                program.use
                program.mvp.uniform camera.mvp_matrix
 
                var mesh = model.mesh
 
                # Actor specs
+               glDisableVertexAttribArray program.translation.location
+               glDisableVertexAttribArray program.scale.location
+
                program.translation.uniform(actor.center.x, actor.center.y, actor.center.z, 0.0)
                program.scale.uniform actor.scale
-               program.rotation.uniform new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll)
+               program.alpha.uniform actor.alpha
+               program.rotation = new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll)
 
                # From mesh
                program.coord.array_enabled = true
@@ -77,15 +81,14 @@ class SmoothMaterial
                program.camera.uniform(camera.position.x, camera.position.y, camera.position.z)
 
                # Colors from the material
-               var a = actor.alpha
-               program.ambient_color.uniform(ambient_color[0]*a, ambient_color[1]*a,
-                                             ambient_color[2]*a, ambient_color[3]*a)
-               program.diffuse_color.uniform(diffuse_color[0]*a, diffuse_color[1]*a,
-                                             diffuse_color[2]*a, diffuse_color[3]*a)
-               program.specular_color.uniform(specular_color[0]*a, specular_color[1]*a,
-                                              specular_color[2]*a, specular_color[3]*a)
+               program.ambient_color.uniform(ambient_color[0], ambient_color[1],
+                                             ambient_color[2], ambient_color[3])
+               program.diffuse_color.uniform(diffuse_color[0], diffuse_color[1],
+                                             diffuse_color[2], diffuse_color[3])
+               program.specular_color.uniform(specular_color[0], specular_color[1],
+                                              specular_color[2], specular_color[3])
 
-               setup_lights(actor, model, camera, program)
+               setup_lights(camera, program)
 
                # Execute draw
                if mesh.indices.is_empty then
@@ -93,9 +96,11 @@ class SmoothMaterial
                else
                        glDrawElements(mesh.draw_mode, mesh.indices.length, gl_UNSIGNED_SHORT, mesh.indices_c.native_array)
                end
+
+               assert glGetError == gl_NO_ERROR
        end
 
-       private fun setup_lights(actor: Actor, model: LeafModel, camera: Camera, program: BlinnPhongProgram)
+       private fun setup_lights(camera: Camera, program: BlinnPhongProgram)
        do
                # TODO use a list of lights
 
@@ -156,7 +161,7 @@ class TexturedMaterial
        do
                var mesh = model.mesh
 
-               var program = app.versatile_program
+               var program = app.blinn_phong_program
                program.use
 
                # One of the textures used, if any
@@ -206,9 +211,13 @@ class TexturedMaterial
                        program.use_map_bump.uniform false
                end
 
+               glDisableVertexAttribArray program.translation.location
+               glDisableVertexAttribArray program.scale.location
+
                program.mvp.uniform camera.mvp_matrix
                program.translation.uniform(actor.center.x, actor.center.y, actor.center.z, 0.0)
                program.scale.uniform actor.scale
+               program.alpha.uniform actor.alpha
 
                # If using a texture, set `texture_coords`
                program.tex_coord.array_enabled = sample_used_texture != null
@@ -237,21 +246,20 @@ class TexturedMaterial
                program.coord.array_enabled = true
                program.coord.array(mesh.vertices, 3)
 
-               program.rotation.uniform new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll)
+               program.rotation = new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll)
 
-               var a = actor.alpha
-               program.ambient_color.uniform(ambient_color[0]*a, ambient_color[1]*a,
-                                             ambient_color[2]*a, ambient_color[3]*a)
-               program.diffuse_color.uniform(diffuse_color[0]*a, diffuse_color[1]*a,
-                                             diffuse_color[2]*a, diffuse_color[3]*a)
-               program.specular_color.uniform(specular_color[0]*a, specular_color[1]*a,
-                                              specular_color[2]*a, specular_color[3]*a)
+               program.ambient_color.uniform(ambient_color[0], ambient_color[1],
+                                             ambient_color[2], ambient_color[3])
+               program.diffuse_color.uniform(diffuse_color[0], diffuse_color[1],
+                                             diffuse_color[2], diffuse_color[3])
+               program.specular_color.uniform(specular_color[0], specular_color[1],
+                                              specular_color[2], specular_color[3])
 
                program.normal.array_enabled = true
                program.normal.array(mesh.normals, 3)
 
                # Light
-               setup_lights(actor, model, camera, program)
+               setup_lights(camera, program)
 
                # Camera
                program.camera.uniform(camera.position.x, camera.position.y, camera.position.z)
@@ -290,7 +298,7 @@ class NormalsMaterial
                program.coord.array_enabled = true
                program.coord.array(mesh.vertices, 3)
 
-               program.rotation.uniform new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll)
+               program.rotation = new Matrix.gamnit_euler_rotation(actor.pitch, actor.yaw, actor.roll)
 
                program.normal.array_enabled = true
                program.normal.array(mesh.normals, 3)
@@ -312,10 +320,12 @@ class BlinnPhongProgram
                attribute vec4 coord;
 
                // Vertex translation
-               uniform vec4 translation;
+               attribute vec4 translation;
 
                // Vertex scaling
-               uniform float scale;
+               attribute float scale;
+
+               attribute float alpha;
 
                // Vertex coordinates on textures
                attribute vec2 tex_coord;
@@ -326,7 +336,16 @@ class BlinnPhongProgram
                // Camera model view projection matrix
                uniform mat4 mvp;
 
-               uniform mat4 rotation;
+               // Actor rotation
+               attribute vec4 rotation_row0;
+               attribute vec4 rotation_row1;
+               attribute vec4 rotation_row2;
+               attribute vec4 rotation_row3;
+
+               mat4 rotation()
+               {
+                       return mat4(rotation_row0, rotation_row1, rotation_row2, rotation_row3);
+               }
 
                // Lights config
                uniform lowp int light_kind;
@@ -342,9 +361,11 @@ class BlinnPhongProgram
                varying vec4 v_to_light;
                varying vec4 v_to_camera;
                varying vec4 v_depth_pos;
+               varying float v_alpha;
 
                void main()
                {
+                       mat4 rotation = rotation();
                        vec4 pos = (vec4(coord.xyz * scale, 1.0) * rotation + translation);
                        gl_Position = pos * mvp;
                        v_depth_pos = (pos * light_mvp) * 0.5 + 0.5;
@@ -363,6 +384,8 @@ class BlinnPhongProgram
                                // Point light (and others?)
                                v_to_light = normalize(vec4(light_center, 1.0) - pos);
                        }
+
+                       v_alpha = alpha;
                }
                """ @ glsl_vertex_shader
 
@@ -375,6 +398,7 @@ class BlinnPhongProgram
                varying vec4 v_to_light;
                varying vec4 v_to_camera;
                varying vec4 v_depth_pos;
+               varying float v_alpha;
 
                // Colors
                uniform vec4 ambient_color;
@@ -405,13 +429,13 @@ class BlinnPhongProgram
                uniform lowp int light_kind;
                uniform bool use_shadows;
                uniform sampler2D depth_texture;
-               uniform float depth_texture_size;
-               uniform int depth_texture_taps;
+               uniform float depth_size;
+               uniform int depth_taps;
 
                // Shadow effect on the diffuse colors of the fragment at offset `x, y`
                float shadow_lookup(vec2 depth_coord, float x, float y) {
                        float tap_width = 1.0;
-                       float pixel_size = tap_width/depth_texture_size;
+                       float pixel_size = tap_width/depth_size;
 
                        vec2 offset = vec2(x * pixel_size * v_depth_pos.w,
                                           y * pixel_size * v_depth_pos.w);
@@ -446,7 +470,7 @@ class BlinnPhongProgram
 
                        vec2 depth_coord = v_depth_pos.xy/v_depth_pos.w;
 
-                       float taps = float(depth_texture_taps);
+                       float taps = float(depth_taps);
                        float tap_step = 2.00/taps;
                        float sum = 0.0;
                        for (float x = -1.0; x <= 0.99; x += tap_step)
@@ -465,13 +489,13 @@ class BlinnPhongProgram
                        }
 
                        // Ambient light
-                       vec4 ambient = ambient_color;
+                       vec4 ambient = ambient_color * v_alpha;
                        if (use_map_ambient) ambient *= texture2D(map_ambient, v_tex_coord);
 
                        if (light_kind == 0) {
                                // No light, show diffuse and ambient
 
-                               vec4 diffuse = diffuse_color;
+                               vec4 diffuse = diffuse_color * v_alpha;
                                if (use_map_diffuse) diffuse *= texture2D(map_diffuse, v_tex_coord);
 
                                gl_FragColor = ambient + diffuse;
@@ -497,7 +521,7 @@ class BlinnPhongProgram
                                        diffuse *= shadow();
                                }
 
-                               vec4 specular = s * specular_color;
+                               vec4 specular = s * specular_color * v_alpha;
                                if (use_map_specular) specular *= texture2D(map_specular, v_tex_coord).x;
 
                                gl_FragColor = ambient + diffuse + specular;
@@ -567,22 +591,49 @@ class BlinnPhongProgram
        var depth_texture = uniforms["depth_texture"].as(UniformSampler2D) is lazy
 
        # Size, in pixels, of `depth_texture`
-       var depth_texture_size = uniforms["depth_texture_size"].as(UniformFloat) is lazy
+       var depth_texture_size = uniforms["depth_size"].as(UniformFloat) is lazy
 
        # Times to tap the `depth_texture`, square root (set to 3 for a total of 9 taps)
-       var depth_texture_taps = uniforms["depth_texture_taps"].as(UniformInt) is lazy
+       var depth_texture_taps = uniforms["depth_taps"].as(UniformInt) is lazy
 
        # Camera position
        var camera = uniforms["camera"].as(UniformVec3) is lazy
 
        # Translation applied to each vertex
-       var translation = uniforms["translation"].as(UniformVec4) is lazy
+       var translation = attributes["translation"].as(AttributeVec4) is lazy # TODO attribute
+
+       # Set `mat` at the uniform rotation matrix
+       fun rotation=(mat: Matrix)
+       do
+               var i = 0
+               for r in [rotation_row0, rotation_row1, rotation_row2, rotation_row3] do
+                       if r.is_active then
+                               glDisableVertexAttribArray r.location
+                               r.uniform(mat[0, i], mat[1, i], mat[2, i], mat[3, i])
+                       end
+                       i += 1
+               end
+               var gl_error = glGetError
+               assert gl_error == gl_NO_ERROR else print_error gl_error
+       end
+
+       # Rotation matrix, row0
+       var rotation_row0 = attributes["rotation_row0"].as(AttributeVec4) is lazy
 
-       # Rotation matrix
-       var rotation = uniforms["rotation"].as(UniformMat4) is lazy
+       # Rotation matrix, row 1
+       var rotation_row1 = attributes["rotation_row1"].as(AttributeVec4) is lazy
+
+       # Rotation matrix, row 2
+       var rotation_row2 = attributes["rotation_row2"].as(AttributeVec4) is lazy
+
+       # Rotation matrix, row 3
+       var rotation_row3 = attributes["rotation_row3"].as(AttributeVec4) is lazy
+
+       # Scaling per vertex
+       var scale = attributes["scale"].as(AttributeFloat) is lazy
 
        # Scaling per vertex
-       var scale = uniforms["scale"].as(UniformFloat) is lazy
+       var alpha = attributes["alpha"].as(AttributeFloat) is lazy
 
        # Camera model view projection matrix
        var mvp = uniforms["mvp"].as(UniformMat4) is lazy
@@ -608,7 +659,7 @@ class NormalProgram
 end
 
 redef class App
-       private var versatile_program = new BlinnPhongProgram is lazy
+       private var blinn_phong_program = new BlinnPhongProgram is lazy
 
        private var normals_program = new NormalProgram is lazy
 end
index 9ec6d2e..f7ae001 100644 (file)
@@ -31,8 +31,8 @@ end
 # Model loaded from a file in the asset folder
 #
 # In case of error, `error` is set accordingly.
-# If the error is on the mesh, `mesh` is set to a default `new Mesh.cube`.
-# If the material is missing or it failed to load, `material` is set to a `new SimpleMaterial.default`.
+# If the error is on the mesh, `mesh` is set to a default `new Cube`.
+# If the material is missing or it failed to load, `material` is set to the blueish `new Material`.
 class ModelAsset
        super Model
        super Asset
index bfe3392..557e694 100644 (file)
@@ -89,6 +89,16 @@ class ParticleSystem
        # Time-to-live of each particle
        private var ttls = new Array[Float]
 
+       # Clear all particles
+       fun clear
+       do
+               centers.clear
+               ots.clear
+               scales.clear
+               ttls.clear
+               total_particles = 0
+       end
+
        # Add a particle at `center` with `scale`, living for `ttl` from `time_offset`
        #
        # `time_offset` is added to the creation time, it can be used to delay the
index 213b461..4dcae8c 100644 (file)
@@ -52,7 +52,7 @@ redef class App
 
        private var perf_clock_shadow = new Clock is lazy
 
-       redef fun on_create
+       redef fun create_gamnit
        do
                super
 
@@ -84,8 +84,6 @@ redef class App
                var light = app.light
                if not light isa LightCastingShadows then return
 
-               perf_clock_shadow.lapse
-
                # Make sure there's no errors pending
                assert glGetError == gl_NO_ERROR
 
@@ -114,10 +112,8 @@ redef class App
                end
 
                # Take down, bring back default values
-               glBindFramebuffer(gl_FRAMEBUFFER, shadow_context.screen_framebuffer)
+               bind_screen_framebuffer shadow_context.screen_framebuffer
                glColorMask(true, true, true, true)
-
-               perfs["gamnit shadows prep"].add perf_clock_shadow.lapse
        end
 
        # ---
@@ -222,7 +218,6 @@ private class ShadowContext
                assert gl_error == gl_NO_ERROR else print_error gl_error
 
                resize(display, shadow_resolution)
-               assert glCheckFramebufferStatus(gl_FRAMEBUFFER) == gl_FRAMEBUFFER_COMPLETE
 
                # Array buffer
                buffer_array = glGenBuffers(1).first
index 868b359..0d78907 100644 (file)
@@ -20,6 +20,7 @@ import mnit::input
 
 import display_linux is conditional(linux)
 import display_android is conditional(android)
+import display_ios is conditional(ios)
 
 # Should Gamnit be more verbose?
 fun debug_gamnit: Bool do return false
index b14cb33..d198790 100644 (file)
 
 # Gamnit display implementation for Android
 #
-# Generated APK files require OpenGL ES 2.0.
+# Gamnit apps on Android require OpenGL ES 3.0 because, even if it uses only
+# the OpenGL ES 2.0 API, the default shaders have more than 8 vertex attributes.
+# OpenGL ES 3.0 ensures at least 8 vertex attributes, while 2.0 ensures only 4.
 #
-# This modules uses `android::native_app_glue` and the Android NDK.
+# This module relies on `android::native_app_glue` and the Android NDK.
 module display_android is
-       android_manifest """<uses-feature android:glEsVersion="0x00020000"/>"""
+       android_manifest """<uses-feature android:glEsVersion="0x00030000" android:required="true" />"""
 end
 
 import ::android::game
@@ -37,9 +39,10 @@ redef class GamnitDisplay
                setup_egl_display native_display
 
                # We need 8 bits per color for selection by color
-               select_egl_config(red_bits, green_bits, blue_bits, 0, 8, 0, 0)
+               select_egl_config(red_bits, green_bits, blue_bits, 0, 8, 0)
 
                var format = egl_config.attribs(egl_display).native_visual_id
+               assert not native_window.address_is_null
                native_window.set_buffers_geometry(0, 0, format)
 
                setup_egl_context native_window
@@ -74,6 +77,8 @@ redef class TextureAsset
                var pixels = buf.native_array
 
                load_from_pixels(pixels, bmp.width, bmp.height, gl_RGBA)
+               buf.destroy
+               bmp.recycle
 
                jni_env.pop_local_frame
        end
diff --git a/lib/gamnit/display_ios.nit b/lib/gamnit/display_ios.nit
new file mode 100644 (file)
index 0000000..3b8cfdb
--- /dev/null
@@ -0,0 +1,111 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Gamnit display implementation for iOS
+module display_ios
+
+import ios
+import ios::glkit
+intrude import ios::assets
+intrude import textures
+
+in "ObjC" `{
+       #import <GLKit/GLKit.h>
+       #import <OpenGLES/ES2/gl.h>
+`}
+
+redef class GamnitDisplay
+
+       redef var width = 200
+       redef var height = 300
+
+       # Underlying GLKit game controller and view
+       var glk_view: NitGLKView is noautoinit
+
+       redef fun setup
+       do
+               var view = new GamnitGLKView
+               view.multiple_touch_enabled = true
+               self.glk_view = view
+               self.width = view.drawable_width
+               self.height = view.drawable_height
+       end
+end
+
+# View controller implemented by gamnit
+class GamnitGLKView
+       super NitGLKView
+end
+
+redef class TextureAsset
+       redef fun load_from_platform
+       do
+               var error = glGetError
+               assert error == gl_NO_ERROR else print_error error
+
+               # Find file
+               var ns_path = ("assets"/path).to_nsstring
+               var path_in_bundle = asset_path(ns_path)
+               if path_in_bundle.address_is_null then
+                       self.error = new Error("Texture at '{path}' not found")
+                       return
+               end
+
+               # Load texture
+               var glk_texture = glkit_load(path_in_bundle, premultiply_alpha)
+               if glk_texture.address_is_null then
+                       self.error = new Error("Failed to load texture at '{self.path}'")
+                       return
+               end
+
+               gl_texture = glk_texture.name
+               width = glk_texture.width.to_f
+               height = glk_texture.height.to_f
+               loaded = true
+
+               error = glGetError
+               assert error == gl_NO_ERROR
+       end
+
+       # Load image at `path` with GLKit services
+       private fun glkit_load(path: NSString, premultiply: Bool): GLKTextureInfo
+       in "ObjC" `{
+
+               // The premultiplication flag has been inverted between iOS 9 and 10
+               NSNumber *premultiply_opt;
+               NSComparisonResult order = [[UIDevice currentDevice].systemVersion compare: @"10.0.0" options: NSNumericSearch];
+               if (order == NSOrderedSame || order == NSOrderedDescending) {
+                       // >= 10
+                       premultiply_opt = premultiply? @NO: @YES;
+               } else {
+                       // < 10
+                       premultiply_opt = premultiply? @YES: @NO;
+               }
+
+               NSDictionary *options = @{GLKTextureLoaderApplyPremultiplication: premultiply_opt};
+               NSError *error;
+               GLKTextureInfo *spriteTexture = [GLKTextureLoader textureWithContentsOfFile: path options: options error: &error];
+               if (error != nil) NSLog(@"Failed to load texture: %@", [error localizedDescription]); // TODO return details to Nit
+
+               return spriteTexture;
+       `}
+end
+
+private extern class GLKTextureInfo in "ObjC" `{ GLKTextureInfo * `}
+       super NSObject
+
+       fun name: Int in "ObjC" `{ return self.name; `}
+       fun width: Int in "ObjC" `{ return self.width; `}
+       fun height: Int in "ObjC" `{ return self.height; `}
+end
index dcfd963..f678bbe 100644 (file)
@@ -50,7 +50,7 @@ redef class GamnitDisplay
                setup_egl_display sdl_window.wm_info.display_handle
 
                if debug_gamnit then print "Setting up EGL context"
-               select_egl_config(red_bits, green_bits, blue_bits, 8, 8, 0, 0)
+               select_egl_config(red_bits, green_bits, blue_bits, 8, 8, 0)
                setup_egl_context sdl_window.wm_info.window_handle
        end
 
@@ -139,5 +139,7 @@ redef class TextureAsset
                var pixels = surface.pixels
 
                load_from_pixels(pixels, surface.w, surface.h, format)
+
+               surface.free
        end
 end
index 6e9ed85..2c6a4c8 100644 (file)
@@ -42,7 +42,7 @@ redef class App
        #
        # This value is applied to both X and Y, so it has an exponential effect on
        # the number of pixels.
-       var dynamic_resolution_ratio = 1.0
+       var dynamic_resolution_ratio = 1.0 is writable
 
        # Minimum dynamic screen resolution
        var min_dynamic_resolution_ratio = 0.0125 is writable
@@ -54,7 +54,21 @@ redef class App
 
        private var perf_clock_dynamic_resolution = new Clock is lazy
 
-       redef fun on_create
+       # Real screen framebuffer
+       private var screen_framebuffer_cache: Int = -1
+
+       # Real screen framebuffer name
+       fun screen_framebuffer: Int
+       do
+               var cache = screen_framebuffer_cache
+               if cache != -1 then return cache
+
+               cache = glGetIntegerv(gl_FRAMEBUFFER_BINDING, 0)
+               self.screen_framebuffer_cache = cache
+               return cache
+       end
+
+       redef fun create_gamnit
        do
                super
 
@@ -62,11 +76,13 @@ redef class App
                program.compile_and_link
                var error = program.error
                assert error == null else print_error error
+
+               dynamic_context_cache = null
        end
 
        redef fun on_resize(display)
        do
-               dynamic_context.resize(display, max_dynamic_resolution_ratio)
+               if dynamic_context_cache != null then dynamic_context.resize(display, max_dynamic_resolution_ratio)
                super
        end
 
@@ -77,7 +93,7 @@ redef class App
 
                if dynamic_resolution_ratio == 1.0 then
                        # Draw directly to the screen framebuffer
-                       glBindFramebuffer(gl_FRAMEBUFFER, dynamic_context.screen_framebuffer)
+                       bind_screen_framebuffer screen_framebuffer
                        glViewport(0, 0, display.width, display.height)
                        glClear gl_COLOR_BUFFER_BIT | gl_DEPTH_BUFFER_BIT
 
@@ -107,7 +123,7 @@ redef class App
                var ratio = dynamic_resolution_ratio
                ratio = ratio.clamp(min_dynamic_resolution_ratio, max_dynamic_resolution_ratio)
 
-               glBindFramebuffer(gl_FRAMEBUFFER, dynamic_context.screen_framebuffer)
+               bind_screen_framebuffer screen_framebuffer
                glBindBuffer(gl_ARRAY_BUFFER, dynamic_context.buffer_array)
                glViewport(0, 0, display.width, display.height)
                glClear gl_COLOR_BUFFER_BIT | gl_DEPTH_BUFFER_BIT
@@ -143,7 +159,17 @@ redef class App
        end
 
        # Framebuffer and texture for dynamic resolution intermediate drawing
-       private var dynamic_context: DynamicContext = create_dynamic_context is lazy
+       private fun dynamic_context: DynamicContext
+       do
+               var cache = dynamic_context_cache
+               if cache != null then return cache
+
+               cache = create_dynamic_context
+               dynamic_context_cache = cache
+               return cache
+       end
+
+       private var dynamic_context_cache: nullable DynamicContext = null
 
        private fun create_dynamic_context: DynamicContext
        do
@@ -161,9 +187,6 @@ end
 # Handles to reused GL buffers and texture
 private class DynamicContext
 
-       # Real screen framebuffer
-       var screen_framebuffer: Int = -1
-
        # Dynamic screen framebuffer
        var dynamic_framebuffer: Int = -1
 
@@ -181,10 +204,6 @@ private class DynamicContext
        do
                # TODO enable antialiasing.
 
-               # Set aside the real screen framebuffer name
-               var screen_framebuffer = glGetIntegerv(gl_FRAMEBUFFER_BINDING, 0)
-               self.screen_framebuffer = screen_framebuffer
-
                # Framebuffer
                var framebuffer = glGenFramebuffers(1).first
                glBindFramebuffer(gl_FRAMEBUFFER, framebuffer)
index 59a0aa3..f425b58 100644 (file)
@@ -46,7 +46,7 @@ redef class GamnitDisplay
        end
 
        # Select an EGL config
-       protected fun select_egl_config(red, green, blue, alpha, depth, stencil, sample: Int)
+       protected fun select_egl_config(red, green, blue, alpha, depth, stencil: Int)
        do
                var config_chooser = new EGLConfigChooser
                config_chooser.renderable_type_egl
@@ -57,7 +57,10 @@ redef class GamnitDisplay
                if alpha > 0 then config_chooser.alpha_size = alpha
                if depth > 0 then config_chooser.depth_size = depth
                if stencil > 0 then config_chooser.stencil_size = stencil
-               if sample > 0 then config_chooser.sample_buffers = sample
+
+               config_chooser.sample_buffers = 1
+               config_chooser.samples = 4
+
                config_chooser.close
 
                var configs = config_chooser.choose(egl_display)
@@ -72,6 +75,7 @@ redef class GamnitDisplay
                                print "  Caveats: {attribs.caveat}"
                                print "  Size of RGBA: {attribs.red_size} {attribs.green_size} {attribs.blue_size} {attribs.alpha_size}"
                                print "  Buffer, depth, stencil: {attribs.buffer_size} {attribs.depth_size} {attribs.stencil_size}"
+                               print "  Sample buffers, samples: {attribs.sample_buffers} {attribs.samples}"
                        end
                end
 
@@ -96,6 +100,47 @@ redef class GamnitDisplay
                assert egl_bind_opengl_es_api else print "EGL bind API failed: {egl_display.error}"
        end
 
+       # Check if the current configuration of `native_window` is still valid
+       #
+       # There is two return values:
+       # * Returns `true` if the Gamnit services should be recreated.
+       # * Sets `native_window_is_invalid` if the system provided window handle is invalid.
+       #   We should wait until we are provided a valid window handle.
+       fun check_egl_context(native_window: Pointer): Bool
+       do
+               native_window_is_invalid = false
+
+               if not egl_context.is_ok then
+                       # Needs recreating
+                       egl_context = egl_display.create_context(egl_config)
+                       assert egl_context.is_ok else print "Creating EGL context failed: {egl_display.error}"
+               end
+
+               var success = egl_display.make_current(window_surface, window_surface, egl_context)
+               if not success then
+                       var error = egl_display.error
+                       print "check_egl_context make_current: {error}"
+
+
+                       if error.is_bad_native_window then
+                               # native_window is invalid
+                               native_window_is_invalid = true
+                               return true
+
+                       else if not error.is_success then
+                               # The context is now invalid, rebuild it
+                               setup_egl_context native_window
+                               return true
+                       end
+               end
+               return false
+       end
+
+       # Return value from `check_egl_context`, the current native window is invalid
+       #
+       # We should wait until we are provided a valid window handle.
+       var native_window_is_invalid = false
+
        redef fun width do return window_surface.attribs(egl_display).width
 
        redef fun height do return window_surface.attribs(egl_display).height
@@ -110,6 +155,10 @@ redef class GamnitDisplay
 
        redef fun flip
        do
+               assert glGetError == gl_NO_ERROR
+
+               assert egl_display.is_valid
+
                egl_display.swap_buffers(window_surface)
        end
 end
index 33a342c..91f3073 100644 (file)
@@ -7,6 +7,7 @@
 
 # Font support showcase
 module fonts_showcase is
+       example
        app_name "gamnit fonts"
        app_namespace "org.gamnit.fonts_showcase"
        app_version(1, 0, git_revision)
@@ -28,7 +29,7 @@ redef class App
        # Bottom right corner
        var corner = new Texture("corner.png")
 
-       redef fun on_create
+       redef fun create_scene
        do
                super
 
index a0f37a0..29b9618 100644 (file)
@@ -7,6 +7,7 @@
 
 # Template for a 2D gamnit game
 module template is
+       example
        app_name "gamnit template"
        app_namespace "org.gamnit.template"
        app_version(0, 1, git_revision)
@@ -17,7 +18,7 @@ import gamnit::flat # The 2D API, use `gamnit::depth` for 3D
 
 redef class App
 
-       # Texture, loaded automatically at `on_create`
+       # Texture, loaded in `create_scene`
        var texture = new Texture("fighter.png")
 
        # Sound effect, lazy loaded at first use
@@ -26,7 +27,7 @@ redef class App
        # Sprite, must be loaded in or after `on_create`
        var sprite = new Sprite(texture, new Point3d[Float](0.0, 0.0, 0.0)) is lazy
 
-       redef fun on_create
+       redef fun create_scene
        do
                super
 
@@ -52,7 +53,7 @@ redef class App
                # Scale the ship so it is approximately 5 world units wide.
                sprite.scale = 5.0 / texture.width
 
-               # Move the camera to show 10 world units on the Y axis at Z = 0.
+               # Move the camera to show 20 world units on the Y axis at Z = 0.
                # The `sprite` should take approximately 1/4 of the height of the screen.
                world_camera.reset_height 20.0
 
index 9dfa49c..5c276b3 100644 (file)
@@ -18,6 +18,7 @@
 # * The book OpenGL ES 2.0 Programming Guide
 # * https://code.google.com/p/opengles-book-samples/source/browse/trunk/LinuxX11/Chapter_2/Hello_Triangle/Hello_Triangle.c
 module portable_triangle is
+       example
        app_name "gamnit Triangle"
        app_namespace "org.nitlanguage.triangle"
        app_version(1, 1, git_revision)
@@ -39,7 +40,7 @@ redef class App
        # Vertex data for the triangle
        var vertex_array: VertexArray is noautoinit
 
-       redef fun on_create
+       redef fun create_scene
        do
                super
 
index 9817d09..a766fb2 100644 (file)
@@ -19,7 +19,7 @@
 # References:
 # * The book OpenGL ES 2.0 Programming Guide
 # * https://code.google.com/p/opengles-book-samples/source/browse/trunk/LinuxX11/Chapter_2/Hello_Triangle/Hello_Triangle.c
-module standalone_triangle
+module standalone_triangle is example
 
 import app
 import gamnit::display
index c57a373..320d471 100644 (file)
@@ -80,27 +80,27 @@ class Sprite
        var texture: Texture is writable(texture_direct=)
 
        # Texture drawn to screen
-       fun texture=(value: Texture)
+       fun texture=(texture: Texture)
        do
-               if isset _texture and value != texture then
+               if isset _texture and texture != self.texture then
                        needs_update
-                       if value.root != texture.root then needs_remap
+                       if texture.root != self.texture.root then needs_remap
                end
-               texture_direct = value
+               texture_direct = texture
        end
 
        # Center position of this sprite in world coordinates
        var center: Point3d[Float] is writable(center_direct=), noautoinit
 
        # Center position of this sprite in world coordinates
-       fun center=(value: Point3d[Float]) is autoinit do
-               if isset _center and value != center then
+       fun center=(center: Point3d[Float]) is autoinit do
+               if isset _center and center != self.center then
                        needs_update
-                       center.sprites_remove self
+                       self.center.sprites_remove self
                end
 
-               value.sprites_add self
-               center_direct = value
+               center.sprites_add self
+               center_direct = center
        end
 
        # Last animation set with `animate`
@@ -399,6 +399,9 @@ redef class App
                var display = display
                assert display != null
                glClear gl_COLOR_BUFFER_BIT
+
+               ui_camera.reset_height 1080.0
+               glViewport(0, 0, display.width, display.height)
                frame_core_ui_sprites display
                display.flip
 
@@ -417,10 +420,15 @@ redef class App
        # Second performance clock for smaller operations
        private var perf_clock_sprites = new Clock is lazy
 
-       redef fun on_create
+       redef fun create_gamnit
        do
                super
+               create_flat
+       end
 
+       # Prepare the flat framework services
+       fun create_flat
+       do
                var display = display
                assert display != null
 
@@ -457,12 +465,14 @@ redef class App
                        glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MIN_FILTER, gl_LINEAR)
                        glTexParameteri(gl_TEXTURE_2D, gl_TEXTURE_MAG_FILTER, gl_LINEAR)
                end
+
+               sprites.reset
+               ui_sprites.reset
        end
 
        redef fun on_stop
        do
-               # Clean up
-               simple_2d_program.delete
+               super
 
                # Close gamnit
                var display = display
@@ -480,6 +490,12 @@ redef class App
                for sprite in ui_sprites do sprite.needs_update
        end
 
+       redef fun on_resume
+       do
+               clock.lapse
+               super
+       end
+
        redef fun frame_core(display)
        do
                # Check errors
@@ -528,6 +544,8 @@ redef class App
 
                # draw
                sprite_set.draw
+
+               assert glGetError == gl_NO_ERROR
        end
 
        # Draw world sprites from `sprites`
@@ -959,7 +977,7 @@ class SpriteSet
                for sprite in sprites_to_remap do
 
                        # Skip if it was removed from this set after being modified
-                       if sprite.context != self then continue
+                       if sprite.sprite_set != self then continue
 
                        unmap_sprite sprite
                        map_sprite sprite
@@ -999,6 +1017,23 @@ class SpriteSet
                for c in contexts_items do c.destroy
                contexts_map.clear
                contexts_items.clear
+               sprites_to_remap.clear
+       end
+
+       private fun reset
+       do
+               for sprite in self do
+                       sprite.context = null
+               end
+
+               for c in contexts_items do c.destroy
+               contexts_map.clear
+               contexts_items.clear
+               sprites_to_remap.clear
+
+               for sprite in self do
+                       map_sprite sprite
+               end
        end
 end
 
@@ -1697,10 +1732,11 @@ end
 redef class GLfloatArray
        private fun fill_from_matrix(matrix: Matrix, dst_offset: nullable Int)
        do
-               dst_offset = dst_offset or else 0
+               dst_offset = dst_offset or else add_index
                var mat_len = matrix.width*matrix.height
                assert length >= mat_len + dst_offset
                native_array.fill_from_matrix_native(matrix.items, dst_offset, mat_len)
+               add_index += mat_len
        end
 end
 
index bd26cbd..c1ecc86 100644 (file)
@@ -23,16 +23,29 @@ import programs
 
 import gamnit_android is conditional(android)
 import gamnit_linux is conditional(linux)
+import gamnit_ios is conditional(ios)
+import input_ios is conditional(ios)
 
 redef class App
 
-       # Main `GamnitDisplay` initialized by `on_create`
+       # Main `GamnitDisplay` initialized by `create_gamnit`
        var display: nullable GamnitDisplay = null
 
-       redef fun on_create
-       do
-               super
+       # Hook to setup the OpenGL context: compiling shaders, creating VBO, reloading textures, etc.
+       #
+       # The gamnit services redefine this method to prepare optimizations and more.
+       # Clients may also refine this method to prepare custom OpenGL resources.
+       fun create_gamnit do end
 
+       # Hook to prepare for recreating the OpenGL context
+       #
+       # Some gamnit services refine this method to reset caches before the
+       # next call to `create_gamnit`.
+       fun recreate_gamnit do end
+
+       # Create and set `self.display`
+       fun create_display
+       do
                var display = new GamnitDisplay
                display.setup
                self.display = display
@@ -43,8 +56,18 @@ redef class App
                print "GL version: {glGetString(gl_VERSION)}"
                print "GLSL version: {glGetString(gl_SHADING_LANGUAGE_VERSION)}"
                print "GL extensions: {glGetString(gl_EXTENSIONS)}"
+               print "GL max texture size: {glGetIntegerv(gl_MAX_TEXTURE_SIZE, 0)}"
        end
 
+       # Hook for client programs to setup the scene
+       #
+       # Refine this method to build the game world or the main menu,
+       # creating instances of `Sprite` and `Actor` as needed.
+       #
+       # This method is called only once per execution of the program and it should
+       # be considered as the entry point of most game logic.
+       fun create_scene do end
+
        # Core of the frame logic, executed only when the display is visible
        #
        # This method should be redefined by user modules to customize the behavior of the game.
@@ -90,3 +113,8 @@ redef class App
        # The framework handles resizing the viewport automatically.
        fun on_resize(display: GamnitDisplay) do end
 end
+
+# Portable indirection to `glBindFramebuffer(gl_FRAMEBUFFER, fbo)`
+#
+# This is implemented differently on iOS.
+fun bind_screen_framebuffer(fbo: Int) do glBindFramebuffer(gl_FRAMEBUFFER, fbo)
index ff66e0b..83bb564 100644 (file)
 # limitations under the License.
 
 # Support services for Gamnit on Android
-module gamnit_android
+module gamnit_android is
+       android_api_min 15
+       android_api_target 15
+       android_manifest_activity """android:theme="@android:style/Theme.NoTitleBar.Fullscreen""""
+       android_manifest_activity """android:configChanges="orientation|screenSize|keyboard|keyboardHidden""""
+end
 
 import android
 
 intrude import gamnit
 intrude import android::input_events
+import egl
+
+private import realtime
+
+# Print Android lifecycle events to the log?
+fun print_lifecycle_events: Bool do return true
 
 redef class App
+
+       # ---
+       # User inputs
+
        redef fun feed_events do app.poll_looper 0
 
        redef fun native_input_key(event) do return accept_event(event)
 
        redef fun native_input_motion(event)
        do
+               if not scene_created then return false
+
                var ie = new AndroidMotionEvent(event)
                var handled = accept_event(ie)
 
@@ -34,4 +51,257 @@ redef class App
 
                return handled
        end
+
+       # ---
+       # Handle OS lifecycle and set current state flag
+
+       # State between `init_window` and `term_window`
+       private var window_created = false
+
+       # State between `gained_focus` and `lost_focus`
+       private var focused = false
+
+       # State between `resume` and `pause`
+       private var resumed = false
+
+       # Stage after `destroy`
+       private var destroyed = false
+
+       redef fun init_window
+       do
+               if print_lifecycle_events then print "+ init_window"
+               window_created = true
+               set_active
+               super
+       end
+
+       redef fun term_window
+       do
+               if print_lifecycle_events then print "+ term_window"
+               window_created = false
+               set_inactive
+               super
+       end
+
+       redef fun resume
+       do
+               if print_lifecycle_events then print "+ resume"
+               resumed = true
+               set_active
+               super
+       end
+
+       redef fun pause
+       do
+               if print_lifecycle_events then print "+ pause"
+               resumed = false
+               set_inactive
+               super
+       end
+
+       redef fun gained_focus
+       do
+               if print_lifecycle_events then print "+ gained_focus"
+               focused = true
+               set_active
+               super
+       end
+
+       redef fun lost_focus
+       do
+               if print_lifecycle_events then print "+ lost_focus"
+               focused = false
+               super
+       end
+
+       redef fun destroy
+       do
+               if print_lifecycle_events then print "+ destroy"
+               destroyed = true
+               super
+       end
+
+       redef fun start
+       do
+               if print_lifecycle_events then print "+ start"
+               super
+       end
+
+       redef fun stop
+       do
+               if print_lifecycle_events then print "+ stop"
+               set_inactive
+               super
+       end
+
+       redef fun config_changed
+       do
+               if print_lifecycle_events then print "+ config_changed"
+               super
+       end
+
+       redef fun window_resized
+       do
+               if print_lifecycle_events then print "+ window_resized"
+               super
+       end
+
+       redef fun content_rect_changed
+       do
+               if print_lifecycle_events then print "+ content_rect_changed"
+               super
+       end
+
+       # ---
+       # Update gamnit app
+
+       # The app is fully visible and focused
+       private var active = false
+
+       # The scene was set up
+       private var scene_created = false
+
+       private fun set_active
+       do
+               assert not destroyed
+               if window_created and resumed and focused and not active then
+                       var display = display
+                       if display == null then
+                               # Initial create
+                               create_display
+                               create_gamnit
+                               display = self.display
+                       else
+                               # Try to reuse the EGL context
+                               var native_window = app.native_app_glue.window
+                               assert not native_window.address_is_null
+                               var needs_recreate = display.check_egl_context(native_window)
+                               if needs_recreate then
+
+                                       # Skip frame
+                                       if display.native_window_is_invalid then
+                                               print_error "the native window is invalid, skip frame"
+                                               return
+                                       end
+
+                                       # The context was lost, reload everything
+                                       create_gamnit
+                                       recreate_gamnit
+                               end
+                       end
+
+                       # Update screen dimensions
+                       assert display != null
+                       display.update_size
+                       app.on_resize display
+
+                       if not scene_created then
+                               # Initial launch
+                               if debug_gamnit then print "set_active: create"
+                               create_scene
+                               scene_created = true
+                               on_restore_state
+                       else
+                               # Next to first launch, reload
+                               if debug_gamnit then print "set_active: recreate"
+                       end
+
+                       active = true
+               end
+       end
+
+       private fun set_inactive
+       do
+               active = false
+       end
+
+       # ---
+       # Implement gamnit entry points
+
+       redef fun recreate_gamnit
+       do
+               super
+
+               # Reload all textures
+               if debug_gamnit then print "recreate_gamnit: reloading {all_root_textures.length} textures"
+               for texture in all_root_textures do
+                       if debug_gamnit then print "recreate_gamnit: loading {texture}"
+                       texture.load true
+                       var gamnit_error = texture.error
+                       if gamnit_error != null then print_error gamnit_error
+               end
+       end
+
+       redef fun run
+       do
+               if debug_gamnit then print "run: start"
+               scene_created = false
+
+               while not destroyed do
+                       if not active then
+                               if debug_gamnit then print "run: wait"
+                               app.poll_looper_pause -1
+
+                       else
+                               if debug_gamnit then print "run: frame"
+
+                               var native_window = app.native_app_glue.window
+                               assert not native_window.address_is_null
+
+                               var display = display
+                               assert display != null
+
+                               var needs_recreate = display.check_egl_context(native_window)
+                               if needs_recreate then
+                                       if display.native_window_is_invalid then
+                                               # This should be rare and may cause more issues, log it
+                                               print "The native window is invalid, skip frame"
+                                               set_inactive
+                                               continue
+                                       end
+
+                                       # The context was lost, reload everything
+                                       create_gamnit
+                                       recreate_gamnit
+                               end
+
+                               assert scene_created
+                               frame_full
+                       end
+               end
+
+               if debug_gamnit then print "run: exit"
+               exit 0
+       end
+end
+
+redef class GamnitDisplay
+
+       redef var width = 1080
+       redef var height = 720
+
+       # Update `width` and `height`
+       private fun update_size
+       do
+               var context = app.native_activity
+               self.width = context.window_width
+               self.height = context.window_height
+       end
+end
+
+redef class NativeActivity
+
+       private fun window_height: Int in "Java" `{
+               android.view.View view = self.getWindow().getDecorView();
+               return view.getBottom() - view.getTop();
+       `}
+
+       private fun window_width: Int in "Java" `{
+               android.view.View view = self.getWindow().getDecorView();
+               return view.getRight() - view.getLeft();
+       `}
+
+       private fun orientation: Int in "Java" `{
+               return self.getResources().getConfiguration().orientation;
+       `}
 end
similarity index 53%
rename from lib/mnit/linux/linux_assets.nit
rename to lib/gamnit/gamnit_ios.nit
index b61d234..4ee0a98 100644 (file)
@@ -1,7 +1,5 @@
 # This file is part of NIT ( http://www.nitlanguage.org ).
 #
-# Copyright 2011-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-module linux_assets
+# Support services for gamnit on iOS
+module gamnit_ios
+
+import ios
+import gamnit
 
-import mnit
-import linux_app
+import ios::assets
 
 redef class App
-       redef fun try_loading_asset( id )
+       redef fun did_finish_launching_with_options
        do
-               var path = "{assets_dir}/{id}"
-               if not path.file_exists then
-                       print_error "asset <{id}> does not exists."
-                       exit(1)
-                       abort
-               else
-                       var ext = path.file_extension
-                       if ext == "png" or ext == "jpg" or ext == "jpeg" then
-                               return new Opengles1Image.from_file( path )
-                       else # load as text
-                               var f = new FileReader.open(path)
-                               var content = f.read_all
-                               f.close
-
-                               return content
-                       end
-               end
+               create_gamnit
+               create_scene
+               return super
        end
+
+       # Disable the game loop to rely on the GLKView callbacks on each frame instead
+       redef fun run do end
+
+       private fun frame_full_indirect do frame_full
+end
+
+redef class GamnitGLKView
+       redef fun update do app.frame_full_indirect
+end
+
+redef fun bind_screen_framebuffer(fbo)
+do
+       var display = app.display
+       assert display != null
+       display.glk_view.bind_drawable
 end
index b86f8e5..7dd853a 100644 (file)
@@ -46,6 +46,14 @@ redef class App
                        accept_event gamnit_event
                end
        end
+
+       redef fun on_create
+       do
+               super
+               create_display
+               create_gamnit
+               create_scene
+       end
 end
 
 redef class GamnitDisplay
diff --git a/lib/gamnit/input_ios.nit b/lib/gamnit/input_ios.nit
new file mode 100644 (file)
index 0000000..cb3d463
--- /dev/null
@@ -0,0 +1,59 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Gamnit event support for iOS
+module input_ios
+
+intrude import ios::glkit
+import display_ios
+import gamnit_ios
+
+# Pointer/touch event on iOS
+class GamnitIOSPointerEvent
+       super PointerEvent
+
+       private var native: UIEvent
+
+       private var native_touch: UITouch
+
+       private var content_scale_factor: Float
+
+       redef fun x do return native_touch.x * content_scale_factor
+
+       redef fun y do return native_touch.y * content_scale_factor
+
+       redef var pressed
+
+       redef var is_move
+
+       redef var pointer_id = native_touch.to_i is lazy
+end
+
+redef class NitGLKView
+
+       redef var content_scale_factor = super is lazy
+
+       redef fun touches_began(touches, event)
+       do app.accept_event(new GamnitIOSPointerEvent(event, touches.any_object, content_scale_factor, true, false))
+
+       redef fun touches_moved(touches, event)
+       do app.accept_event(new GamnitIOSPointerEvent(event, touches.any_object, content_scale_factor, true, true))
+
+       redef fun touches_ended(touches, event)
+       do app.accept_event(new GamnitIOSPointerEvent(event, touches.any_object, content_scale_factor, false, false))
+
+       # TODO handle cancel
+       #redef fun touches_cancelled(touches_event) do
+       #do app.accept_event(new GamnitIOSPointerEvent(event, false, false))
+end
similarity index 77%
rename from lib/mnit/android/android.nit
rename to lib/gamnit/landscape.nit
index 5ebead7..d897ac7 100644 (file)
@@ -1,7 +1,5 @@
 # This file is part of NIT (http://www.nitlanguage.org).
 #
-# Copyright 2012-2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
@@ -14,9 +12,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Android support for MNit
-module android
+# Lock the application in the landscape orientation
+module landscape
 
-import android_app
-import android_opengles1
-import android_assets
+import android::landscape is conditional(android)
index 896f07f..ed73f5f 100644 (file)
@@ -25,7 +25,7 @@ redef class App
        # Zero (or a negative value) means no limit.
        #
        # Applications can modify this value even during the main-loop.
-       var maximum_fps = 60.0 is writable
+       var maximum_fps = 0.0 is writable
 
        # Current frame-rate
        #
index 069c653..62f1488 100644 (file)
@@ -80,7 +80,11 @@ class ObjFileParser
                                geometry.params.add vec
                        else if token == "f" then # Faces
                                var face = read_face
-                               if obj_obj != null then obj_obj.faces.add face
+                               if obj_obj == null then
+                                       obj_obj = new ObjObj("")
+                                       geometry.objects.add obj_obj
+                               end
+                               obj_obj.faces.add face
                        else if token == "mtllib" then
                                current_material_lib = read_until_eol_or_comment
                        else if token == "usemtl" then
similarity index 76%
rename from examples/shoot/src/shoot_linux.nit
rename to lib/gamnit/portrait.nit
index 5ca2dca..ad3cfbd 100644 (file)
@@ -1,4 +1,4 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
+# This file is part of NIT (http://www.nitlanguage.org).
 #
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Linux version of the shoot program
-module shoot_linux
+# Lock the application in the portrait orientation
+module portrait
 
-import shoot
-import mnit::linux
-
-super
+import android::portrait is conditional(android)
index fc02530..6efc68b 100644 (file)
@@ -93,7 +93,7 @@ class Attribute
 
                var native = native_float_array
                if native == null or array.length > native.length then
-                       if native != null then native.destroy
+                       if native != null then native.finalize
                        native = new GLfloatArray.from(array)
                        self.native_float_array = native
                else
@@ -484,7 +484,9 @@ abstract class GamnitProgram
        do
                if deleted then return
 
-               glDeleteProgram gl_program.as(not null)
+               var gl_program = gl_program
+               if gl_program != null then glDeleteProgram gl_program
+
                deleted = true
        end
 end
@@ -566,8 +568,8 @@ redef extern class NativeGLfloatArray
        # Overwrite this matrix with the identity matrix
        fun set_identity
        do
-               for i in 4.times do
-                       for j in 4.times do
+               for i in [0..4[ do
+                       for j in [0..4[ do
                                matrix_set(i, j, if i == j then 1.0 else 0.0)
                        end
                end
@@ -584,8 +586,8 @@ redef class Matrix
        # Copy content of this matrix to a `NativeGLfloatArray`
        fun fill_native(native: NativeGLfloatArray)
        do
-               for i in width.times do
-                       for j in height.times do
+               for i in [0..width[ do
+                       for j in [0..height[ do
                                native.matrix_set(i, j, self[i, j])
                        end
                end
index 2aa405d..4383c2b 100644 (file)
@@ -20,7 +20,7 @@ import display
 # Texture composed of pixels, loaded from the assets folder by default
 #
 # Most textures should be created with `App` (as attributes)
-# for the method `on_create` to load them.
+# for the method `create_scene` to load them.
 #
 # ~~~
 # import gamnit::flat
@@ -29,9 +29,9 @@ import display
 #     # Create the texture object, it will be loaded automatically
 #     var texture = new Texture("path/in/assets.png")
 #
-#     redef fun on_create()
+#     redef fun create_scene()
 #     do
-#         # Let `on_create` load the texture
+#         # Let `create_scene` load the texture
 #         super
 #
 #         # Use the texture
@@ -41,7 +41,7 @@ import display
 # end
 # ~~~
 #
-# Otherwise, they can be loaded and error checked explicitly after `on_create`.
+# Otherwise, they can be loaded and error checked explicitly after `create_scene`.
 #
 # ~~~nitish
 # var texture = new Texture("path/in/assets.png")
@@ -154,10 +154,9 @@ class CustomTexture
        # The argument `color` should be an array of up to 4 floats (RGBA).
        # If `color` has less than 4 items, the missing items are replaced by 1.0.
        #
-       # Require: `not loaded and x < width.to_i and y < height.to_i`
+       # Require: `x < width.to_i and y < height.to_i`
        fun []=(x, y: Int, color: Array[Float])
        do
-               assert not loaded else print_error "{class_name}::[]= already loaded"
                assert x < width.to_i and y < height.to_i else print_error "{class_name}::[] out of bounds"
 
                # Simple conversion from [0.0..1.0] to [0..255]
@@ -166,18 +165,16 @@ class CustomTexture
 
                var offset = 4*(x + y*width.to_i)
                for i in [0..4[ do cpixels[offset+i] = bytes[i]
+
+               loaded = false
        end
 
        # Overwrite all pixels with `color`, return `self`
        #
        # The argument `color` should be an array of up to 4 floats (RGBA).
        # If `color` has less than 4 items, the missing items are replaced by 1.0.
-       #
-       # Require: `not loaded`
        fun fill(color: Array[Float]): SELF
        do
-               assert not loaded else print_error "{class_name}::fill already loaded"
-
                # Simple conversion from [0.0..1.0] to [0..255]
                var bytes = [for c in color do (c*255.0).round.to_i.clamp(0, 255).to_bytes.last]
                while bytes.length < 4 do bytes.add 255u8
@@ -190,12 +187,20 @@ class CustomTexture
                        end
                end
 
+               loaded = false
                return self
        end
 
        redef fun load(force)
        do
-               if loaded then return
+               force = force or else false
+               if loaded and not force then return
+
+               if force and glIsTexture(gl_texture) then
+                       # Was already loaded, free the previous GL name
+                       glDeleteTextures([gl_texture])
+               end
+               gl_texture = -1
 
                # Round down the desired dimension
                var width = width.to_i
@@ -205,7 +210,6 @@ class CustomTexture
 
                load_from_pixels(cpixels.native_array, width, height, gl_RGBA)
 
-               cpixels.destroy
                loaded = true
        end
 end
@@ -338,7 +342,7 @@ abstract class Subtexture
        # Parent texture, from which this texture was created
        var parent: Texture
 
-       redef var root = parent.root is lateinit
+       redef fun root do return parent.root
 
        redef fun load(force) do root.load(force)
 end
@@ -392,7 +396,7 @@ class TextureSet
 end
 
 redef class Pointer
-       # Multiply RBG values by their alpha value
+       # Multiply RGB values by their alpha value
        private fun premultiply_alpha(width, height: Int) `{
                uint8_t *bytes = (uint8_t *)self;
                int x, y, i = 0;
index f5b6bec..4034c0d 100644 (file)
@@ -25,7 +25,7 @@
 #
 # ~~~
 # redef class App
-#     redef fun on_create
+#     redef fun create_scene
 #     do
 #         super
 #
@@ -411,8 +411,12 @@ class DPad
                        center.offset(   0.0,-100.0+dy, 0.0))
 
                # Non-interactive joystick background
-               sprites.add new Sprite(app.gamepad_spritesheet.joystick_back,
+               var back = new Sprite(app.gamepad_spritesheet.joystick_back,
                        center.offset(0.0, 0.0+dy, -1.0)) # In the back
+               back.draw_order = -1
+               sprites.add back
+
+               # Non-interactive handle in the bottom
                if not show_down then sprites.add new Sprite(app.gamepad_spritesheet.joystick_down,
                        center.offset(0.0, -100.0+dy,  0.0))
 
index d278893..07cca24 100644 (file)
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # Sample module showing the use of the i18n annotation
-module langannot is i18n
+module langannot is example, i18n
 
 import gettext
 
index da367cf..f85a1fa 100644 (file)
@@ -18,7 +18,7 @@
 #
 # From the book OpenGL ES 2.0 Programming Guide, see code reference:
 # https://code.google.com/p/opengles-book-samples/source/browse/trunk/LinuxX11/Chapter_2/Hello_Triangle/Hello_Triangle.c
-module opengles2_hello_triangle
+module opengles2_hello_triangle is example
 
 import glesv2
 import egl
index c4ac331..c70f631 100644 (file)
@@ -17,8 +17,8 @@
 # OpenGL graphics rendering library for embedded systems, version 2.0
 #
 # This is a low-level wrapper, it can be useful for developers already familiar
-# with the C API of OpenGL. Most developers will prefer to use higher level
-# wrappers such as `mnit` and `gammit`.
+# with the C API of OpenGL. Most developers will prefer to use the higher level
+# graphic API `gammit`.
 #
 # Defines the annotations `glsl_vertex_shader` and `glsl_fragment_shader`
 # applicable on string literals to check shader code using `glslangValidator`.
@@ -41,7 +41,11 @@ import android::aware
 intrude import c
 
 in "C Header" `{
+#ifdef __APPLE__
+       #include <OpenGLES/ES2/gl.h>
+#else
        #include <GLES2/gl2.h>
+#endif
 `}
 
 # OpenGL ES program to which we attach shaders
@@ -434,12 +438,27 @@ fun glUniform4f(index: Int, x, y, z, w: Float) `{ glUniform4f(index, x, y, z, w)
 
 # Low level array of `Float`
 class GLfloatArray
-       super CArray[Float]
-       redef type NATIVE: NativeGLfloatArray
+       super FinalizableOnce
 
-       redef init(length)
+       var length: Int
+
+       var native_array = new NativeGLfloatArray(length) is lateinit
+
+       fun [](index: Int): Float do return native_array[index]
+
+       fun []=(index: Int, val: Float) do native_array[index] = val
+
+       var add_index = 0
+
+       fun reset_add do add_index = 0
+
+       # Require: `add_index < length`
+       fun add(value: Float)
        do
-               native_array = new NativeGLfloatArray(length)
+               var index = add_index
+               assert index < length
+               native_array[index] = value
+               self.add_index = index + 1
        end
 
        # Create with the content of `array`
@@ -458,26 +477,27 @@ class GLfloatArray
        # Require: `length >= array.length + dst_offset or else 0`
        fun fill_from(array: Array[Float], dst_offset: nullable Int)
        do
-               dst_offset = dst_offset or else 0
+               dst_offset = dst_offset or else add_index
 
                assert length >= array.length + dst_offset
                for k in [0..array.length[ do
                        self[dst_offset+k] = array[k]
                end
        end
+
+       redef fun finalize_once do native_array.free
 end
 
 # An array of `GLfloat` in C (`GLfloat*`)
 extern class NativeGLfloatArray `{ GLfloat* `}
-       super NativeCArray
-       redef type E: Float
 
        new(size: Int) `{ return calloc(size, sizeof(GLfloat)); `}
 
-       redef fun [](index) `{ return self[index]; `}
-       redef fun []=(index, val) `{ self[index] = val; `}
+       fun [](index: Int): Float `{ return self[index]; `}
+
+       fun []=(index: Int, val: Float) `{ self[index] = val; `}
 
-       redef fun +(offset) `{ return self + offset; `}
+       fun +(offset: Int): NativeGLfloatArray `{ return self + offset; `}
 end
 
 # General type for OpenGL enumerations
@@ -1312,7 +1332,13 @@ fun gl_FRAMEBUFFER_BINDING: GLGetParameterName `{ return GL_FRAMEBUFFER_BINDING;
 fun gl_RENDERBUFFER_BINDING: GLGetParameterName `{ return GL_RENDERBUFFER_BINDING; `}
 
 # Return a string describing the current GL configuration
-fun glGetString(name: GLEnum): String do return glGetString_native(name).to_s
+fun glGetString(name: GLEnum): String
+do
+       var cstr = glGetString_native(name)
+       assert not cstr.address_is_null
+       return cstr.to_s
+end
+
 private fun glGetString_native(name: GLEnum): CString `{ return (char*)glGetString(name); `}
 
 # Company responsible for this GL implementation
index 7b5084f..cc3d6e2 100644 (file)
@@ -31,7 +31,7 @@ abstract class BSComponent
        super Template
 
        # CSS classes to add on this element.
-       var css_classes = new Array[String]
+       var css_classes = new Array[String] is optional
 
        # Render `self` css clases as a `class` attribute.
        fun render_css_classes: String do
@@ -53,11 +53,12 @@ end
 #
 # Creates a link with a title attribute:
 # ~~~
-# lnk = new Link.with_title("http://nitlanguage.org", "Nit", "Nit homepage")
+# lnk = new Link("http://nitlanguage.org", "Nit", "Nit homepage")
 # assert lnk.write_to_string == "<a href=\"http://nitlanguage.org\" title=\"Nit homepage\">Nit</a>"
 # ~~~
 class Link
        super BSComponent
+       autoinit(href, text, title, css_classes)
 
        # URL pointed by this link.
        var href: String is writable
@@ -66,13 +67,7 @@ class Link
        var text: Writable is writable
 
        # Optional title.
-       var title: nullable String is noinit, writable
-
-       # Creates a link with a `title` attribute.
-       init with_title(href: String, text: Writable, title: nullable String) do
-               init(href, text)
-               self.title = title
-       end
+       var title: nullable String = null is optional, writable
 
        redef fun rendering do
                add "<a{render_css_classes} href=\"{href}\""
@@ -95,11 +90,12 @@ end
 #
 # With subtext:
 # ~~~
-# var h6 = new Header.with_subtext(6, "Title", "with subtext")
+# var h6 = new Header(6, "Title", "with subtext")
 # assert h6.write_to_string == "<h6>Title<small>with subtext</small></h6>"
 # ~~~
 class Header
        super BSComponent
+       autoinit(level, text, subtext, id, css_classes)
 
        # Header level between 1 and 6.
        var level: Int
@@ -108,13 +104,10 @@ class Header
        var text: Writable
 
        # Optional subtext.
-       var subtext: nullable Writable is noinit, writable
+       var subtext: nullable Writable = null is optional, writable
 
-       # Creates a link with a `title` attribute.
-       init with_subtext(level: Int, text: Writable, subtext: String) do
-               init(level, text)
-               self.subtext = subtext
-       end
+       # Optional id.
+       var id: nullable String = null is optional, writable
 
        redef fun rendering do
                add "<h{level}{render_css_classes}>{text.write_to_string}"
@@ -131,11 +124,12 @@ end
 # Used to factorize behavior between OrderedList and UnorderedList.
 abstract class HTMLList
        super BSComponent
+       autoinit(items, css_classes)
 
        # A list contains `<li>` tags as children.
        #
        # See ListItem.
-       var items = new Array[ListItem]
+       var items = new Array[ListItem] is optional
 
        # Adds a new ListItem to `self`.
        fun add_li(item: ListItem) do items.add item
@@ -203,6 +197,7 @@ end
 # A `<li>` tag.
 class ListItem
        super BSComponent
+       autoinit(text, css_classes)
 
        # Content to display in this list item.
        var text: Writable is writable
@@ -222,6 +217,7 @@ end
 # ~~~
 class BSIcon
        super BSComponent
+       autoinit(icon, css_classes)
 
        # Glyphicon name to display.
        #
@@ -278,6 +274,7 @@ end
 # ~~~
 class BSLabel
        super BSComponent
+       autoinit(color, text, css_classes)
 
        # Class used to change the color of the label.
        #
@@ -306,6 +303,7 @@ end
 # ~~~
 class BSBadge
        super BSComponent
+       autoinit(text, css_classes)
 
        # Text to display in the label.
        var text: Writable
@@ -333,6 +331,7 @@ end
 # ~~~
 class BSPageHeader
        super BSComponent
+       autoinit(text, css_classes)
 
        # Text to display as title.
        var text: Writable
@@ -362,6 +361,7 @@ end
 # ~~~
 class BSAlert
        super BSComponent
+       autoinit(color, text, is_dismissible, css_classes)
 
        # Class used to change the color of the alert.
        #
@@ -376,7 +376,7 @@ class BSAlert
        # See http://getbootstrap.com/components/#alerts-dismissible
        #
        # Default is `false`.
-       var is_dismissible = false
+       var is_dismissible = false is optional, writable
 
        init do css_classes.add "alert alert-{color}"
 
@@ -399,7 +399,7 @@ end
 # Example:
 #
 # ~~~
-# var p = new BSPanel("default", "Panel content")
+# var p = new BSPanel("default", body = "Panel content")
 #
 # assert p.write_to_string == """
 # <div class="panel panel-default">
@@ -413,8 +413,7 @@ end
 # Panel with heading:
 #
 # ~~~
-# p = new BSPanel("danger", "Panel content")
-# p.heading = "Panel heading"
+# p = new BSPanel("danger", heading = "Panel heading", body = "Panel content")
 #
 # assert p.write_to_string == """
 # <div class="panel panel-danger">
@@ -429,20 +428,21 @@ end
 # ~~~
 class BSPanel
        super BSComponent
+       autoinit(color, heading, body, footer, css_classes)
 
        # Panel color.
        #
        # Can be one of `default`, `primary`, `success`, `info`, `warning` or `danger`.
-       var color: String
+       var color: String is writable
 
        # Panel header if any.
-       var heading: nullable Writable is noinit, writable
+       var heading: nullable Writable = null is optional, writable
 
        # Body to display in the panel.
-       var body: Writable
+       var body: nullable Writable = null is optional, writable
 
        # Panel footer is any.
-       var footer: nullable Writable is noinit, writable
+       var footer: nullable Writable = null is optional, writable
 
        init do css_classes.add "panel panel-{color}"
 
@@ -454,9 +454,12 @@ class BSPanel
                        addn heading.write_to_string
                        addn "</div>"
                end
-               addn "<div class=\"panel-body\">"
-               addn body.write_to_string
-               addn "</div>"
+               var body = self.body
+               if body != null then
+                       addn "<div class=\"panel-body\">"
+                       addn body.write_to_string
+                       addn "</div>"
+               end
                var footer = self.footer
                if footer != null then
                        addn "<div class=\"panel-footer\">"
index cf76665..a53f56e 100644 (file)
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module html_page is example
+
 import html
 
 class NitHomepage
diff --git a/lib/ios/assets.nit b/lib/ios/assets.nit
new file mode 100644 (file)
index 0000000..4c4ed0e
--- /dev/null
@@ -0,0 +1,55 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Implementation of `app::assets`
+module assets
+
+import cocoa
+import app::assets
+
+redef class TextAsset
+       redef fun load
+       do
+               # Find file
+               var ns_path = ("assets"/path).to_nsstring
+               var path_in_bundle = asset_path(ns_path)
+               if path_in_bundle.address_is_null then
+                       self.error = new Error("TextAsset at '{path}' not found")
+                       self.to_s = ""
+                       return ""
+               end
+
+               # Load content
+               var text = asset_content(path_in_bundle)
+               if text.address_is_null then
+                       self.error = new Error("Failed to read content of TextAsset at '{path}'")
+                       self.to_s = ""
+                       return ""
+               end
+
+               return text.to_s
+       end
+end
+
+private fun asset_path(path: NSString): NSString in "ObjC" `{
+       return [[NSBundle mainBundle] pathForResource:path ofType:nil];
+`}
+
+private fun asset_url(path: NSString): NSObject in "ObjC" `{
+       return [[NSBundle mainBundle] URLForResource:path withExtension:nil];
+`}
+
+private fun asset_content(path: NSString): NSString in "ObjC" `{
+       return [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
+`}
diff --git a/lib/ios/audio.nit b/lib/ios/audio.nit
new file mode 100644 (file)
index 0000000..3cead88
--- /dev/null
@@ -0,0 +1,95 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# iOS implementation of `app::audio` using `AVAudioPlayer`
+module audio
+
+import app::audio
+intrude import ios::assets
+
+in "ObjC Header" `{
+       #import <AVFoundation/AVFoundation.h>
+`}
+
+redef class PlayableAudio
+
+       redef var error = null
+
+       private var native: nullable AVAudioPlayer is lazy do
+
+               # Find file
+               var ns_path = ("assets"/path).to_nsstring
+               var url_in_bundle = asset_url(ns_path)
+               if url_in_bundle.address_is_null then
+                       self.error = new Error("Sound at '{path}' not found")
+                       return null
+               end
+
+               var player = new AVAudioPlayer.contents_of(url_in_bundle)
+               # TODO set delegate to get further errors
+               if player.address_is_null then
+                       self.error = new Error("Sound at '{path}' failed to load")
+                       return null
+               end
+
+               player.prepare_to_play
+
+               return player
+       end
+
+       redef fun load do native # For lazy loading
+
+       redef fun play
+       do
+               var native = native
+               if native != null then native.play_and_repare_async
+       end
+
+       # Free native resources
+       fun destroy
+       do
+               var native = native
+               if native != null then native.release
+       end
+end
+
+# Audio player playing audio from a file or from memory
+private extern class AVAudioPlayer in "ObjC" `{ AVAudioPlayer *`}
+       super NSObject
+
+       new contents_of(url: NSObject) in "ObjC" `{
+               NSError *error;
+               AVAudioPlayer *a = [[AVAudioPlayer alloc] initWithContentsOfURL:(NSURL*)url error:&error];
+               if (error != nil) {
+                       NSLog(@"Failed to load sound: %@", [error localizedDescription]);
+                       return NULL;
+               }
+
+               return (__bridge AVAudioPlayer*)CFBridgingRetain(a);
+       `}
+
+       fun play in "ObjC" `{ [self play]; `}
+
+       fun prepare_to_play in "ObjC" `{ [self prepareToPlay]; `}
+
+       fun play_and_repare_async in "ObjC" `{
+               dispatch_queue_t q = dispatch_get_global_queue(QOS_CLASS_USER_INTERACTIVE, 0);
+               dispatch_async(q, ^{
+                       [self play];
+                       [self prepareToPlay];
+               });
+       `}
+
+       fun release in "ObjC" `{ CFBridgingRelease((__bridge void*)self); `}
+end
index c5d6c8a..c06748e 100644 (file)
@@ -14,6 +14,7 @@
 
 # Simple iOS app with a single label
 module hello_ios is
+       example
        app_name "Hello iOS"
        app_namespace "nit.app.hello_ios"
        app_version(0, 5, git_revision)
diff --git a/lib/ios/glkit.nit b/lib/ios/glkit.nit
new file mode 100644 (file)
index 0000000..db1bb7a
--- /dev/null
@@ -0,0 +1,204 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# GLKit services to create an OpenGL ES context on iOS
+module glkit
+
+#import glesv2
+import ios
+
+in "ObjC Header" `{
+       #import <GLKit/GLKit.h>
+
+       // Nit controller for games
+       @interface GameViewController : GLKViewController
+
+               // Nit object receiving callbacks
+               @property void* nit_glk_view;
+       @end
+`}
+
+in "ObjC" `{
+
+       @implementation GameViewController
+
+               - (void)update
+               {
+                       NitGLKView_update((NitGLKView)self.nit_glk_view);
+               }
+
+               - (UIInterfaceOrientationMask)supportedInterfaceOrientations
+               {
+                       long res = NitGLKView_supported_interface_orientations((NitGLKView)self.nit_glk_view);
+                       if (res == 0) return [super supportedInterfaceOrientations];
+                       return (UIInterfaceOrientationMask)res;
+               }
+
+               - (BOOL)shouldAutorotate
+               {
+                       return NitGLKView_should_autorotate((NitGLKView)self.nit_glk_view);
+               }
+
+               - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
+               {
+                       NitGLKView_touches_began((NitGLKView)self.nit_glk_view, touches, event);
+               }
+
+               - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
+               {
+                       NitGLKView_touches_moved((NitGLKView)self.nit_glk_view, touches, event);
+               }
+
+               - (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
+               {
+                       NitGLKView_touches_ended((NitGLKView)self.nit_glk_view, touches, event);
+               }
+
+               - (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
+               {
+                       NitGLKView_touches_cancelled((NitGLKView)self.nit_glk_view, touches, event);
+               }
+
+               - (void)viewWillTransitionToSize:(CGSize)size
+                 withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator {
+                       NitGLKView_view_will_transition_to_size((NitGLKView)self.nit_glk_view, size.width, size.height);
+               }
+        @end
+`}
+
+# Wrapper for both an Objective-C `GLKViewController` and its `GLKView`
+private extern class NativeGLKViewController in "ObjC" `{ GLKViewController * `}
+       super NSObject
+
+       fun content_scale_factor: Float in "ObjC" `{ return self.view.contentScaleFactor; `}
+       fun drawable_width: Int in "ObjC" `{ return ((GLKView*)self.view).drawableWidth; `}
+       fun drawable_height: Int in "ObjC" `{ return ((GLKView*)self.view).drawableHeight; `}
+       fun bind_drawable in "ObjC" `{ [((GLKView*)self.view) bindDrawable]; `}
+
+       fun multiple_touch_enabled: Bool in "ObjC" `{ return [self.view isMultipleTouchEnabled]; `}
+       fun multiple_touch_enabled=(val: Bool) in "ObjC" `{ return [self.view setMultipleTouchEnabled: val]; `}
+end
+
+# OpenGL view controller
+class NitGLKView
+       private var native: NativeGLKViewController = setup(app.app_delegate)
+
+       # Scale factor from logical coordinate space to the device coordinate space
+       fun content_scale_factor: Float do return native.content_scale_factor
+
+       # Width of the underlying framebuffer
+       fun drawable_width: Int do return native.drawable_width
+
+       # Height of the underlying framebuffer
+       fun drawable_height: Int do return native.drawable_height
+
+       # Bind the view framebuffer
+       fun bind_drawable do native.bind_drawable
+
+       private fun setup(app_delegate: AppDelegate): NativeGLKViewController
+       import touches_began, touches_moved, touches_ended, touches_cancelled,
+       update, should_autorotate, supported_interface_orientations,
+       view_will_transition_to_size in "ObjC" `{
+
+               app_delegate.window = [[UIWindow alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
+               app_delegate.window.backgroundColor = [UIColor whiteColor]; // TODO make configurable
+
+               // Create EAGL context and view
+               EAGLContext * context = [[EAGLContext alloc] initWithAPI: kEAGLRenderingAPIOpenGLES2];
+               GLKView *view = [[GLKView alloc] initWithFrame: [[UIScreen mainScreen] bounds]];
+               view.context = context;
+
+               // Ask for antialiasing
+               view.drawableMultisample = GLKViewDrawableMultisample4X;
+               view.drawableDepthFormat = GLKViewDrawableDepthFormat24;
+
+               GameViewController *cont = [[GameViewController alloc] init];
+               cont.view = view;
+
+               // Setup callbacks
+               NitGLKView_incr_ref(self);
+               cont.nit_glk_view = self;
+
+               // Make our controller the root
+               view.delegate = cont;
+               [app_delegate.window setRootViewController: cont];
+
+               // Enable the context
+               [app_delegate.window makeKeyAndVisible];
+               [EAGLContext setCurrentContext: context];
+               [view bindDrawable];
+
+               return cont;
+       `}
+
+       # Is multi-touch supported?
+       fun multiple_touch_enabled: Bool do return native.multiple_touch_enabled
+
+       # Is multi-touch supported?
+       fun multiple_touch_enabled=(val: Bool) do native.multiple_touch_enabled = val
+
+       # Should the view auto rotate to follow the device orientation?
+       #
+       # Defaults to `true`.
+       fun should_autorotate: Bool do return true
+
+       # If `should_autorotate`, what are the supported interface orientations?
+       #
+       # Redef to return values of Objective-C `UIInterfaceOrientationMask`
+       fun supported_interface_orientations: Int do return 0
+
+       # Hook to update the view content, called once per frame
+       fun update do end
+
+       # Hook on a new touch event
+       fun touches_began(touches: NSSet_UITouch, event: UIEvent) do end
+
+       # Hook when a touch moves
+       fun touches_moved(touches: NSSet_UITouch, event: UIEvent) do end
+
+       # Hook on the end of a touch event
+       fun touches_ended(touches: NSSet_UITouch, event: UIEvent) do end
+
+       # Hook on a touch event cancellation
+       fun touches_cancelled(touches: NSSet_UITouch, event: UIEvent) do end
+
+       # Hook when size of the view is about to change to `width` by `height`
+       fun view_will_transition_to_size(width, height: Float) do end
+end
+
+# UIKit event
+extern class UIEvent in "ObjC" `{ UIEvent * `}
+       super NSObject
+end
+
+# Objective-C `NSSet` of `UITouch`
+extern class NSSet_UITouch in "ObjC" `{ NSSet<UITouch*>* `}
+       super NSObject
+
+       # Get any object of this set
+       fun any_object: UITouch in "ObjC" `{ return [self anyObject]; `}
+end
+
+# UIKit touch event
+extern class UITouch in "ObjC" `{ UITouch * `}
+
+       # X coordinate
+       fun x: Float in "ObjC" `{ return [self locationInView:self.view].x; `}
+
+       # Y coordinate
+       fun y: Float in "ObjC" `{ return [self locationInView:self.view].y; `}
+
+       # Address of this object as an integer for identity detection
+       fun to_i: Int in "ObjC" `{ return (long)self; `}
+end
index 55821ef..68567ff 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Dynamic interface to read JSON strings.
+# Dynamic interface to read values from JSON strings
 #
-# `String::to_json_value` returns a `JsonValue` which can be queried
-# to get the underlying JSON data.
+# Most services are in `JsonValue`, which is created by `Text::to_json_value`.
 module dynamic
 
 import error
 private import static
 
-# Wraps a JSON value.
+redef class Text
+       # Parse `self` to a `JsonValue`
+       fun to_json_value: JsonValue do return new JsonValue(parse_json)
+end
+
+# Dynamic wrapper of a JSON value, created by `Text::to_json_value`
+#
+# Provides high-level services to explore JSON objects with minimal overhead
+# dealing with static types. Use this class to manipulate the JSON data first
+# and check for errors only before using the resulting data.
 #
-# Offer methods to query the type, to dynamicaly cast the underlying value and
-# to query elements (in case of a JSON object or a JSON array).
+# For example, given:
+# ~~~
+# var json_src = """
+# {
+#   "i": 123,
+#   "m": {
+#          "t": true,
+#          "f": false
+#        },
+#   "a": ["zero", "one", "two"]
+# }"""
+# var json_value = json_src.to_json_value # Parse src to a `JsonValue`
+# ~~~
 #
-# Use `String::to_json_value` to get a `JsonValue` from a string.
+# Access array or map values using their indices.
+# ~~~
+# var target_int = json_value["i"]
+# assert target_int.is_int # Check for error and expected type
+# assert target_int.to_i == 123 # Use the value
+# ~~~
+#
+# Use `get` to reach a value nested in multiple objects.
+# ~~~
+# var target_str = json_value.get("a.0")
+# assert target_str.is_string # Check for error and expected type
+# assert target_str.to_s == "zero" # Use the value
+# ~~~
+#
+# This API is useful for scripts and when you need only a few values from a
+# JSON object. To access many values or check the conformity of the JSON
+# beforehand, use the `json` serialization services.
 class JsonValue
 
        # The wrapped JSON value.
@@ -131,10 +166,7 @@ class JsonValue
        #     assert "123".to_json_value.to_s == "123"
        #     assert "true".to_json_value.to_s == "true"
        #     assert "[1, 2, 3]".to_json_value.to_s == "[1,2,3]"
-       redef fun to_s do
-               if value == null then return "null"
-               return value.to_s
-       end
+       redef fun to_s do return (value or else "null").to_s
 
        ### Objects
 
@@ -195,19 +227,6 @@ class JsonValue
        # require: `self.is_error`
        fun to_error: Error do return value.as(Error)
 
-       ### JsonParseError
-
-       # Is this value a parse error?
-       #
-       #     assert "[".to_json_value.is_parse_error
-       #     assert not "[]".to_json_value.is_parse_error
-       fun is_parse_error: Bool do return value isa JsonParseError
-
-       # Get this value as a `JsonParseError`.
-       #
-       # require: `self.is_parse_error`
-       fun to_parse_error: JsonParseError do return value.as(JsonParseError)
-
        ### Children access
 
        # Iterator over the values of the array `self`
@@ -264,57 +283,104 @@ class JsonValue
                return new JsonValue(result)
        end
 
-       # Advanced query to get a value within the map `self` or it's children.
-       #
-       # A query is composed of the keys to each map seperated by '.'.
-       #
-       # require: `self.is_map`
-       #
-       #     assert """{"a": {"t": true, "f": false}}""".to_json_value.get("a").is_map
-       #     assert """{"a": {"t": true, "f": false}}""".to_json_value.get("a.t").to_bool
-       #     assert not """{"a": {"t": true, "f": false}}""".to_json_value.get("a.f").to_bool
-       #     assert """{"a": {"t": true, "f": false}}""".to_json_value.get("a.t.t").is_error
-       #     assert """{"a": {"b": {"c": {"d": 123}}}}""".to_json_value.get("a.b.c.d").to_i == 123
-       #     assert """{"a": {"b": {"c": {"d": 123}}}}""".to_json_value.get("a.z.c.d").is_error
-       fun get(query: String): JsonValue do
-               var keys = query.split(".")
-               var value = value
+       # Get the value at `query`, a string of map keys and array indices
+       #
+       # The `query` is composed of map keys and array indices separated by "." (by default).
+       # The separator can be set with `sep` to any string.
+       #
+       # Given the following JSON object parsed as a `JsonValue`.
+       # ~~~
+       # var jvalue = """
+       # {
+       #   "a": {
+       #          "i": 123,
+       #          "b": true
+       #        },
+       #   "b": ["zero", "one", "two"]
+       # }""".to_json_value
+       # ~~~
+       #
+       # Access a value in maps by its key, starting from the key in the root object.
+       # ~~~
+       # assert jvalue.get("a").is_map
+       # assert jvalue.get("a.i").to_i == 123
+       # assert jvalue.get("a.b").to_bool
+       # ~~~
+       #
+       # Access an item in an array by its index.
+       # ~~~
+       # assert jvalue.get("b.1").to_s == "one"
+       # ~~~
+       #
+       # Any error at any depth of a query is reported. The client should usually
+       # check for errors before using the returned value.
+       # ~~~
+       # assert jvalue.get("a.b.c").to_error.to_s == "Value at `a.b` is not a map. Got a `map`"
+       # assert jvalue.get("b.3").to_error.to_s == "Index `3` out of bounds at `b`"
+       # ~~~
+       #
+       # Set `sep` to a custom string to access keys containing a dot.
+       # ~~~
+       # jvalue = """
+       # {
+       #   "a.b": { "i": 123 },
+       #   "c/d": [ 456 ]
+       # }""".to_json_value
+       #
+       # assert jvalue.get("a.b/i", sep="/").to_i == 123
+       # assert jvalue.get("c/d:0", sep=":").to_i == 456
+       # ~~~
+       fun get(query: Text, sep: nullable Text): JsonValue
+       do
                if is_error then return self
+
+               sep = sep or else "."
+               var keys = query.split(sep)
+               var value = value
                for i in [0..keys.length[ do
                        var key = keys[i]
                        if value isa MapRead[String, nullable Object] then
                                if value.has_key(key) then
                                        value = value[key]
                                else
-                                       var sub_query = sub_query_to_s(keys, i)
-                                       var e = new JsonKeyError("Key `{key}` not found.",
+                                       var sub_query = sub_query_to_s(keys, i, sep)
+                                       value = new JsonKeyError("Key `{key}` not found.",
                                                        self, sub_query)
-                                       return new JsonValue(e)
+                                       break
+                               end
+                       else if value isa Sequence[nullable Object] then
+                               if key.is_int then
+                                       var index = key.to_i
+                                       if index < value.length then
+                                               value = value[index]
+                                       else
+                                               var sub_query = sub_query_to_s(keys, i, sep)
+                                               value = new JsonKeyError("Index `{key}` out of bounds at `{sub_query}`",
+                                                               self, sub_query)
+                                               break
+                                       end
                                end
                        else
-                               var sub_query = sub_query_to_s(keys, i)
-                               var val_type = (new JsonValue(value)).json_type
-                               var e = new JsonKeyError("Value at `{sub_query}` is not a map. Got type `{val_type}`",
+                               var sub_query = sub_query_to_s(keys, i, sep)
+                               value = new JsonKeyError("Value at `{sub_query}` is not a map. Got a `{json_type}`",
                                                self, sub_query)
-                               return new JsonValue(e)
+                               break
                        end
                end
                return new JsonValue(value)
        end
 
-       # Concatenate all keys up to `last` for debugging purposes.
-       #
-       # Note: This method deletes elements in `keys`.
-       private fun sub_query_to_s(keys: Array[String], last: Int): String do
-               last += 1
-               for j in [last..keys.length[ do keys.pop
-               return keys.join(".")
+       # Concatenate all keys up to `last` for error reports
+       private fun sub_query_to_s(keys: Array[String], last: Int, sep: Text): String
+       do
+               return [for i in [0..last[ do keys[i]].join(sep)
        end
 
        # Return a human-readable description of the type.
        #
        # For debugging purpose only.
-       fun json_type: String do
+       private fun json_type: String
+       do
                if is_array then return "array"
                if is_bool then return "bool"
                if is_float then return "float"
@@ -322,29 +388,20 @@ class JsonValue
                if is_null then return "null"
                if is_map then return "map"
                if is_string then return "string"
-               if is_parse_error then return "parse_error"
                if is_error then return "error"
                return "undefined"
        end
 end
 
-# Keyed access failed.
+# Key access error
 class JsonKeyError
        super Error
 
-       # The value on which the access was requested.
+       # The value on which the access was requested
        var json_value: JsonValue
 
-       # The requested key.
+       # The requested key
        #
-       # In the case of `JsonValue.get`, the sub-query that failed.
+       # In the case of `JsonValue::get`, the sub-query that failed.
        var key: Object
 end
-
-redef class Text
-       # Parse `self` to obtain a `JsonValue`
-       fun to_json_value: JsonValue do
-               var value = parse_json
-               return new JsonValue(value)
-       end
-end
index a5c6052..7068bb0 100644 (file)
@@ -7,7 +7,9 @@ This parser is inspired by the famous TxtMark for Java (https://github.com/rjesc
 
 `nitmd` can be used as a standalone tool:
 
-       $ nitmd file.md
+~~~bash
+$ nitmd file.md
+~~~
 
 Or you can use it programmatically by importing the `markdown` module.
 
@@ -26,4 +28,6 @@ Minimalists tests are prefixed with `process_*`. All tests from daringfireball a
 
 Run the test suite:
 
-       $ nitunit lib/markdown/markdown.nit -t lib/markdown/test_markdown.nit
+~~~bash
+$ nitunit lib/markdown/markdown.nit -t lib/markdown/test_markdown.nit
+~~~
index 9f0843c..cc22489 100644 (file)
@@ -27,7 +27,7 @@ class MdDecorator
 
        redef fun add_headline(v, block) do
                # save headline
-               var txt = block.block.first_line.value
+               var txt = block.block.first_line.as(not null).value
                var id = strip_id(txt)
                var lvl = block.depth
                headlines[id] = new HeadLine(id, txt, lvl)
@@ -43,7 +43,7 @@ class MdDecorator
 
        redef fun add_code(v, block) do
                if block isa BlockFence and block.meta != null then
-                       v.add "~~~{block.meta.to_s}"
+                       v.add "~~~{block.meta.as(not null).to_s}"
                else
                        v.add "~~~"
                end
index 8128642..2c7c419 100644 (file)
@@ -21,6 +21,8 @@ import markdown
 class ManDecorator
        super Decorator
 
+       redef var headlines = new ArrayMap[String, HeadLine]
+
        redef fun add_ruler(v, block) do v.add "***\n"
 
        redef fun add_headline(v, block) do
index 4ae99fb..2426d53 100644 (file)
@@ -30,9 +30,6 @@ import template
 # SEE: `String::md_to_html` for a shortcut.
 class MarkdownProcessor
 
-       # `MarkdownEmitter` used for ouput.
-       var emitter: MarkdownEmitter is noinit, protected writable
-
        # Work in extended mode (default).
        #
        # Behavior changes when using extended mode:
@@ -141,8 +138,6 @@ class MarkdownProcessor
        # Default = `false`
        var no_location = false is writable
 
-       init do self.emitter = new MarkdownEmitter(self)
-
        # Process the mardown `input` string and return the processed output.
        fun process(input: String): Writable do
                # init processor
@@ -155,7 +150,8 @@ class MarkdownProcessor
                parent.remove_surrounding_empty_lines
                recurse(parent, false)
                # output processed text
-               return emitter.emit(parent.kind)
+               decorator.headlines.clear
+               return emit(parent.kind)
        end
 
        # Split `input` string into `MDLines` and create a parent `MDBlock` with it.
@@ -262,7 +258,10 @@ class MarkdownProcessor
                                                pos = md.read_until(comment, pos, c)
                                        end
                                end
-                               if not comment.is_empty then last_link_ref.title = comment.write_to_string
+                               var last_link_ref = self.last_link_ref
+                               if not comment.is_empty and last_link_ref != null then
+                                       last_link_ref.title = comment.write_to_string
+                               end
                        end
                        if comment.is_empty then return false
                        return true
@@ -495,25 +494,6 @@ class MarkdownProcessor
                return -1
        end
 
-       # Location used for next parsed token.
-       #
-       # This location can be changed by the emitter to adjust with `\n` found
-       # in the input.
-       private fun current_loc: MDLocation do return emitter.current_loc
-end
-
-# Emit output corresponding to blocks content.
-#
-# Blocks are created by a previous pass in `MarkdownProcessor`.
-# The emitter use a `Decorator` to select the output format.
-class MarkdownEmitter
-
-       # Kind of processor used for parsing.
-       type PROCESSOR: MarkdownProcessor
-
-       # Processor containing link refs.
-       var processor: PROCESSOR
-
        # Kind of decorator used for decoration.
        type DECORATOR: Decorator
 
@@ -524,8 +504,7 @@ class MarkdownEmitter
        end
 
        # Create a new `MarkdownEmitter` using a custom `decorator`.
-       init with_decorator(processor: PROCESSOR, decorator: DECORATOR) do
-               init processor
+       init with_decorator(decorator: DECORATOR) do
                self.decorator = decorator
        end
 
@@ -556,7 +535,7 @@ class MarkdownEmitter
                                current_loc.line_start += 1
                                current_loc.column_start = -current_pos
                        end
-                       var mt = processor.token_at(text, current_pos)
+                       var mt = token_at(text, current_pos)
                        if (token != null and not token isa TokenNone) and
                        (mt.is_same_type(token) or
                        (token isa TokenEmStar and mt isa TokenStrongStar) or
@@ -659,72 +638,72 @@ end
 # Default decorator used is `HTMLDecorator`.
 interface Decorator
 
-       # Kind of emitter used for decoration.
-       type EMITTER: MarkdownEmitter
+       # Kind of processor used
+       type PROCESSOR: MarkdownProcessor
 
        # Render a single plain char.
        #
        # Redefine this method to add special escaping for plain text.
-       fun add_char(v: EMITTER, c: Char) do v.addc c
+       fun add_char(v: PROCESSOR, c: Char) do v.addc c
 
        # Render a ruler block.
-       fun add_ruler(v: EMITTER, block: BlockRuler) is abstract
+       fun add_ruler(v: PROCESSOR, block: BlockRuler) is abstract
 
        # Render a headline block with corresponding level.
-       fun add_headline(v: EMITTER, block: BlockHeadline) is abstract
+       fun add_headline(v: PROCESSOR, block: BlockHeadline) is abstract
 
        # Render a paragraph block.
-       fun add_paragraph(v: EMITTER, block: BlockParagraph) is abstract
+       fun add_paragraph(v: PROCESSOR, block: BlockParagraph) is abstract
 
        # Render a code or fence block.
-       fun add_code(v: EMITTER, block: BlockCode) is abstract
+       fun add_code(v: PROCESSOR, block: BlockCode) is abstract
 
        # Render a blockquote.
-       fun add_blockquote(v: EMITTER, block: BlockQuote) is abstract
+       fun add_blockquote(v: PROCESSOR, block: BlockQuote) is abstract
 
        # Render an unordered list.
-       fun add_unorderedlist(v: EMITTER, block: BlockUnorderedList) is abstract
+       fun add_unorderedlist(v: PROCESSOR, block: BlockUnorderedList) is abstract
 
        # Render an ordered list.
-       fun add_orderedlist(v: EMITTER, block: BlockOrderedList) is abstract
+       fun add_orderedlist(v: PROCESSOR, block: BlockOrderedList) is abstract
 
        # Render a list item.
-       fun add_listitem(v: EMITTER, block: BlockListItem) is abstract
+       fun add_listitem(v: PROCESSOR, block: BlockListItem) is abstract
 
        # Render an emphasis text.
-       fun add_em(v: EMITTER, text: Text) is abstract
+       fun add_em(v: PROCESSOR, text: Text) is abstract
 
        # Render a strong text.
-       fun add_strong(v: EMITTER, text: Text) is abstract
+       fun add_strong(v: PROCESSOR, text: Text) is abstract
 
        # Render a strike text.
        #
        # Extended mode only (see `MarkdownProcessor::ext_mode`)
-       fun add_strike(v: EMITTER, text: Text) is abstract
+       fun add_strike(v: PROCESSOR, text: Text) is abstract
 
        # Render a link.
-       fun add_link(v: EMITTER, link: Text, name: Text, comment: nullable Text) is abstract
+       fun add_link(v: PROCESSOR, link: Text, name: Text, comment: nullable Text) is abstract
 
        # Render an image.
-       fun add_image(v: EMITTER, link: Text, name: Text, comment: nullable Text) is abstract
+       fun add_image(v: PROCESSOR, link: Text, name: Text, comment: nullable Text) is abstract
 
        # Render an abbreviation.
-       fun add_abbr(v: EMITTER, name: Text, comment: Text) is abstract
+       fun add_abbr(v: PROCESSOR, name: Text, comment: Text) is abstract
 
        # Render a code span reading from a buffer.
-       fun add_span_code(v: EMITTER, buffer: Text, from, to: Int) is abstract
+       fun add_span_code(v: PROCESSOR, buffer: Text, from, to: Int) is abstract
 
        # Render a text and escape it.
-       fun append_value(v: EMITTER, value: Text) is abstract
+       fun append_value(v: PROCESSOR, value: Text) is abstract
 
        # Render code text from buffer and escape it.
-       fun append_code(v: EMITTER, buffer: Text, from, to: Int) is abstract
+       fun append_code(v: PROCESSOR, buffer: Text, from, to: Int) is abstract
 
        # Render a character escape.
-       fun escape_char(v: EMITTER, char: Char) is abstract
+       fun escape_char(v: PROCESSOR, char: Char) is abstract
 
        # Render a line break
-       fun add_line_break(v: EMITTER) is abstract
+       fun add_line_break(v: PROCESSOR) is abstract
 
        # Generate a new html valid id from a `String`.
        fun strip_id(txt: String): String is abstract
@@ -757,7 +736,9 @@ class HTMLDecorator
 
        redef fun add_headline(v, block) do
                # save headline
-               var txt = block.block.first_line.value
+               var line = block.block.first_line
+               if line == null then return
+               var txt = line.value
                var id = strip_id(txt)
                var lvl = block.depth
                headlines[id] = new HeadLine(id, txt, lvl)
@@ -1021,8 +1002,8 @@ class MDBlock
        fun split(line: MDLine): MDBlock do
                # location for new block
                var new_loc = new MDLocation(
-                       first_line.location.line_start,
-                       first_line.location.column_start,
+                       first_line.as(not null).location.line_start,
+                       first_line.as(not null).location.column_start,
                        line.location.line_end,
                        line.location.column_end)
                # create block
@@ -1034,16 +1015,16 @@ class MDBlock
                if first_line == null then
                        last_line = null
                else
-                       first_line.prev = null
+                       first_line.as(not null).prev = null
                        # update current block loc
-                       location.line_start = first_line.location.line_start
-                       location.column_start = first_line.location.column_start
+                       location.line_start = first_line.as(not null).location.line_start
+                       location.column_start = first_line.as(not null).location.column_start
                end
                if first_block == null then
                        first_block = block
                        last_block = block
                else
-                       last_block.next = block
+                       last_block.as(not null).next = block
                        last_block = block
                end
                return block
@@ -1055,10 +1036,10 @@ class MDBlock
                        first_line = line
                        last_line = line
                else
-                       last_line.next_empty = line.is_empty
-                       line.prev_empty = last_line.is_empty
+                       last_line.as(not null).next_empty = line.is_empty
+                       line.prev_empty = last_line.as(not null).is_empty
                        line.prev = last_line
-                       last_line.next = line
+                       last_line.as(not null).next = line
                        last_line = line
                end
        end
@@ -1068,12 +1049,12 @@ class MDBlock
                if line.prev == null then
                        first_line = line.next
                else
-                       line.prev.next = line.next
+                       line.prev.as(not null).next = line.next
                end
                if line.next == null then
                        last_line = line.prev
                else
-                       line.next.prev = line.prev
+                       line.next.as(not null).prev = line.prev
                end
                line.prev = null
                line.next = null
@@ -1140,6 +1121,12 @@ class MDBlock
                        text.append "\n"
                        line = line.next
                end
+               var block = first_block
+               while block != null do
+                       text.append block.text
+                       text.append "\n"
+                       block = block.next
+               end
                return text.write_to_string
        end
 end
@@ -1152,10 +1139,10 @@ abstract class Block
        var block: MDBlock
 
        # Output `self` using `v.decorator`.
-       fun emit(v: MarkdownEmitter) do v.emit_in(self)
+       fun emit(v: MarkdownProcessor) do v.emit_in(self)
 
        # Emit the containts of `self`, lines or blocks.
-       fun emit_in(v: MarkdownEmitter) do
+       fun emit_in(v: MarkdownProcessor) do
                block.remove_surrounding_empty_lines
                if block.has_lines then
                        emit_lines(v)
@@ -1165,7 +1152,7 @@ abstract class Block
        end
 
        # Emit lines contained in `block`.
-       fun emit_lines(v: MarkdownEmitter) do
+       fun emit_lines(v: MarkdownProcessor) do
                var tpl = v.push_buffer
                var line = block.first_line
                while line != null do
@@ -1183,7 +1170,7 @@ abstract class Block
        end
 
        # Emit sub-blocks contained in `block`.
-       fun emit_blocks(v: MarkdownEmitter) do
+       fun emit_blocks(v: MarkdownProcessor) do
                var block = self.block.first_block
                while block != null do
                        v.push_loc(block.location)
@@ -1307,6 +1294,7 @@ class BlockHeadline
                if depth > 0 then return
                var level = 0
                var line = block.first_line
+               if line == null then return
                if line.is_empty then return
                var start = line.leading
                while start < line.value.length and line.value[start] == '#' do
@@ -1346,6 +1334,7 @@ abstract class BlockList
        # Split list block into list items sub-blocks.
        private fun init_block(v: MarkdownProcessor) do
                var line = block.first_line
+               if line == null then return
                line = line.next
                while line != null do
                        var t = v.line_kind(line)
@@ -1478,8 +1467,8 @@ class MDLine
                leading = 0
                trailing = 0
                is_empty = true
-               if prev != null then prev.next_empty = true
-               if next != null then next.prev_empty = true
+               if prev != null then prev.as(not null).next_empty = true
+               if next != null then next.as(not null).prev_empty = true
        end
 
        # Number or leading spaces on this line.
@@ -1613,8 +1602,8 @@ class MDLine
        # Used by `check_html`.
        private fun read_xml_comment(first_line: MDLine, start: Int): Int do
                var line: nullable MDLine = first_line
-               if start + 3 < line.value.length then
-                       if line.value[2] == '-' and line.value[3] == '-' then
+               if start + 3 < line.as(not null).value.length then
+                       if line.as(not null).value[2] == '-' and line.as(not null).value[3] == '-' then
                                var pos = start + 4
                                while line != null do
                                        while pos < line.value.length and line.value[pos] != '-' do
@@ -1655,7 +1644,7 @@ class LineEmpty
        super Line
 
        redef fun process(v) do
-               v.current_line = v.current_line.next
+               v.current_line = v.current_line.as(not null).next
        end
 end
 
@@ -1667,7 +1656,7 @@ class LineOther
        redef fun process(v) do
                var line = v.current_line
                # go to block end
-               var was_empty = line.prev_empty
+               var was_empty = line.as(not null).prev_empty
                while line != null and not line.is_empty do
                        var t = v.line_kind(line)
                        if (v.in_list or v.ext_mode) and t isa LineList then
@@ -1683,29 +1672,30 @@ class LineOther
                        line = line.next
                end
                # build block
+               var current_block = v.current_block.as(not null)
                if line != null and not line.is_empty then
-                       var block = v.current_block.split(line.prev.as(not null))
+                       var block = current_block.split(line.prev.as(not null))
                        if v.in_list and not was_empty then
                                block.kind = new BlockNone(block)
                        else
                                block.kind = new BlockParagraph(block)
                        end
-                       v.current_block.remove_leading_empty_lines
+                       current_block.remove_leading_empty_lines
                else
                        var block: MDBlock
                        if line != null then
-                               block = v.current_block.split(line)
+                               block = current_block.split(line)
                        else
-                               block = v.current_block.split(v.current_block.last_line.as(not null))
+                               block = current_block.split(current_block.last_line.as(not null))
                        end
                        if v.in_list and (line == null or not line.is_empty) and not was_empty then
                                block.kind = new BlockNone(block)
                        else
                                block.kind = new BlockParagraph(block)
                        end
-                       v.current_block.remove_leading_empty_lines
+                       current_block.remove_leading_empty_lines
                end
-               v.current_line = v.current_block.first_line
+               v.current_line = current_block.first_line
        end
 end
 
@@ -1720,15 +1710,16 @@ class LineCode
                        line = line.next
                end
                # split at block end line
+               var current_block = v.current_block.as(not null)
                var block: MDBlock
                if line != null then
-                       block = v.current_block.split(line.prev.as(not null))
+                       block = current_block.split(line.prev.as(not null))
                else
-                       block = v.current_block.split(v.current_block.last_line.as(not null))
+                       block = current_block.split(current_block.last_line.as(not null))
                end
                block.kind = new BlockCode(block)
                block.remove_surrounding_empty_lines
-               v.current_line = v.current_block.first_line
+               v.current_line = current_block.first_line
        end
 end
 
@@ -1738,12 +1729,14 @@ class LineXML
 
        redef fun process(v) do
                var line = v.current_line
+               if line == null then return
+               var current_block = v.current_block.as(not null)
                var prev = line.prev
-               if prev != null then v.current_block.split(prev)
-               var block = v.current_block.split(line.xml_end_line.as(not null))
+               if prev != null then current_block.split(prev)
+               var block = current_block.split(line.xml_end_line.as(not null))
                block.kind = new BlockXML(block)
-               v.current_block.remove_leading_empty_lines
-               v.current_line = v.current_block.first_line
+               current_block.remove_leading_empty_lines
+               v.current_line = current_block.first_line
        end
 end
 
@@ -1753,6 +1746,7 @@ class LineBlockquote
 
        redef fun process(v) do
                var line = v.current_line
+               var current_block = v.current_block.as(not null)
                # go to bquote end
                while line != null do
                        if not line.is_empty and (line.prev_empty and
@@ -1763,9 +1757,9 @@ class LineBlockquote
                # build sub block
                var block: MDBlock
                if line != null then
-                       block = v.current_block.split(line.prev.as(not null))
+                       block = current_block.split(line.prev.as(not null))
                else
-                       block = v.current_block.split(v.current_block.last_line.as(not null))
+                       block = current_block.split(current_block.last_line.as(not null))
                end
                var kind = new BlockQuote(block)
                block.kind = kind
@@ -1773,7 +1767,7 @@ class LineBlockquote
                kind.remove_block_quote_prefix(block)
                v.current_line = line
                v.recurse(block, false)
-               v.current_line = v.current_block.first_line
+               v.current_line = current_block.first_line
        end
 end
 
@@ -1783,11 +1777,13 @@ class LineHR
 
        redef fun process(v) do
                var line = v.current_line
-               if line.prev != null then v.current_block.split(line.prev.as(not null))
-               var block = v.current_block.split(line.as(not null))
+               if line == null then return
+               var current_block = v.current_block.as(not null)
+               if line.prev != null then current_block.split(line.prev.as(not null))
+               var block = current_block.split(line)
                block.kind = new BlockRuler(block)
-               v.current_block.remove_leading_empty_lines
-               v.current_line = v.current_block.first_line
+               current_block.remove_leading_empty_lines
+               v.current_line = current_block.first_line
        end
 end
 
@@ -1797,7 +1793,8 @@ class LineFence
 
        redef fun process(v) do
                # go to fence end
-               var line = v.current_line.next
+               var line = v.current_line.as(not null).next
+               var current_block = v.current_block.as(not null)
                while line != null do
                        if v.line_kind(line) isa LineFence then break
                        line = line.next
@@ -1808,17 +1805,17 @@ class LineFence
                # build fence block
                var block: MDBlock
                if line != null then
-                       block = v.current_block.split(line.prev.as(not null))
+                       block = current_block.split(line.prev.as(not null))
                else
-                       block = v.current_block.split(v.current_block.last_line.as(not null))
+                       block = current_block.split(current_block.last_line.as(not null))
                end
                block.remove_surrounding_empty_lines
-               var meta = block.first_line.value.meta_from_fence
+               var meta = block.first_line.as(not null).value.meta_from_fence
                block.kind = new BlockFence(block, meta)
-               block.first_line.clear
+               block.first_line.as(not null).clear
                var last = block.last_line
                if last != null and v.line_kind(last) isa LineFence then
-                       block.last_line.clear
+                       block.last_line.as(not null).clear
                end
                block.remove_surrounding_empty_lines
                v.current_line = line
@@ -1831,14 +1828,16 @@ class LineHeadline
 
        redef fun process(v) do
                var line = v.current_line
+               if line == null then return
+               var current_block = v.current_block.as(not null)
                var lprev = line.prev
-               if lprev != null then v.current_block.split(lprev)
-               var block = v.current_block.split(line.as(not null))
+               if lprev != null then current_block.split(lprev)
+               var block = current_block.split(line)
                var kind = new BlockHeadline(block)
                block.kind = kind
                kind.transform_headline(block)
-               v.current_block.remove_leading_empty_lines
-               v.current_line = v.current_block.first_line
+               current_block.remove_leading_empty_lines
+               v.current_line = current_block.first_line
        end
 end
 
@@ -1848,16 +1847,18 @@ class LineHeadline1
 
        redef fun process(v) do
                var line = v.current_line
+               if line == null then return
+               var current_block = v.current_block.as(not null)
                var lprev = line.prev
-               if lprev != null then v.current_block.split(lprev)
-               line.next.clear
-               var block = v.current_block.split(line.as(not null))
+               if lprev != null then current_block.split(lprev)
+               line.next.as(not null).clear
+               var block = current_block.split(line)
                var kind = new BlockHeadline(block)
                kind.depth = 1
                kind.transform_headline(block)
                block.kind = kind
-               v.current_block.remove_leading_empty_lines
-               v.current_line = v.current_block.first_line
+               current_block.remove_leading_empty_lines
+               v.current_line = current_block.first_line
        end
 end
 
@@ -1867,16 +1868,18 @@ class LineHeadline2
 
        redef fun process(v) do
                var line = v.current_line
+               if line == null then return
+               var current_block = v.current_block.as(not null)
                var lprev = line.prev
-               if lprev != null then v.current_block.split(lprev)
-               line.next.clear
-               var block = v.current_block.split(line.as(not null))
+               if lprev != null then current_block.split(lprev)
+               line.next.as(not null).clear
+               var block = current_block.split(line)
                var kind = new BlockHeadline(block)
                kind.depth = 2
                kind.transform_headline(block)
                block.kind = kind
-               v.current_block.remove_leading_empty_lines
-               v.current_line = v.current_block.first_line
+               current_block.remove_leading_empty_lines
+               v.current_line = current_block.first_line
        end
 end
 
@@ -1895,19 +1898,20 @@ abstract class LineList
                        line = line.next
                end
                # build list block
+               var current_block = v.current_block.as(not null)
                var list: MDBlock
                if line != null then
-                       list = v.current_block.split(line.prev.as(not null))
+                       list = current_block.split(line.prev.as(not null))
                else
-                       list = v.current_block.split(v.current_block.last_line.as(not null))
+                       list = current_block.split(current_block.last_line.as(not null))
                end
                var kind = block_kind(list)
                list.kind = kind
-               list.first_line.prev_empty = false
-               list.last_line.next_empty = false
+               list.first_line.as(not null).prev_empty = false
+               list.last_line.as(not null).next_empty = false
                list.remove_surrounding_empty_lines
-               list.first_line.prev_empty = false
-               list.last_line.next_empty = false
+               list.first_line.as(not null).prev_empty = false
+               list.last_line.as(not null).next_empty = false
                kind.init_block(v)
                var block = list.first_block
                while block != null do
@@ -1962,7 +1966,7 @@ abstract class Token
        var char: Char
 
        # Output that token using `MarkdownEmitter::decorator`.
-       fun emit(v: MarkdownEmitter) do v.decorator.add_char(v, char)
+       fun emit(v: MarkdownProcessor) do v.decorator.add_char(v, char)
 end
 
 # A token without a specific meaning.
@@ -2030,14 +2034,15 @@ abstract class TokenCode
        super Token
 
        redef fun emit(v) do
+               var current_text = v.current_text.as(not null)
                var a = pos + next_pos + 1
-               var b = v.processor.find_token(v.current_text.as(not null), a, self)
+               var b = v.find_token(current_text, a, self)
                if b > 0 then
                        v.current_pos = b + next_pos
-                       while a < b and v.current_text[a] == ' ' do a += 1
+                       while a < b and current_text[a] == ' ' do a += 1
                        if a < b then
-                               while v.current_text[b - 1] == ' ' do b -= 1
-                               v.decorator.add_span_code(v, v.current_text.as(not null), a, b)
+                               while current_text[b - 1] == ' ' do b -= 1
+                               v.decorator.add_span_code(v, current_text, a, b)
                        end
                else
                        v.addc char
@@ -2090,11 +2095,12 @@ abstract class TokenLinkOrImage
        end
 
        # Emit the hyperlink as link or image.
-       private fun emit_hyper(v: MarkdownEmitter) is abstract
+       private fun emit_hyper(v: MarkdownProcessor) is abstract
 
        # Check if the link is a valid link.
-       private fun check_link(v: MarkdownEmitter, out: FlatBuffer, start: Int, token: Token): Int do
+       private fun check_link(v: MarkdownProcessor, out: FlatBuffer, start: Int, token: Token): Int do
                var md = v.current_text
+               if md == null then return -1
                var pos
                if token isa TokenLink then
                        pos = start + 1
@@ -2109,9 +2115,9 @@ abstract class TokenLinkOrImage
                pos += 1
                pos = md.skip_spaces(pos)
                if pos < start then
-                       var tid = name.write_to_string.to_lower
-                       if v.processor.link_refs.has_key(tid) then
-                               var lr = v.processor.link_refs[tid]
+                       var tid = name.as(not null).write_to_string.to_lower
+                       if v.link_refs.has_key(tid) then
+                               var lr = v.link_refs[tid]
                                is_abbrev = lr.is_abbrev
                                link = lr.link
                                comment = lr.title
@@ -2159,16 +2165,16 @@ abstract class TokenLinkOrImage
                        else
                                id = name
                        end
-                       var tid = id.write_to_string.to_lower
-                       if v.processor.link_refs.has_key(tid) then
-                               var lr = v.processor.link_refs[tid]
+                       var tid = id.as(not null).write_to_string.to_lower
+                       if v.link_refs.has_key(tid) then
+                               var lr = v.link_refs[tid]
                                link = lr.link
                                comment = lr.title
                        end
                else
-                       var tid = name.write_to_string.replace("\n", " ").to_lower
-                       if v.processor.link_refs.has_key(tid) then
-                               var lr = v.processor.link_refs[tid]
+                       var tid = name.as(not null).write_to_string.replace("\n", " ").to_lower
+                       if v.link_refs.has_key(tid) then
+                               var lr = v.link_refs[tid]
                                link = lr.link
                                comment = lr.title
                                pos = old_pos
@@ -2220,7 +2226,7 @@ class TokenHTML
 
        # Is the HTML valid?
        # Also take care of link and mailto shortcuts.
-       private fun check_html(v: MarkdownEmitter, out: FlatBuffer, md: Text, start: Int): Int do
+       private fun check_html(v: MarkdownProcessor, out: FlatBuffer, md: Text, start: Int): Int do
                # check for auto links
                var tmp = new FlatBuffer
                var pos = md.read_until(tmp, start + 1, ':', ' ', '>', '\n')
@@ -2301,7 +2307,7 @@ class TokenEscape
 
        redef fun emit(v) do
                v.current_pos += 1
-               v.addc v.current_text[v.current_pos]
+               v.addc v.current_text.as(not null)[v.current_pos]
        end
 end
 
index 41d28c1..83e457d 100644 (file)
@@ -49,9 +49,9 @@ var to = opt_to.value
 if to == null or to == "html" then
        # Noop
 else if to == "md" then
-       processor.emitter.decorator = new MdDecorator
+       processor.decorator = new MdDecorator
 else if to == "man" then
-       processor.emitter.decorator = new ManDecorator
+       processor.decorator = new ManDecorator
 else
        print "Unknown output format: {to}"
        exit 1
index ad58649..b08f5b4 100644 (file)
@@ -2735,7 +2735,7 @@ class TestHTMLDecorator
 # c
 """
                var proc = new MarkdownProcessor
-               var decorator = proc.emitter.decorator.as(HTMLDecorator)
+               var decorator = proc.decorator.as(HTMLDecorator)
                proc.process(test)
                var res = ""
                for id, headline in decorator.headlines do
@@ -2852,7 +2852,7 @@ class TestBlockLocation
                ]
                var string =
                "# Title\n* li1\n* li2"
-               proc.emitter.decorator = new TestBlockDecorator(stack)
+               proc.decorator = new TestBlockDecorator(stack)
                proc.process(string)
        end
 
@@ -2870,7 +2870,7 @@ some code
 
 1. li1
 1. li2"""
-               proc.emitter.decorator = new TestBlockDecorator(stack)
+               proc.decorator = new TestBlockDecorator(stack)
                proc.process(string)
        end
 
@@ -2879,7 +2879,7 @@ some code
                        "BlockHeadline: 1,1--1,8",
                        "BlockHeadline: 3,1--3,10"]
                var string ="""# Title\n\n## Title 2"""
-               proc.emitter.decorator = new TestBlockDecorator(stack)
+               proc.decorator = new TestBlockDecorator(stack)
                proc.process(string)
        end
 end
index 9f3097c..ea174c2 100644 (file)
@@ -41,11 +41,11 @@ end
 redef class Decorator
 
        # Renders a `[[wikilink]]` item.
-       fun add_wikilink(v: EMITTER, token: TokenWikiLink) do
+       fun add_wikilink(v: PROCESSOR, token: TokenWikiLink) do
                if token.name != null then
-                       v.add "[[{token.name.to_s}|{token.link.to_s}]]"
+                       v.add "[[{token.name.as(not null).to_s}|{token.link.as(not null).to_s}]]"
                else
-                       v.add "[[{token.link.to_s}]]"
+                       v.add "[[{token.link.as(not null).to_s}]]"
                end
        end
 end
@@ -72,6 +72,7 @@ class TokenWikiLink
 
        redef fun check_link(v, out, start, token) do
                var md = v.current_text
+               if md == null then return -1
                var pos = start + 2
                var tmp = new FlatBuffer
                pos = md.read_md_link_id(tmp, pos)
index 5d9a89d..0c3acac 100644 (file)
@@ -52,8 +52,8 @@ class Matrix
 
                for j in height.times do assert items[j].length == width
 
-               for j in height.times do
-                       for i in width.times do
+               for j in [0..height[ do
+                       for i in [0..width[ do
                                self[j, i] = items[j][i]
                        end
                end
@@ -123,8 +123,8 @@ class Matrix
                assert size >= 0
 
                var matrix = new Matrix(size, size)
-               for i in size.times do
-                       for j in size.times do
+               for i in [0..size[ do
+                       for j in [0..size[ do
                                matrix[j, i] = if i == j then 1.0 else 0.0
                        end
                end
@@ -213,13 +213,7 @@ class Matrix
                assert self.width == other.height
 
                var out = new Matrix(other.width, self.height)
-               for j in self.height.times do
-                       for i in other.width.times do
-                               var sum = items[0].zero
-                               for k in self.width.times do sum += self[j, k] * other[k, i]
-                               out[j, i] = sum
-                       end
-               end
+               out.items.mul(items, other.items, self.width, self.height, other.width)
                return out
        end
 
@@ -335,4 +329,14 @@ private extern class NativeDoubleArray `{ double* `}
                        r = r * 3 / 2 + (long)(i*1024.0);
                return r;
        `}
+
+       fun mul(a, b: NativeDoubleArray, a_width, a_height, b_width: Int) `{
+               int i, j, k;
+               for (j = 0; j < a_height; j ++)
+                       for (i = 0; i < b_width; i ++) {
+                               float sum = 0.0;
+                               for (k = 0; k < a_width; k ++) sum += a[j*a_width + k] * b[k*b_width + i];
+                               self[j*b_width + i] = sum;
+                       }
+       `}
 end
index a9bf8b8..d42fa2a 100644 (file)
@@ -159,18 +159,69 @@ redef class Matrix
        #
        # This service aims to respect the world axes and logic of `gamnit`,
        # it may not correspond to all needs.
+       #
+       # The returned `Matrix` may be cached, it must not be modified.
        new gamnit_euler_rotation(pitch, yaw, roll: Float)
        do
+               if pitch == 0.0 and yaw == 0.0 and roll == 0.0 then
+                       return once new Matrix.identity(4)
+               end
+
+               if rotation_pitch == pitch and rotation_yaw == yaw and rotation_roll == roll then
+                       var rot = rotation_matrix_cache
+                       if rot != null then return rot
+               end
+
                var c1 = pitch.cos
                var s1 = pitch.sin
                var c2 = yaw.cos
                var s2 = yaw.sin
                var c3 = roll.cos
                var s3 = roll.sin
-               return new Matrix.from(
-                       [[          c2*c3,          -c2*s3,   -s2, 0.0],
-                        [ c1*s3+c3*s1*s2,  c1*c3-s1*s2*s3, c2*s1, 0.0],
-                        [-s1*s3+c1*c3*s2, -c3*s1-c1*s2*s3, c1*c2, 0.0],
-                        [            0.0,             0.0,   0.0, 1.0]])
+
+               var rot = new Matrix(4, 4)
+               rot.items.mat4_set(
+                                 c2*c3,          -c2*s3,   -s2, 0.0,
+                        c1*s3+c3*s1*s2,  c1*c3-s1*s2*s3, c2*s1, 0.0,
+                       -s1*s3+c1*c3*s2, -c3*s1-c1*s2*s3, c1*c2, 0.0,
+                                   0.0,             0.0,   0.0, 1.0)
+
+               rotation_matrix_cache = rot
+               rotation_pitch = pitch
+               rotation_yaw = yaw
+               rotation_roll = roll
+               return rot
        end
 end
+
+redef class NativeDoubleArray
+       fun mat4_set(f0, f1, f2, f3, f4, f5, f6, f7, f8, f9, f10, f11, f12, f13, f14, f15: Float) `{
+               self[ 0] =  f0;
+               self[ 1] =  f1;
+               self[ 2] =  f2;
+               self[ 3] =  f3;
+
+               self[ 4] =  f4;
+               self[ 5] =  f5;
+               self[ 6] =  f6;
+               self[ 7] =  f7;
+
+               self[ 8] =  f8;
+               self[ 9] =  f9;
+               self[10] = f10;
+               self[11] = f11;
+
+               self[12] = f12;
+               self[13] = f13;
+               self[14] = f14;
+               self[15] = f15;
+       `}
+end
+
+redef class Sys
+
+       private var rotation_matrix_cache: nullable Matrix = null
+       private var rotation_pitch = 0.0
+       private var rotation_yaw = 0.0
+       private var rotation_roll = 0.0
+end
diff --git a/lib/mnit/android/android_app.nit b/lib/mnit/android/android_app.nit
deleted file mode 100644 (file)
index e78da16..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Copyright 2012-2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Impements the services of `mnit:app` using the API from the Android ndk
-module android_app is android_manifest_activity """
-               android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
-               android:configChanges="orientation|keyboardHidden"
-"""
-
-import mnit
-import mnit::opengles1
-import ::android::game
-intrude import ::android::input_events
-
-in "C" `{
-       #include <EGL/egl.h>
-
-       extern EGLDisplay mnit_display;
-       extern EGLSurface mnit_surface;
-       extern EGLContext mnit_context;
-       extern EGLConfig mnit_config;
-       extern int32_t mnit_width;
-       extern int32_t mnit_height;
-`}
-
-redef class App
-       redef fun init_window
-       do
-               display = new Opengles1Display
-
-               super
-       end
-
-       redef fun full_frame do if not paused then super
-
-       redef fun generate_input do poll_looper 0
-
-       redef fun native_input_key(event)
-       do
-               return input(event)
-       end
-
-       redef fun native_input_motion(event)
-       do
-               var ie = new AndroidMotionEvent(event)
-               var handled = input(ie)
-
-               if not handled then
-                       input ie.acting_pointer
-               end
-
-               return handled
-       end
-end
diff --git a/lib/mnit/android/android_assets.nit b/lib/mnit/android/android_assets.nit
deleted file mode 100644 (file)
index b82d387..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Copyright 2012-2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Implements the `mnit::assets` services with a wraper around the filesystem
-# API provided by the Android ndk.
-#
-# This module relies heavily on 3 C libraries:
-# * The Android ndk
-# * zlib (which is included in the Android ndk)
-# * libpng which must be provided by the Nit compilation framework
-module android_assets
-
-import mnit
-import android_app
-intrude import android::assets_and_resources
-intrude import android::load_image
-
-extern class AndroidAsset in "C" `{struct AAsset*`}
-
-       fun read(count: Int): nullable String import String.as nullable, CString.to_s `{
-               char *buffer = malloc(sizeof(char) * (count+1));
-               int read = AAsset_read(self, buffer, count);
-               if (read != count)
-                       return null_String();
-               else
-               {
-                       buffer[count] = '\0';
-                       return String_as_nullable(CString_to_s(buffer));
-               }
-       `}
-
-       fun length: Int `{
-               return AAsset_getLength(self);
-       `}
-
-       fun to_fd: Int `{
-               off_t start;
-               off_t length;
-               int fd = AAsset_openFileDescriptor(self, &start, &length);
-               return fd;
-       `}
-
-       fun close `{
-               AAsset_close(self);
-       `}
-end
-
-redef class App
-       redef fun try_loading_asset(path)
-       do
-               # Load images with the Java API
-               var ext = path.file_extension
-               if ext == "png" or ext == "jpg" or ext == "jpeg" then
-                       jni_env.push_local_frame 4
-
-                       var bmp = asset_manager.bitmap(path)
-                       var buf = bmp.copy_pixels(true, true)
-                       var w2 = bmp.width.next_pow(2)
-                       var h2 = bmp.height.next_pow(2)
-                       var png = new Opengles1Image.from_data(buf.native_array, bmp.width, bmp.height, w2, h2, true)
-
-                       buf.destroy
-                       jni_env.pop_local_frame
-                       return png
-               end
-
-               var a = load_asset_from_apk(path)
-               if a != null then
-                       if ext == "txt" then
-                               var len = a.length
-                               var txt = a.read(len)
-                               return txt
-                       end
-               else
-                       print "didn't get asset {path}"
-               end
-
-               return null
-       end
-
-       protected fun load_asset_from_apk(path: String): nullable AndroidAsset import String.to_cstring, AndroidAsset.as nullable, native_app_glue  `{
-               struct android_app *native_app_glue = App_native_app_glue(self);
-               struct AAsset* a = AAssetManager_open(native_app_glue->activity->assetManager, String_to_cstring(path), AASSET_MODE_BUFFER);
-               if (a == NULL)
-               {
-                       LOGW("nit d g a");
-                       return null_AndroidAsset();
-               }
-               else
-               {
-                       return AndroidAsset_as_nullable(a);
-               }
-       `}
-end
-
-redef class Opengles1Image
-       private new from_data(pixels: Pointer, width, height, width_pow2, height_pow2: Int, has_alpha: Bool) `{
-               return mnit_opengles_load_image((const uint_least32_t *)pixels,
-                       width, height, width_pow2, height_pow2, has_alpha);
-       `}
-end
diff --git a/lib/mnit/android/android_opengles1.nit b/lib/mnit/android/android_opengles1.nit
deleted file mode 100644 (file)
index b85db15..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-# This file is part of NIT (http://www.nitlanguage.org).
-#
-# Copyright 2012-2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Adapts OpenGL ES 1.0 for use on Android by offering services to get
-# a handler to the native display and window.
-module android_opengles1 is ldflags "-lEGL -lGLESv1_CM"
-
-import android_app
-
-in "C" `{
-       #include <android_native_app_glue.h>
-
-       NativeWindowType mnit_window;
-       EGLNativeDisplayType mnit_native_display = EGL_DEFAULT_DISPLAY;
-`}
-
-redef class Opengles1Display
-       redef fun midway_init(format) import app_native_window `{
-               mnit_window = Opengles1Display_app_native_window(self);
-               if (ANativeWindow_setBuffersGeometry(mnit_window, 0, 0, (EGLint)format) != 0) {
-                       LOGW("Unable to ANativeWindow_setBuffersGeometry");
-               }
-       `}
-
-       private fun app_native_window: ANativeWindow do return app.native_app_glue.window
-end
diff --git a/lib/mnit/assets.nit b/lib/mnit/assets.nit
deleted file mode 100644 (file)
index b58c0be..0000000
+++ /dev/null
@@ -1,67 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2011-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Manages all assets usable by an Mnit app
-module assets
-
-import mnit_app
-import mnit::display
-
-# General asset
-interface MnitAsset
-end
-
-# An String is an asset, returned from a text file
-redef class String
-       super MnitAsset
-end
-
-# An Image is an asset
-redef interface Image
-       super MnitAsset
-end
-
-redef class App
-       # Load a genereal asset from file name
-       # Will find the file within the assets/ directory
-       # Crashes if file not found
-       fun load_asset( id: String ): MnitAsset
-       do
-               var asset = try_loading_asset( id )
-               if asset == null then # error
-                       print_error "asset <{id}> could not be loaded."
-                       abort
-               else
-                       return asset
-               end
-       end
-
-       # Load an Image assets
-       # Crashes if file not found or not an image
-       fun load_image( id: String ): Image
-       do
-               var asset = load_asset( id )
-               if asset isa Image then
-                       return asset
-               else
-                       print_error "asset <{id}> is not an image."
-                       abort
-               end
-       end
-
-       # Load an assets without error if not found
-       fun try_loading_asset( id: String ): nullable MnitAsset is abstract
-end
diff --git a/lib/mnit/display.nit b/lib/mnit/display.nit
deleted file mode 100644 (file)
index a871b50..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2011-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Defines abstract display classes
-module display
-
-import mnit::input
-
-# Any class with a size
-interface Sized
-       fun width: Int is abstract
-       fun height: Int is abstract
-end
-
-# General image class, will be specialized for each classes
-interface Image
-       super Sized
-
-       fun destroy is abstract
-
-       # Scale this image when blit
-       var scale: Float is abstract, writable
-
-       # Use blending on this image?
-       var blended: Bool is abstract, writable
-
-       # Get another image from this one
-       fun subimage( x, y, w, h: Int ): Image is abstract
-end
-
-# General class for everything drawable to
-# Is used by drawable images and display
-interface Drawable
-       type I: Image
-
-       # Call to prepare for drawing
-       fun begin is abstract
-
-       # Call when drawing is finished
-       fun finish is abstract
-
-       # Set viewport for drawing
-       fun set_viewport( x, y, w, h: Int ) is abstract
-
-       # Draw image on self, for top left position
-       fun blit(image: I, x, y: Numeric) is abstract
-
-       # Draw image on self, for top left position but scaled
-       # the width and height of the target rectangle is specified
-       fun blit_scaled(image: Image, x, y, w, h: Numeric)
-       do
-               var fx = x.to_f
-               var fy = y.to_f
-               var fx2 = fx + w.to_f
-               var fy2 = fy + h.to_f
-               blit_stretched(image, fx, fy, fx, fy2, fx2, fy2, fx2, fy)
-       end
-
-       # Draw image, centered at position
-       fun blit_centered(image: I, x, y: Numeric) is abstract
-
-       # Draw image, centered at position but rotated
-       fun blit_rotated(image: I, x, y: Numeric, angle: Float) is abstract
-
-       # Draw image, centered, rotated and scaled
-       fun blit_rotated_scaled(image: I, x, y: Numeric, angle, scale: Float) is abstract
-
-       # Draw image by specifying the positon of each image corners
-       # Corners are in counter-clockwise order stating top left
-       # a is top left, b is bottom left, c is bottom right and d is top right
-       # ~~~raw
-       # a-d
-       # | |
-       # b-c
-       # ~~~
-       fun blit_stretched(image: I, ax, ay, bx, by, cx, cy, dx, dy: Numeric)
-               is abstract
-
-       # Clear entire window with given color
-       fun clear( r, g, b: Float ) is abstract
-end
-
-# General display class, is sized and drawable
-interface Display
-       super Sized
-       super Drawable
-end
-
-# General drawable display image
-interface DrawableImage
-       super Drawable
-       super Image
-end
diff --git a/lib/mnit/image_set.nit b/lib/mnit/image_set.nit
deleted file mode 100644 (file)
index f0a955e..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Utility module used by the svg_to_png_and_nit tool. It is imported
-# by each generated modules.
-module image_set
-
-import assets
-
-# A set of images, look for sub-classes in projects using svg_to_png_and_nit
-abstract class ImageSet
-
-       # Load images to fill this image set
-       fun load_all(app: App) is abstract
-end
index e332548..7987c27 100644 (file)
@@ -16,7 +16,6 @@
 # Implemented independantly for each platforms and technologies.
 module input
 
-import sdl is conditional(linux)
 import android::input_events is conditional(android)
 
 # Input to the App, propagated through `App::input`.
diff --git a/lib/mnit/linux/linux.nit b/lib/mnit/linux/linux.nit
deleted file mode 100644 (file)
index d6515d1..0000000
+++ /dev/null
@@ -1,22 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2011-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Linux support for MNit
-module linux
-
-import linux_app
-import linux_opengles1
-import linux_assets
diff --git a/lib/mnit/linux/linux_opengles1.nit b/lib/mnit/linux/linux_opengles1.nit
deleted file mode 100644 (file)
index f94a0e0..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2011-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-module linux_opengles1 is pkgconfig("x11")
-
-import mnit::opengles1
-
-import sdl
-
-in "C" `{
-       NativeWindowType mnit_window;
-       EGLNativeDisplayType mnit_native_display;
-
-       SDL_Surface* mnit_sdl_surface;
-`}
-
-redef class Display
-       fun wanted_width: Int do return 800
-       fun wanted_height: Int do return 600
-end
-
-redef class Opengles1Display
-
-       # display managing the window, events, fonts? and image loading?
-       var sdl_display: SDLDisplay
-
-       redef fun extern_init do
-               sdl_display = new SDLDisplay( wanted_width, wanted_height )
-               init_from_sdl( sdl_display )
-               return super
-       end
-
-       fun init_from_sdl( sdl_display: SDLDisplay ): Bool `{
-               mnit_sdl_surface = sdl_display;
-
-               mnit_window = (NativeWindowType)XOpenDisplay(NULL);
-               mnit_native_display = (EGLNativeDisplayType)mnit_window;
-
-               if (!mnit_window)
-               {
-                       fprintf(stderr, "ERROR: unable to get display!n");
-                       return 3;
-               }
-
-               SDL_SysWMinfo mnit_sys_info;
-               SDL_VERSION(&mnit_sys_info.version);
-               if(SDL_GetWMInfo(&mnit_sys_info) <= 0)
-               {
-                       printf("Unable to get window handle");
-                       return 0;
-               }
-
-               mnit_window = (EGLNativeWindowType)mnit_sys_info.info.x11.window;
-
-               return 0;
-       `}
-
-       redef fun close
-       do
-               super
-
-               sdl_display.destroy
-       end
-end
-
-redef extern class Opengles1Image
-       new from_sdl_image( sdl_image: SDLImage ) `{
-               return mnit_opengles_load_image( sdl_image->pixels,
-                       sdl_image->w, sdl_image->h,
-                       sdl_image->w, sdl_image->h, sdl_image->format->Amask );
-       `}
-
-       # using sdl
-       new from_file( path: String ) import String.to_cstring `{
-               SDL_Surface *sdl_image;
-               struct mnit_opengles_Texture *opengles_image;
-
-               sdl_image = IMG_Load( String_to_cstring( path ) );
-               if ( !sdl_image ) {
-                       fprintf(stderr, "SDL failed to load image <%s>: %s\n", String_to_cstring(path), IMG_GetError());
-                       return NULL;
-               } else {
-                       opengles_image = mnit_opengles_load_image( sdl_image->pixels,
-                               sdl_image->w, sdl_image->h,
-                               sdl_image->w, sdl_image->h, sdl_image->format->Amask );
-                       SDL_FreeSurface(sdl_image);
-                       return opengles_image;
-               }
-       `}
-end
diff --git a/lib/mnit/mnit.nit b/lib/mnit/mnit.nit
deleted file mode 100644 (file)
index 98641f7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2011-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Multiplatform game framework for Nit
-module mnit
-
-import mnit_app
-import assets
-import numbers
-import mnit_fps
diff --git a/lib/mnit/mnit_app.nit b/lib/mnit/mnit_app.nit
deleted file mode 100644 (file)
index 4ae8b89..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2011-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# General Mnit application structure
-module mnit_app
-
-import ::app
-import mnit::display
-
-# An App instance serves as base to every Mnit projects.
-#
-# This class is redefed by plateforme modules and so
-# App can be specialized directly in the user app.
-redef class App
-       type D: Display
-       type I: Image
-
-       # Display to use by apps
-       # Is null if the display is not available or not yet ready
-       var display: nullable D = null is protected writable
-
-       # Received quit order
-       var quit: Bool = false is writable
-
-       # App is visible? (vs minimized or in background)
-       fun visible: Bool is abstract
-
-       # Invoqued at each frame
-       # Usually you want to redef frame_core instead of this
-       fun full_frame
-       do
-               var display = self.display
-               if display != null then
-                       display.begin
-                       frame_core( display )
-                       display.finish
-               end
-       end
-
-       # Main frame method to redef
-       # Is called between readying display and flipping it
-       fun frame_core( display: D ) do end
-
-       # Receive and deal with all inputs
-       fun input( event: InputEvent ): Bool
-       do
-               return false
-       end
-
-       # Internal method to generate inputs
-       protected fun generate_input
-       do
-               if "NIT_TESTING".environ == "true" then exit 0
-               print "Compiled without platform"
-               exit 1
-       end
-
-       # Main app loop
-       # Usually you want to redef frame_core instead of this
-       redef fun run
-       do
-               while not quit do
-                       generate_input
-                       full_frame
-               end
-       end
-end
diff --git a/lib/mnit/mnit_fps.nit b/lib/mnit/mnit_fps.nit
deleted file mode 100644 (file)
index f4abd92..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Frame-rate control for applications
-module mnit_fps
-
-import mnit_app
-private import realtime
-
-redef class App
-       # Limit the frame-rate to a given frequency
-       # This basically limits how much `frame_core` is called per second.
-       # Zero (or a negative value) means no limit.
-       #
-       # Applications can modify this value even during the main-loop.
-       var maximum_fps = 60.0 is writable
-
-       # Current frame-rate
-       # Updated each 5 seconds.
-       var current_fps = 0.0
-
-       redef fun full_frame
-       do
-               super
-               limit_fps
-       end
-
-       # The clock for limit_fps
-       private var clock = new Clock
-
-       # Number of frames since the last deadline
-       # Used tocompute `current_fps`.
-       private var frame_count = 0
-
-       # Deadline used to compute `current_fps`
-       private var frame_count_deadline = 0.0
-
-       # Check and sleep to maitain a frame-rate bellow `maximum_fps`
-       # Also periodically uptate `current_fps`
-       # Is automatically called at the end of `full_frame`.
-       fun limit_fps
-       do
-               var t = clock.total
-               if t >= frame_count_deadline then
-                       var cfps = frame_count.to_f / 5.0
-                       self.current_fps = cfps
-                       frame_count = 0
-                       frame_count_deadline = t + 5.0
-               end
-               frame_count += 1
-
-               var mfps = maximum_fps
-               if mfps <= 0.0 then return
-               var lapse = clock.lapse
-               var dt = lapse.to_f
-               var target_dt = 1.0 / mfps
-               if dt < target_dt then
-                       var sleep_t = target_dt - dt
-                       sleep_t.sleep
-                       clock.lapse
-               end
-       end
-end
diff --git a/lib/mnit/mnit_injected_input.nit b/lib/mnit/mnit_injected_input.nit
deleted file mode 100644 (file)
index da2e33d..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Injection of input events that are read frm a file.
-# This cloud be used to replay an execution of a mnit application to debug or to benchmark it.
-#
-# The input file is given through the environment variable `MNIT_READ_INPUT`
-#
-# In order to reproduce executions, the behavior of the application must be deterministic
-# for a given sequence of inputs.
-# The main source of differences in executions is caused by the `rand` function,
-# Set the environment variable `NIT_SRAND` to a value to force srand to be initialized with this value.
-#
-# The input event file is made of event descriptions, one event by line.
-#
-# ~~~raw
-# 10 click 10.0 20.0
-# 20 quit
-# ~~~
-#
-# The first field, an integer, is the delay (in frame count) since the previous event
-# 0 means the event is launched in the same frame that the previous one.
-#
-# The second field, a string, is the kind of the event.
-# Currently only `click` for PointerEvent and `quit` for QuitEvent are recognized.
-#
-# The following fields are the arguments that specific for each kind of event.
-#
-# * `quit` does not have arguments
-# * `click` has 2 float arguments: `PointerEvent::x` and `PointerEvent::y`
-module mnit_injected_input
-
-import mnit_app
-
-# Concrete event objects that are manually instantiated.
-# Most InputEvent are extern classes and specific to one platform.
-#
-# However, subclasses of this `DummyInputEvent` are genuine Nit
-# classes and can be instantiated, and more easily manipulated by the programmer.
-interface DummyInputEvent
-       super InputEvent
-end
-
-# A concrete QuitEvent
-class DummyQuitEvent
-       super DummyInputEvent
-       super QuitEvent
-       redef fun to_s do return "quit"
-end
-
-# A concrete PointerEvent
-class DummyPointerEvent
-       super DummyInputEvent
-       super PointerEvent
-       redef var x: Float
-       redef var y: Float
-       redef fun pressed do return true
-       redef fun to_s do return "click {x} {y}"
-end
-
-redef class App
-       # The stream where injected inputs are read
-       private var injected_input_stream: nullable Reader = null
-
-       redef fun setup
-       do
-               var input = "MNIT_READ_INPUT".environ
-               if input != "" then
-                       injected_input_stream = new FileReader.open(input)
-                       print "GET injected_input_stream {input}"
-               end
-
-               super
-       end
-
-       # Number of frames before the next injected input
-       private var wait_next_input = 0
-
-       # What is the input to inject when `wait_next_input` become 0
-       private var next_input: nullable DummyInputEvent
-
-       redef fun full_frame
-       do
-               if injected_input_stream != null then generate_injected_input
-               super
-       end
-
-       # Internal method to generate injected input events
-       # Is called before each frame
-       # Return `true` is an input event was injexted
-       fun generate_injected_input: Bool
-       do
-               var res = false
-               loop
-                       if wait_next_input > 0 then
-                               wait_next_input -= 1
-                               return res
-                       end
-                       var n = next_input
-                       if n != null then
-                               print "INPUT {n}"
-                               res = true
-                               input(n)
-                       end
-                       var l = injected_input_stream.read_line
-                       if l == "" then
-                               print "END OF INPUTS"
-                               injected_input_stream.close
-                               injected_input_stream = null
-                               input(new DummyQuitEvent)
-                               return true
-                       end
-                       print "read {l}"
-                       var fs = l.split(" ")
-                       if fs.length < 2 then
-                               print "BAD EVENT SPEC {l}"
-                               res = true
-                               input(new DummyQuitEvent)
-                       end
-                       wait_next_input = fs[0].to_i
-                       if fs[1] == "click" then
-                               next_input = new DummyPointerEvent(fs[2].to_f, fs[3].to_f)
-                       else if fs[1] == "quit" then
-                               next_input = new DummyQuitEvent
-                       else
-                               print "UNKNOWN EVENT {fs[1]} (on {l})"
-                               res = true
-                               input(new DummyQuitEvent)
-                               return true
-                       end
-                       print "WAIT {wait_next_input} for {next_input.to_s}"
-               end
-       end
-end
diff --git a/lib/mnit/mnit_null.nit b/lib/mnit/mnit_null.nit
deleted file mode 100644 (file)
index b0a8ee0..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Dummy mnit platform for headless executions
-#
-# Extends `mnit_injected_input` so that the whole application is simulated.
-# This permits more debugging and benchmarking, even without screen (thinks
-# regression tests).
-#
-# Assets loading and display operations are executed with an empty body,
-# Except on frames that have some injected input events, in theses the
-# description of all blit operations are printed to screen.
-module mnit_null
-
-import mnit_app
-intrude import mnit_injected_input
-import mnit_fps
-import assets
-
-# Dummy display that just display nothing
-class NullDisplay
-       super Display
-       redef var width = 640
-       redef var height = 480
-       redef fun begin do end
-       redef fun finish do end
-       redef fun clear(r,g,b)
-       do
-               if not app.verbose then return
-               print "CLEAR rgb({r};{g};{b})"
-       end
-       redef fun blit(image, x, y)
-       do
-               if not app.verbose then return
-               print "BLIT {image} ({x},{y})"
-       end
-       redef fun blit_centered(image, x, y)
-       do
-               if not app.verbose then return
-               print "BLIT {image} CENTERED ({x},{y})"
-       end
-       redef fun blit_rotated(image, x, y, a)
-       do
-               if not app.verbose then return
-               print "BLIT {image} CENTERED ({x},{y}) ROTATED {a}"
-       end
-       redef fun blit_rotated_scaled(image, x, y, a, s)
-       do
-               if not app.verbose then return
-               print "BLIT {image} CENTERED ({x},{y}) ROTATED {a} SCALED {s}"
-       end
-       redef fun blit_scaled(image, x, y, w, h)
-       do
-               if not app.verbose then return
-               print "BLIT {image} ({x},{y}) -- ({x+w},{y+h})"
-       end
-       redef fun blit_stretched(image, ax, ay, bx, by, cx, cy, dx, dy)
-       do
-               if not app.verbose then return
-               print "BLIT {image} ({ax},{ay}) -- ({bx},{by}) -- ({cx},{cy}) -- ({dx},{dy})"
-       end
-end
-
-# Dummy image for a NullDisplay
-class NullImage
-       super Image
-       var path: String
-       redef fun to_s do return path
-       redef var scale = 1.0 is redef writable
-       redef var width = 32
-       redef var height = 32
-end
-
-redef class App
-       redef fun setup
-       do
-               super
-               display = new NullDisplay
-               on_create
-       end
-
-       # Force the printing of blit operations
-       # So traces of execution can be generated
-       # Managed by `generate_injected_input`
-       private var verbose = false
-
-       redef fun limit_fps do return
-
-       redef fun generate_injected_input
-       do
-               var res = super
-               verbose = res
-               return res
-       end
-       redef fun generate_input
-       do
-               # An implementation is required but to avoid infinite loops
-               # we just `quit` when the stream is closed.
-               if injected_input_stream == null then
-                       print "END OF INPUT"
-                       quit = true
-               end
-       end
-
-       redef fun try_loading_asset(path)
-       do
-               print "LOAD {path}"
-               return new NullImage(path)
-       end
-end
diff --git a/lib/mnit/numbers.nit b/lib/mnit/numbers.nit
deleted file mode 100644 (file)
index f3bdece..0000000
+++ /dev/null
@@ -1,64 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Helper services to draw numbers on screen
-module numbers
-
-import assets
-
-# A set of images to draw numbers
-class NumberImages
-
-       # Images from 0 to 9
-       var imgs: Array[Image]
-end
-
-redef class App
-       # Load a `NumberImages` from the assets
-       fun load_numbers(path: String): NumberImages
-       do
-               var imgs = new Array[Image]
-               for d in [0..9] do imgs.add(load_image(path.replace("#", d.to_s)))
-               return new NumberImages(imgs)
-       end
-end
-
-redef class Display
-       fun blit_number(imgs: NumberImages, number: Int, x, y: Int, centered: nullable Bool)
-       do
-               var str = number.to_s
-
-               if centered == true then
-                       var w = 0
-                       for c in str.chars do
-                               var d = c.code_point-'0'.code_point
-                               var img = imgs.imgs[d]
-                               w += (img.width.to_f * img.scale).to_i
-                       end
-                       x -= w / 2
-                       var img = imgs.imgs.first
-                       y -= (img.width.to_f * img.scale).to_i / 2
-               end
-
-               for c in str.chars do
-                       var d = c.code_point-'0'.code_point
-                       assert d >= 0 and d <= 9
-                       var img = imgs.imgs[d]
-                       blit(img, x, y)
-                       x += (img.width.to_f * img.scale).to_i
-               end
-       end
-end
diff --git a/lib/mnit/opengles1.nit b/lib/mnit/opengles1.nit
deleted file mode 100644 (file)
index e2b02bc..0000000
+++ /dev/null
@@ -1,471 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2011-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# OpenGL ES1 general support (most of it)
-module opengles1 is pkgconfig("glesv1_cm", "egl")
-
-import mnit::display
-
-in "C header" `{
-       #include <EGL/egl.h>
-       #include <GLES/gl.h>
-
-       EGLDisplay mnit_display;
-       EGLSurface mnit_surface;
-       EGLContext mnit_context;
-       EGLConfig mnit_config;
-       int32_t mnit_width;
-       int32_t mnit_height;
-
-       struct mnit_opengles_Texture {
-               GLuint texture;
-
-               /* offsets on source texture */
-               float src_xo, src_yo, src_xi, src_yi;
-
-               /* destination width and height */
-               int width, height;
-
-               /* may vary depending on scaling */
-               int center_x, center_y;
-
-               float scale;
-               int blended;
-       };
-
-       struct mnit_opengles_DrawableTexture {
-               struct mnit_opengles_Texture super;
-               GLuint fbo;
-               GLuint depth;
-               GLuint color;
-       };
-
-       GLenum mnit_opengles_error_code;
-
-       struct mnit_opengles_Texture *mnit_opengles_load_image(
-               const uint_least32_t *pixels, int width, int height,
-               int width_pow2, int height_pow2, int has_alpha);
-`}
-
-in "C" `{
-       extern NativeWindowType mnit_window;
-       extern EGLNativeDisplayType mnit_native_display;
-
-       GLfloat mnit_opengles_vertices[6][3] =
-       {
-               {0.0f, 1.0f, 0.0f},
-               {1.0f, 1.0f, 0.0f},
-               {0.0f, 0.0f, 0.0f},
-               {1.0f, 0.0f, 0.0f},
-       };
-       GLfloat mnit_opengles_texture[6][2] =
-       {
-               {0.0f, 0.0f},
-               {0.0f, 1.0f},
-               {1.0f, 1.0f},
-               {0.0f, 0.0f},
-               {1.0f, 1.0f},
-               {1.0f, 0.0f}
-       };
-
-       struct mnit_opengles_Texture *mnit_opengles_load_image(
-               const uint_least32_t *pixels, int width, int height,
-               int width_pow2, int height_pow2, int has_alpha)
-       {
-               struct mnit_opengles_Texture *image = malloc(sizeof(struct mnit_opengles_Texture));
-               int format = has_alpha? GL_RGBA: GL_RGB;
-
-               image->width = width;
-               image->height = height;
-               image->center_x = width/2;
-               image->center_y = height/2;
-               image->scale = 1.0f;
-               image->blended = has_alpha;
-
-               image->src_xo = 0;
-               image->src_yo = 0;
-               image->src_xi = ((float)width)/width_pow2;
-               image->src_yi = ((float)height)/height_pow2;
-
-               if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
-                       PRINT_ERROR("error loading image after malloc: %i", mnit_opengles_error_code);
-               }
-
-               glGenTextures(1, &image->texture);
-
-               if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
-                       PRINT_ERROR("error loading image after glGenTextures: %i", mnit_opengles_error_code);
-               }
-
-               glBindTexture(GL_TEXTURE_2D, image->texture);
-
-               if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
-                       PRINT_ERROR("error loading image glBindTexture: %i", mnit_opengles_error_code);
-               }
-
-               glTexImage2D(   GL_TEXTURE_2D, 0, format, width_pow2, height_pow2,
-                                               0, format, GL_UNSIGNED_BYTE, (GLvoid*)pixels);
-
-               if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
-                       PRINT_ERROR("error loading image after glTexImage2D: %i", mnit_opengles_error_code);
-               }
-
-               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
-               glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
-
-               if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
-                       PRINT_ERROR("error loading image after gtTexParameter: %i", mnit_opengles_error_code);
-               }
-
-               return image;
-       }
-`}
-
-# OpenGL ES1 display
-# Uses 3d hardware optimization
-class Opengles1Display
-       super Display
-
-       redef type I: Opengles1Image
-
-       init do extern_init
-       fun midway_init( format: Int ) do end
-       fun extern_init: Bool import midway_init `{
-               /* initialize OpenGL ES and EGL */
-               const EGLint attribs[] = {
-                               EGL_SURFACE_TYPE, EGL_WINDOW_BIT,
-                               EGL_BLUE_SIZE, 8,
-                               EGL_GREEN_SIZE, 8,
-                               EGL_RED_SIZE, 8,
-                               EGL_NONE
-               };
-               EGLint w, h, format;
-               EGLint numConfigs;
-               EGLConfig config;
-               EGLSurface surface;
-               EGLContext context;
-
-               EGLDisplay display = eglGetDisplay(mnit_native_display);
-               if ( display == EGL_NO_DISPLAY) {
-                       PRINT_ERROR("Unable to eglGetDisplay");
-                       return -1;
-               }
-
-               if ( eglInitialize(display, 0, 0) == EGL_FALSE) {
-                       PRINT_ERROR("Unable to eglInitialize");
-                       return -1;
-               }
-
-               if ( eglChooseConfig(display, attribs, &config, 1, &numConfigs) == EGL_FALSE) {
-                       PRINT_ERROR("Unable to eglChooseConfig");
-                       return -1;
-               }
-
-               if ( numConfigs == 0 ) {
-                       PRINT_ERROR("No configs available for egl");
-                       return -1;
-               }
-
-               if ( eglGetConfigAttrib(display, config, EGL_NATIVE_VISUAL_ID, &format) == EGL_FALSE) {
-                       PRINT_ERROR("Unable to eglGetConfigAttrib");
-                       return -1;
-               }
-
-               /* Used by Android to set buffer geometry */
-               Opengles1Display_midway_init(self, format);
-
-               surface = eglCreateWindowSurface(display, config, mnit_window, NULL);
-               context = eglCreateContext(display, config, NULL, NULL);
-
-               if (eglMakeCurrent(display, surface, surface, context) == EGL_FALSE) {
-                       PRINT_ERROR("Unable to eglMakeCurrent");
-                       return -1;
-               }
-
-               eglQuerySurface(display, surface, EGL_WIDTH, &w);
-               eglQuerySurface(display, surface, EGL_HEIGHT, &h);
-
-               mnit_display = display;
-               mnit_context = context;
-               mnit_surface = surface;
-               mnit_config = config;
-               mnit_width = w;
-               mnit_height = h;
-
-               glViewport(0, 0, mnit_width, mnit_height);
-               glMatrixMode(GL_PROJECTION);
-               glLoadIdentity();
-               glOrthof(0.0f, w, h, 0.0f, 0.0f, 1.0f);
-               glMatrixMode(GL_MODELVIEW);
-
-               glFrontFace( GL_CW );
-
-               return 0;
-       `}
-
-       fun close `{
-               if ( mnit_display != EGL_NO_DISPLAY) {
-                       eglMakeCurrent( mnit_display, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
-                       if ( mnit_context != EGL_NO_CONTEXT) {
-                               eglDestroyContext( mnit_display,  mnit_context );
-                       }
-                       if ( mnit_surface != EGL_NO_SURFACE) {
-                               eglDestroySurface( mnit_display,  mnit_surface );
-                       }
-                       eglTerminate( mnit_display);
-               }
-                mnit_display = EGL_NO_DISPLAY;
-                mnit_context = EGL_NO_CONTEXT;
-                mnit_surface = EGL_NO_SURFACE;
-       `}
-
-       redef fun begin `{
-               glClear(GL_COLOR_BUFFER_BIT);
-               glLoadIdentity();
-       `}
-
-       redef fun width: Int `{
-               return mnit_width;
-       `}
-       redef fun height: Int `{
-               return mnit_height;
-       `}
-
-       redef fun finish `{
-               eglSwapBuffers( mnit_display, mnit_surface );
-       `}
-
-       redef fun set_viewport( x, y, w, h ) `{
-               glLoadIdentity();
-               glViewport(0,0, mnit_width, mnit_height );
-               glMatrixMode(GL_PROJECTION);
-               glLoadIdentity();
-               glOrthof(x, x+w, y+h, y, 0.0f, 1.0f);
-               glMatrixMode(GL_MODELVIEW);
-               glFrontFace( GL_CW );
-       `}
-
-       redef fun blit(image, x, y) do native_blit(image, x.to_f, y.to_f)
-
-       private fun native_blit(image: Opengles1Image, x, y: Float)  `{
-               GLfloat texture_coord[4][2] =
-               {
-                       {image->src_xo, image->src_yi},
-                       {image->src_xi, image->src_yi},
-                       {image->src_xo, image->src_yo},
-                       {image->src_xi, image->src_yo}
-               };
-
-               glLoadIdentity();
-
-               glBindTexture(GL_TEXTURE_2D, image->texture);
-
-               glEnableClientState(GL_VERTEX_ARRAY);
-               glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-               glTranslatef( x, y, 0.0f );
-               glScalef( image->width*image->scale, image->height*image->scale, 1.0f );
-
-               if ( image->blended ) {
-                       glEnable(GL_BLEND);
-                       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-               }
-
-               glEnable(GL_TEXTURE_2D);
-               glDisable(GL_DEPTH_TEST);
-
-               glVertexPointer(3, GL_FLOAT, 0, mnit_opengles_vertices);
-               glTexCoordPointer(2, GL_FLOAT, 0, texture_coord );
-
-               glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-
-               glDisableClientState(GL_VERTEX_ARRAY);
-               glDisableClientState(GL_TEXTURE_COORD_ARRAY);
-               if ( image->blended ) glDisable(GL_BLEND);
-               glDisable(GL_TEXTURE_2D);
-
-               if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
-                  PRINT_ERROR("error drawing: %i", mnit_opengles_error_code);
-               }
-       `}
-
-    redef fun blit_centered(img, x, y)
-    do
-               x = x.sub(img.center_x)
-               y = y.sub(img.center_y)
-               blit(img, x, y)
-    end
-
-       redef fun blit_rotated(image, x, y, angle) do native_blit_rotated(image, x.to_f, y.to_f, angle)
-
-       private fun native_blit_rotated(image: Opengles1Image, x, y, angle: Float) `{
-               GLfloat texture_coord[4][2] =
-               {
-                       {image->src_xo, image->src_yi},
-                       {image->src_xi, image->src_yi},
-                       {image->src_xo, image->src_yo},
-                       {image->src_xi, image->src_yo}
-               };
-
-               glLoadIdentity();
-
-               glBindTexture(GL_TEXTURE_2D, image->texture);
-
-               glEnableClientState(GL_VERTEX_ARRAY);
-               glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-               glTranslatef( x, y, 0.0f );
-               glRotatef( angle*180.0f/3.14156f, 0, 0, 1.0f );
-               glTranslatef( image->width*image->scale/-2, image->height*image->scale/-2, 0.0f );
-               glScalef( image->width*image->scale, image->height*image->scale, 1.0f );
-               if ( image->blended ) {
-                       glEnable(GL_BLEND);
-                       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-               }
-               glEnable(GL_TEXTURE_2D);
-               glDisable(GL_DEPTH_TEST);
-
-               glVertexPointer(3, GL_FLOAT, 0, mnit_opengles_vertices);
-               glTexCoordPointer(2, GL_FLOAT, 0, texture_coord );
-
-               glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-
-               glDisableClientState(GL_VERTEX_ARRAY);
-               glDisableClientState(GL_TEXTURE_COORD_ARRAY);
-               if ( image->blended ) glDisable(GL_BLEND);
-               glDisable(GL_TEXTURE_2D);
-
-               if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
-                  PRINT_ERROR("error drawing: %i", mnit_opengles_error_code);
-               }
-       `}
-
-       # a = top left, b = bottom left, c = bottom right, d = top right
-       redef fun blit_stretched(image, ax, ay, bx, by, cx, cy, dx, dy)
-       do
-               native_blit_stretched(image,
-                       ax.to_f, ay.to_f, bx.to_f, by.to_f,
-                       cx.to_f, cy.to_f, dx.to_f, dy.to_f)
-       end
-
-       private fun native_blit_stretched(image: I, ax, ay, bx, by, cx, cy, dx, dy: Float) `{
-               GLfloat texture_coord[4][2] =
-               {
-                       {image->src_xo, image->src_yi},
-                       {image->src_xi, image->src_yi},
-                       {image->src_xo, image->src_yo},
-                       {image->src_xi, image->src_yo}
-               };
-
-               GLfloat mnit_opengles_vertices_stretched[6][3] =
-               {
-                       {bx, by, 0.0f},
-                       {cx, cy, 0.0f},
-                       {ax, ay, 0.0f},
-                       {dx, dy, 0.0f},
-               };
-
-               glLoadIdentity();
-
-               glBindTexture(GL_TEXTURE_2D, image->texture);
-
-               glEnableClientState(GL_VERTEX_ARRAY);
-               glEnableClientState(GL_TEXTURE_COORD_ARRAY);
-
-               if ( image->blended ) {
-                       glEnable(GL_BLEND);
-                       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
-               }
-
-               glEnable(GL_TEXTURE_2D);
-               glDisable(GL_DEPTH_TEST);
-
-               glVertexPointer(3, GL_FLOAT, 0, mnit_opengles_vertices_stretched);
-               glTexCoordPointer(2, GL_FLOAT, 0, texture_coord );
-
-               glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
-
-               glDisableClientState(GL_VERTEX_ARRAY);
-               glDisableClientState(GL_TEXTURE_COORD_ARRAY);
-               if ( image->blended ) glDisable(GL_BLEND);
-               glDisable(GL_TEXTURE_2D);
-
-               if ((mnit_opengles_error_code = glGetError()) != GL_NO_ERROR) {
-                  PRINT_ERROR("error drawing: %i", mnit_opengles_error_code);
-               }
-       `}
-
-       redef fun clear( r, g, b: Float ) `{
-               glClearColor( r, g, b, 1.0 );
-               glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-       `}
-
-       fun clear_alpha( r, g, b, a: Float ) `{
-               glClearColor( r, g, b, a );
-               glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
-       `}
-
-       # Set the current color applied to all drawing
-       #
-       # require: r, g, b, a in [0.0 .. 1.0]
-       fun color(r, g, b, a: Float) `{ glColor4f(r, g, b, a); `}
-
-       # Reset the current color to opaque white
-       fun reset_color `{ glColor4f(1.0f, 1.0f, 1.0f, 1.0f); `}
-end
-
-extern class Opengles1Image in "C" `{struct mnit_opengles_Texture *`}
-       super Image
-
-    redef fun destroy `{ free( self ); `}
-
-    redef fun width: Int `{ return self->width; `}
-    redef fun height: Int `{ return self->height; `}
-
-       fun center_x: Int `{ return self->center_x; `}
-       fun center_y: Int `{ return self->center_y; `}
-
-    redef fun scale=( v: Float ) `{
-               self->scale = v;
-               self->center_x = v*self->width/2;
-               self->center_y = v*self->height/2;
-    `}
-    redef fun scale: Float `{ return self->scale; `}
-
-    redef fun blended=( v: Bool ) `{ self->blended = v; `}
-    redef fun blended: Bool `{ return self->blended; `}
-
-    # inherits scale and blend from source
-    redef fun subimage( x, y, w, h: Int ): Image import Opengles1Image.as( Image ) `{
-               struct mnit_opengles_Texture* image =
-                       malloc( sizeof( struct mnit_opengles_Texture ) );
-
-               image->texture = self->texture;
-               image->width = w;
-               image->height = h;
-               image->center_x = self->scale*w/2;
-               image->center_y = self->scale*h/2;
-               image->scale = self->scale;
-               image->blended = self->blended;
-
-               float r_dx = self->src_xi - self->src_xo;
-               float r_dy = self->src_yi - self->src_yo;
-               image->src_xo = self->src_xo + ((float)x)/self->width*r_dx;
-               image->src_yo = self->src_yo + ((float)y)/self->height*r_dy;
-               image->src_xi = self->src_xo + ((float)x+w)/self->width*r_dx;
-               image->src_yi = self->src_yo + ((float)y+h)/self->height*r_dy;
-
-               return Opengles1Image_as_Image( image );
-    `}
-end
diff --git a/lib/mnit/tileset.nit b/lib/mnit/tileset.nit
deleted file mode 100644 (file)
index 3193993..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Manage images that are tileset or glyphset (for bitmap fonts)
-module tileset
-
-import mnit::display
-
-# Efficiently retrieve tiles in a big image
-class TileSet
-       # The image containing the tileset
-       var image: Image
-
-       # The witdh of a tile
-       var width: Int
-
-       # The height of a tile
-       var height: Int
-
-       init
-       do
-               self.nb_cols = image.width / width
-               self.nb_rows = image.height / height
-
-               for j in [0..nb_rows[ do
-                       for i in [0..nb_cols[ do
-                               subimages.add image.subimage(i*width,j*height,width,height)
-                       end
-               end
-       end
-
-       # The number of columns of tiles in the image
-       var nb_cols: Int is noinit
-
-       # The number of rows of tiles in the image
-       var nb_rows: Int is noinit
-
-       # Cache for images of tiles
-       var subimages = new Array[Image]
-
-       # The subimage of given tile
-       # Aborts if x or y are out of bound
-       fun [](x,y: Int): Image
-       do
-               assert x >= 0 and x < nb_cols and y >= 0 and y <= nb_rows else print "{x}x{y}<?{nb_cols}x{nb_rows}"
-               var idx = x + y * nb_cols
-               return subimages[idx]
-       end
-end
-
-# A monospace bitmap font where glyphs are stored in a tileset
-class TileSetFont
-       super TileSet
-
-       # Each character in the image
-       # in left->right, then top->bottom order
-       # Use space (' ') for holes in the tileset
-       var chars: String
-
-       # Additional space to insert horizontally between characters
-       # A negative value will display tile overlapped
-       var hspace: Numeric = 0.0 is writable
-
-       # Additional space to insert vertically between characters
-       # A negative value will display tile overlapped
-       var vspace: Numeric = 0.0 is writable
-
-       # The glyph (tile) associated to the character `c` according to `chars`
-       # Returns null if `c` is not in `chars`
-       fun char(c: Char): nullable Image
-       do
-               var i = chars.index_of(c)
-               if i == -1 then return null
-               return subimages[i]
-       end
-
-       # Distance between the beginning of a letter tile and the beginning of the next letter tile
-       fun advance: Numeric do return width.add(hspace)
-
-       # Distance between the beginning and the end of the longest line of `text`
-       fun text_width(text: String): Numeric
-       do
-               var lines = text.split('\n')
-               if lines.is_empty then return 0
-
-               var longest = 0
-               for line in lines do longest = longest.max(line.length)
-
-               return longest.mul(advance)
-       end
-
-       # Distance between the top of the first line to the bottom of the last line in `text`
-       fun text_height(text: Text): Numeric
-       do
-               if text.is_empty then return 0
-
-               var n_lines = text.chars.count('\n')
-               return (n_lines+1).mul(height.add(vspace)).sub(vspace)
-       end
-end
-
-redef class Display
-       # Blit the text using a monospace bitmap font
-       # '\n' are rendered as carriage return
-       fun text(text: String, font: TileSetFont, x, y: Numeric)
-       do
-               x = x.to_f
-               var cx = x
-               var cy = y.to_f
-               var sw = font.width.to_f + font.hspace.to_f
-               var sh = font.height.to_f + font.vspace.to_f
-               for c in text.chars do
-                       if c == '\n' then
-                               cx = x
-                               cy += sh
-                               continue
-                       end
-                       if c == ' ' then
-                               cx += sw
-                               continue
-                       end
-                       var image = font.char(c)
-                       if image != null then
-                               blit(image, cx, cy)
-                       end
-                       cx += sw
-               end
-       end
-end
index abe289d..cc61f94 100644 (file)
@@ -14,7 +14,7 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-module mpi_simple
+module mpi_simple is example
 
 import mpi
 
index 73177a1..d58dcca 100644 (file)
@@ -17,7 +17,7 @@
 # Hyper Text Coffee Pot Control Protocol
 
 # A server that implements HTCPCP. At the moment there are no additions.
-module htcpcp_server
+module htcpcp_server is example
 
 import nitcorn
 
index 9eb1662..adcebd2 100644 (file)
@@ -19,7 +19,7 @@
 # The main page, `index.html`, is served dynamicly with `MyAction`.
 # The rest of the Web site fetches files from the local directory
 # `www/hello_world/`.
-module nitcorn_hello_world
+module nitcorn_hello_world is example
 
 import nitcorn
 
index 19e02fb..25e1819 100644 (file)
@@ -15,6 +15,7 @@
 # limitations under the License.
 
 # Minimal example using a `ProxyAction`
+module nitcorn_reverse_proxy is example
 
 import nitcorn::proxy
 
index 7b8a407..8a7a225 100644 (file)
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # Example for the `restful` annotation documented at `lib/nitcorn/restful.nit`
-module restful_annot
+module restful_annot is example
 
 import nitcorn::restful
 import nitcorn::pthreads
index 6613349..b0753fe 100644 (file)
@@ -18,7 +18,7 @@
 #
 # To be safe, it is recommended to run this program with its own username:
 # `sudo file_server -u nitcorn:www`
-module simple_file_server
+module simple_file_server is example
 
 import nitcorn
 import privileges
index 8828162..850cce5 100644 (file)
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module test_restful_annot is example
+
 import nitcorn::restful_annot
 
 import pthreads
index c7196c4..3ed2c5e 100644 (file)
@@ -11,7 +11,9 @@ This wrapper needs the Stanford CoreNLP jars that run on Java 1.8+.
 
 See http://nlp.stanford.edu/software/corenlp.shtml.
 
-## Usage
+## NLPProcessor
+
+### Java client
 
 ~~~nitish
 var proc = new NLPProcessor("path/to/StanfordCoreNLP/jars")
@@ -25,60 +27,41 @@ for sentence in doc.sentences do
 end
 ~~~
 
-## Nit API
-
-For ease of use, this wrapper introduce a Nit model to handle CoreNLP XML results.
-
-### NLPDocument
-
-[[doc: NLPDocument]]
-
-[[doc: nlp::NLPDocument::from_xml]]
-[[doc: nlp::NLPDocument::from_xml_file]]
-[[doc: nlp::NLPDocument::sentences]]
-
-### NLPSentence
-
-[[doc: NLPSentence]]
-
-[[doc: nlp::NLPSentence::tokens]]
-
-### NLPToken
+### NLPServer
 
-[[doc: NLPToken]]
+The NLPServer provides a wrapper around the StanfordCoreNLPServer.
 
-[[doc: nlp::NLPToken::word]]
-[[doc: nlp::NLPToken::lemma]]
-[[doc: nlp::NLPToken::pos]]
+See `https://stanfordnlp.github.io/CoreNLP/corenlp-server.html`.
 
-### NLP Processor
-
-[[doc: NLPProcessor]]
-
-[[doc: nlp::NLPProcessor::java_cp]]
-
-[[doc: nlp::NLPProcessor::process]]
-[[doc: nlp::NLPProcessor::process_file]]
-[[doc: nlp::NLPProcessor::process_files]]
+~~~nitish
+var cp = "/path/to/StanfordCoreNLP/jars"
+var srv = new NLPServer(cp, 9000)
+srv.start
+~~~
 
-## Vector Space Model
+### NLPClient
 
-[[doc: NLPVector]]
+The NLPClient is used as a NLPProcessor with a NLPServer backend.
 
-[[doc: vector]]
+~~~nitish
+var cli = new NLPClient("http://localhost:9000")
+var doc = cli.process("String to analyze")
+~~~
 
-[[doc: nlp::NLPVector::cosine_similarity]]
+## NLPIndex
 
-## NitNLP binary
+NLPIndex extends the StringIndex to use a NLPProcessor to tokenize, lemmatize and
+tag the terms of a document.
 
-The `nitnlp` binary is given as an example of NitNLP client.
-It compares two strings and display ther cosine similarity value.
+~~~nitish
+var index = new NLPIndex(proc)
 
-Usage:
+var d1 = index.index_string("Doc 1", "/uri/1", "this is a sample")
+var d2 = index.index_string("Doc 2", "/uri/2", "this and this is another example")
+assert index.documents.length == 2
 
-~~~raw
-nitnlp --cp "/path/to/jars" "sort" "Sorting array data"
-0.577
+matches = index.match_string("this sample")
+assert matches.first.document == d1
 ~~~
 
 ## TODO
diff --git a/lib/nlp/examples/nlp_index.nit b/lib/nlp/examples/nlp_index.nit
new file mode 100644 (file)
index 0000000..72c0b5c
--- /dev/null
@@ -0,0 +1,81 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Example showing how to use a NLPFileIndex.
+module nlp_index
+
+import nlp
+import config
+
+redef class Config
+
+       # --whitelist-exts
+       var opt_white_exts = new OptionArray("Allowed file extensions (default is [])",
+               "-w", "--whitelist-exts")
+
+       # --blacklist-exts
+       var opt_black_exts = new OptionArray("Allowed file extensions (default is [])",
+               "-b", "--blacklist-exts")
+
+       # --server
+       var opt_server = new OptionString("StanfordNLP server URI (default is https://localhost:9000)",
+               "-s", "--server")
+
+       # --lang
+       var opt_lang = new OptionString("Language to use (default is fr)", "-l", "--lang")
+
+       redef init do
+               opts.add_option(opt_server, opt_lang, opt_white_exts, opt_black_exts)
+       end
+end
+
+var config = new Config
+config.tool_description = "usage: example_index <files>"
+config.parse_options(args)
+
+if args.length < 1 then
+       config.usage
+       exit 1
+end
+
+var host = config.opt_server.value
+if host == null then host = "http://localhost:9000"
+var lang = config.opt_lang.value
+if lang == null then lang = "en"
+
+var cli = new NLPClient(host)
+cli.language = lang
+
+var bl = config.opt_black_exts.value
+if bl.is_empty then bl = ["CD", "SYM", "-RRB-", "-LRB-", "''", "``", ".", "#", ":", ",", "$", ""]
+
+var index = new NLPFileIndex(cli)
+index.whitelist_exts = config.opt_white_exts.value
+index.blacklist_exts = bl
+
+print "Building index..."
+index.index_files(args, true)
+
+print "Indexed {index.documents.length} documents"
+
+loop
+       print "\nEnter query:"
+       printn "> "
+       var input = sys.stdin.read_line
+       var matches = index.match_string(input)
+
+       for match in matches do
+               print match
+       end
+end
similarity index 55%
rename from lib/mnit/linux/linux_app.nit
rename to lib/nlp/examples/nlp_server.nit
index c191a60..61dd888 100644 (file)
@@ -1,7 +1,5 @@
 # This file is part of NIT ( http://www.nitlanguage.org ).
 #
-# Copyright 2011-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-module linux_app
+module nlp_server
 
-import mnit
-import sdl
-import linux_opengles1
-import ::linux
+import nlp
+import config
 
-in "C" `{
-       #include <EGL/egl.h>
-`}
+redef class Config
 
-redef class App
-       redef fun setup
-       do
-               if "NIT_TESTING".environ == "true" then exit 0
-               display = new Opengles1Display
+       var opt_java_cp = new OptionString("StanfordNLP java classpath", "-c", "--classpath")
+       var opt_port = new OptionInt("Server port on localhost (default is 9000)", 9000, "-p", "--port")
 
-               super
+       redef init do
+               opts.add_option(opt_java_cp, opt_port)
        end
+end
 
-       redef fun generate_input
-       do
-               var display = display
-               assert display isa Opengles1Display
+var config = new Config
+config.parse_options(args)
 
-               for event in display.sdl_display.events do
-                       input event
-               end
-       end
-end
+var cp = config.opt_java_cp.value
+if cp == null then cp = "stanfordnlp/*"
+
+var srv = new NLPServer(cp, config.opt_port.value)
+srv.start
diff --git a/lib/nlp/nitnlp.nit b/lib/nlp/nitnlp.nit
deleted file mode 100644 (file)
index 72946bc..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Natural Language Processor based on the StanfordNLP core.
-#
-# This tool provides a document comparison service from command line based on
-# StanfordNLP and NLPVector consine similarity.
-#
-# See http://nlp.stanford.edu/software/corenlp.shtml.
-module nitnlp
-
-import opts
-import nlp
-
-# Option management
-var opt_java_cp = new OptionString("Java classpath for StanfordNLP jars", "--cp")
-var options = new OptionContext
-options.add_option(opt_java_cp)
-options.parse(args)
-var arguments = options.rest
-
-# Processor initialization
-var java_cp = opt_java_cp.value
-if java_cp == null then java_cp = "*"
-var proc = new NLPProcessor(java_cp)
-
-if arguments.length != 2 then
-       print "Usage: nitnlp text1 text2\n"
-       options.usage
-       sys.exit 1
-end
-
-var doc1 = proc.process(arguments.first)
-print doc1.vector.join(":", ",")
-var doc2 = proc.process(arguments.last)
-print doc2.vector.join(":", ",")
-
-print doc1.vector.cosine_similarity(doc2.vector)
index 4dd7cc9..5bad0dc 100644 (file)
@@ -20,52 +20,58 @@ module nlp
 import stanford
 import vsm
 
-redef class NLPDocument
+# A StringIndex using a NLPProcessor to parse and vectorize strings
+class NLPIndex
+       super StringIndex
 
-       # `NLPVector` representing `self`.
-       var vector: NLPVector is lazy do
-               var vector = new NLPVector
-               for sentence in sentences do
+       # NLP Processor used to tokenize, lemmatize and POS tag documents
+       var nlp_processor: NLPProcessor
+
+       redef fun parse_string(string) do
+               var vector = new Vector
+               if string.trim.is_empty then return vector
+               var doc = nlp_processor.process(string)
+               for sentence in doc.sentences do
                        for token in sentence.tokens do
-                               if not keep_pos_token(token) then continue
+                               if not accept_token(token) then continue
                                var lemma = token.lemma
-                               if lemma_black_list.has(lemma) then continue
                                if not vector.has_key(lemma) then
-                                       vector[lemma] = 1
+                                       vector[lemma] = 1.0
                                else
-                                       vector[lemma] += 1
+                                       vector[lemma] += 1.0
                                end
                        end
                end
                return vector
        end
 
-       # Should we keep `token` when composing the vector?
+       # Is `token` accepted by this index?
        #
-       # Choice is based on the POS tag of the token.
-       # See `allowed_pos_prefixes`.
-       private fun keep_pos_token(token: NLPToken): Bool do
+       # See `whitelist_pos` and `blacklist_pos`.
+       fun accept_token(token: NLPToken): Bool do
                var pos = token.pos
-               for prefix in allowed_pos_prefixes do
-                       if pos.has_prefix(prefix) then return true
-               end
-               return false
+               if whitelist_pos.not_empty and not whitelist_pos.has(pos) then return false
+               if blacklist_pos.has(pos) then return false
+               if stoplist.has(token.lemma) then return false
+               return true
        end
 
-       # Should we keep `lemma` when composing the vector?
+       # Part-Of-Speech whitelist
        #
-       # See `lemma_black_list`.
-       private fun keep_lemma(lemma: String): Bool do
-               return true
-       end
+       # If not empty, the index accept only the POS tags contained in this list.
+       var whitelist_pos = new Array[String] is writable
 
-       # Allowed POS tag prefixes.
+       # Part-Of-Speech blacklist
        #
-       # When building a vector from `self`,  only tokens tagged with one of these
-       # prefixes are kept.
-       # Other tokens are ignored.
-       var allowed_pos_prefixes: Array[String] = ["NN", "VB", "RB"] is writable
+       # Reject POS tags contained in this list.
+       var blacklist_pos = new Array[String] is writable
+
+       # List of lemmas that must not be indexed
+       var stoplist = new Array[String] is writable
+end
 
-       # Ignored lemmas.
-       var lemma_black_list: Array[String] = ["module", "class", "method"] is writable
+# A FileIndex based using a NLPProcessor
+class NLPFileIndex
+       super NLPIndex
+       super FileIndex
 end
index 734a228..a637d53 100644 (file)
@@ -19,20 +19,50 @@ module stanford
 
 import opts
 import dom
+import curl
+import pthreads
 
-# Wrapper around StanfordNLP jar.
+# Natural Language Processor
 #
-# NLPProcessor provides natural language processing of input text files and
-# an API to handle analysis results.
+# NLPProcessor provides natural language processing for input text and files.
+# Analyzed documents can be manipulated through the resulting NLPDocument.
+interface NLPProcessor
+
+       # Creates a new NLPDocument from a string
+       fun process(string: String): NLPDocument is abstract
+
+       # Creates a new NLPDocument from a file content
+       fun process_file(path: String): NLPDocument do
+               var content = path.to_path.read_all
+               return process(content)
+       end
+
+       # Creates a new NLPDocument from a list of files (batch mode)
+       #
+       # Returns a map of file path associated with their NLPDocument.
+       fun process_files(paths: Array[String]): Map[String, NLPDocument] do
+               var res = new HashMap[String, NLPDocument]
+               for file in paths do
+                       res[file] = process_file(file)
+               end
+               return res
+       end
+end
+
+# Wrapper around StanfordNLP jar.
 #
 # FIXME this should use the Java FFI.
-class NLPProcessor
+class NLPJavaProcessor
+       super NLPProcessor
 
        # Classpath to give to Java when loading the StanfordNLP jars.
        var java_cp: String
 
+       # Temp dir used to store batch results
+       var tmp_dir = ".nlp"
+
        # Process a string and return a new NLPDocument from this.
-       fun process(string: String): NLPDocument do
+       redef fun process(string) do
                var tmp_file = ".nlp.in"
                var file = new FileWriter.open(tmp_file)
                file.write string
@@ -43,7 +73,7 @@ class NLPProcessor
        end
 
        # Process the `input` file and return a new NLPDocument from this.
-       fun process_file(input: String): NLPDocument do
+       redef fun process_file(input) do
                # TODO opt annotators
                var tmp_file = "{input.basename}.xml"
                sys.system "java -cp \"{java_cp}\" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma -outputFormat xml -file {input}"
@@ -55,7 +85,7 @@ class NLPProcessor
        # Batch mode.
        #
        # Returns a map of file path associated with their NLPDocument.
-       fun process_files(inputs: Collection[String], output_dir: String): Map[String, NLPDocument] do
+       redef fun process_files(inputs) do
                # Prepare the input file list
                var input_file = "inputs.list"
                var fw = new FileWriter.open(input_file)
@@ -63,14 +93,15 @@ class NLPProcessor
                fw.close
 
                # Run Stanford NLP jar
-               sys.system "java -cp \"{java_cp}\" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma -outputFormat xml -filelist {input_file} -outputDirectory {output_dir}"
+               sys.system "java -cp \"{java_cp}\" -Xmx2g edu.stanford.nlp.pipeline.StanfordCoreNLP -annotators tokenize,ssplit,pos,lemma -outputFormat xml -filelist {input_file} -outputDirectory {tmp_dir}"
                # Parse output
                var map = new HashMap[String, NLPDocument]
                for input in inputs do
-                       var out_file = output_dir / "{input.basename}.xml"
+                       var out_file = tmp_dir / "{input.basename}.xml"
                        map[input] = new NLPDocument.from_xml_file(out_file)
                end
                input_file.file_delete
+               tmp_dir.rmdir
                return map
        end
 end
@@ -248,11 +279,99 @@ class NLPToken
        # ~~~
        init from_xml(xml: XMLStartTag) do
                var index = xml.attributes.first.as(XMLStringAttr).value.to_i
-               var word = xml["word"].first.as(XMLStartTag).data
-               var lemma = xml["lemma"].first.as(XMLStartTag).data
-               var begin_offset = xml["CharacterOffsetBegin"].first.as(XMLStartTag).data.to_i
-               var end_offset = xml["CharacterOffsetEnd"].first.as(XMLStartTag).data.to_i
-               var pos = xml["POS"].first.as(XMLStartTag).data
+               var word = read_data(xml, "word")
+               var lemma = read_data(xml, "lemma")
+               var begin_offset = read_data(xml, "CharacterOffsetBegin").to_i
+               var end_offset = read_data(xml, "CharacterOffsetEnd").to_i
+               var pos = read_data(xml, "POS")
                init(index, word, lemma, begin_offset, end_offset, pos)
        end
+
+       private fun read_data(xml: XMLStartTag, tag_name: String): String do
+               var res = ""
+               if xml[tag_name].is_empty then return res
+               var first = xml[tag_name].first
+               if not first isa XMLStartTag then return res
+               var data = first.data
+               if data == null then return res
+               return data
+       end
+end
+
+# Stanford web server
+#
+# Runs the server on `port`.
+#
+# For more details about the stanford NLP server see
+# https://stanfordnlp.github.io/CoreNLP/corenlp-server.html
+class NLPServer
+       super Thread
+
+       # Stanford jar classpath
+       #
+       # Classpath to give to Java when loading the StanfordNLP jars.
+       var java_cp: String
+
+       # Port the Java server will listen on
+       var port: Int
+
+       redef fun main do
+               sys.system "java -mx4g -cp \"{java_cp}\" edu.stanford.nlp.pipeline.StanfordCoreNLPServer -port {port.to_s} -timeout 15000"
+               return null
+       end
+end
+
+# A NLPProcessor using a NLPServer as backend
+class NLPClient
+       super NLPProcessor
+
+       # Base uri of the NLP server API
+       #
+       # For examples "http://localhost:9000" or "https://myserver.com"
+       var api_uri: String
+
+       # Annotators to use
+       #
+       # The specified annotators must exist on the server.
+       #
+       # Defaults are: `tokenize`, `ssplit`, `pos` and `lemma`.
+       var annotators: Array[String] = ["tokenize", "ssplit", "pos", "lemma"] is writable
+
+       # Language to process
+       #
+       # The language must be available on the server.
+       #
+       # Default is `en`.
+       var language = "en" is writable
+
+       # Output format to ask.
+       #
+       # Only `xml` is implemented at the moment.
+       private var format = "xml"
+
+       # API uri used to build curl POST requests
+       fun post_uri: String do
+               return "{api_uri}/?properties=%7B%22annotators%22%3A%20%22tokenize%2Cssplit%2Cpos%2clemma%22%2C%22outputFormat%22%3A%22{format}%22%7D&pipelineLanguage={language}"
+       end
+
+       redef fun process(string) do
+               var request = new CurlHTTPRequest(post_uri)
+               request.body = string
+               var response = request.execute
+               if response isa CurlResponseSuccess then
+                       if response.status_code != 200 then
+                               print "Error: {response.body_str}"
+                               return new NLPDocument
+                       end
+                       var xml = response.body_str.to_xml
+                       if xml isa XMLError then
+                               print xml
+                       end
+                       return new NLPDocument.from_xml(response.body_str.to_xml.as(XMLDocument))
+               else if response isa CurlResponseFailed then
+                       print "Error: {response.error_msg}"
+                       return new NLPDocument
+               end
+               return new NLPDocument
+       end
 end
diff --git a/lib/nlp/vsm.nit b/lib/nlp/vsm.nit
deleted file mode 100644 (file)
index 7fe0a84..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# NLPVector Space Model.
-#
-# The Vector Space Model (VSM) is used to compare natural language texts.
-# Texts are translated to multidimensionnal vectors then compared by cosine
-# similarity.
-module vsm
-
-import counter
-
-# A multi-dimensional vector.
-class NLPVector
-       super Counter[String]
-
-       # Cosine similarity of `self` and `other`.
-       #
-       # Gives the proximity in the range `[0.0 .. 1.0]` where 0.0 means that the
-       # two vectors are orthogonal and 1.0 means that they are identical.
-       #
-       # ~~~
-       # var v1 = new NLPVector
-       # v1["x"] = 1
-       # v1["y"] = 2
-       # v1["z"] = 3
-       #
-       # var v2 = new NLPVector
-       # v2["x"] = 1
-       # v2["y"] = 2
-       # v2["z"] = 3
-       #
-       # var v3 = new NLPVector
-       # v3["a"] = 1
-       # v3["b"] = 2
-       # v3["c"] = 3
-       #
-       # print v1.cosine_similarity(v2)
-       # #assert v1.cosine_similarity(v2) == 1.0
-       # print v1.cosine_similarity(v3)
-       # assert v1.cosine_similarity(v3) == 0.0
-       # ~~~
-       fun cosine_similarity(other: SELF): Float do
-               # Collect terms
-               var terms = new HashSet[String]
-               for k in self.keys do terms.add k
-               for k in other.keys do terms.add k
-
-               # Get dot product of two verctors
-               var dot = 0
-               for term in terms do
-                       dot += self.get_or_default(term, 0) * other.get_or_default(term, 0)
-               end
-
-               return dot.to_f / (self.norm * other.norm)
-       end
-
-       # The norm of the vector.
-       #
-       # `||x|| = (x1 ** 2 ... + xn ** 2).sqrt`
-       #
-       # ~~~
-       # var v = new NLPVector
-       # v["x"] = 1
-       # v["y"] = 1
-       # v["z"] = 1
-       # v["t"] = 1
-       # assert v.norm.is_approx(2.0, 0.001)
-       #
-       # v["x"] = 1
-       # v["y"] = 2
-       # v["z"] = 3
-       # v["t"] = 0
-       # assert v.norm.is_approx(3.742, 0.001)
-       # ~~~
-       fun norm: Float do
-               var sum = 0
-               for v in self.values do sum += v ** 2
-               return sum.to_f.sqrt
-       end
-end
index b9e436a..61f0186 100644 (file)
@@ -60,9 +60,14 @@ class PerfMap
                return ts
        end
 
+       # Number of digits to the right of the decimal points in reports created by `to_s`
+       #
+       # Defaults to 4.
+       var precision = 4 is writable
+
        redef fun to_s
        do
-               var prec = 3
+               var prec = precision
 
                var table = new Map[String, Array[String]]
                for event, stats in self do
index 69966bd..cda360e 100644 (file)
@@ -21,7 +21,7 @@
 # Creates a converter and initializes it
 # Finally checks for dictionaries
 
-import pnacl
+import pnacl is example
 
 class Converter
        super PnaclApp
index e229a8c..0da9194 100644 (file)
@@ -14,6 +14,9 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+# This is an example of how to use angular.js with popcorn
+module example_angular is example
+
 import popcorn
 import popcorn::pop_json
 
index 826c165..d2eb6d3 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_post_handler is example
+
 import popcorn
 import template
 
index e8c6187..0af793c 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_query_string is example
+
 import popcorn
 import template
 
index fc9f3e5..46120bf 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_hello is example
+
 import popcorn
 
 class HelloHandler
index a8ad514..d77725f 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_advanced_logger is example
+
 import popcorn
 import realtime
 
index 5bd399c..d220075 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_html_error_handler is example
+
 import popcorn
 import template
 
index 73aff4f..354a992 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_simple_logger is example
+
 import popcorn
 
 class SimpleLoggerHandler
index 4f89f5b..b7de4fe 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_mongodb is example
+
 import popcorn
 import mongodb
 import template
index b33caec..2704358 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_glob_route is example
+
 import popcorn
 
 class UserItem
index f536771..c4b4b3e 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_param_route is example
+
 import popcorn
 
 class UserHome
index facce99..4027c39 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_router is example
+
 import popcorn
 
 class AppHome
index be79fb1..7bf0a82 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_session is example
+
 import popcorn
 
 redef class Session
index c3da6d0..f44a4c0 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_static is example
+
 import popcorn
 
 var app = new App
index 6aa5b34..8a7af54 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_static_default is example
+
 import popcorn
 
 var app = new App
index 1c730c6..6f925e1 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_static_multiple is example
+
 import popcorn
 
 var app = new App
index bddd3ed..194019a 100644 (file)
@@ -14,6 +14,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module example_templates is example
+
 import popcorn
 import popcorn::pop_templates
 
index 8b14fc8..8a5ba58 100644 (file)
@@ -167,12 +167,12 @@ end
 redef class HttpResponse
 
        # Write data as JSON and set the right content type header.
-       fun json(json: nullable Serializable, status: nullable Int) do
+       fun json(json: nullable Serializable, status: nullable Int, plain, pretty: nullable Bool) do
                header["Content-Type"] = media_types["json"].as(not null)
                if json == null then
                        send(null, status)
                else
-                       send(json.to_json, status)
+                       send(json.serialize_to_json(plain or else true, pretty or else false), status)
                end
        end
 
index 5d89e59..9795b01 100644 (file)
@@ -79,9 +79,11 @@ redef class Sys
 
        # Return a new port for each instance
        fun test_port: Int do
-               srand
-               return 10000+20000.rand
+               return testing_id % 20000 + 10000
        end
+
+       # Nitdoc testing ID
+       fun testing_id: Int do return "NIT_TESTING_ID".environ.to_i
 end
 
 # Thread running the App to test.
index a35ca17..016b8da 100644 (file)
@@ -15,7 +15,7 @@
 # limitations under the License.
 
 # Example using the privileges module to drop privileges from root
-module drop_privileges
+module drop_privileges is example
 
 import privileges
 
index 750f976..f32e6c1 100644 (file)
@@ -18,7 +18,7 @@
 #
 # 20 threads share an array and a barrier. They each insert 1000 strings into
 # the array and wait at a barrier before finishing.
-module concurrent_array_and_barrier
+module concurrent_array_and_barrier is example
 
 import pthreads::concurrent_collections
 
index 3d12f6f..b2dd369 100644 (file)
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # Simple example of joinable task using threadpool
-module jointask_example
+module jointask_example is example
 
 import threadpool
 
index fb0609b..66b2076 100644 (file)
@@ -15,7 +15,7 @@
 # limitations under the License.
 
 # test for threaded annotation
-module threaded_example
+module threaded_example is example
 
 import pthreads
 
index fec1ae2..6647386 100644 (file)
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # Simple example using threadpool
-module threadpool_example
+module threadpool_example is example
 
 import threadpool
 
index 585005b..91ebb94 100644 (file)
@@ -38,17 +38,8 @@ in "C" `{
        // TODO protect with: #ifdef WITH_LIBGC
        // We might have to add the next line to gc_chooser.c too, especially
        // if we get an error like "thread not registered with GC".
-       #ifdef __APPLE__
-               #include "TargetConditionals.h"
-               #if TARGET_OS_IPHONE == 1
-                       #define IOS
-               #endif
-       #endif
-
-       #if !defined(__ANDROID__) && !defined(IOS)
-               #define GC_THREADS
-               #include <gc.h>
-       #endif
+       #define GC_THREADS
+       #include <gc.h>
 `}
 
 redef class Sys
index a400619..31040ba 100644 (file)
@@ -23,15 +23,25 @@ in "C header" `{
 
 in "C" `{
 
-#if defined(__MACH__) && !defined(CLOCK_REALTIME)
+#ifdef __APPLE__
+       #include <TargetConditionals.h>
+       #if defined(TARGET_OS_IPHONE) && __IPHONE_OS_VERSION_MIN_REQUIRED < 100000
+               // Preserve compatibility with pre-iOS 10 devices where there is no clock_get_time.
+               #undef CLOCK_REALTIME
+       #endif
+#endif
+
+#if (defined(__MACH__) || defined(TARGET_OS_IPHONE)) && !defined(CLOCK_REALTIME)
 /* OS X does not have clock_gettime, mascarade it and use clock_get_time
  * cf http://stackoverflow.com/questions/11680461/monotonic-clock-on-osx
 */
 #include <mach/clock.h>
 #include <mach/mach.h>
+#undef CLOCK_REALTIME
+#undef CLOCK_MONOTONIC
 #define CLOCK_REALTIME CALENDAR_CLOCK
 #define CLOCK_MONOTONIC SYSTEM_CLOCK
-void clock_gettime(clock_t clock_name, struct timespec *ts) {
+void nit_clock_gettime(clock_t clock_name, struct timespec *ts) {
        clock_serv_t cclock;
        mach_timespec_t mts;
        host_get_clock_service(mach_host_self(), clock_name, &cclock);
@@ -40,11 +50,13 @@ void clock_gettime(clock_t clock_name, struct timespec *ts) {
        ts->tv_sec = mts.tv_sec;
        ts->tv_nsec = mts.tv_nsec;
 }
+#else
+       #define nit_clock_gettime clock_gettime
 #endif
 `}
 
 # Elapsed time representation.
-extern class Timespec `{struct timespec*`}
+private extern class Timespec `{struct timespec*`}
 
        # Init a new Timespec from `s` seconds and `ns` nanoseconds.
        new ( s, ns : Int ) `{
@@ -56,7 +68,7 @@ extern class Timespec `{struct timespec*`}
        # Init a new Timespec from now.
        new monotonic_now `{
                struct timespec* tv = malloc( sizeof(struct timespec) );
-               clock_gettime( CLOCK_MONOTONIC, tv );
+               nit_clock_gettime( CLOCK_MONOTONIC, tv );
                return tv;
        `}
 
@@ -70,7 +82,7 @@ extern class Timespec `{struct timespec*`}
 
        # Update `self` clock.
        fun update `{
-               clock_gettime(CLOCK_MONOTONIC, self);
+               nit_clock_gettime(CLOCK_MONOTONIC, self);
        `}
 
        # Subtract `other` from `self`
@@ -86,6 +98,18 @@ extern class Timespec `{struct timespec*`}
                return tv;
        `}
 
+       # Set `self` to `a` - `b`
+       fun minus(a, b: Timespec) `{
+               time_t s = a->tv_sec - b->tv_sec;
+               long ns = a->tv_nsec - b->tv_nsec;
+               if (ns < 0) {
+                       s -= 1;
+                       ns += 1000000000l;
+               }
+               self->tv_sec = s;
+               self->tv_nsec = ns;
+       `}
+
        # Number of whole seconds of elapsed time.
        fun sec : Int `{
                return self->tv_sec;
@@ -143,15 +167,17 @@ class Clock
        # TODO use less mallocs
 
        # Time at creation
-       protected var time_at_beginning = new Timespec.monotonic_now
+       private var time_at_beginning = new Timespec.monotonic_now
 
        # Time at last time a lapse method was called
-       protected var time_at_last_lapse = new Timespec.monotonic_now
+       private var time_at_last_lapse = new Timespec.monotonic_now
+
+       private var temp = new Timespec.monotonic_now
 
        # Smallest time frame reported by clock
-       fun resolution: Timespec `{
+       private fun resolution: Timespec `{
                struct timespec* tv = malloc( sizeof(struct timespec) );
-#if defined(__MACH__) && !defined(CLOCK_REALTIME)
+#if (defined(__MACH__) || defined(TARGET_OS_IPHONE)) && !defined(CLOCK_REALTIME)
                clock_serv_t cclock;
                int nsecs;
                mach_msg_type_number_t count;
@@ -169,40 +195,40 @@ class Clock
        # Seconds since the creation of this instance
        fun total: Float
        do
-               var now = new Timespec.monotonic_now
-               var diff = now - time_at_beginning
-               var r = diff.to_f
-               diff.free
-               now.free
-               return r
+               var now = temp
+               now.update
+               now.minus(now, time_at_beginning)
+               return now.to_f
        end
 
        # Seconds since the last call to `lapse`
        fun lapse: Float
        do
-               var nt = new Timespec.monotonic_now
-               var dt = nt - time_at_last_lapse
-               var r = dt.to_f
-               dt.free
-               time_at_last_lapse.free
-               time_at_last_lapse = nt
+               var time_at_last_lapse = time_at_last_lapse
+               var now = temp
+               now.update
+               time_at_last_lapse.minus(now, time_at_last_lapse)
+               var r = time_at_last_lapse.to_f
+
+               self.temp = time_at_last_lapse
+               self.time_at_last_lapse = now
+
                return r
        end
 
        # Seconds since the last call to `lapse`, without resetting the lapse counter
        fun peek_lapse: Float
        do
-               var nt = new Timespec.monotonic_now
-               var dt = nt - time_at_last_lapse
-               var r = dt.to_f
-               nt.free
-               dt.free
-               return r
+               var now = temp
+               now.update
+               now.minus(now, time_at_last_lapse)
+               return now.to_f
        end
 
        redef fun finalize_once
        do
                time_at_beginning.free
                time_at_last_lapse.free
+               temp.free
        end
 end
diff --git a/lib/sdl.ini b/lib/sdl.ini
deleted file mode 100644 (file)
index a61fc18..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-[package]
-name=sdl
-tags=graphics,wrapper,lib
-maintainer=Alexis Laferrière <alexis.laf@xymus.net>
-license=Apache-2.0
-[upstream]
-browse=https://github.com/nitlang/nit/tree/master/lib/sdl.nit
-git=https://github.com/nitlang/nit.git
-git.directory=lib/sdl.nit
-homepage=http://nitlanguage.org
-issues=https://github.com/nitlang/nit/issues
diff --git a/lib/sdl.nit b/lib/sdl.nit
deleted file mode 100644 (file)
index 7eae171..0000000
+++ /dev/null
@@ -1,535 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Copyright 2011-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Simple DirectMedia Layer
-module sdl is
-       cflags exec("sdl-config", "--cflags")
-       ldflags(exec("sdl-config", "--libs"), "-lSDL_image -lSDL_ttf")
-end
-
-import mnit::display
-import c
-
-in "C header" `{
-       #include <unistd.h>
-       #include <SDL/SDL.h>
-       #include <SDL/SDL_syswm.h>
-       #include <SDL/SDL_image.h>
-       #include <SDL/SDL_ttf.h>
-`}
-
-# Represent a screen surface
-extern class SDLDisplay `{SDL_Surface *`}
-       super Display
-
-       redef type I: SDLImage
-
-       # Initialize a surface with width and height
-       new (w, h: Int) import enable_mouse_motion_events `{
-               SDL_Init(SDL_INIT_VIDEO);
-
-               if(TTF_Init()==-1) {
-                       printf("TTF_Init: %s\n", TTF_GetError());
-                       exit(2);
-               }
-
-               SDL_Surface *self = SDL_SetVideoMode(w, h, 24, SDL_HWSURFACE);
-
-               if (!SDLDisplay_enable_mouse_motion_events(self)) {
-                       /* ignores mousemotion for performance reasons */
-                       SDL_EventState(SDL_MOUSEMOTION, SDL_IGNORE);
-               }
-
-               return self;
-       `}
-
-       # Indicates wether we want the SDL mouse motion event (or only clicks).
-       # Disabled by defaut for performance reason. To activate, redef this method
-       # andd return true
-       fun enable_mouse_motion_events: Bool do return false
-
-       # Destroy the surface
-       fun destroy `{
-               if (SDL_WasInit(SDL_INIT_VIDEO))
-                       SDL_Quit();
-
-               if (TTF_WasInit())
-                       TTF_Quit();
-       `}
-
-       redef fun finish `{ SDL_Flip(self); `}
-
-       # Clear the entire window with given RGB color (integer values)
-       fun clear_int(r, g, b: Int) `{
-               SDL_FillRect(self, NULL, SDL_MapRGB(self->format,r,g,b));
-       `}
-
-       redef fun width `{ return self->w; `}
-       redef fun height `{ return self->h; `}
-
-       # Fill a rectangle with given color
-       fun fill_rect(rect: SDLRectangle, r, g, b: Int) `{
-               SDL_FillRect(self, rect,  SDL_MapRGB(self->format,r,g,b));
-       `}
-
-       redef fun clear(r, g, b) `{
-               Uint8 ri, gi, bi;
-               ri = (Uint8)r*255;
-               gi = (Uint8)g*255;
-               bi = (Uint8)b*255;
-               SDL_FillRect(self, NULL, SDL_MapRGB(self->format,ri,gi,bi));
-       `}
-
-       # SDL events since the last call to this method
-       fun events: Sequence[SDLInputEvent]
-       do
-               var events = new Array[SDLInputEvent]
-               loop
-                       var new_event = poll_event
-                       if new_event == null then break
-                       events.add new_event
-               end
-               return events
-       end
-
-       private fun poll_event: nullable SDLInputEvent
-       import new_key_event, new_mouse_motion_event, new_mouse_button_event, new_quit_event `{
-               SDL_PumpEvents();
-
-               SDL_Event event;
-               if (SDL_PollEvent(&event))
-               {
-                       switch (event.type) {
-                               case SDL_KEYDOWN:
-                               case SDL_KEYUP:
-                                       return SDLDisplay_new_key_event(self,
-                                                               SDL_GetKeyName(event.key.keysym.sym),
-                                                               event.type==SDL_KEYDOWN);
-
-                               case SDL_MOUSEMOTION:
-                                       return SDLDisplay_new_mouse_motion_event(self,
-                                               event.motion.x, event.motion.y,
-                                               event.motion.xrel, event.motion.yrel,
-                                               SDL_GetMouseState(NULL, NULL)&SDL_BUTTON(1));
-
-                               case SDL_MOUSEBUTTONDOWN:
-                               case SDL_MOUSEBUTTONUP:
-                                       return SDLDisplay_new_mouse_button_event(self,
-                                               event.button.x, event.button.y,
-                                               event.button.button,
-                                               event.type == SDL_MOUSEBUTTONDOWN);
-
-                               case SDL_QUIT:
-                                       return SDLDisplay_new_quit_event(self);
-                       }
-               }
-
-               return null_SDLInputEvent();
-       `}
-
-       private fun new_key_event(name: CString, down: Bool): nullable SDLInputEvent
-       do return new SDLKeyEvent(name.to_s, down)
-
-       private fun new_mouse_motion_event(x, y, xr, yr: Float, down: Bool): nullable SDLInputEvent
-       do return new SDLMouseMotionEvent(x, y, xr, yr, down)
-
-       private fun new_mouse_button_event(x, y: Float, id: Int, down: Bool): nullable SDLInputEvent
-       do return new SDLMouseButtonEvent(x, y, id, down)
-
-       private fun new_quit_event: nullable SDLInputEvent
-       do return new SDLQuitEvent
-
-       # Set the position of the cursor to x,y
-       fun warp_mouse(x,y: Int) `{ SDL_WarpMouse(x, y); `}
-
-       # Show or hide the cursor
-       fun show_cursor=(val: Bool) `{ SDL_ShowCursor(val? SDL_ENABLE: SDL_DISABLE); `}
-
-       # Is the cursor visible?
-       fun show_cursor: Bool `{ return SDL_ShowCursor(SDL_QUERY); `}
-
-       # Grab or release the input
-       fun grab_input=(val: Bool) `{ SDL_WM_GrabInput(val? SDL_GRAB_ON: SDL_GRAB_OFF); `}
-
-       # Is the input grabbed?
-       fun grab_input: Bool `{ return SDL_WM_GrabInput(SDL_GRAB_QUERY) == SDL_GRAB_ON; `}
-
-       # Are instances of `SDLMouseMotionEvent` ignored?
-       fun ignore_mouse_motion_events: Bool `{
-               return SDL_EventState(SDL_MOUSEMOTION, SDL_QUERY);
-       `}
-
-       # Do not raise instances of `SDLMouseMotionEvent` if `val`
-       fun ignore_mouse_motion_events=(val: Bool) `{
-               SDL_EventState(SDL_MOUSEMOTION, val? SDL_IGNORE: SDL_ENABLE);
-       `}
-
-       # Does `self` has the mouse focus?
-       fun mouse_focus: Bool `{ return SDL_GetAppState() & SDL_APPMOUSEFOCUS; `}
-
-       # Does `self` has the input focus?
-       fun input_focus: Bool `{ return SDL_GetAppState() & SDL_APPINPUTFOCUS; `}
-end
-
-# Basic Drawing figures
-extern class SDLDrawable `{SDL_Surface*`}
-       super Drawable
-
-       redef type I: SDLImage
-
-       redef fun blit(img, x, y) do native_blit(img, x.to_i, y.to_i)
-       private fun native_blit(img: I, x, y: Int) `{
-               SDL_Rect dst;
-               dst.x = x;
-               dst.y = y;
-               dst.w = 0;
-               dst.h = 0;
-
-               SDL_BlitSurface(img, NULL, self, &dst);
-       `}
-
-       redef fun blit_centered(img, x, y)
-       do
-               x = x - img.width / 2
-               y = y - img.height / 2
-               blit(img, x, y)
-       end
-end
-
-# A drawable Image
-extern class SDLImage
-       super DrawableImage
-       super SDLDrawable
-
-       # Import image from a file
-       new from_file(path: String) import String.to_cstring `{
-               SDL_Surface *image = IMG_Load(String_to_cstring(path));
-               return image;
-       `}
-
-       # Copy of an existing SDLImage
-       new copy_of(image: SDLImage) `{
-               SDL_Surface *new_image = SDL_CreateRGBSurface(
-                       image->flags, image->w, image->h, 24,
-                       0, 0, 0, 0);
-
-               SDL_Rect dst;
-               dst.x = 0;
-               dst.y = 0;
-               dst.w = image->w;
-               dst.h = image->h;
-               SDL_BlitSurface(image, NULL, new_image, &dst);
-
-               return new_image;
-       `}
-
-       # Save the image into the specified file
-       fun save_to_file(path: String) import String.to_cstring `{ `}
-
-       # Destroy the image and free the memory
-       redef fun destroy `{ SDL_FreeSurface(self); `}
-
-       redef fun width `{ return self->w; `}
-       redef fun height `{ return self->h; `}
-
-       fun is_ok: Bool do return not address_is_null
-
-       # Returns a reference to the pixels of the texture
-       fun pixels: NativeCByteArray `{ return self->pixels; `}
-
-       # Mask for the alpha value of each pixel
-       fun amask: Int `{ return self->format->Amask; `}
-end
-
-# A simple rectangle
-extern class SDLRectangle `{SDL_Rect*`}
-       # Constructor with x,y positions width and height of the rectangle
-       new (x: Int, y: Int, w: Int, h: Int) `{
-               SDL_Rect *rect = malloc(sizeof(SDL_Rect));
-               rect->x = (Sint16)x;
-               rect->y = (Sint16)y;
-               rect->w = (Uint16)w;
-               rect->h = (Uint16)h;
-               return rect;
-       `}
-
-       fun x=(v: Int) `{ self->x = (Sint16)v; `}
-       fun x: Int `{ return self->x; `}
-
-       fun y=(v: Int) `{ self->y = (Sint16)v; `}
-       fun y: Int `{ return self->y; `}
-
-       fun w=(v: Int) `{ self->w = (Uint16)v; `}
-       fun w: Int `{ return self->w; `}
-
-       fun h=(v: Int) `{ self->h = (Uint16)v; `}
-       fun h: Int `{ return self->h; `}
-end
-
-interface SDLInputEvent
-       super InputEvent
-end
-
-# MouseEvent class containing the cursor position
-class SDLMouseEvent
-       super PointerEvent
-       super SDLInputEvent
-
-       redef var x
-       redef var y
-
-       redef fun is_move do return false
-end
-
-# MouseButtonEvent used to get information when a button is pressed/depressed
-class SDLMouseButtonEvent
-       super SDLMouseEvent
-
-       var button: Int
-
-       redef var pressed
-
-       # Is this event raised by the left button?
-       fun is_left_button: Bool do return button == 1
-
-       # Is this event raised by the right button?
-       fun is_right_button: Bool do return button == 3
-
-       # Is this event raised by the middle button?
-       fun is_middle_button: Bool do return button == 2
-
-       # Is this event raised by the wheel going down?
-       fun is_down_wheel: Bool do return button == 4
-
-       # Is this event raised by the wheel going up?
-       fun is_up_wheel: Bool do return button == 5
-
-       # Is this event raised by the wheel?
-       fun is_wheel: Bool do return is_down_wheel or is_up_wheel
-
-       init (x, y: Float, button: Int, pressed: Bool)
-       do
-               super(x, y)
-
-               self.button = button
-               self.pressed = pressed
-       end
-
-       redef fun to_s
-       do
-               if pressed then
-                       return "MouseButtonEvent button {button} down at {x}, {y}"
-               else
-                       return "MouseButtonEvent button {button} up at {x}, {y}"
-               end
-       end
-end
-
-# MouseMotionEvent to get the cursor position when the mouse is moved
-class SDLMouseMotionEvent
-       super SDLMouseEvent
-
-       var rel_x: Float
-       var rel_y: Float
-
-       redef var pressed
-
-       redef fun is_move do return true
-
-       init (x, y, rel_x, rel_y: Float, pressed: Bool)
-       do
-               super(x, y)
-
-               self.rel_x = rel_x
-               self.rel_y = rel_y
-               self.pressed = pressed
-       end
-
-       redef fun to_s do return "MouseMotionEvent at {x}, {y}"
-end
-
-# SDLKeyEvent for when a key is pressed
-class SDLKeyEvent
-       super KeyEvent
-       super SDLInputEvent
-
-       redef var name
-
-       var down: Bool
-
-       redef fun to_c
-       do
-               if name.length == 1 then return name.chars.first
-               return null
-       end
-
-       redef fun to_s
-       do
-               if down then
-                       return "KeyboardEvent key {name} down"
-               else
-                       return "KeyboardEvent key {name} up"
-               end
-       end
-
-       # Return true if the key is down, false otherwise
-       redef fun is_down do return down
-
-       # Return true if the key is the up arrow
-       redef fun is_arrow_up do return name == "up"
-
-       # Return true if the key is the left arrow
-       redef fun is_arrow_left do return name == "left"
-
-       # Return true if the key is the down arrow
-       redef fun is_arrow_down do return name == "down"
-
-       # Return true if the key is the right arrow
-       redef fun is_arrow_right do return name == "right"
-end
-
-class SDLQuitEvent
-       super SDLInputEvent
-       super QuitEvent
-end
-
-redef class Int
-       fun delay `{ SDL_Delay(self); `}
-end
-
-# Class to load and use TTF_Font
-extern class SDLFont `{TTF_Font *`}
-       # Load a font with a specified name and size
-       new (name: String, points: Int) import String.to_cstring `{
-       char * cname = String_to_cstring(name);
-
-       TTF_Font *font = TTF_OpenFont(cname, (int)points);
-       if(!font) {
-               printf("TTF_OpenFont: %s\n", TTF_GetError());
-               exit(1);
-       }
-
-       return font;
-       `}
-
-       fun destroy `{ TTF_CloseFont(self); `}
-
-       # Create a String with the specified color, return an SDLImage
-       fun render(text: String, r, g, b: Int): SDLImage import String.to_cstring `{
-               SDL_Color color;
-               SDL_Surface *text_surface;
-               char *ctext;
-
-               color.r = r;
-               color.g = g;
-               color.b = b;
-
-               ctext = String_to_cstring(text);
-               if(!(text_surface=TTF_RenderText_Blended(self, ctext, color)))
-               {
-                       fprintf(stderr, "SDL TFF error: %s\n", TTF_GetError());
-                       exit(1);
-               }
-               else
-                       return text_surface;
-       `}
-
-       # TODO reactivate fun below when updating libsdl_ttf to 2.0.10 or above
-       #fun outline: Int # TODO check to make inline/nitside only
-       #fun outline=(v: Int) is extern
-
-       #fun kerning: Bool is extern
-       #fun kerning=(v: Bool) is extern
-
-       # Maximum pixel height of all glyphs of this font.
-       fun height: Int `{
-               return TTF_FontHeight(self);
-       `}
-
-       fun ascent: Int `{
-               return TTF_FontAscent(self);
-       `}
-
-       fun descent: Int `{
-               return TTF_FontDescent(self);
-       `}
-
-       # Get the recommended pixel height of a rendered line of text of the loaded font. This is usually larger than the Font.height.
-       fun line_skip: Int `{
-               return TTF_FontLineSkip(self);
-       `}
-
-       # Return true is the font used fixed width for each char
-       fun is_fixed_width: Bool `{
-               return TTF_FontFaceIsFixedWidth(self);
-       `}
-
-       # Return the family name of the font
-       fun family_name: nullable String import String.to_cstring, String.as nullable  `{
-               char *fn = TTF_FontFaceFamilyName(self);
-
-               if (fn == NULL)
-                       return null_String();
-               else
-                       return String_as_nullable(CString_to_s(fn));
-       `}
-
-       # Return the style name of the font
-       fun style_name: nullable String import String.to_cstring, String.as nullable  `{
-               char *sn = TTF_FontFaceStyleName(self);
-
-               if (sn == NULL)
-                       return null_String();
-               else
-                       return String_as_nullable(CString_to_s(sn));
-       `}
-
-       # Return the estimated width of a String if used with the current font
-       fun width_of(text: String): Int import CString.to_s `{
-               char *ctext = String_to_cstring(text);
-               int w;
-               if (TTF_SizeText(self, ctext, &w, NULL))
-               {
-                       fprintf(stderr, "SDL TFF error: %s\n", TTF_GetError());
-                       exit(1);
-               }
-               else
-                       return w;
-       `}
-end
-
-# Information on the SDL window
-# Used in other modules to get window handle
-extern class SDLSystemWindowManagerInfo `{SDL_SysWMinfo *`}
-
-       new `{
-               SDL_SysWMinfo *val = malloc(sizeof(SDL_SysWMinfo));
-
-               SDL_VERSION(&val->version);
-
-               if(SDL_GetWMInfo(val) <= 0) {
-                       printf("Unable to get window handle");
-                       return 0;
-               }
-
-               return val;
-       `}
-
-       # Returns the handle of this window on a X11 window system
-       fun x11_window_handle: Pointer `{
-               return (void*)self->info.x11.window;
-       `}
-end
index 7666c10..534f86a 100644 (file)
@@ -15,7 +15,7 @@
 # limitations under the License.
 
 # An example to test and demonstrate the `sdl2` lib with `image` and `events`
-module minimal
+module minimal is example
 
 import sdl2::all
 
index 083bcfb..ef95f91 100644 (file)
@@ -29,7 +29,7 @@
 #
 # The advantage of the approach is that it is done programmatically so can be adapted to real complex use cases.
 # Basically, this is half-way between the full automatic serialization and the full manual serialisation.
-module custom_serialization
+module custom_serialization is example
 
 import serialization
 import json::serialization_write
index 3150c5f..c95fc62 100644 (file)
@@ -12,6 +12,8 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
+module tmpl_composer is example
+
 import template
 
 ### Here, definition of the specific templates
diff --git a/lib/vsm/.vsm.nit.swn b/lib/vsm/.vsm.nit.swn
new file mode 100644 (file)
index 0000000..4faa9eb
Binary files /dev/null and b/lib/vsm/.vsm.nit.swn differ
diff --git a/lib/vsm/README.md b/lib/vsm/README.md
new file mode 100644 (file)
index 0000000..ea50132
--- /dev/null
@@ -0,0 +1,103 @@
+# Vector Space Model
+
+Vector Space Model (VSM) is an algebraic model for representing text documents
+(and any objects, in general) as vectors of identifiers, such as, for example,
+index terms.
+
+It is used in information filtering, information retrieval, indexing and
+relevancy rankings.
+
+The `vsm` package provides the following features:
+* Vector comparison with cosine similarity.
+* Vector indexing and matching with tf * idf.
+* File indexing and matching to free text queries.
+
+## Vectors
+
+With VSM, documents are represented by a n-dimensions vector.
+Each dimension represent an attribute of the document or object.
+
+For text document, the count of each term found in the document if often used to
+build vectors.
+
+### Creating a vector
+
+~~~
+var vector = new Vector
+vector["term1"] = 2.0
+vector["term2"] = 1.0
+assert vector["term1"] == 2.0
+assert vector["term2"] == 1.0
+assert vector.norm.is_approx(2.236, 0.001)
+~~~
+
+### Comparing vectors
+
+~~~
+var v1 = new Vector
+v1["term1"] = 1.0
+v1["term2"] = 2.0
+
+var v2 = new Vector
+v2["term2"] = 1.0
+v2["term3"] = 3.0
+
+var query = new Vector
+query["term2"] = 1.0
+
+var s1 = query.cosine_similarity(v1)
+var s2 = query.cosine_similarity(v2)
+assert s1 > s2
+~~~
+
+## VSMIndex
+
+VSMIndex is a Document index based on VSM.
+
+Using VSMIndex you can index documents associated with their vector.
+Documents can then be matched to query vectors.
+
+This represents a minimalistic search engine.
+
+~~~
+var index = new VSMIndex
+
+var d1 = new Document("Doc 1", "/uri/1", v1)
+index.index_document(d1)
+
+var d2 = new Document("Doc 2", "/uri/2", v2)
+index.index_document(d2)
+
+assert index.documents.length == 2
+
+query = new Vector
+query["term1"] = 1.0
+
+var matches = index.match_vector(query)
+assert matches.first.document == d1
+~~~
+
+## StringIndex
+
+The StringIndex provides usefull services to index and match strings.
+
+~~~
+index = new StringIndex
+
+d1 = index.index_string("Doc 1", "/uri/1", "this is a sample")
+d2 = index.index_string("Doc 2", "/uri/2", "this and this is another example")
+assert index.documents.length == 2
+
+matches = index.match_string("this sample")
+assert matches.first.document == d1
+~~~
+
+## FileIndex
+
+The FileIndex is a StringIndex able to index and retrieve files.
+
+~~~nit
+index = new FileIndex
+
+index.index_files(["/path/to/doc/1", "/path/to/doc/2"])
+~~~
diff --git a/lib/vsm/examples/example_vsm.nit b/lib/vsm/examples/example_vsm.nit
new file mode 100644 (file)
index 0000000..5f1192b
--- /dev/null
@@ -0,0 +1,65 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Example using a `FileIndex`
+#
+# This example shows of to index files from the system and retrieve them
+# with text queries.
+module example_vsm
+
+import vsm
+import config
+
+redef class Config
+
+       # --whitelist-exts
+       var opt_white_exts = new OptionArray("Allowed file extensions (default is [])",
+               "-w", "--whitelist-exts")
+
+       # --blacklist-exts
+       var opt_black_exts = new OptionArray("Allowed file extensions (default is [])",
+               "-b", "--blacklist-exts")
+
+       redef init do
+               opts.add_option(opt_white_exts, opt_black_exts)
+       end
+end
+
+var config = new Config
+config.tool_description = "usage: example_vsm <files>"
+config.parse_options(args)
+
+if args.length < 1 then
+       config.usage
+       exit 1
+end
+
+var index = new FileIndex
+index.whitelist_exts = config.opt_white_exts.value
+index.blacklist_exts = config.opt_black_exts.value
+
+print "Building index..."
+index.index_files(args, true)
+print "Indexed {index.documents.length} documents"
+
+loop
+       print "\nEnter query:"
+       printn "> "
+       var input = sys.stdin.read_line
+       var matches = index.match_string(input)
+       printn ""
+       for match in matches do
+               print match
+       end
+end
diff --git a/lib/vsm/vsm.nit b/lib/vsm/vsm.nit
new file mode 100644 (file)
index 0000000..4a64f99
--- /dev/null
@@ -0,0 +1,380 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Vector Space Model
+#
+# Vector Space Model (VSM) is an algebraic model for representing text documents
+# (and any objects, in general) as vectors of identifiers, such as, for example,
+# index terms.
+#
+# It is used in information filtering, information retrieval, indexing and
+# relevancy rankings.
+module vsm
+
+import counter
+
+# A n-dimensions vector
+#
+# *n-dimensions* vectors are used to represent a text document or an object.
+class Vector
+       super HashMap[nullable Object, Float]
+
+       # Cosine similarity of `self` and `other`.
+       #
+       # Gives the proximity in the range `[0.0 .. 1.0]` where 0.0 means that the
+       # two vectors are orthogonal and 1.0 means that they are identical.
+       #
+       # ~~~
+       # var v1 = new Vector
+       # v1["x"] = 1.0
+       # v1["y"] = 2.0
+       # v1["z"] = 3.0
+       #
+       # var v2 = new Vector
+       # v2["x"] = 1.0
+       # v2["y"] = 2.0
+       # v2["z"] = 3.0
+       #
+       # var v3 = new Vector
+       # v3["a"] = 1.0
+       # v3["b"] = 2.0
+       # v3["c"] = 3.0
+       #
+       # print v1.cosine_similarity(v2)
+       # assert v1.cosine_similarity(v2) == 1.0
+       # print v1.cosine_similarity(v3)
+       # assert v1.cosine_similarity(v3) == 0.0
+       # ~~~
+       fun cosine_similarity(other: SELF): Float do
+               # Collect terms
+               var terms = new HashSet[nullable Object]
+               for k in self.keys do terms.add k
+               for k in other.keys do terms.add k
+
+               # Get dot product of two vectors
+               var dot = 0.0
+               for term in terms do
+                       dot += self.get_or_default(term, 0.0) * other.get_or_default(term, 0.0)
+               end
+               var cos = dot.to_f / (self.norm * other.norm)
+               if cos.is_nan then return 0.0
+               return cos
+       end
+
+       redef fun [](k) do
+               if not has_key(k) then return 0.0
+               return super
+       end
+
+       # The norm of the vector.
+       #
+       # `||x|| = (x1 ** 2 ... + xn ** 2).sqrt`
+       #
+       # ~~~
+       # var v = new Vector
+       # v["x"] = 1.0
+       # v["y"] = 1.0
+       # v["z"] = 1.0
+       # v["t"] = 1.0
+       # assert v.norm.is_approx(2.0, 0.001)
+       #
+       # v["x"] = 1.0
+       # v["y"] = 2.0
+       # v["z"] = 3.0
+       # v["t"] = 0.0
+       # assert v.norm.is_approx(3.742, 0.001)
+       # ~~~
+       fun norm: Float do
+               var sum = 0.0
+               for v in self.values do sum += v.pow(2.0)
+               return sum.to_f.sqrt
+       end
+
+       redef fun to_s do
+               return "[{join(", ", ":")}]"
+       end
+end
+
+# A Document index based on VSM
+#
+# Using VSMIndex you can index documents associated with their vector.
+# Documents can then be matched to query vectors.
+class VSMIndex
+
+       # Documents index
+       #
+       # TODO use a more efficient representation.
+       var documents = new HashSet[Document]
+
+       # Count for all terms in all indexed documents
+       #
+       # Used to compute the `inverse_doc_frequency`.
+       var terms_doc_count = new Vector
+
+       # Inverse document frequency
+       #
+       # The inverse document frequency is a measure of how much information a term
+       # provides, that is, whether the term is common or rare across all documents.
+       var inverse_doc_frequency = new Vector
+
+       # Used to sort matches
+       #
+       # See `IndexMatch`.
+       var sorter = new IndexMatchSorter
+
+       # Match `query` vector to all index document vectors
+       #
+       # Returns an `IndexMatch` for each indexed document.
+       # Results are ordered by descending similarity.
+       fun match_vector(query: Vector): Array[IndexMatch] do
+               var matches = new Array[IndexMatch]
+               for doc in documents do
+                       var sim = query.cosine_similarity(doc.tfidf)
+                       if sim == 0.0 then continue
+                       matches.add new IndexMatch(doc, sim)
+               end
+               sorter.sort(matches)
+               return matches
+       end
+
+       # Index a document
+       #
+       # With each new document, the `inverse_doc_frequency` must be updated.
+       # By default, the method `update_index` is called after each call to
+       # `index_document`.
+       #
+       # When processing batch documents, use `auto_update = false` to disable
+       # the auto update of the index.
+       fun index_document(doc: Document, auto_update: nullable Bool) do
+               for term, count in doc.terms_count do
+                       if not terms_doc_count.has_key(term) then
+                               terms_doc_count[term] = 1.0
+                       else
+                               terms_doc_count[term] += 1.0
+                       end
+               end
+               documents.add doc
+               if auto_update == null or auto_update then update_index
+       end
+
+       # Update the index
+       #
+       # Recompute the `inverse_doc_frequency` values.
+       # Must be called manually after indexing new document with the option
+       # `auto_update = false`.
+       fun update_index do
+               for doc in documents do
+                       for term, ccount in doc.terms_count do
+                               inverse_doc_frequency[term] = (documents.length.to_f / terms_doc_count[term]).log
+                       end
+               end
+               for doc in documents do
+                       for term, freq in doc.terms_frequency do
+                               doc.tfidf[term] = freq * inverse_doc_frequency[term]
+                       end
+               end
+       end
+end
+
+# A VSM index to store strings
+class StringIndex
+       super VSMIndex
+
+       # Index a new Document from `title`, `uri` and string `string`.
+       #
+       # Return the Document created.
+       #
+       # See `index_document`.
+       fun index_string(title, uri, string: String, auto_update: nullable Bool): Document do
+               var vector = parse_string(string)
+               var doc = new Document(title, uri, vector)
+               index_document(doc, auto_update)
+               return doc
+       end
+
+       # Match the `query` string against all indexed documents
+       #
+       # See `match_vector`.
+       fun match_string(query: String): Array[IndexMatch] do
+               var vector = parse_string(query)
+               var doc = new Document("", "", vector)
+               return match_vector(doc.terms_frequency)
+       end
+
+       # Parse the `string` as a Vector
+       #
+       # Returns a vector containing the terms of `string`.
+       fun parse_string(string: String): Vector do
+               var reader = new StringReader(string)
+               var vector = new Vector
+               loop
+                       var token = reader.read_word
+                       if token == "" then break
+
+                       if not vector.has_key(token) then
+                               vector[token] = 1.0
+                       else
+                               vector[token] += 1.0
+                       end
+               end
+               return vector
+       end
+end
+
+# A VSMIndex to index files
+class FileIndex
+       super StringIndex
+
+       # Index a file from its `path`.
+       #
+       # Return the created document or null if `path` is not accepted by `accept_file`.
+       #
+       # See `index_document`.
+       fun index_file(path: String, auto_update: nullable Bool): nullable Document do
+               if not accept_file(path) then return null
+               var vector = parse_file(path)
+               var doc = new Document(path, path, vector)
+               index_document(doc, auto_update)
+               return doc
+       end
+
+       # Index multiple files
+       #
+       # The recursive method `index_dir` will be called for each directory found
+       # in `paths`.
+       #
+       # See `index_file`
+       fun index_files(paths: Collection[String], auto_update: nullable Bool) do
+               for path in paths do
+                       if path.to_path.is_dir then
+                               index_dir(path, false)
+                       else
+                               index_file(path, false)
+                       end
+               end
+               if auto_update != null and auto_update then update_index
+       end
+
+       # Index all files in `dir` recursively
+       #
+       # See `index_file`.
+       fun index_dir(dir: String, auto_update: nullable Bool) do
+               if not dir.to_path.is_dir then return
+               for file in dir.files do
+                       var path = dir / file
+                       if path.to_path.is_dir then
+                               index_dir(path, false)
+                       else
+                               index_file(path, false)
+                       end
+               end
+               if auto_update != null and auto_update then update_index
+       end
+
+       # Is `path` accepted depending on `whitelist_exts` and `blacklist_exts`?
+       fun accept_file(path: String): Bool do
+               var ext = path.file_extension
+               if ext != null then
+                       ext = ext.to_lower
+                       if blacklist_exts.has(ext) then return false
+                       if whitelist_exts.not_empty and not whitelist_exts.has(ext) then return false
+               end
+               return whitelist_exts.is_empty
+       end
+
+       # Parse the `file` content as a Vector
+       #
+       # See `parse_string`.
+       fun parse_file(file: String): Vector do
+               return parse_string(file.to_path.read_all)
+       end
+
+       # File extensions white list
+       #
+       # If not empty, only files with these extensions will be indexed.
+       #
+       # If an extension is in both `whitelist_exts` and `blacklist_exts`, the
+       # blacklist will prevail and the file will be ignored.
+       var whitelist_exts = new Array[String] is writable
+
+       # File extensions black list
+       #
+       # Files with these extensions will not be indexed.
+       var blacklist_exts = new Array[String] is writable
+end
+
+# A Document to add in a VSMIndex
+class Document
+
+       # Document title
+       var title: String
+
+       # Document URI
+       var uri: String
+
+       # Count of all terms found in the document
+       #
+       # Used to compute the document `terms_frequency`.
+       var terms_count: Vector
+
+       # Frequency of each term found in the document
+       #
+       # Used to match the document against the `VSMIndex::inverse_doc_frequency`.
+       var terms_frequency: Vector is lazy do
+               var all_terms = 0.0
+               for t, c in terms_count do all_terms += c
+
+               var vector = new Vector
+               for t, c in terms_count do
+                       vector[t] = c / all_terms
+               end
+               return vector
+       end
+
+       # Term frequency–Inverse document frequency for each term
+       #
+       # A high weight in tf–idf is reached by a high term frequency
+       # (in the given document) and a low document frequency of the term in the
+       # whole collection of documents
+       var tfidf = new Vector
+
+       redef fun to_s do return "{title}"
+end
+
+# A match to a `request` in an `Index`
+class IndexMatch
+       super Comparable
+
+       # Document matching the `request_vector`
+       var document: Document
+
+       # Similarity between the `request` and the `doc`.
+       #
+       # Result is in the range 0.0 .. 1.1 where 0.0 means no similarity and 1.0
+       # means perfect similarity.
+       var similarity: Float
+
+       redef fun to_s do return "{document} ({similarity})"
+end
+
+# Sort matches by similarity
+class IndexMatchSorter
+       super DefaultComparator
+
+       redef type COMPARED: IndexMatch
+
+       redef fun compare(a, b) do
+               return b.similarity <=> a.similarity
+       end
+end
index 8b4584c..6b9e3b8 100644 (file)
@@ -15,7 +15,7 @@
 # limitations under the License.
 
 # Sample module for a minimal chat server using Websockets on port 8088
-module websocket_server
+module websocket_server is example
 
 import websocket
 
index eb7f26d..db369df 100644 (file)
@@ -37,6 +37,7 @@ RUN dpkg --add-architecture i386 \
                inkscape \
                libopenmpi-dev \
                unzip \
+               zipalign \
                # Android
                libc6:i386 \
                libstdc++6:i386 \
@@ -48,19 +49,16 @@ RUN dpkg --add-architecture i386 \
 RUN mkdir -p /opt \
        && cd /opt \
        # Android SDK
-       && curl https://dl.google.com/android/android-sdk_r24.4.1-linux.tgz -o android-sdk-linux.tgz \
-       && tar xzf android-sdk-linux.tgz \
-       && rm android-sdk-linux.tgz \
-       && echo y | android-sdk-linux/tools/android update sdk -a --no-ui --filter \
-               # Hardcode minimal known working things
-               platform-tools,build-tools-22.0.1,android-22,android-21,android-19,android-16,android-15,android-10 \
-       # Android NDK
-       && curl http://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip -o android-ndk.zip \
-       && unzip -q android-ndk.zip \
+       && curl https://dl.google.com/android/repository/sdk-tools-linux-3859397.zip -o android-sdk-linux.zip \
+       && unzip android-sdk-linux.zip -d android-sdk-linux \
+       && rm android-sdk-linux.zip \
        && chmod -R a+X /opt \
-       && ln -s android-ndk-r11c android-ndk \
-       && rm android-ndk.zip \
-       && printf "PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_NDK\nexport PATH\n" >> "/etc/profile.d/android.sh"
+       && yes | android-sdk-linux/tools/bin/sdkmanager --licenses \
+       && android-sdk-linux/tools/bin/sdkmanager "build-tools;27.0.0" "cmake;3.6.4111459" ndk-bundle platform-tools tools
+
+# Download gradlew and bdwgc for Android
+RUN /nit/share/android-gradlew/gradlew \
+       && /nit/share/android-bdwgc/setup.sh
 
 # Install OpenGL validator
 RUN git clone https://github.com/KhronosGroup/glslang.git \
@@ -71,9 +69,7 @@ RUN git clone https://github.com/KhronosGroup/glslang.git \
        && make
 
 # Setup environment variables
-ENV ANDROID_HOME /opt/android-sdk-linux
-ENV ANDROID_NDK /opt/android-ndk
-ENV PATH $PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools:$ANDROID_NDK
+ENV ANDROID_HOME=/opt/android-sdk-linux/
 ENV JAVA_HOME=/usr/lib/jvm/default-java/
 ENV JNI_LIB_PATH=$JAVA_HOME/jre/lib/amd64/server/
 ENV LD_LIBRARY_PATH=$JAVA_HOME/jre/lib/amd64/server/
diff --git a/share/android-bdwgc/.gitignore b/share/android-bdwgc/.gitignore
new file mode 100644 (file)
index 0000000..e339f9a
--- /dev/null
@@ -0,0 +1 @@
+bdwgc
old mode 100644 (file)
new mode 100755 (executable)
similarity index 66%
rename from examples/mnit_dino/src/dino_linux.nit
rename to share/android-bdwgc/setup.sh
index 5d7f97d..fcfbab3
@@ -1,7 +1,6 @@
+#!/bin/bash
 # This file is part of NIT ( http://www.nitlanguage.org ).
 #
-# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-module dino_linux
-
-import dino
+# Fetch libgc/bdwgc
 
-import mnit::linux
+# cd to the installation path
+cd "`dirname "${BASH_SOURCE[0]}"`"
 
-redef class ImageSet
-       redef fun start_over_path do return "images/play_again.png"
-end
+# Download or redownload
+rm -rf bdwgc
+git clone -b android https://github.com/xymus/bdwgc.git || exit 1
 
-redef class SplashScreen
-       redef fun splash_play_path do return "images/splash_play.png"
-end
+# Setup libatomic_ops too
+cd bdwgc || exit 1
+git submodule init || exit 1
+git submodule update || exit 1
diff --git a/share/android-gradlew/gradle/wrapper/gradle-wrapper.jar b/share/android-gradlew/gradle/wrapper/gradle-wrapper.jar
new file mode 100644 (file)
index 0000000..13372ae
Binary files /dev/null and b/share/android-gradlew/gradle/wrapper/gradle-wrapper.jar differ
diff --git a/share/android-gradlew/gradle/wrapper/gradle-wrapper.properties b/share/android-gradlew/gradle/wrapper/gradle-wrapper.properties
new file mode 100644 (file)
index 0000000..4be4899
--- /dev/null
@@ -0,0 +1,6 @@
+#Thu Oct 26 20:48:37 EDT 2017
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-4.1-all.zip
diff --git a/share/android-gradlew/gradlew b/share/android-gradlew/gradlew
new file mode 100755 (executable)
index 0000000..9d82f78
--- /dev/null
@@ -0,0 +1,160 @@
+#!/usr/bin/env bash
+
+##############################################################################
+##
+##  Gradle start up script for UN*X
+##
+##############################################################################
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn ( ) {
+    echo "$*"
+}
+
+die ( ) {
+    echo
+    echo "$*"
+    echo
+    exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+case "`uname`" in
+  CYGWIN* )
+    cygwin=true
+    ;;
+  Darwin* )
+    darwin=true
+    ;;
+  MINGW* )
+    msys=true
+    ;;
+esac
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+    ls=`ls -ld "$PRG"`
+    link=`expr "$ls" : '.*-> \(.*\)$'`
+    if expr "$link" : '/.*' > /dev/null; then
+        PRG="$link"
+    else
+        PRG=`dirname "$PRG"`"/$link"
+    fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+    if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+        # IBM's JDK on AIX uses strange locations for the executables
+        JAVACMD="$JAVA_HOME/jre/sh/java"
+    else
+        JAVACMD="$JAVA_HOME/bin/java"
+    fi
+    if [ ! -x "$JAVACMD" ] ; then
+        die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+    fi
+else
+    JAVACMD="java"
+    which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
+    MAX_FD_LIMIT=`ulimit -H -n`
+    if [ $? -eq 0 ] ; then
+        if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+            MAX_FD="$MAX_FD_LIMIT"
+        fi
+        ulimit -n $MAX_FD
+        if [ $? -ne 0 ] ; then
+            warn "Could not set maximum file descriptor limit: $MAX_FD"
+        fi
+    else
+        warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+    fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+    GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+    APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+    CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+    JAVACMD=`cygpath --unix "$JAVACMD"`
+
+    # We build the pattern for arguments to be converted via cygpath
+    ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+    SEP=""
+    for dir in $ROOTDIRSRAW ; do
+        ROOTDIRS="$ROOTDIRS$SEP$dir"
+        SEP="|"
+    done
+    OURCYGPATTERN="(^($ROOTDIRS))"
+    # Add a user-defined pattern to the cygpath arguments
+    if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+        OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+    fi
+    # Now convert the arguments - kludge to limit ourselves to /bin/sh
+    i=0
+    for arg in "$@" ; do
+        CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+        CHECK2=`echo "$arg"|egrep -c "^-"`                                 ### Determine if an option
+
+        if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then                    ### Added a condition
+            eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+        else
+            eval `echo args$i`="\"$arg\""
+        fi
+        i=$((i+1))
+    done
+    case $i in
+        (0) set -- ;;
+        (1) set -- "$args0" ;;
+        (2) set -- "$args0" "$args1" ;;
+        (3) set -- "$args0" "$args1" "$args2" ;;
+        (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+        (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+        (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+        (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+        (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+        (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+    esac
+fi
+
+# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
+function splitJvmOpts() {
+    JVM_OPTS=("$@")
+}
+eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
+JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
+
+exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
diff --git a/share/libgc/.gitignore b/share/libgc/.gitignore
deleted file mode 100644 (file)
index 98279d0..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-include
-lib
-share
-src
diff --git a/share/libgc/android-setup-libgc.sh b/share/libgc/android-setup-libgc.sh
deleted file mode 100755 (executable)
index 07d8c82..0000000
+++ /dev/null
@@ -1,134 +0,0 @@
-#!/bin/bash
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Fetch, configure and build libgc (the Boehm GC) for Android
-#
-# Will produce libgc.a which can be linked to Android NDK applications.
-#
-# The `ndk-build` tool from the Android NDK must be in PATH before
-# invoking this tool. It will be used to guess the path to the NDK.
-#
-# Alternatively, you may define a custom path to the NDK by setting
-# `ANDROID_NDK`.
-#
-# The source package should be downloaded and compiled only once.
-# If the working directory is cleared, the cached version will be lost.
-# On test servers, which clear the working directory frequently,
-# it may be a good idea to use a local version of the source packages.
-# To do so, download the following two packages and put them in your HOME directory.
-# * http://www.hboehm.info/gc/gc_source/gc-7.4.0.tar.gz
-# * http://www.hboehm.info/gc/gc_source/libatomic_ops-7.4.0.tar.gz
-
-# If ANDROID_NDK is not set, get it from the path to `ndk-build`
-if test -z "$ANDROID_NDK"; then
-       ndk_build_path=`which ndk-build`
-       if test $? -ne 0; then
-               echo "Error: ndk-build from the Android NDK must be in your PATH"
-               exit 1
-       fi
-
-       ANDROID_NDK=`dirname $ndk_build_path`
-fi
-
-# Information on the currently targeted libgc and libatomic_ops source URL
-# These may have to be updated according to server-side changes and newer
-# versions of the Boehm GC.
-libgc_url=http://www.hboehm.info/gc/gc_source/gc-7.4.0.tar.gz
-libgc_local=~/gc-7.4.0.tar.gz
-libgc_dir=gc-7.4.0
-libatomic_ops_url=http://www.hboehm.info/gc/gc_source/libatomic_ops-7.4.0.tar.gz
-libatomic_ops_local=~/libatomic_ops-7.4.0.tar.gz
-libatomic_ops_dir=libatomic_ops-7.4.0
-
-# Absolute installation path
-if expr match "$0" "^/.*"; then
-       install="`dirname "$0"`"
-else
-       install="`pwd`/`dirname "$0"`"
-fi
-
-# Local source directory
-mkdir -p "$install/src"
-cd "$install/src"
-
-# Download libs, trying to use a local version if possible
-urls=""
-if test -f $libgc_local; then
-       cp $libgc_local .
-else
-       urls=$libgc_url
-fi
-
-if test -f $libatomic_ops_local; then
-       cp $libatomic_ops_local .
-else
-       urls="$urls $libatomic_ops_url"
-fi
-
-for url in $urls; do
-       echo "Downloading $url..."
-       curl --progress-bar -o `basename $url` $url || exit 1
-done
-
-if test -d $libgc_dir; then
-       rm -r $libgc_dir
-fi
-
-# Extract
-tar -xzf `basename $libgc_url` || exit 1
-tar -xzf `basename $libatomic_ops_url` || exit 1
-mv $libatomic_ops_dir $libgc_dir/libatomic_ops || exit 1
-
-cd $libgc_dir || exit 1
-
-archs=(         arm                       x86                mips)
-tools_dirs=(    arm-linux-androideabi-4.9 x86-4.9            mipsel-linux-android-4.9)
-tools_prefixes=(arm-linux-androideabi     i686-linux-android mipsel-linux-android)
-hosts=(         arm-linux-androideabi     x86-linux-android  mips-linux-android)
-
-n_archs=$(( ${#archs[@]} - 1 ))
-for i in $(eval echo "{0..$n_archs}"); do
-       arch=${archs[i]}
-       tools_dir=${tools_dirs[i]}
-       tools_prefix=${tools_prefixes[i]}
-       host=${hosts[i]}
-
-       # Get the first platform available (it shouldn't change much, but it may
-       # have to be adjusted)
-       for platform in `echo $ANDROID_NDK/platforms/android-*/arch-$arch`; do
-               sys_root=$platform
-               break
-       done
-
-       if test -z "$sys_root"; then
-               echo "Error: could not an Android platform for $arch in the NDK, define ANDROID_NDK to the correct path."
-               exit 1
-       fi
-
-       # Configure for Android
-       path="$ANDROID_NDK/toolchains/$tools_dir/prebuilt/linux-x86_64/bin/"
-       export CC="$path/$tools_prefix-gcc --sysroot=$sys_root"
-       export CXX="$path/$tools_prefix-g++ --sysroot=$sys_root"
-       export LD="$path/$tools_prefix-ld"
-       export AR="$path/$tools_prefix-ar"
-       export RANLIB="$path/$tools_prefix-ranlib"
-       export STRIP="$path/$tools_prefix-strip"
-       export CFLAGS="-DIGNORE_DYNAMIC_LOADING -DPLATFORM_ANDROID -I libatomic_ops/src/"
-       export LIBS="-lc -lgcc"
-       ./configure --host=$host --enable-static --disable-shared --prefix="$install/$arch/" || exit 1
-
-       # Compile and install locally
-       make install -j 4 || exit 1
-done
index 17a294f..321e870 100644 (file)
@@ -15,6 +15,12 @@ Unlike generic lexical or syntactic highlighter, nitlight use semantic informati
 Common options of the Nit tools are understood.
 Here, only the specific one are indicated.
 
+### `--txt`
+Generate text with ANSI coloring escape sequences.
+
+Instead of HTML, this generate text files with ANSI escape sequence for colors.
+The options `-f`, `--line-id-prefix` and `--ast` are ignored in this mode.
+
 ### `-f`, `--fragment`
 Omit document header and footer.
 
@@ -59,6 +65,12 @@ By default, only the modules indicated on the command line are highlighted.
 
 With the `--full` option, all imported modules (even those in standard) are also precessed.
 
+### `--ast`
+Generate specific HTML elements for each Node of the AST.
+
+Additional `<span>` elements are generated for each node of the AST.
+The HTML generated can become quite large.
+
 # SEE ALSO
 
 The Nit language documentation and the source code of its tools and libraries may be downloaded from <http://nitlanguage.org>
index 2263bd3..728ecdb 100644 (file)
@@ -228,52 +228,113 @@ To helps the management of the expected results, the option `--autosav` can be u
 ## Configuring TestSuites
 
 `TestSuite`s also provide annotations to configure the test run:
-`before` and `after` annotations can be applied to methods that must be called before/after each test case.
+`before` and `after` annotations can be added to methods that must be called before/after each test case.
 They can be used to factorize repetitive tasks:
 
-~~~~
+~~~
 class TestFoo
-    test
+       test
 
-    var subject: Foo
+       var subject: Foo is noinit
 
-    # Mandatory empty init
-    init do end
+       # Method executed before each test
+       fun set_up is before do
+               subject = new Foo
+       end
 
-    # Method executed before each test
-    fun set_up is before do
-        subject = new Foo
-    end
-    fun baz_1 is test do
-        assert subject.baz(1, 2) == 3
-    end
-    fun baz_2 is test do
-        assert subject.baz(1, -2) == -1
-    end
+       fun baz_1 is test do
+               assert subject.baz(1, 2) == 3
+       end
+
+       fun baz_2 is test do
+               assert subject.baz(1, -2) == -1
+       end
 end
-~~~~
+~~~
 
-When using custom test attributes, an empty `init` must be declared to allow automatic test running.
+When using custom test attributes, a empty init must be declared to allow automatic test running.
 
-`before_all` and `after_all` annotations can be applied to methods that must be called before/after each test suite.
-They have to be declared at top level:
+At class level, `before_all` and `after_all` annotations can be set on methods that must be called before/after all the test cases in the class:
 
-~~~~
+~~~
+class TestFoo
+       test
+
+       var subject: Foo is noinit
+
+       # Method executed before all tests in the class
+       fun set_up is before_all do
+               subject = new Foo
+       end
+
+       fun baz_1 is test do
+               assert subject.baz(1, 2) == 3
+       end
+
+       fun baz_2 is test do
+               assert subject.baz(1, -2) == -1
+       end
+end
+~~~
+
+`before_all` and `after_all` annotations can also be set on methods that must be called before/after each test suite when declared at top level:
+
+~~~
 module test_bdd_connector
+
 import bdd_connector
+
 # Testing the bdd_connector
 class TestConnector
-    # test cases using a server
+       test
+       # test cases using a server
 end
+
 # Method executed before testing the module
-fun before_module do
-    # start server before all test cases
+fun setup_db is before_all do
+       # start server before all test cases
 end
+
 # Method executed after testing the module
-fun after_module do
-    # stop server after all test cases
+fun teardown_db is after_all do
+       # stop server after all test cases
 end
-~~~~
+~~~
+
+When dealing with multiple test suites, niunit allows you to import other test suites to factorize your tests:
+
+~~~
+module test_bdd_users
+
+import test_bdd_connector
+
+# Testing the user table
+class TestUsersTable
+       test
+       # test cases using the db server from `test_bdd_connector`
+end
+
+fun setup_table is before_all do
+       # create user table
+end
+
+fun teardown_table is after_all do
+       # drop user table
+end
+~~~
+
+Methods with `before*` and `after*` annotations are linearized and called in different ways.
+
+* `before*` methods are called from the least specific to the most specific
+* `after*` methods are called from the most specific to the least specific
+
+In the previous example, the execution order would be:
+
+1. `test_bdd_connector::setup_db`
+2. `test_bdd_users::setup_table`
+3. `all test cases from test_bdd_users`
+4. `test_bdd_users::teardown_table`
+5. `test_bdd_connector::teardown_db`
 
 ## Accessing the test suite environment
 
index fc2f8e6..755649e 100644 (file)
@@ -57,6 +57,11 @@ Ignore the attributes.
 ### `--private`
 Also generate private API.
 
+### `--catalog`
+Use catalog.
+
+Allow queries to catalog data (can be long on large code base).
+
 # SEE ALSO
 
 The Nit language documentation and the source code of its tools and libraries may be downloaded from <http://nitlanguage.org>
diff --git a/share/nitweb/directives/contributor-list.html b/share/nitweb/directives/contributor-list.html
deleted file mode 100644 (file)
index a46cce9..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-<div ng-if='listContributors.length > 0'>
-       <h3 id={{listId}}>
-               <span>{{listTitle}}</span>
-       </h3>
-       <ul class='list-unstyled user-list'>
-               <li ng-repeat='contributor in listContributors'>
-                       <img class='avatar' src="https://secure.gravatar.com/avatar/{{contributor.hash}}?size=20&amp;default=retro">
-                       {{contributor.name}}
-               </li>
-       </ul>
-</div>
index 0b48c22..9b295be 100644 (file)
@@ -1,35 +1,34 @@
 <div class='card'>
-       <div class='card-left text-center' ng-if='!noSynopsis'>
+       <div class='card-left text-center'>
                <entity-tag mentity='mentity' />
        </div>
-       <div class='card-body'>
-               <h5 class='card-heading' ng-if='!noSynopsis'>
-                       <entity-signature mentity='mentity'/>
+       <div class='card-body' ng-if='mentity.class_name == "MPackage"' style='width: 75%'>
+               <h5 class='card-heading'>
+                       <entity-signature mentity='mentity' />
+                       <small ng-if='mentity.class_name == "MPackage"'>
+                               <span ng-repeat='tag in mentity.tags'>
+                                       <a ui-sref='tag({id: tag})' class='text-muted'>{{tag}}</a>
+                                       <span ng-if='!$last'>,</span>
+                               </span>
+                       </small>
                </h5>
-               <div class='tab-content'>
-                       <div id='{{mentity.html_id}}-signature' class='tab-pane' ng-if='!noSynopsis'
-                         ng-class='currentTab == "signature" ? "active" : ""'>
-                               <span class='synopsis' ng-bind-html='mentity.mdoc.html_synopsis' />
-                       </div>
-                       <div id='{{mentity.html_id}}-grade' class='tab-pane'
-                         ng-class='currentTab == "grade" ? "active" : ""'>
-                               <entity-rating mentity='mentity' ratings='ratings'>
-                       </div>
-               </div>
+               <span class='synopsis' ng-bind-html='mentity.html_synopsis' />
        </div>
-       <div class='card-right'>
-               <div class='dropdown'>
-                       <button class='btn btn-link dropdown-toggle' type='button' data-toggle='dropdown'>
-                               <span class='glyphicon glyphicon-chevron-down'></span>
-                       </button>
-                       <ul class='dropdown-menu dropdown-menu-right'>
-                               <li ng-class='currentTab == "signature" ? "active" : ""' ng-if='!noSynopsis'>
-                                       <a ng-click='currentTab = "signature"'>Signature</a>
-                               </li>
-                               <li ng-class='currentTab == "grade" ? "active" : ""'>
-                                       <a ng-click='loadEntityStars(); currentTab = "grade"'>Grade</a>
-                               </li>
-                       </ul>
-               </div>
+       <div class='card-body' ng-if='mentity.class_name != "MPackage"'>
+               <h5 class='card-heading'>
+                       <entity-signature mentity='mentity' />
+               </h5>
+               <span class='synopsis' ng-bind-html='mentity.html_synopsis' />
+       </div>
+       <div class='card-right' ng-if='mentity.class_name == "MPackage"' style='width: 25%'>
+                       <img class='avatar' src='https://secure.gravatar.com/avatar/{{mentity.maintainer.gravatar}}?size=14&amp;default=retro' />
+                       <a ui-sref='person({id: mentity.maintainer.name})'>{{mentity.maintainer.name}}</a>
+               </span>
+               <br>
+               <span ng-if='mentity.license'>
+                       <span class='text-muted'>
+                               <a href='http://opensource.org/licenses/{{mentity.license}}' class='text-muted'>{{mentity.license}}</a>
+                       </span>
+               </span>
        </div>
 </div>
index 2d14d83..cff100d 100644 (file)
@@ -19,8 +19,8 @@
                        </div>
                </h5>
                <div id='{{codeId}}' class='collapse'>
-                       <pre ng-bind-html='code' />
-                       <entity-location mentity='definition' />
+                       <pre ng-bind-html='code.code' />
+                       <entity-location loc='code.location' />
                </div>
        </div>
 </div>
index 740ea8b..60b9348 100644 (file)
@@ -1,3 +1 @@
-<span>
-       <a ng-href='{{mentity.web_url}}'>{{mentity.name}}</a>
-</span>
+<span><a ng-href='{{mentity.web_url}}' title='{{mentity.synopsis}}'>{{mentity.name}}</a></span>
index 05f8ccb..8e058fc 100644 (file)
@@ -1,4 +1,3 @@
-<span ng-if='mentity.location' class='text-muted'>
-       {{mentity.location.file}}
-       <span ng-if='mentity.location.line_start'>:{{mentity.location.line_start}}</span>
+<span class='text-muted'>
+       {{vm.loc.file}}<span ng-if='vm.loc.line_start'>:{{vm.loc.line_start}}</span>
 </span>
index f3f2dc6..28de5e7 100644 (file)
@@ -14,7 +14,7 @@
                                        <span>: </span>
                                        <entity-signature mentity='mparam.mtype' />
                                </span>
-                               <span ng-if='$middle'>, </span>
+                               <span ng-if='!$last'>, </span>
                        </span>
                        <span>]</span>
                </span>
@@ -22,7 +22,7 @@
        <span ng-if='mentity.msignature'>
                <span ng-if='mentity.msignature.arity > 0'>
                        <span>(</span>
-                       <span ng-repeat='mparam in mentity.msignature.mparams'>
+                       <span ng-repeat='mparam in mentity.msignature.mparameters'>
                                <span>
                                        <span>{{mparam.name}}</span>
                                        <span ng-if='mentity.is_intro !== false'>
diff --git a/share/nitweb/directives/search/card.html b/share/nitweb/directives/search/card.html
deleted file mode 100644 (file)
index 7052c60..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<div class='card card-search'>
-       <div class='card-left text-center'>
-               <entity-tag mentity='mentity' />
-       </div>
-       <div class='card-body'>
-               <h5 class='card-heading'>
-                       <entity-signature mentity='mentity'/>
-                       <br>
-                       <small><entity-namespace namespace='mentity.namespace' /></small>
-               </h5>
-               <span class='synopsis' ng-bind-html='mentity.mdoc.html_synopsis' />
-       </div>
-</div>
diff --git a/share/nitweb/directives/search/field.html b/share/nitweb/directives/search/field.html
deleted file mode 100644 (file)
index d9ee5f1..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-<form>
-       <div class='form-group has-icon'>
-               <input placeholder='Search...' type='text' class='form-control search-input'
-                       ng-model-options='{ debounce: 300 }' ng-model='query'
-                       ng-keydown='update($event)' ng-change='search()'>
-               <span class='glyphicon glyphicon-search form-control-icon text-muted'></span>
-       </div>
-       <div ng-if='results.length > 0' class='search-results'>
-               <div class='card-list'>
-                       <search-card ng-click='selectEnter()' ng-class='{active: activeItem == $index}' ng-mouseover='setActive($index)' mentity='mentity' ng-repeat='mentity in results' />
-               </div>
-       </div>
-</form>
diff --git a/share/nitweb/directives/ui/pagination.html b/share/nitweb/directives/ui/pagination.html
new file mode 100644 (file)
index 0000000..3b7d62d
--- /dev/null
@@ -0,0 +1,16 @@
+<nav>
+       <ul class='pagination' ng-if='vm.pagination.max > 1'>
+               <li ng-class='{disabled: vm.pagination.page <= 1}'>
+                       <a ng-click='vm.changePage(vm.pagination.page - 1, vm.pagination.limit)'>
+                               <span>&laquo;</span></a>
+               </li>
+               <li ng-repeat='page in vm.pages'
+                       ng-class='{disabled: vm.pagination.page == page}'>
+                       <a ng-click='vm.changePage(page, vm.pagination.limit)'>{{page}}</a>
+               </li>
+               <li ng-class='{disabled: vm.pagination.page >= vm.pagination.max}'>
+                       <a ng-click='vm.changePage(vm.pagination.page + 1, vm.pagination.limit)'>
+                               <span>&raquo;</span></a>
+               </li>
+       </ul>
+</nav>
index e0bd4fd..a4d06a6 100644 (file)
@@ -2,7 +2,15 @@
        <div class='form-group has-icon'>
                <input placeholder='Search...' type='text' class='form-control search-input'
                        ng-model-options='{ debounce: 300 }' ng-model='vm.query'
-                       ng-keydown='update($event)' ng-change='vm.search()'>
+                       ng-keydown='vm.update($event)' ng-change='vm.search()'>
                <span class='glyphicon glyphicon-search form-control-icon text-muted'></span>
        </div>
+       <div ng-if='vm.results.results.length > 0' class='card-list search-results'>
+               <entity-card ng-click='vm.selectEnter()' ng-class='{active: vm.activeItem == $index}' ng-mouseover='vm.setActive($index)' mentity='mentity' ng-repeat='mentity in vm.results.results' />
+               <div class='card' ng-click='vm.selectEnter()' ng-mouseover='vm.setActive(vm.results.results.length)' ng-class='{active: vm.activeItem == vm.results.results.length}'>
+                       <div class='card-body'>
+                               Show all {{vm.results.total}} results for <a>"{{vm.query}}"</a>
+                       </div>
+               </div>
+       </div>
 </form>
index 2812b99..92eb64e 100644 (file)
@@ -47,7 +47,7 @@
                                        </div>
                                </div>
                                <div class='col-xs-7'>
-                                       <search-field />
+                                       <ui-search-field />
                                </div>
                                <div class='col-xs-2'>
                                        <user-menu />
@@ -73,7 +73,7 @@
                <script src='/javascripts/nitweb.js'></script>
                <script src='/javascripts/entities.js'></script>
                <script src='/javascripts/ui.js'></script>
-               <script src='/javascripts/index.js'></script>
+               <script src='/javascripts/catalog.js'></script>
                <script src='/javascripts/docdown.js'></script>
                <script src='/javascripts/metrics.js'></script>
                <script src='/javascripts/users.js'></script>
diff --git a/share/nitweb/javascripts/catalog.js b/share/nitweb/javascripts/catalog.js
new file mode 100644 (file)
index 0000000..9926712
--- /dev/null
@@ -0,0 +1,197 @@
+/*
+ * Copyright 2016 Alexandre Terrasa <alexandre@moz-code.org>.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+(function() {
+       angular.module('catalog', [])
+
+       /* Router */
+
+       .config(function($stateProvider, $locationProvider) {
+               $stateProvider
+                       .state('catalog', {
+                               url: '/?p&n',
+                               controller: 'CatalogCtrl',
+                               controllerAs: 'vm',
+                               templateUrl: 'views/catalog/index.html',
+                               resolve: {
+                                       packages: function(Catalog, $q, $stateParams, $state) {
+                                               var d = $q.defer();
+                                               var page = $stateParams.p ? $stateParams.p : 1;
+                                               var limit = $stateParams.n ? $stateParams.n : 10;
+                                               Catalog.packages(page, limit, d.resolve,
+                                                       function(err) {
+                                                               $state.go('404', null, { location: false })
+                                                       });
+                                               return d.promise;
+                                       },
+                                       tags: function(Catalog, $q, $state) {
+                                               var d = $q.defer();
+                                               Catalog.tags(d.resolve,
+                                                       function(err) {
+                                                               $state.go('404', null, { location: false })
+                                                       });
+                                               return d.promise;
+                                       },
+                                       stats: function(Catalog, $q, $state) {
+                                               var d = $q.defer();
+                                               Catalog.stats(d.resolve,
+                                                       function(err) {
+                                                               $state.go('404', null, { location: false })
+                                                       });
+                                               return d.promise;
+
+                                       }
+                               }
+                       })
+                       .state('person', {
+                               url: '/person/:id?p1&n1&p2&n2',
+                               controller: 'PersonCtrl',
+                               controllerAs: 'vm',
+                               templateUrl: 'views/catalog/person.html',
+                               resolve: {
+                                       person: function(Catalog, $q, $stateParams, $state) {
+                                               var d = $q.defer();
+                                               Catalog.person($stateParams.id, d.resolve,
+                                               function(err) {
+                                                       $state.go('404', null, { location: false })
+                                               });
+                                               return d.promise;
+                                       },
+                                       maintaining: function(Catalog, $q, $stateParams, $state) {
+                                               var d = $q.defer();
+                                               var p1 = $stateParams.p2 ? $stateParams.p1 : 1;
+                                               var n1 = $stateParams.n2 ? $stateParams.n1 : 10;
+                                               Catalog.personMaintaining($stateParams.id, p1, n1, d.resolve,
+                                                       function(err) {
+                                                               $state.go('404', null, { location: false })
+                                                       });
+                                               return d.promise;
+                                       },
+                                       contributing: function(Catalog, $q, $stateParams, $state) {
+                                               var d = $q.defer();
+                                               var p2 = $stateParams.p2 ? $stateParams.p2 : 1;
+                                               var n2 = $stateParams.n2 ? $stateParams.n2 : 10;
+                                               Catalog.personContributing($stateParams.id, p2, n2, d.resolve,
+                                                       function(err) {
+                                                               $state.go('404', null, { location: false })
+                                                       });
+                                               return d.promise;
+
+                                       }
+                               }
+                       })
+                       .state('tag', {
+                               url: '/tag/:id?p&n',
+                               controller: 'TagCtrl',
+                               controllerAs: 'vm',
+                               templateUrl: 'views/catalog/tag.html',
+                               resolve: {
+                                       tag: function(Catalog, $q, $stateParams, $state) {
+                                               var d = $q.defer();
+                                               var page = $stateParams.p ? $stateParams.p : 1;
+                                               var limit = $stateParams.l ? $stateParams.l : 10;
+                                               Catalog.tag($stateParams.id, page, limit, d.resolve,
+                                                       function() {
+                                                               $state.go('404', null, { location: false })
+                                                       });
+                                               return d.promise;
+                                       }
+                               }
+                       })
+       })
+
+       /* Factories */
+
+       .factory('Catalog', [ '$http', function($http) {
+               return {
+                       stats: function(cb, cbErr) {
+                               $http.get('/api/catalog/stats')
+                                       .success(cb)
+                                       .error(cbErr);
+                       },
+                       packages: function(p, l, cb, cbErr) {
+                               $http.get('/api/catalog/packages?p=' + p + '&l=' + l)
+                                       .success(cb)
+                                       .error(cbErr);
+                       },
+                       tags: function(cb, cbErr) {
+                               $http.get('/api/catalog/tags')
+                                       .success(cb)
+                                       .error(cbErr);
+                       },
+                       person: function(id, cb, cbErr) {
+                               $http.get('/api/catalog/person/' + id)
+                                       .success(cb)
+                                       .error(cbErr);
+                       },
+                       personMaintaining: function(id, p, l, cb, cbErr) {
+                               $http.get('/api/catalog/person/' + id + '/maintaining?p=' + p + '&l=' + l)
+                                       .success(cb)
+                                       .error(cbErr);
+                       },
+                       personContributing: function(id, p, l, cb, cbErr) {
+                               $http.get('/api/catalog/person/' + id + '/contributing?p=' + p + '&l=' + l)
+                                       .success(cb)
+                                       .error(cbErr);
+                       },
+                       tag: function(id, p, l, cb, cbErr) {
+                               $http.get('/api/catalog/tag/' + id + '?p=' + p + '&l=' + l)
+                                       .success(cb)
+                                       .error(cbErr);
+                       }
+               };
+       }])
+
+       /* Controllers */
+
+       .controller('CatalogCtrl', function($scope, $state, packages, tags, stats) {
+               var vm = this;
+               vm.packages = packages;
+               vm.tags = tags;
+               vm.stats = stats;
+               $scope.$on('change-page', function(e, page, limit) {
+                       $state.go('catalog', {p: page, l: limit});
+               })
+       })
+
+       .controller('PersonCtrl', function($scope, $state, $stateParams, person, maintaining, contributing) {
+               var vm = this;
+               vm.person = person;
+               vm.maintaining = maintaining;
+               vm.contributing = contributing;
+
+               var p1 = $stateParams.p1 ? $stateParams.p1 : 1;
+               var l1 = $stateParams.l1 ? $stateParams.l1 : 10;
+               var p2 = $stateParams.p2 ? $stateParams.p2 : 1;
+               var l2 = $stateParams.l2 ? $stateParams.l2 : 10;
+
+               $scope.$on('change-page1', function(e, page, limit) {
+                       $state.go('person', {id: $stateParams.id, p1: page, l1: limit, p2: p2, l2: l2});
+               })
+
+               $scope.$on('change-page2', function(e, page, limit) {
+                       $state.go('person', {id: $stateParams.id, p1: p1, l1: l1, p2: page, l2: limit});
+               })
+       })
+
+       .controller('TagCtrl', function($state, $scope, tag) {
+               var vm = this;
+               vm.tag = tag;
+               $scope.$on('change-page', function(e, page, limit) {
+                       $state.go('tag', {id: vm.tag.tag, p: page, l: limit});
+               })
+       })
+})();
index c5deb0a..2ca4e04 100644 (file)
                                                                        $state.go('404', null, { location: false })
                                                                });
                                                        return d.promise;
+                                               },
+                                               parents: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityParents($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
+                                               children: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityChildren($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
+                                               intros: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityIntros($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
+                                               redefs: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityRedefs($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
+                                               meta: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityMeta($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
                                                }
                                        },
-                                       controller: function(mentity, doc) {
+                                       controller: function(mentity, doc, parents, children, intros, redefs, meta) {
                                                this.mentity = mentity;
                                                this.doc = doc;
+                                               this.parents = parents;
+                                               this.children = children;
+                                               this.intros = intros;
+                                               this.redefs = redefs;
+                                               this.meta = meta;
+
+                                               this.date = function(date) {
+                                                       return new Date(date);
+                                               }
                                        },
                                        controllerAs: 'vm',
                                })
                                                                });
                                                        return d.promise;
                                                },
-                                               inh: function(Model, $q, $stateParams, $state) {
+                                               ancestors: function(Model, $q, $stateParams, $state) {
                                                        var d = $q.defer();
-                                                       Model.loadEntityInh($stateParams.id, d.resolve,
+                                                       Model.loadEntityAncestors($stateParams.id, d.resolve,
                                                                function() {
                                                                        $state.go('404', null, { location: false })
                                                                });
                                                        return d.promise;
-                                               }
+                                               },
+                                               parents: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityParents($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
+                                               children: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityChildren($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
+                                               descendants: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityDescendants($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               },
                                        },
-                                       controller: function(inh, graph, $sce) {
-                                               this.graph = $sce.trustAsHtml(graph);
-                                               this.inh = inh;
+                                       controller: function(ancestors, parents, children, descendants, graph, $sce) {
+                                               this.graph = $sce.trustAsHtml(graph.graph);
+                                               this.ancestors = ancestors;
+                                               this.parents = parents;
+                                               this.children = children;
+                                               this.descendants = descendants;
                                        },
                                        controllerAs: 'vm',
                                })
                                        resolve: {
                                                lin: function(Model, $q, $stateParams, $state) {
                                                        var d = $q.defer();
-                                                       Model.loadEntityLinearization($stateParams.id, d.resolve,
+                                                       Model.loadEntityLin($stateParams.id, d.resolve,
                                                                function() {
                                                                        $state.go('404', null, { location: false })
                                                                });
                                        controller: function(mentity, lin, $scope, $location, $anchorScroll) {
                                                var vm = this;
                                                vm.focus = $location.hash() ?
-                                                       $location.hash() : mentity.intro.full_name;
+                                                       $location.hash() : lin.results[0].full_name;
                                                vm.mentity = mentity;
                                                vm.linearization = lin;
                                                setTimeout(function() {
                                                        return $location.hash();
                                                }, function (value) {
                                                        vm.focus = $location.hash() ?
-                                                               $location.hash() : mentity.intro.full_name;
+                                                               $location.hash() : lin.results[0].full_name;
                                                        $anchorScroll();
                                                });
                                        },
                                })
                                .state('doc.entity.all', {
                                        url: '/all',
-                                       templateUrl: 'views/doc/all.html',
-                                       controller: function(mentity) {
+                                       templateUrl: 'views/doc/defs.html',
+                                       resolve: {
+                                               defs: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Model.loadEntityAll($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               }
+                                       },
+                                       controller: function(mentity, defs) {
                                                this.mentity = mentity;
+                                               this.defs = defs;
                                        },
                                        controllerAs: 'vm',
                                })
                                },
 
                                loadEntityDoc: function(id, cb, cbErr) {
-                                       $http.get('/api/entity/' + id + '/doc')
+                                       $http.get('/api/doc/' + id + '?format=html')
                                                .success(cb)
                                                .error(cbErr);
                                },
 
-                               loadEntityLinearization: function(id, cb, cbErr) {
-                                       $http.get('/api/linearization/' + id)
+                               loadEntityLin: function(id, cb, cbErr) {
+                                       $http.get('/api/lin/' + id)
                                                .success(cb)
                                                .error(cbErr);
                                },
                                                .error(cbErr);
                                },
 
+                               loadEntityIntros: function(id, cb, cbErr) {
+                                       $http.get('/api/intros/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
+                               loadEntityRedefs: function(id, cb, cbErr) {
+                                       $http.get('/api/redefs/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
+                               loadEntityAll: function(id, cb, cbErr) {
+                                       $http.get('/api/all/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
                                loadEntityCode: function(id, cb, cbErr) {
-                                       $http.get('/api/code/' + id)
+                                       $http.get('/api/code/' + id + '?format=html')
                                                .success(cb)
                                                .error(cbErr);
                                },
 
-                               loadEntityGraph: function(id, cb, cbErr) {
-                                       $http.get('/api/graph/inheritance/' + id + '?cdepth=3')
+                               loadEntityAncestors: function(id, cb, cbErr) {
+                                       $http.get('/api/ancestors/' + id)
                                                .success(cb)
                                                .error(cbErr);
                                },
 
-                               loadEntityInh: function(id, cb, cbErr) {
-                                       $http.get('/api/inheritance/' + id)
+                               loadEntityParents: function(id, cb, cbErr) {
+                                       $http.get('/api/parents/' + id)
                                                .success(cb)
                                                .error(cbErr);
                                },
 
-                               search: function(q, n, cb, cbErr) {
-                                       $http.get('/api/search?q=' + q + '&n=' + n)
+                               loadEntityChildren: function(id, cb, cbErr) {
+                                       $http.get('/api/children/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
+                               loadEntityDescendants: function(id, cb, cbErr) {
+                                       $http.get('/api/descendants/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
+                               loadEntityMeta: function(id, cb, cbErr) {
+                                       $http.get('/api/meta/' + id)
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
+                               loadEntityGraph: function(id, cb, cbErr) {
+                                       $http.get('/api/graph/inheritance/' + id + '?format=svg&cdepth=3')
+                                               .success(cb)
+                                               .error(cbErr);
+                               },
+
+                               search: function(q, p, n, cb, cbErr) {
+                                       $http.get('/api/search?q=' + q + '&p=' + p + '&l=' + n)
                                                .success(cb)
                                                .error(cbErr);
                                }
                                scope: {
                                        mentity: '='
                                },
+                               replace: true,
                                templateUrl: '/directives/entity/link.html'
                        };
                })
                .directive('entityLocation', function() {
                        return {
                                restrict: 'E',
-                               scope: {
-                                       mentity: '='
+                               replace: true,
+                               scope: {},
+                               bindToController: {
+                                       loc: '='
                                },
+                               controller: function() {},
+                               controllerAs: 'vm',
                                templateUrl: '/directives/entity/location.html'
                        };
                })
                        return {
                                restrict: 'E',
                                scope: {
-                                       mentity: '=',
-                                       defaultTab: '@',
-                                       noSynopsis: '='
+                                       mentity: '='
                                },
                                replace: true,
-                               templateUrl: '/directives/entity/card.html',
-                               link: function ($scope, element, attrs) {
-                                       $scope.currentTab = $scope.defaultTab ? $scope.defaultTab : 'signature';
-
-                                       $scope.loadEntityStars = function() {
-                                               Feedback.loadEntityStars($scope.mentity.full_name,
-                                                       function(data) {
-                                                               $scope.ratings = data;
-                                                       }, function(message, status) {
-                                                               $scope.error = {message: message, status: status};
-                                                       });
-                                       };
-                               }
+                               templateUrl: '/directives/entity/card.html'
                        };
                }])
 
index 72eadbc..96ede05 100644 (file)
 
                .config(function($stateProvider, $locationProvider) {
                        $stateProvider
+                               .state('doc.entity.grades', {
+                                       url: '/grades',
+                                       templateUrl: 'views/doc/grades.html',
+                                       resolve: {
+                                               metrics: function(Feedback, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       Feedback.loadEntityStars($stateParams.id, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               }
+                                       },
+                                       controller: function(mentity, metrics) {
+                                               this.mentity = mentity;
+                                               this.metrics = metrics;
+                                       },
+                                       controllerAs: 'vm',
+                               })
                                .state('grades', {
                                        url: '/grades',
                                        templateUrl: 'views/grades.html',
diff --git a/share/nitweb/javascripts/index.js b/share/nitweb/javascripts/index.js
deleted file mode 100644 (file)
index 104d627..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-/*
- * Copyright 2016 Alexandre Terrasa <alexandre@moz-code.org>.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-(function() {
-       angular
-               .module('index', [])
-
-               .config(function($stateProvider, $locationProvider) {
-                       $stateProvider
-                               .state('catalog', {
-                                       url: '/',
-                                       templateUrl: 'views/catalog/index.html',
-                                       controller: 'CatalogCtrl',
-                                       controllerAs: 'vm',
-                                       abstract: true
-                               })
-                               .state('catalog.highlighted', {
-                                       url: '',
-                                       templateUrl: 'views/catalog/highlighted.html',
-                                       controller: 'CatalogHighlightedCtrl',
-                                       controllerAs: 'vm'
-                               })
-                               .state('catalog.required', {
-                                       url: 'required',
-                                       templateUrl: 'views/catalog/most_required.html',
-                                       controller: 'CatalogRequiredCtrl',
-                                       controllerAs: 'vm'
-                               })
-                               .state('catalog.tags', {
-                                       url: 'tags',
-                                       templateUrl: 'views/catalog/by_tags.html',
-                                       controller: 'CatalogTagsCtrl',
-                                       controllerAs: 'vm'
-                               })
-               })
-
-               .factory('Catalog', [ '$http', function($http) {
-                       return {
-                               loadHightlighted: function(cb, cbErr) {
-                                       $http.get('/api/catalog/highlighted')
-                                               .success(cb)
-                                               .error(cbErr);
-                               },
-
-                               loadMostRequired: function(cb, cbErr) {
-                                       $http.get('/api/catalog/required')
-                                               .success(cb)
-                                               .error(cbErr);
-                               },
-
-                               loadByTags: function(cb, cbErr) {
-                                       $http.get('/api/catalog/bytags')
-                                               .success(cb)
-                                               .error(cbErr);
-                               },
-
-                               loadStats: function(cb, cbErr) {
-                                       $http.get('/api/catalog/stats')
-                                               .success(cb)
-                                               .error(cbErr);
-                               },
-
-                               loadContributors: function(cb, cbErr) {
-                                       $http.get('/api/catalog/contributors')
-                                               .success(cb)
-                                               .error(cbErr);
-                               },
-                       }
-               }])
-
-               .controller('CatalogCtrl', function(Catalog) {
-                       var vm = this;
-
-                       Catalog.loadContributors(
-                               function(data) {
-                                       vm.contributors = data;
-                               }, function(err) {
-                                       vm.error = err;
-                               });
-
-                       Catalog.loadStats(
-                               function(data) {
-                                       vm.stats = data;
-                               }, function(err) {
-                                       vm.error = err;
-                               });
-               })
-
-               .controller('CatalogHighlightedCtrl', function(Catalog) {
-                       var vm = this;
-
-                       Catalog.loadHightlighted(
-                               function(data) {
-                                       vm.highlighted = data;
-                               }, function(err) {
-                                       vm.error = err;
-                               });
-               })
-
-               .controller('CatalogRequiredCtrl', function(Catalog) {
-                       var vm = this;
-
-                       Catalog.loadMostRequired(
-                               function(data) {
-                                       vm.required = data;
-                               }, function(err) {
-                                       vm.error = err;
-                               });
-               })
-
-               .controller('CatalogTagsCtrl', function(Catalog, $anchorScroll, $location) {
-                       var vm = this;
-
-                       Catalog.loadByTags(
-                               function(data) {
-                                       vm.bytags = data;
-                               }, function(err) {
-                                       vm.error = err;
-                               });
-
-
-                       vm.scrollTo = function(hash) {
-                               $location.hash(hash);
-                               $anchorScroll();
-                       }
-               })
-
-               .directive('contributorList', function(Model) {
-                       return {
-                               restrict: 'E',
-                               scope: {
-                                       listId: '@',
-                                       listTitle: '@',
-                                       listContributors: '='
-                               },
-                               templateUrl: '/directives/contributor-list.html'
-                       };
-               })
-})();
index 181da8e..1de3f69 100644 (file)
  */
 
 (function() {
-       angular.module('nitweb', ['ui.router', 'ngSanitize', 'angular-loading-bar', 'index', 'entities', 'docdown', 'metrics', 'users', 'grades'])
+       angular.module('nitweb', ['ui.router', 'ngSanitize', 'angular-loading-bar', 'catalog', 'entities', 'docdown', 'metrics', 'users', 'grades'])
 
        .config(['cfpLoadingBarProvider', function(cfpLoadingBarProvider) {
                cfpLoadingBarProvider.includeSpinner = false;
        }])
 
-       .run(['$anchorScroll', function($anchorScroll) {
+       .run(function($rootScope, $anchorScroll) {
                $anchorScroll.yOffset = 80;
-       }])
+               $rootScope.$on('$stateChangeSuccess', function() {
+                 $anchorScroll();
+               });
+       })
 
        .config(function($stateProvider, $locationProvider) {
                $stateProvider
index 7fc3f8a..e3d13d7 100644 (file)
        angular
                .module('ui', [])
 
-               .controller('SearchCtrl', function(Model, $scope, $location, $document) {
-
-                       $scope.query = '';
-
-                       $scope.reset = function() {
-                               $scope.activeItem = 0;
-                               $scope.results = [];
-                       }
-
-                       $scope.update = function(e) {
-                               if(e.keyCode == 38) {
-                                       $scope.selectUp();
-                               } else if(e.keyCode == 40) {
-                                       $scope.selectDown();
-                               } else if(e.keyCode == 27) {
-                                       $scope.selectEscape();
-                               } else if(e.keyCode == 13) {
-                                       $scope.selectEnter();
-                               }
-                       }
-
-                       $scope.selectUp = function() {
-                               if($scope.activeItem > 0) {
-                                       $scope.activeItem -= 1;
-                               }
-                       }
-
-                       $scope.selectDown = function() {
-                               if($scope.activeItem < $scope.results.length - 1) {
-                                       $scope.activeItem += 1;
-                               }
-                       }
-
-                       $scope.selectEnter = function(e) {
-                               $location.url($scope.results[$scope.activeItem].web_url);
-                               $scope.reset();
-                       }
+               /* Search */
 
-                       $scope.selectEscape = function() {
-                               $scope.reset();
-                       }
-
-                       $scope.setActive = function(index) {
-                               $scope.activeItem = index;
-                       }
+               .config(function($stateProvider, $locationProvider) {
+                       $stateProvider
+                               .state('search', {
+                                       url: '/search?q&p&n',
+                                       controller: 'SearchCtrl',
+                                       controllerAs: 'vm',
+                                       templateUrl: 'views/search.html',
+                                       resolve: {
+                                               entities: function(Model, $q, $stateParams, $state) {
+                                                       var d = $q.defer();
+                                                       var query = $stateParams.q;
+                                                       var page = $stateParams.p ? $stateParams.p : 1;
+                                                       var limit = $stateParams.n ? $stateParams.n : 10;
+                                                       Model.search(query, page, limit, d.resolve,
+                                                               function() {
+                                                                       $state.go('404', null, { location: false })
+                                                               });
+                                                       return d.promise;
+                                               }
+                                       }
+                               })
+               })
 
-                       $scope.search = function() {
-                               if(!$scope.query) {
-                                       $scope.reset();
-                                       return;
-                               }
-                               Model.search($scope.query, 10,
-                                       function(data) {
-                                               $scope.reset();
-                                               $scope.results = data;
-                                       }, function(err) {
-                                               $scope.reset();
-                                               $scope.error = err;
-                                       });
-                       }
+               .controller('SearchCtrl', function($scope, $state, $stateParams, entities) {
+                       var vm = this;
+                       vm.entities = entities;
+                       vm.query = $stateParams.q;
 
-                       $scope.reset();
+                       $scope.$on('change-page', function(e, page, limit) {
+                               $state.go('search', {q: vm.query, p: page, l: limit});
+                       })
                })
 
-               .directive('searchField', function($document) {
+               .directive('uiSearchField', function($document) {
                        return {
                                restrict: 'E',
                                replace: true,
-                               controller: 'SearchCtrl',
-                               controllerAs: 'searchCtrl',
-                               templateUrl: '/directives/search/field.html',
-                               link: function ($scope, element, attrs) {
+                               controller: function($scope, $state, $stateParams, $location, Model) {
+                                       var vm = this;
+                                       vm.search = function() {
+                                               if(!vm.query) {
+                                                       vm.reset();
+                                                       return;
+                                               }
+                                               Model.search(vm.query, 1, 8,
+                                                       function(data) {
+                                                               vm.reset();
+                                                               vm.results = data;
+                                                       }, function(err) {
+                                                               vm.reset();
+                                                               vm.error = err;
+                                                       });
+                                       }
+
+                                       vm.reset = function() {
+                                               vm.activeItem = -1;
+                                               vm.results = {
+                                                       results: []
+                                               };
+                                       }
+
+                                       vm.update = function(e) {
+                                               if(e.keyCode == 38) {
+                                                       vm.selectUp();
+                                               } else if(e.keyCode == 40) {
+                                                       vm.selectDown();
+                                               } else if(e.keyCode == 27) {
+                                                       vm.selectEscape();
+                                               } else if(e.keyCode == 13) {
+                                                       vm.selectEnter();
+                                               }
+                                       }
+
+                                       vm.selectUp = function() {
+                                               if(vm.activeItem >= 0) {
+                                                       vm.activeItem -= 1;
+                                               }
+                                       }
+
+                                       vm.selectDown = function() {
+                                               if(vm.activeItem < vm.results.results.length) {
+                                                       vm.activeItem += 1;
+                                               }
+                                       }
+
+                                       vm.selectEnter = function(e) {
+                                               if(vm.activeItem >= 0 && vm.activeItem < vm.results.results.length) {
+                                                       $location.url(vm.results.results[vm.activeItem].web_url);
+                                               } else {
+                                                       $state.go('search', {q: vm.query, p: 1});
+                                               }
+                                               vm.reset();
+                                       }
+
+                                       vm.selectEscape = function() {
+                                               vm.reset();
+                                       }
+
+                                       vm.setActive = function(index) {
+                                               vm.activeItem = index;
+                                       }
+
+                                       vm.reset();
+
+                                       $scope.$watch(function() {
+                                               return $stateParams.q;
+                                       }, function(q) {
+                                               if(q) vm.query = q;
+                                       });
+                               },
+                               controllerAs: 'vm',
+                               templateUrl: 'directives/ui/search-field.html',
+                               link: function ($scope, element, attrs, ctrl) {
                                        $document.bind('click', function (event) {
                                                var isChild = $(element).has(event.target).length > 0;
                                                var isSelf = element[0] == event.target;
                                                var isInside = isChild || isSelf;
                                                if (!isInside) {
-                                                       $scope.reset();
+                                                       ctrl.reset();
                                                        $scope.$apply();
                                                }
                                        });
                        };
                })
 
-               .directive('searchCard', function() {
-                       return {
-                               restrict: 'E',
-                               scope: {
-                                       mentity: '='
-                               },
-                               replace: true,
-                               templateUrl: '/directives/search/card.html'
-                       };
-               })
+               /* Filters */
 
                .directive('uiFilters', function() {
                        return {
                                }
                        };
                })
+
+               /* Pagination */
+
+               .directive('uiPagination', function() {
+                       return {
+                               restrict: 'E',
+                               replace: true,
+                               scope: {},
+                               bindToController: {
+                                       pagination: '=',
+                                       suffix: '=?'
+                               },
+                               controller: function($scope) {
+                                       var vm = this;
+
+                                       $scope.$watch('vm.pagination', function(pagination) {
+                                               if(!pagination) return;
+                                               vm.computePages(pagination);
+                                       })
+
+                                       vm.computePages = function(pagination) {
+                                               vm.pages = [];
+                                               var len = 11;
+                                               var page = pagination.page;
+                                               var start = page - Math.floor(len / 2);
+                                               var end = page + Math.floor(len / 2);
+
+                                               if(start < 1) {
+                                                       end = Math.min(pagination.max, end + Math.abs(start) + 1)
+                                                       start = 1
+                                               } else if(end > pagination.max) {
+                                                       start = Math.max(1, start - Math.abs(end - pagination.max))
+                                                       end = pagination.max;
+                                               }
+
+                                               for(var i = start; i <= end; i++) {
+                                                       vm.pages.push(i);
+                                               }
+                                       }
+
+                                       vm.changePage = function(page, limit) {
+                                               if(page <= 0 || page > vm.pagination.max) return;
+                                               var suffix = vm.suffix ? vm.suffix : '';
+                                               $scope.$emit('change-page' + suffix, page, limit);
+                                       }
+                               },
+                               controllerAs: 'vm',
+                               templateUrl: 'directives/ui/pagination.html'
+                       };
+               })
 })();
index 0d39859..de16f88 100644 (file)
@@ -29,9 +29,9 @@
        display: table;
        width: 100%;
        background: #fff;
-       border: 1px solid #ccc;
+       border: 1px solid #eee;
        margin-top: 10px;
-       box-shadow: 0 -1px 0 #e5e5e5,0 0 2px rgba(0,0,0,.12),0 2px 4px rgba(0,0,0,.24);
+       box-shadow: -1px -1px 3px rgba(0,0,0,.06), 1px 1px 3px rgba(0,0,0,.12);
 }
 
 .card-body, .card-left, .card-right {
@@ -57,7 +57,7 @@
 }
 
 .card-list > .card:first-child {
-       border-top: 1px solid #ccc;
+       border-top: 1px solid #ddd;
 }
 
 .card-list > .card {
index 864c296..ccfcdd0 100644 (file)
        background: #FF8100;
 }
 
+[ng-click] {
+       cursor: pointer;
+}
+
 /* Body */
 
 body {
@@ -127,28 +131,6 @@ entity-list:hover .btn-filter {
     pointer-events: none;
 }
 
-/* search */
-
-.search-input {
-       width: 100%;
-}
-
-.search-results {
-       position: absolute;
-       margin-top: 2px;
-       right: 15px;
-       left: 15px;
-}
-
-.search-results .card.active {
-       background: #eee;
-       border-color: #eee;
-}
-
-.card-search {
-       cursor: pointer;
-}
-
 /* navs */
 
 .nav-tabs li { cursor: pointer; }
index 2f6e2db..68516dc 100644 (file)
 .navbar-fixed-top *:-moz-placeholder { color: #fff; }
 .navbar-fixed-top *::-moz-placeholder { color: #fff; }
 .navbar-fixed-top *:-ms-input-placeholder { color: #fff; }
+
+.search-input {
+       width: 100%;
+}
+
+.card-list.search-results {
+       position: absolute;
+       margin-top: 2px;
+       right: 15px;
+       left: 15px;
+       box-shadow: 1px 1px 3px rgba(0,0,0,0.12), -1px -1px 3px rgba(0,0,0,.12);
+}
+
+.search-results .card.active {
+       background: #eee;
+       border-color: #eee;
+}
diff --git a/share/nitweb/views/catalog/by_tags.html b/share/nitweb/views/catalog/by_tags.html
deleted file mode 100644 (file)
index 31ca905..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-<div>
-       <h3>Tags</h3>
-       <div class='container-fluid'>
-               <div class='col-xs-3' ng-repeat='(tag, packages) in vm.bytags'>
-                       <span class='badge'>{{packages.length}}</span>
-                       <a ng-click='vm.scrollTo(tag)'>{{tag}}</a>
-               </div>
-       </div>
-       <div ng-repeat='(tag, packages) in vm.bytags'>
-               <entity-list list-id='{{tag}}' list-title='{{tag}}'
-                       list-entities='packages'
-                       list-object-filter='{}' />
-       </div>
-</div>
diff --git a/share/nitweb/views/catalog/highlighted.html b/share/nitweb/views/catalog/highlighted.html
deleted file mode 100644 (file)
index 5607bd5..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<div>
-       <entity-list list-title='Highlighted packages'
-               list-entities='vm.highlighted'
-               list-object-filter='{}' />
-</div>
index 877db4a..c45e0dc 100644 (file)
@@ -1,47 +1,35 @@
-<div class='container-fluid'>
+<div class='container'>
        <div class='page-header'>
                <h2>Welcome to NitWeb!</h2>
                <p class='text-muted'>The Nit knowledge base.</p>
        </div>
 
-       <ul class='nav nav-tabs' role='tablist'>
-               <li role='presentation' ui-sref-active='active'>
-                       <a ui-sref='catalog.highlighted'>
-                               <span class='glyphicon glyphicon-book'/> Highlighed
-                       </a>
-               </li>
-               <li role='presentation' ui-sref-active='active'>
-                       <a ui-sref='catalog.required'>
-                               <span class='glyphicon glyphicon-book'/> Most required
-                       </a>
-               </li>
-               <li role='presentation' ui-sref-active='active'>
-                       <a ui-sref='catalog.tags'>
-                               <span class='glyphicon glyphicon-book'/> By tags
-                       </a>
-               </li>
-       </ul>
-       <table class='table'>
-               <tr>
-                       <td ng-repeat='(key, value) in vm.stats'>
-                               <h5><strong>{{value}}</strong>&nbsp;<span>{{key}}</span></h5>
-                       </td>
-               </tr>
-       </table>
+       <div ng-if='vm.stats' class='container-fluid no-padding'>
+               <span ng-repeat='(key, value) in vm.stats' class='text-muted small'>
+                       <strong>{{value}}</strong>&nbsp;<span>{{key}}</span>
+                       &nbsp;
+               </span>
+       </div>
+       <hr/>
 
-       <div class='container-fluid'>
-               <div class='col-xs-9'>
-                       <div class='tab-content'>
-                               <div role='tabpanel' class='tab-pane fade in active'>
-                                       <ui-view />
-                               </div>
+       <div class='col-md-3 col-md-push-9 no-padding' ng-if='vm.tags'>
+               <h2>Tags</h2>
+               <div class='container-fluid no-padding'>
+                       <div class='col-xs-3 col-md-12' ng-repeat='(tag, packages) in vm.tags'>
+                               <span class='badge'>{{packages}}</span>
+                               <a ui-sref='tag({id: tag})'>{{tag}}</a>
                        </div>
                </div>
-               <div class='col-xs-3'>
-                       <contributor-list list-title='Maintainers'
-                                       list-contributors='vm.contributors.maintainers' />
-                       <contributor-list list-title='Contributors'
-                                       list-contributors='vm.contributors.contributors' />
+               <hr/>
+       </div>
+
+       <div class='col-md-9 col-md-pull-3 no-padding'>
+               <h2>Packages</h2>
+               <div class='card-list'>
+                       <entity-card mentity='package' ng-repeat='package in vm.packages.results' />
+               </div>
+               <div class='container text-center' ng-if='vm.packages'>
+                       <ui-pagination pagination='vm.packages' />
                </div>
        </div>
 </div>
diff --git a/share/nitweb/views/catalog/most_required.html b/share/nitweb/views/catalog/most_required.html
deleted file mode 100644 (file)
index 93bf2e1..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-<div>
-       <entity-list list-title='Most required'
-               list-entities='vm.required'
-               list-object-filter='{}' />
-</div>
diff --git a/share/nitweb/views/catalog/person.html b/share/nitweb/views/catalog/person.html
new file mode 100644 (file)
index 0000000..433b73d
--- /dev/null
@@ -0,0 +1,33 @@
+<div class='container'>
+       <div class='col-xs-2 no-padding'>
+               <img class='avatar' style='width:100%; max-width:100px' src='https://secure.gravatar.com/avatar/{{vm.person.gravatar}}?size=100&amp;default=retro' />
+       </div>
+       <div class='col-xs-10'>
+               <h1>
+                       {{vm.person.name}}<br>
+                       <small>{{vm.person.email}}</small>
+               </h1>
+       </div>
+       <hr/>
+</div>
+<br><br>
+<div class='container'>
+       <div ng-if='vm.maintaining.results.length > 0'>
+               <h3 id='maintaining'>{{vm.maintaining.total}} maintained projects</h3>
+               <div class='card-list'>
+                       <entity-card mentity='package' ng-repeat='package in vm.maintaining.results' />
+               </div>
+               <div class='container text-center' ng-if='vm.maintaining'>
+                       <ui-pagination pagination='vm.maintaining' suffix='1'/>
+               </div>
+       </div>
+       <div ng-if='vm.contributing.results.length > 0'>
+               <h3 id='contributing'>{{vm.contributing.total}} contributed projects</h3>
+               <div class='card-list'>
+                       <entity-card mentity='package' ng-repeat='package in vm.contributing.results' />
+               </div>
+               <div class='container text-center' ng-if='vm.contributing'>
+                       <ui-pagination pagination='vm.contributing' suffix='2' />
+               </div>
+       </div>
+</div>
diff --git a/share/nitweb/views/catalog/tag.html b/share/nitweb/views/catalog/tag.html
new file mode 100644 (file)
index 0000000..e4bc086
--- /dev/null
@@ -0,0 +1,16 @@
+<div class='container'>
+       <h1>
+               {{vm.tag.tag}}
+               <small>{{vm.tag.count}} packages</small>
+       </h1>
+       <hr/>
+
+       <div class='container-fluid no-padding' ng-if='vm.tag.results.length > 0'>
+               <div class='card-list'>
+                       <entity-card mentity='package' ng-repeat='package in vm.tag.results' />
+               </div>
+               <div class='container text-center' ng-if='vm.tag'>
+                       <ui-pagination pagination='vm.tag'/>
+               </div>
+       </div>
+</div>
index 48f4282..517bf47 100644 (file)
@@ -1,6 +1,6 @@
 <div class='card'>
        <div class='card-body'>
-               <pre ng-bind-html='vm.code' />
-               <entity-location mentity='vm.mentity' />
+               <pre ng-bind-html='vm.code.code' />
+               <entity-location loc='vm.code.location' />
        </div>
 </div>
index 7cd0ea2..17d9a92 100644 (file)
@@ -1,10 +1,13 @@
 <div>
        <entity-list list-title='Groups' ng-if='vm.mentity.class_name == "MPackage"'
-               list-entities='vm.defs' list-object-filter='{}' />
+               list-entities='vm.defs.results' list-object-filter='{}' />
 
        <entity-list list-title='Groups & Modules' ng-if='vm.mentity.class_name == "MGroup"'
-               list-entities='vm.defs' list-object-filter='{}' />
+               list-entities='vm.defs.results' list-object-filter='{}' />
 
        <entity-list list-title='Class definitions' ng-if='vm.mentity.class_name == "MModule"'
-               list-entities='vm.defs' list-object-filter='{}' />
+               list-entities='vm.defs.results' list-object-filter='{}' />
+
+       <entity-list list-title='All properties' ng-if='vm.mentity.class_name == "MClass"'
+               list-entities='vm.defs.results' list-object-filter='{}' />
 </div>
index 1e60694..d29b2cd 100644 (file)
 <div>
-       <div class='col-xs-3'>
+       <div class='col-lg-2 col-sm-3 col-xs-12'>
                <ui-summary target='#summary-content' />
        </div>
-       <div class='col-xs-9' id='summary-content'>
+       <div class='col-lg-10 col-sm-9 col-xs-12' id='summary-content' ng-class='{
+               "col-lg-8 col-sm-6 col-xs-12": vm.mentity.class_name == "MPackage"
+       }'>
                <div class='card'>
                        <div class='card-body'>
-                               <div ng-if='vm.doc'>
+                               <div ng-if='vm.doc.documentation'>
                                        <div ng-bind-html='vm.doc.documentation'></div>
                                </div>
-                               <div ng-if='!vm.doc'>
+                               <div ng-if='!vm.doc.documentation'>
                                        <i class='text-muted'>No documentation for this entity.</i>
                                </div>
                        </div>
                </div>
 
-               <entity-list list-title='Introduced classes' list-entities='vm.mentity.intro_mclasses'
-                       list-object-filter='{}' />
+               <entity-list list-title='Introduced classes' list-entities='vm.intros.results'
+                       list-object-filter='{}' ng-if='vm.mentity.class_name == "MModule"' />
 
-               <entity-list list-title='Class redefinitions' list-entities='vm.mentity.redef_mclassdefs'
-                       list-object-filter='{}' />
+               <entity-list list-title='Class redefinitions' list-entities='vm.redefs.results'
+                       list-object-filter='{}' ng-if='vm.mentity.class_name == "MModule"' />
 
                <entity-list list-title='Constructors'
                        list-entities='vm.mentity.all_mproperties'
                        list-object-filter='{is_init: true}' />
 
-               <entity-list list-title='Introduced properties'
-                       list-entities='vm.mentity.intro_mproperties'
-                       list-object-filter='{is_init: "!true"}' />
+               <entity-list list-title='Introduced properties' list-entities='vm.intros.results'
+                       list-object-filter='{is_init: "!true"}' ng-if='vm.mentity.class_name == "MClass"' />
 
-               <entity-list list-title='Redefined properties'
-                       list-entities='vm.mentity.redef_mproperties'
-                       list-object-filter='{is_init: "!true"}' />
+               <entity-list list-title='Redefined properties' list-entities='vm.redefs.results'
+                       list-object-filter='{is_init: "!true"}' ng-if='vm.mentity.class_name == "MClass"' />
 
        </div>
+
+       <div class='col-lg-2 col-sm-3 col-xs-12' ng-class='{
+               "hidden": vm.mentity.class_name != "MPackage"
+       }'>
+               <br>
+               <p ng-repeat='maintainer in vm.meta.maintainers' class='lead'>
+                       <img class='avatar' src='https://secure.gravatar.com/avatar/{{maintainer.gravatar}}?size=20&default=retro' />
+                       <span>
+                               <a ui-sref='person({id: maintainer.name})'>{{maintainer.name}}</a>
+                       </span>
+                       <br>
+               </p>
+               <span ng-if='vm.meta.license'>
+                       <span class='text-muted'>
+                               <a href='http://opensource.org/licenses/{{vm.meta.license}}'>{{vm.meta.license}}</a>
+                               license
+                       </span>
+                       <br>
+               </span>
+
+               <div ng-if='vm.meta.homepage || vm.meta.issues'>
+                       <h3>Links</h3>
+                       <ul class='list-unstyled'>
+                               <li ng-if='vm.meta.homepage'>
+                                       <a href='{{vm.meta.homepage}}'>Homepage</a>
+                               </li>
+                               <li ng-if='vm.meta.browse'>
+                                       <a href='{{vm.meta.browse}}'>Source Code</a>
+                               </li>
+                               <li ng-if='vm.meta.issues'>
+                                       <a href='{{vm.meta.issues}}'>Issues</a>
+                               </li>
+                       </ul>
+               </div>
+
+               <div ng-if='vm.meta.git || vm.mentity.stats.commits'>
+                       <h3>Git</h3>
+                       <ul class='list-unstyled' style='white-space: nowrap; overflow: hidden; text-overflow: ellipsis;'>
+                               <li ng-if='vm.meta.git'>
+                                       <a href='{{vm.meta.git}}'>{{vm.meta.git}}</a>
+                               </li>
+                               <li ng-if='vm.mentity.stats.commits' class='text-muted'>
+                                       <br><b>{{vm.mentity.stats.commits}} commits</b>
+                               </li>
+                               <li ng-if='vm.meta.last_date'><b class='text-muted'>Last:</b> {{vm.date(vm.meta.last_date) | date: 'medium'}}</li>
+                               <li ng-if='vm.meta.first_date'><b class='text-muted'>First: </b>{{vm.date(vm.meta.first_date) | date: 'medium'}}</li>
+                       </ul>
+               </div>
+
+               <div ng-if='vm.mentity.stats'>
+                       <h3>Quality</h3>
+                       <ul class='list-unstyled'>
+                               <li ng-if='vm.mentity.stats.documentation_score'>
+                                       {{vm.mentity.stats.documentation_score}}% documented
+                               </li>
+                               <li ng-if='vm.mentity.stats.errors' class='text-danger'>
+                                       {{vm.mentity.stats.errors}} errors
+                               </li>
+                               <li ng-if='vm.mentity.stats.warnings' class='text-warning'>
+                                       {{vm.mentity.stats.warnings}} warnings
+                                       ({{vm.mentity.stats.warnings_per_kloc}} / kloc)
+                               </li>
+                       </ul>
+               </div>
+
+               <div ng-if='vm.meta.tags.length > 0'>
+                       <h3>Tags</h3>
+                       <span ng-repeat='tag in vm.meta.tags'>
+                               <a ui-sref='tag({id: tag})'>{{tag}}</a><span ng-if='!$last'>,</span>
+                       </span>
+               </div>
+
+               <div ng-if='vm.parents.results.length > 0'>
+                       <h3>Requirements</h3>
+                       <span ng-repeat='parent in vm.parents.results'>
+                               <entity-link mentity='parent' /><span ng-if='!$last'>,</span>
+                       </span>
+               </div>
+
+               <div ng-if='vm.children.results.length > 0'>
+                       <h3>Clients</h3>
+                       <span ng-repeat='client in vm.children.results'>
+                               <entity-link mentity='client' /><span ng-if='!$last'>,</span>
+                       </span>
+               </div>
+
+               <div ng-if='vm.meta.contributors.length > 1'>
+                       <h3>Contributors</h3>
+                       <ul class='list-unstyled'>
+                               <li ng-repeat='contributor in vm.meta.contributors'>
+                                       <img class='avatar' src='https://secure.gravatar.com/avatar/{{contributor.gravatar}}?size=20&default=retro' />
+                                       <a ui-sref='person({id: contributor.name})'>
+                                       {{contributor.name}}</a>
+                               </li>
+                       </ul>
+               </div>
+
+               <div ng-if='vm.mentity.stats'>
+                       <h3>Stats</h3>
+                       <ul class='list-unstyled'>
+                               <li>{{vm.mentity.stats.mmodules}} modules</li>
+                               <li>{{vm.mentity.stats.mclasses}} classes</li>
+                               <li>{{vm.mentity.stats.mmethods}} methods</li>
+                               <li>{{vm.mentity.stats.loc}} loc</li>
+                       </ul>
+               </div>
+       </div>
 </div>
index 3543b9f..e6b559f 100644 (file)
                                <span class='glyphicon glyphicon-stats'/> Metrics
                        </a>
                </li>
+
+               <!-- grades -->
+               <li role='presentation' ui-sref-active='active'>
+                       <a ui-sref='.grades'>
+                               <span class='glyphicon glyphicon-star'/> Grades
+                       </a>
+               </li>
        </ul>
        <br>
        <ui-view />
diff --git a/share/nitweb/views/doc/grades.html b/share/nitweb/views/doc/grades.html
new file mode 100644 (file)
index 0000000..89fc74c
--- /dev/null
@@ -0,0 +1,5 @@
+<div class='card'>
+       <div class='card-body'>
+               <entity-rating mentity='vm.mentity' ratings='vm.ratings'>
+       </div>
+</div>
index 2968cce..fdd9668 100644 (file)
@@ -7,9 +7,9 @@
 
        <!-- Parents -->
        <entity-list list-title='Parents'
-               list-entities='vm.inh.direct_greaters' list-object-filter='{}' />
+               list-entities='vm.parents.results' list-object-filter='{}' />
 
        <!-- Children -->
        <entity-list list-title='Children'
-               list-entities='vm.inh.direct_smallers' list-object-filter='{}' />
+               list-entities='vm.children.results' list-object-filter='{}' />
 </div>
index 96d9b82..f99473c 100644 (file)
@@ -1,6 +1,6 @@
 <div>
        <entity-linearization
                list-title='Class definitions'
-               list-entities='vm.linearization'
+               list-entities='vm.linearization.results'
                list-focus='vm.focus' />
 </div>
diff --git a/share/nitweb/views/search.html b/share/nitweb/views/search.html
new file mode 100644 (file)
index 0000000..6614e9c
--- /dev/null
@@ -0,0 +1,12 @@
+<div class='container'>
+       <h2>
+               {{vm.entities.total}} matches for
+               <a ui-sref='search({q: vm.query})'>{{vm.query}}</a>
+       </h2>
+       <div class='card-list'>
+               <entity-card mentity='mentity' ng-repeat='mentity in vm.entities.results' />
+       </div>
+       <div class='container text-center' ng-if='vm.entities'>
+               <ui-pagination pagination='vm.entities'/>
+       </div>
+</div>
similarity index 65%
rename from src/catalog.nit
rename to src/catalog/catalog.nit
index 51cdd53..dd891ac 100644 (file)
@@ -53,18 +53,41 @@ import counter # For statistics
 import modelize # To process and count classes and methods
 
 redef class MPackage
+
+       # Metadata related to this package
+       var metadata = new MPackageMetadata(self)
+end
+
+# The metadata extracted from a MPackage
+class MPackageMetadata
+
+       # The mpacakge this metadata belongs to
+       var mpackage: MPackage
+
        # Return the associated metadata from the `ini`, if any
-       fun metadata(key: String): nullable String
-       do
-               var ini = self.ini
+       fun metadata(key: String): nullable String do
+               var ini = mpackage.ini
                if ini == null then return null
                return ini[key]
        end
 
        # The consolidated list of tags
-       var tags = new Array[String]
+       var tags: Array[String] is lazy do
+               var tags = new Array[String]
+               var string = metadata("package.tags")
+               if string == null then return tags
+               for tag in string.split(",") do
+                       tag = tag.trim
+                       if tag.is_empty then continue
+                       tags.add tag
+               end
+               if tryit != null then tags.add "tryit"
+               if apk != null then tags.add "apk"
+               if tags.is_empty then tags.add "none"
+               return tags
+       end
 
-       # The list of maintainers
+       # The list of all maintainers
        var maintainers = new Array[Person]
 
        # The list of contributors
@@ -75,6 +98,43 @@ redef class MPackage
 
        # The date of the oldest commit
        var first_date: nullable String = null
+
+       # Key: package.maintainer`
+       var maintainer: nullable String is lazy do return metadata("package.maintainer")
+
+       # Key: `package.more_contributors`
+       var more_contributors: Array[String] is lazy do
+               var res = new Array[String]
+               var string = metadata("package.more_contributors")
+               if string == null then return res
+               for c in string.split(",") do
+                       c = c.trim
+                       if c.is_empty then continue
+                       res.add c
+               end
+               return res
+       end
+
+       # Key: `package.license`
+       var license: nullable String is lazy do return metadata("package.license")
+
+       # Key: `upstream.tryit`
+       var tryit: nullable String is lazy do return metadata("upstream.tryit")
+
+       # Key: `upstream.apk`
+       var apk: nullable String is lazy do return metadata("upstream.apk")
+
+       # Key: `upstream.homepage`
+       var homepage: nullable String is lazy do return metadata("upstream.homepage")
+
+       # Key: `upstream.browse`
+       var browse: nullable String is lazy do return metadata("upstream.browse")
+
+       # Package git clone address
+       var git: nullable String is lazy do return metadata("upstream.git")
+
+       # Package issue tracker
+       var issues: nullable String is lazy do return metadata("upstream.issues")
 end
 
 redef class Int
@@ -98,6 +158,13 @@ class Person
        # Some homepage. Eg "http://example.com/~jdoe"
        var page: nullable String is writable
 
+       # Gravatar id
+       var gravatar: nullable String is lazy do
+               var email = self.email
+               if email == null then return null
+               return email.md5.to_lower
+       end
+
        # Return a full-featured link to a person
        fun to_html: String
        do
@@ -107,10 +174,9 @@ class Person
                if page != null then
                        res += "<a href=\"{page.html_escape}\">"
                end
-               var email = self.email
-               if email != null then
-                       var md5 = email.md5.to_lower
-                       res += "<img src=\"https://secure.gravatar.com/avatar/{md5}?size=20&amp;default=retro\">&nbsp;"
+               var gravatar = self.gravatar
+               if gravatar != null then
+                       res += "<img src=\"https://secure.gravatar.com/avatar/{gravatar}?size=20&amp;default=retro\">&nbsp;"
                end
                res += e
                if page != null then res += "</a>"
@@ -202,6 +268,9 @@ class Catalog
        # used to access the files and count source lines of code
        var modelbuilder: ModelBuilder
 
+       # List of all packages by their names
+       var mpackages = new HashMap[String, MPackage]
+
        # Packages by tag
        var tag2proj = new MultiHashMap[String, MPackage]
 
@@ -249,9 +318,15 @@ class Catalog
        # The score is loosely computed using other metrics
        var score = new Counter[MPackage]
 
-       # List of known people
+       # List of known people by their git string
        var persons = new HashMap[String, Person]
 
+       # Map person short names to person objects
+       var name2person = new HashMap[String, Person]
+
+       # Package statistics cache
+       var mpackages_stats = new HashMap[MPackage, MPackageStats]
+
        # Scan, register and add a contributor to a package
        fun register_contrib(person: String, mpackage: MPackage): Person
        do
@@ -268,14 +343,17 @@ class Catalog
                var projs = contrib2proj[p]
                if not projs.has(mpackage) then
                        projs.add mpackage
-                       mpackage.contributors.add p
+                       mpackage.metadata.contributors.add p
                end
+               name2person[p.name] = p
                return p
        end
 
        # Compute information for a package
        fun package_page(mpackage: MPackage)
        do
+               mpackages[mpackage.full_name] = mpackage
+
                var score = score[mpackage].to_f
 
                var mdoc = mpackage.mdoc_or_fallback
@@ -283,58 +361,45 @@ class Catalog
                        score += 100.0
                        score += mdoc.content.length.score
                end
+               var metadata = mpackage.metadata
 
-
-               var tryit = mpackage.metadata("upstream.tryit")
+               var tryit = metadata.tryit
                if tryit != null then
                        score += 1.0
                end
-               var apk = mpackage.metadata("upstream.apk")
+               var apk = metadata.apk
                if apk != null then
                        score += 1.0
                end
-
-               var homepage = mpackage.metadata("upstream.homepage")
+               var homepage = metadata.homepage
                if homepage != null then
                        score += 5.0
                end
-               var maintainer = mpackage.metadata("package.maintainer")
+               var maintainer = metadata.maintainer
                if maintainer != null then
                        score += 5.0
                        var person = register_contrib(maintainer, mpackage)
-                       mpackage.maintainers.add person
+                       mpackage.metadata.maintainers.add person
                        var projs = maint2proj[person]
                        if not projs.has(mpackage) then projs.add mpackage
                end
-               var license = mpackage.metadata("package.license")
+               var license = metadata.license
                if license != null then
                        score += 5.0
                end
-
-               var browse = mpackage.metadata("upstream.browse")
+               var browse = metadata.browse
                if browse != null then
                        score += 5.0
                end
-
-               var tags = mpackage.metadata("package.tags")
-               var ts = mpackage.tags
-               if tags != null then
-                       for t in tags.split(",") do
-                               t = t.trim
-                               if t == "" then continue
-                               ts.add t
-                       end
+               var tags = metadata.tags
+               for tag in tags do
+                       tag2proj[tag].add mpackage
                end
-               if ts.is_empty then ts.add "none"
-               if tryit != null then ts.add "tryit"
-               if apk != null then ts.add "apk"
-               for t in ts do
-                       tag2proj[t].add mpackage
+               if tags.not_empty then
+                       var cat = tags.first
+                       cat2proj[cat].add mpackage
+                       score += tags.length.score
                end
-               var cat = ts.first
-               cat2proj[cat].add mpackage
-               score += ts.length.score
-
                if deps.has(mpackage) then
                        score += deps[mpackage].greaters.length.score
                        score += deps[mpackage].direct_greaters.length.score
@@ -342,15 +407,12 @@ class Catalog
                        score += deps[mpackage].direct_smallers.length.score
                end
 
-               var contributors = mpackage.contributors
-               var more_contributors = mpackage.metadata("package.more_contributors")
-               if more_contributors != null then
-                       for c in more_contributors.split(",") do
-                               register_contrib(c.trim, mpackage)
-                       end
+               var contributors = mpackage.metadata.contributors
+               var more_contributors = metadata.more_contributors
+               for c in more_contributors do
+                       register_contrib(c, mpackage)
                end
                score += contributors.length.to_f
-
                var mmodules = 0
                var mclasses = 0
                var mmethods = 0
@@ -417,7 +479,6 @@ class Catalog
                end
                var documentation_score =  (100.0 * doc_score / entity_score).to_i
                self.documentation_score[mpackage] = documentation_score
-
                #score += mmodules.score
                score += mclasses.score
                score += mmethods.score
@@ -433,12 +494,15 @@ class Catalog
                var ini = mpackage.ini
                if ini == null then return
 
+               var root = mpackage.root
+               if root == null then return
+
                # TODO use real git info
                #var repo = ini.get_or_null("upstream.git")
                #var branch = ini.get_or_null("upstream.git.branch")
                #var directory = ini.get_or_null("upstream.git.directory")
 
-               var dirpath = mpackage.root.filepath
+               var dirpath = root.filepath
                if dirpath == null then return
 
                # Collect commits info
@@ -452,8 +516,8 @@ class Catalog
                        if s.length != 2 or s.last == "" then continue
 
                        # Collect date of last and first commit
-                       if mpackage.last_date == null then mpackage.last_date = s.first
-                       mpackage.first_date = s.first
+                       if mpackage.metadata.last_date == null then mpackage.metadata.last_date = s.first
+                       mpackage.metadata.first_date = s.first
 
                        # Count contributors
                        contributors.inc(s.last)
@@ -461,10 +525,132 @@ class Catalog
                for c in contributors.sort.reverse_iterator do
                        register_contrib(c, mpackage)
                end
+       end
+
+       # Compose package stats
+       fun mpackage_stats(mpackage: MPackage): MPackageStats do
+               var stats = new MPackageStats
+               stats.mmodules = mmodules[mpackage]
+               stats.mclasses = mclasses[mpackage]
+               stats.mmethods = mmethods[mpackage]
+               stats.loc = loc[mpackage]
+               stats.errors = errors[mpackage]
+               stats.warnings = warnings[mpackage]
+               stats.warnings_per_kloc = warnings_per_kloc[mpackage]
+               stats.documentation_score = documentation_score[mpackage]
+               stats.commits = commits[mpackage]
+               stats.score = score[mpackage]
+
+               mpackages_stats[mpackage] = stats
+               return stats
+       end
 
+       # Compose catalog stats
+       var catalog_stats: CatalogStats is lazy do
+               var stats = new CatalogStats
+               stats.packages = mpackages.length
+               stats.maintainers = maint2proj.length
+               stats.contributors = contrib2proj.length
+               stats.tags = tag2proj.length
+               stats.modules = mmodules.sum
+               stats.classes = mclasses.sum
+               stats.methods = mmethods.sum
+               stats.loc = loc.sum
+               return stats
        end
 end
 
+# Catalog statistics
+class CatalogStats
+
+       # Number of packages
+       var packages = 0
+
+       # Number of maintainers
+       var maintainers = 0
+
+       # Number of contributors
+       var contributors = 0
+
+       # Number of tags
+       var tags = 0
+
+       # Number of modules
+       var modules = 0
+
+       # Number of classes
+       var classes = 0
+
+       # Number of methods
+       var methods = 0
+
+       # Number of line of codes
+       var loc = 0
+end
+
+# MPackage statistics for the catalog
+class MPackageStats
+
+       # Number of modules
+       var mmodules = 0
+
+       # Number of classes
+       var mclasses = 0
+
+       # Number of methods
+       var mmethods = 0
+
+       # Number of lines of code
+       var loc = 0
+
+       # Number of errors
+       var errors = 0
+
+       # Number of warnings and advices
+       var warnings = 0
+
+       # Number of warnings per 1000 lines of code (w/kloc)
+       var warnings_per_kloc = 0
+
+       # Documentation score (between 0 and 100)
+       var documentation_score = 0
+
+       # Number of commits by package
+       var commits = 0
+
+       # Score by package
+       #
+       # The score is loosely computed using other metrics
+       var score = 0
+end
+
+# Sort the mpackages by their score
+class CatalogScoreSorter
+       super Comparator
+
+       # Catalog used to access scores
+       var catalog: Catalog
+
+       redef type COMPARED: MPackage
+
+       redef fun compare(a, b) do
+               if not catalog.mpackages_stats.has_key(a) then return 1
+               if not catalog.mpackages_stats.has_key(b) then return -1
+               var astats = catalog.mpackages_stats[a]
+               var bstats = catalog.mpackages_stats[b]
+               return bstats.score <=> astats.score
+       end
+end
+
+# Sort tabs alphabetically
+class CatalogTagsSorter
+       super Comparator
+
+       redef type COMPARED: String
+
+       redef fun compare(a, b) do return a <=> b
+end
+
 # Execute a git command and return the result
 fun git_run(command: String...): String
 do
diff --git a/src/catalog/catalog_json.nit b/src/catalog/catalog_json.nit
new file mode 100644 (file)
index 0000000..da1bcfc
--- /dev/null
@@ -0,0 +1,85 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Translate catalog entities to JSON
+module catalog_json
+
+import catalog
+
+redef class MPackageMetadata
+       serialize
+
+       redef fun core_serialize_to(v) do
+               super
+               v.serialize_attribute("license", license)
+               v.serialize_attribute("maintainers", maintainers)
+               v.serialize_attribute("contributors", contributors)
+               v.serialize_attribute("tags", tags)
+               v.serialize_attribute("tryit", tryit)
+               v.serialize_attribute("apk", apk)
+               v.serialize_attribute("homepage", homepage)
+               v.serialize_attribute("browse", browse)
+               v.serialize_attribute("git", git)
+               v.serialize_attribute("issues", issues)
+               v.serialize_attribute("first_date", first_date)
+               v.serialize_attribute("last_date", last_date)
+       end
+end
+
+# Catalog statistics
+redef class CatalogStats
+       serialize
+
+       redef fun core_serialize_to(v) do
+               super
+               v.serialize_attribute("packages", packages)
+               v.serialize_attribute("maintainers", maintainers)
+               v.serialize_attribute("contributors", contributors)
+               v.serialize_attribute("tags", tags)
+               v.serialize_attribute("modules", modules)
+               v.serialize_attribute("classes", classes)
+               v.serialize_attribute("methods", methods)
+               v.serialize_attribute("loc", loc)
+       end
+end
+
+# MPackage statistics for the catalog
+redef class MPackageStats
+       serialize
+
+       redef fun core_serialize_to(v) do
+               super
+               v.serialize_attribute("mmodules", mmodules)
+               v.serialize_attribute("mclasses", mclasses)
+               v.serialize_attribute("mmethods", mmethods)
+               v.serialize_attribute("loc", loc)
+               v.serialize_attribute("errors", errors)
+               v.serialize_attribute("warnings", warnings)
+               v.serialize_attribute("warnings_per_kloc", warnings_per_kloc)
+               v.serialize_attribute("documentation_score", documentation_score)
+               v.serialize_attribute("commits", commits)
+               v.serialize_attribute("score", score)
+       end
+end
+
+redef class Person
+       serialize
+
+       redef fun core_serialize_to(v) do
+               super
+               v.serialize_attribute("name", name)
+               v.serialize_attribute("email", email)
+               v.serialize_attribute("gravatar", gravatar)
+       end
+end
index a21456d..08cdb07 100644 (file)
@@ -24,6 +24,7 @@ import c_tools
 private import annotation
 import mixin
 import counter
+import pkgconfig
 private import explain_assert_api
 
 # Add compiling options
@@ -189,6 +190,8 @@ class MakefileToolchain
                var time1 = get_time
                self.toolcontext.info("*** END WRITING C: {time1-time0} ***", 2)
 
+               if not toolcontext.check_errors then return
+
                # Execute the Makefile
 
                if self.toolcontext.opt_no_cc.value then return
@@ -467,14 +470,19 @@ endif
                        f.close
                end
 
-               var java_files = new Array[ExternFile]
-
+               # pkg-config annotation support
                var pkgconfigs = new Array[String]
                for f in compiler.extern_bodies do
                        pkgconfigs.add_all f.pkgconfigs
                end
-               # Protect pkg-config
+
+               # Only test if pkg-config is used
                if not pkgconfigs.is_empty then
+
+                       # Check availability of pkg-config, silence the proc output
+                       toolcontext.check_pkgconfig_packages pkgconfigs
+
+                       # Double the check in the Makefile in case it's distributed
                        makefile.write """
 # does pkg-config exists?
 ifneq ($(shell which pkg-config >/dev/null; echo $$?), 0)
@@ -492,6 +500,7 @@ endif
                end
 
                # Compile each required extern body into a specific .o
+               var java_files = new Array[ExternFile]
                for f in compiler.extern_bodies do
                        var o = f.makefile_rule_name
                        var ff = f.filename.basename
similarity index 95%
rename from src/web/web.nit
rename to src/doc/api/api.nit
index 2bbd690..2835985 100644 (file)
 # limitations under the License.
 
 # Components required to build a web server about the nit model.
-module web
+module api
 
 import api_auth
 import api_model
-import api_catalog
-import api_graph
 import api_docdown
 import api_metrics
 import api_feedback
similarity index 98%
rename from src/web/api_auth.nit
rename to src/doc/api/api_auth.nit
index 80cce5d..e9d066f 100644 (file)
@@ -14,7 +14,7 @@
 
 module api_auth
 
-import web_base
+import api_base
 import popcorn::pop_auth
 
 redef class NitwebConfig
diff --git a/src/doc/api/api_base.nit b/src/doc/api/api_base.nit
new file mode 100644 (file)
index 0000000..e14cf3b
--- /dev/null
@@ -0,0 +1,254 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Base classes used by `nitweb`.
+module api_base
+
+import popcorn
+import popcorn::pop_config
+import popcorn::pop_repos
+import popcorn::pop_json
+
+import commands::commands_http
+import commands::commands_json
+import commands::commands_html
+
+# Nitweb config file.
+class NitwebConfig
+       super AppConfig
+
+       redef fun default_db_name do return "nitweb"
+
+       # Model to use.
+       var model: Model
+
+       # MModule used to flatten model.
+       var mainmodule: MModule
+
+       # Modelbuilder used to access sources.
+       var modelbuilder: ModelBuilder
+
+       # The JSON API does not filter anything by default.
+       #
+       # So we can cache the model view.
+       var view: ModelView
+
+       # Catalog to pass to handlers.
+       var catalog: Catalog is noinit
+
+       # Build the catalog
+       #
+       # This method should be called at nitweb startup.
+       # TODO move to nitweb
+       fun build_catalog do
+               var catalog = new Catalog(modelbuilder)
+               # Compute the poset
+               for p in view.mpackages do
+                       var g = p.root
+                       assert g != null
+                       modelbuilder.scan_group(g)
+
+                       catalog.deps.add_node(p)
+                       for gg in p.mgroups do for m in gg.mmodules do
+                               for im in m.in_importation.direct_greaters do
+                                       var ip = im.mpackage
+                                       if ip == null or ip == p then continue
+                                       catalog.deps.add_edge(p, ip)
+                               end
+                       end
+               end
+               # Build the catalog
+               for mpackage in view.mpackages do
+                       catalog.package_page(mpackage)
+                       catalog.git_info(mpackage)
+                       catalog.mpackage_stats(mpackage)
+               end
+               self.catalog = catalog
+       end
+end
+
+# Specific handler for the nitweb API.
+abstract class APIHandler
+       super Handler
+
+       # App config.
+       var config: NitwebConfig
+
+       # Find the MEntity ` with `full_name`.
+       fun find_mentity(model: ModelView, full_name: nullable String): nullable MEntity do
+               if full_name == null then return null
+               var mentity = model.mentity_by_full_name(full_name.from_percent_encoding)
+               if mentity == null then return null
+               if config.view.accept_mentity(mentity) then return mentity
+               return null
+       end
+
+       # Try to load the mentity from uri with `/:id`.
+       #
+       # Send 400 if `:id` is null.
+       # Send 404 if no entity is found.
+       # Return null in both cases.
+       fun mentity_from_uri(req: HttpRequest, res: HttpResponse): nullable MEntity do
+               var id = req.param("id")
+               if id == null then
+                       res.api_error(400, "Expected mentity full name")
+                       return null
+               end
+               var mentity = find_mentity(config.view, id)
+               if mentity == null then
+                       res.api_error(404, "MEntity `{id}` not found")
+               end
+               return mentity
+       end
+
+       # Paginate a json array
+       #
+       # Returns only a subset of `results` depending on the current `page` and the
+       # number of elements to return set by `limit`.
+       #
+       # Transforms the json array into an object:
+       # ~~~json
+       # {
+       #       "page": 2,
+       #       "limit": 10,
+       #       "results: [ ... ],
+       #       "max": 5,
+       #       "total": 49
+       # }
+       # ~~~
+       fun paginate(results: JsonArray, count: Int, page, limit: nullable Int): JsonObject do
+               if page == null or page <= 0 then page = 1
+               if limit == null or limit <= 0 then limit = 20
+
+               var max = count / limit
+               if max == 0 then
+                       page = 1
+                       max = 1
+               else if page > max then
+                       page = max
+               end
+
+               var lstart = (page - 1) * limit
+               var lend = limit
+               if lstart + lend > count then lend = count - lstart
+
+               var res = new JsonObject
+               res["page"] = page
+               res["limit"] = limit
+               res["results"] = new JsonArray.from(results.subarray(lstart, lend))
+               res["max"] = max
+               res["total"] = count
+               return res
+       end
+end
+
+# A Rooter dedicated to APIHandlers.
+class APIRouter
+       super Router
+
+       # App config
+       var config: NitwebConfig
+end
+
+redef class HttpResponse
+
+       # Return an HTTP error response with `status`
+       #
+       # Like the rest of the API, errors are formated as JSON:
+       # ~~~json
+       # { "status": 404, "message": "Not found" }
+       # ~~~
+       fun api_error(status: Int, message: String) do
+               json(new APIError(status, message), status)
+       end
+
+       # Return `serializable` as a json string
+       #
+       # Uses `req` to define serialization options.
+       fun api_json(req: HttpRequest, serializable: nullable Serializable, status: nullable Int, plain, pretty: nullable Bool) do
+               json(serializable, status, plain, req.bool_arg("pretty"))
+       end
+end
+
+# An error returned by the API.
+#
+# Can be serialized to json.
+class APIError
+       serialize
+
+       # Reponse status
+       var status: Int
+
+       # Response error message
+       var message: String
+end
+
+redef class MEntity
+
+       # URL to `self` within the web interface.
+       fun web_url: String do return "/doc/" / full_name
+
+       # URL to `self` within the JSON api.
+       fun api_url: String do return "/api/entity/" / full_name
+
+       redef fun core_serialize_to(v) do
+               super
+               v.serialize_attribute("web_url", web_url)
+               v.serialize_attribute("api_url", api_url)
+       end
+end
+
+redef class MEntityRef
+       redef fun core_serialize_to(v) do
+               super
+               v.serialize_attribute("web_url", mentity.web_url)
+               v.serialize_attribute("api_url", mentity.api_url)
+       end
+end
+
+redef class MClassDef
+       redef fun web_url do return "{mclass.web_url}/lin#{full_name}"
+end
+
+redef class MPropDef
+       redef fun web_url do return "{mproperty.web_url}/lin#{full_name}"
+end
+
+redef class MType
+       redef fun core_serialize_to(v) do
+               super
+               v.serialize_attribute("web_url", web_url)
+               v.serialize_attribute("api_url", api_url)
+       end
+end
+
+redef class MClassType
+       redef var web_url = mclass.web_url is lazy
+       redef var api_url = mclass.api_url is lazy
+end
+
+redef class MNullableType
+       redef var web_url = mtype.web_url is lazy
+       redef var api_url = mtype.api_url is lazy
+end
+
+redef class MParameterType
+       redef var web_url = mclass.web_url is lazy
+       redef var api_url = mclass.api_url is lazy
+end
+
+redef class MVirtualType
+       redef var web_url = mproperty.web_url is lazy
+       redef var api_url = mproperty.api_url is lazy
+end
diff --git a/src/doc/api/api_docdown.nit b/src/doc/api/api_docdown.nit
new file mode 100644 (file)
index 0000000..0a23542
--- /dev/null
@@ -0,0 +1,45 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Nitdoc specific Markdown format handling for Nitweb
+module api_docdown
+
+import api_model
+import commands::commands_docdown
+
+redef class NitwebConfig
+       # Specific Markdown processor to use within Nitweb
+       var md_processor: MarkdownProcessor is lazy do
+               var parser = new CommandParser(view, modelbuilder)
+               var proc = new CmdMarkdownProcessor(parser)
+               proc.decorator = new CmdDecorator(view)
+               return proc
+       end
+end
+
+redef class APIRouter
+       redef init do
+               super
+               use("/docdown/", new APIDocdown(config))
+       end
+end
+
+# Docdown handler accept docdown as POST data and render it as HTML
+class APIDocdown
+       super APIHandler
+
+       redef fun post(req, res) do
+               res.html config.md_processor.process(req.body)
+       end
+end
similarity index 93%
rename from src/web/api_feedback.nit
rename to src/doc/api/api_feedback.nit
index 6a356c3..81faaeb 100644 (file)
@@ -15,7 +15,7 @@
 # Feedback related features
 module api_feedback
 
-import web_base
+import api_base
 import popcorn::pop_auth
 
 redef class NitwebConfig
@@ -65,7 +65,7 @@ class APIStarsMost
        super APIFeedBack
 
        redef fun get(req, res) do
-               res.json new JsonArray.from(config.stars.most_rated)
+               res.api_json(req, new JsonArray.from(config.stars.most_rated))
        end
 end
 
@@ -74,7 +74,7 @@ class APIStarsBest
        super APIFeedBack
 
        redef fun get(req, res) do
-               res.json new JsonArray.from(config.stars.best_rated)
+               res.api_json(req, new JsonArray.from(config.stars.best_rated))
        end
 end
 
@@ -83,7 +83,7 @@ class APIStarsWorst
        super APIFeedBack
 
        redef fun get(req, res) do
-               res.json new JsonArray.from(config.stars.worst_rated)
+               res.api_json(req, new JsonArray.from(config.stars.worst_rated))
        end
 end
 
@@ -92,7 +92,7 @@ class APIStarsUsers
        super APIFeedBack
 
        redef fun get(req, res) do
-               res.json new JsonArray.from(config.stars.users_ratings)
+               res.api_json(req, new JsonArray.from(config.stars.users_ratings))
        end
 end
 
@@ -103,7 +103,7 @@ class APIUserStars
        redef fun get(req, res) do
                var user = get_session_user(req)
                if user == null then return
-               res.json new JsonArray.from(user.ratings(config))
+               res.api_json(req, new JsonArray.from(user.ratings(config)))
        end
 end
 
@@ -115,7 +115,7 @@ class APIStars
                var login = get_session_login(req)
                var mentity = mentity_from_uri(req, res)
                if mentity == null then return
-               res.json mentity.ratings(config, login)
+               res.api_json(req, mentity.ratings(config, login))
        end
 end
 
@@ -129,7 +129,7 @@ class APIStarsDimension
                if mentity == null then return
                var dimension = req.param("dimension")
                if dimension == null then return
-               res.json mentity.ratings_by_dimension(config, dimension, login)
+               res.api_json(req, mentity.ratings_by_dimension(config, dimension, login))
        end
 
        redef fun post(req, res) do
@@ -166,7 +166,7 @@ class APIStarsDimension
                else
                        config.stars.save new StarRating(login, mentity.full_name, dimension, rating)
                end
-               res.json mentity.ratings_by_dimension(config, dimension, login)
+               res.api_json(req, mentity.ratings_by_dimension(config, dimension, login))
        end
 end
 
similarity index 87%
rename from src/web/api_light.nit
rename to src/doc/api/api_light.nit
index 784d683..b6b2657 100644 (file)
@@ -15,8 +15,7 @@
 # Highlight and collect messages from a piece of code
 module api_light
 
-import web_base
-import highlight
+import api_base
 
 redef class APIRouter
        redef init do
@@ -30,8 +29,8 @@ class APILight
        super APIHandler
 
        redef fun post(req, res) do
-               var hl = new HighlightVisitor
-               var hlcode = hightlightcode(hl, req.body)
-               res.json(hlcode)
+               var hl = new HtmlightVisitor
+               var hlcode = hl.highlightcode(req.body)
+               res.api_json(req, hlcode)
        end
 end
similarity index 76%
rename from src/web/api_metrics.nit
rename to src/doc/api/api_metrics.nit
index 03518e4..4fcdb9e 100644 (file)
@@ -14,7 +14,7 @@
 
 module api_metrics
 
-import web_base
+import api_base
 import metrics
 
 redef class APIRouter
@@ -28,41 +28,39 @@ class APIStructuralMetrics
        super APIHandler
 
        private fun mclasses_metrics: MetricSet do
-               var mainmodule = config.mainmodule
                var metrics = new MetricSet
-               metrics.register(new CNOA(mainmodule, config.view))
-               metrics.register(new CNOP(mainmodule, config.view))
-               metrics.register(new CNOC(mainmodule, config.view))
-               metrics.register(new CNOD(mainmodule, config.view))
-               metrics.register(new CNOAC(mainmodule, config.view))
-               metrics.register(new CNOAA(mainmodule, config.view))
-               metrics.register(new CNOAI(mainmodule, config.view))
-               metrics.register(new CDIT(mainmodule, config.view))
-               metrics.register(new CNBP(mainmodule, config.view))
-               metrics.register(new CNBA(mainmodule, config.view))
-               metrics.register(new CNBM(mainmodule, config.view))
-               metrics.register(new CNBI(mainmodule, config.view))
-               metrics.register(new CNBV(mainmodule, config.view))
-               metrics.register(new CNBIP(mainmodule, config.view))
-               metrics.register(new CNBRP(mainmodule, config.view))
-               metrics.register(new CNBHP(mainmodule, config.view))
-               metrics.register(new CNBLP(mainmodule, config.view))
+               metrics.register(new CNOA(config.view))
+               metrics.register(new CNOP(config.view))
+               metrics.register(new CNOC(config.view))
+               metrics.register(new CNOD(config.view))
+               metrics.register(new CNOAC(config.view))
+               metrics.register(new CNOAA(config.view))
+               metrics.register(new CNOAI(config.view))
+               metrics.register(new CDIT(config.view))
+               metrics.register(new CNBP(config.view))
+               metrics.register(new CNBA(config.view))
+               metrics.register(new CNBM(config.view))
+               metrics.register(new CNBI(config.view))
+               metrics.register(new CNBV(config.view))
+               metrics.register(new CNBIP(config.view))
+               metrics.register(new CNBRP(config.view))
+               metrics.register(new CNBHP(config.view))
+               metrics.register(new CNBLP(config.view))
                return metrics
        end
 
        private fun mmodules_metrics: MetricSet do
-               var mainmodule = config.mainmodule
                var metrics = new MetricSet
-               metrics.register(new MNOA(mainmodule, config.view))
-               metrics.register(new MNOP(mainmodule, config.view))
-               metrics.register(new MNOC(mainmodule, config.view))
-               metrics.register(new MNOD(mainmodule, config.view))
-               metrics.register(new MDIT(mainmodule, config.view))
-               metrics.register(new MNBD(mainmodule, config.view))
-               metrics.register(new MNBI(mainmodule, config.view))
-               metrics.register(new MNBR(mainmodule, config.view))
-               metrics.register(new MNBCC(mainmodule, config.view))
-               metrics.register(new MNBAC(mainmodule, config.view))
+               metrics.register(new MNOA(config.view))
+               metrics.register(new MNOP(config.view))
+               metrics.register(new MNOC(config.view))
+               metrics.register(new MNOD(config.view))
+               metrics.register(new MDIT(config.view))
+               metrics.register(new MNBD(config.view))
+               metrics.register(new MNBI(config.view))
+               metrics.register(new MNBR(config.view))
+               metrics.register(new MNBCC(config.view))
+               metrics.register(new MNBAC(config.view))
                return metrics
        end
 
@@ -74,7 +72,7 @@ class APIStructuralMetrics
                        res.api_error(404, "No metric for mentity `{mentity.full_name}`")
                        return
                end
-               res.json metrics
+               res.api_json(req, metrics)
        end
 end
 
diff --git a/src/doc/api/api_model.nit b/src/doc/api/api_model.nit
new file mode 100644 (file)
index 0000000..e2b3473
--- /dev/null
@@ -0,0 +1,301 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module api_model
+
+import api_base
+
+redef class APIRouter
+       redef init do
+               super
+               use("/list", new APIList(config))
+               use("/random", new APIRandom(config))
+               use("/search", new APISearch(config))
+
+               use("/entity/:id", new APIEntity(config))
+               use("/doc/:id", new APIEntityDoc(config))
+               use("/code/:id", new APIEntityCode(config))
+               use("/lin/:id", new APIEntityLinearization(config))
+               use("/defs/:id", new APIEntityDefs(config))
+               use("/intros/:id", new APIEntityIntros(config))
+               use("/redefs/:id", new APIEntityRedefs(config))
+               use("/meta/:id", new APIEntityMetadata(config))
+               use("/all/:id", new APIEntityAll(config))
+
+               use("/ancestors/:id", new APIEntityAncestors(config))
+               use("/parents/:id", new APIEntityParents(config))
+               use("/children/:id", new APIEntityChildren(config))
+               use("/descendants/:id", new APIEntityDescendants(config))
+
+               use("/uml/:id", new APIEntityUML(config))
+               use("/graph/inheritance/:id", new APIInheritanceGraph(config))
+
+               use("/catalog/packages/", new APICatalogPackages(config))
+               use("/catalog/stats", new APICatalogStats(config))
+               use("/catalog/tags", new APICatalogTags(config))
+               use("/catalog/tag/:tid", new APICatalogTag(config))
+               use("/catalog/person/:pid", new APICatalogPerson(config))
+               use("/catalog/person/:pid/maintaining", new APICatalogMaintaining(config))
+               use("/catalog/person/:pid/contributing", new APICatalogContributing(config))
+       end
+end
+
+# An API Handler that use a DocCommand to respond
+abstract class APICommand
+       super APIHandler
+
+       # Return the doc command to apply for self
+       fun command: DocCommand is abstract
+
+       redef fun get(req, res) do
+               var command = self.command
+               var status = command.http_init(req)
+               if status isa CmdError then
+                       res.api_error(status.http_status_code, status.to_s)
+                       return
+               end
+               res.api_json(req, command.to_json)
+       end
+end
+
+# CmdModel
+
+# List all mentities.
+#
+# Example: `GET /list?kind=modules?limit=10`
+class APIList
+       super APICommand
+
+       redef fun command do return new CmdModelEntities(config.view)
+end
+
+# Return a random list of MEntities.
+#
+# Example: `GET /random?kind=modules&limit=10`
+class APIRandom
+       super APICommand
+
+       redef fun command do return new CmdRandomEntities(config.view)
+end
+
+# Search mentities from a cmd string.
+#
+# Example: `GET /search?q=Arr`
+class APISearch
+       super APIList
+
+       redef fun command do return new CmdCatalogSearch(config.view, config.catalog)
+end
+
+# CmdEntity
+
+# Return the JSON representation of a MEntity.
+#
+# Example: `GET /entity/core::Array`
+class APIEntity
+       super APICommand
+
+       redef fun command do return new CmdEntity(config.view)
+end
+
+# Return the full MDoc of a MEntity.
+#
+# Example: `GET /entity/core::Array/doc`
+class APIEntityDoc
+       super APICommand
+
+       redef fun command do return new CmdComment(config.view)
+end
+
+# List MEntity ancestors
+#
+# Example: `GET /ancestors/core::Array`
+class APIEntityAncestors
+       super APICommand
+
+       redef fun command do return new CmdAncestors(config.view)
+end
+
+# List MEntity parents
+#
+# Example: `GET /parents/core::Array`
+class APIEntityParents
+       super APICommand
+
+       redef fun command do return new CmdParents(config.view)
+end
+
+# List MEntity children
+#
+# Example: `GET /children/core::Array`
+class APIEntityChildren
+       super APICommand
+
+       redef fun command do return new CmdChildren(config.view)
+end
+
+# List MEntity descendants
+#
+# Example: `GET /descendants/core::Array`
+class APIEntityDescendants
+       super APICommand
+
+       redef fun command do return new CmdDescendants(config.view)
+end
+
+# Linearize super definitions of a MClassDef or a MPropDef if any.
+#
+# Example: `GET /linearization/core::Array`
+class APIEntityLinearization
+       super APICommand
+
+       redef fun command do return new CmdLinearization(config.view)
+end
+
+# List definitions of a MEntity.
+#
+# Example: `GET /defs/core::Array`
+class APIEntityDefs
+       super APICommand
+
+       redef fun command do return new CmdFeatures(config.view)
+end
+
+# List intro definitions of a MEntity.
+#
+# Example: `GET /intros/core::Array`
+class APIEntityIntros
+       super APICommand
+
+       redef fun command do return new CmdIntros(config.view)
+end
+
+# List redef definitions of a MEntity.
+#
+# Example: `GET /redefs/core::Array`
+class APIEntityRedefs
+       super APICommand
+
+       redef fun command do return new CmdRedefs(config.view)
+end
+
+# List all definitions accessible from a MEntity.
+#
+# Example: `GET /all/core::Array`
+class APIEntityAll
+       super APICommand
+
+       redef fun command do return new CmdAllProps(config.view)
+end
+
+# Return the source code of MEntity.
+#
+# Example: `GET /code/core::Array`
+class APIEntityCode
+       super APICommand
+
+       redef fun command do return new CmdEntityCode(config.view, config.modelbuilder)
+end
+
+# Return the UML diagram for MEntity.
+#
+# Example: `GET /uml/core::Array`
+class APIEntityUML
+       super APICommand
+
+       redef fun command do return new CmdUML(config.view)
+end
+
+# Return the inheritance graph for MEntity.
+#
+# Example: `GET /inheritance/core::Array`
+class APIInheritanceGraph
+       super APICommand
+
+       redef fun command do return new CmdInheritanceGraph(config.view)
+end
+
+# CmdCatalog
+
+# Get all the packages from the catalog using pagination
+#
+# `GET /packages?p=1&n=10`: get the list of catalog by page
+class APICatalogPackages
+       super APICommand
+
+       redef fun command do return new CmdCatalogPackages(config.view, config.catalog)
+end
+
+# Get the catalog statistics
+#
+# `GET /stats`: return the catalog statistics
+class APICatalogStats
+       super APICommand
+
+       redef fun command do return new CmdCatalogStats(config.view, config.catalog)
+end
+
+# Get the package metadata
+#
+# `GET /:id/metadata`: return a paginated list of packages
+class APIEntityMetadata
+       super APICommand
+
+       redef fun command do return new CmdMetadata(config.view)
+end
+
+# Get all the tags from the catalog
+#
+# `GET /tags`: the list of tags associated with their number of packages
+class APICatalogTags
+       super APICommand
+
+       redef fun command do return new CmdCatalogTags(config.view, config.catalog)
+end
+
+# Get the packages related to a tag
+#
+# `GET /tag/:tid?p=1&n=10`: return a paginated list of packages
+class APICatalogTag
+       super APICommand
+
+       redef fun command do return new CmdCatalogTag(config.view, config.catalog)
+end
+
+# Get a person existing in the catalog
+#
+# `GET /person/:pid`: get the person with `pid`
+class APICatalogPerson
+       super APICommand
+
+       redef fun command do return new CmdCatalogPerson(config.view, config.catalog)
+end
+
+# Get the list of mpackages maintained by a person
+#
+# `GET /person/:pid/maintaining?p=1&n=10`: return a paginated list of packages
+class APICatalogMaintaining
+       super APICommand
+
+       redef fun command do return new CmdCatalogMaintaining(config.view, config.catalog)
+end
+
+# Get the list of mpackages contributed by a person
+#
+# `GET /person/:pid/contributing?p=1&n=10`: return a paginated list of packages
+class APICatalogContributing
+       super APICommand
+
+       redef fun command do return new CmdCatalogContributing(config.view, config.catalog)
+end
similarity index 71%
rename from contrib/mnit_test/src/simple_linux.nit
rename to src/doc/commands/commands.nit
index 1ff4235..25206d4 100644 (file)
@@ -1,12 +1,10 @@
 # This file is part of NIT ( http://www.nitlanguage.org ).
 #
-# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 #
-#     http://www.apache.org/licenses/LICENSE-2.0
+# http://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-module simple_linux
-
-import simple
-import mnit::linux
-
-import test_data_store
+module commands
 
-super
+import commands::commands_base
+import commands::commands_model
+import commands::commands_graph
+import commands::commands_usage
+import commands::commands_parser
diff --git a/src/doc/commands/commands_base.nit b/src/doc/commands/commands_base.nit
new file mode 100644 (file)
index 0000000..fce0b61
--- /dev/null
@@ -0,0 +1,326 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Documentation commands
+#
+# A DocCommand returns data about a model, an entity or a piece of documentation.
+#
+# Each command assumes a different goal like getting the comment of an entity,
+# getting a list of packages, getting an UML class diagram etc.
+#
+# Commands are used by documentation tools to build up documentation ressources
+# like Nitweb, Nitx, Nitdoc or documentation cards within READMEs.
+module commands_base
+
+import model::model_index
+import catalog
+
+# Documentation command
+#
+# An abstract command that works on a ModelView.
+#
+# Since they are used by a wide variety of clients, initialization of DocCommands
+# works in two steps.
+#
+# First, you pass the data you already have to the command at init:
+# ~~~nitish
+# var c1 = new CmdEntity(view, mentity_name = "Array")
+# var c2 = new CmdEntity(view, mentity = my_entity)
+# ~~~
+#
+# Then, you call `init_command` to initialize the missing field from the stub data:
+# ~~~nitish
+# var r1 = c1.init_command
+# assert c1.mentity != null
+# assert r1 isa CmdSuccess
+#
+# var r2 = c2.init_command
+# assert c2.mentity_name != null
+# assert r2 isa CmdSuccess
+# ~~~
+#
+# See `init_command` for more details about the returned statuses.
+abstract class DocCommand
+
+       # ModelView
+       #
+       # Set of entities and filters used to retrieve data from the model.
+       var view: ModelView
+
+       # Initialize the command
+       #
+       # Returns a command message that gives the status of the command initialization.
+       #
+       # There is 3 categories of messages:
+       # * `CmdSuccess`: when the command that initialized correctly;
+       # * `CmdError`: when the command cannot be initialized;
+       # * `CmdWarning`: when something is wrong with the command but a result still can be produced.
+       #
+       # Warnings are generally used to distinguish empty list or mdoc from no data at all.
+       fun init_command: CmdMessage do return new CmdSuccess
+end
+
+# Command message
+#
+# A message returned by a command.
+# Messages are used to inform the client of the command initialization status and results.
+# Mostly, messages are used to check if a command is in an error state.
+abstract class CmdMessage
+end
+
+# Command Success
+#
+# Returned when the command was performed without any error or warning.
+class CmdSuccess
+       super CmdMessage
+end
+
+# Command Error
+#
+# Command errors are returned when the command cannot provide results because
+# of a problem on the user-end (i.e. Bad command name, MEntity not found etc.).
+abstract class CmdError
+       super CmdMessage
+end
+
+# Command Warning
+#
+# Command warnings are returned when the command cannot provide results because
+# of a problem on the model-end (i.e. No documentation for a MEntity, no code etc.)
+abstract class CmdWarning
+       super CmdMessage
+end
+
+# Basic commands
+
+# A command about a MEntity
+class CmdEntity
+       super DocCommand
+
+       # MEntity this command is about
+       #
+       # Alternatively you can provide a `mentity_name`.
+       var mentity: nullable MEntity = null is optional, writable
+
+       # Name of the mentity this command is about
+       #
+       # Alternatively you can directly provide the `mentity`.
+       var mentity_name: nullable String = null is optional, writable
+
+       # Initialize the command mentity.
+       #
+       # If not already set, tries to find the `mentity` from the `mentity_name`.
+       #
+       # This function try to match `mentity_name` both as a `full_name` and
+       # `name`.
+       #
+       # Return states:
+       # * `CmdSuccess`: everything was ok;
+       # * `ErrorMEntityNoName`: no `mentity` and no `mentity_name` provided;
+       # * `ErrorMEntityNotFound`: no mentity for `mentity_name`;
+       # * `ErrorMEntityConflict`: `mentity_name` was a non-qualified name that
+       #   returns more than one MEntity.
+       fun init_mentity: CmdMessage do
+               if mentity != null then
+                       if mentity_name == null then mentity_name = mentity.as(not null).full_name
+                       return new CmdSuccess
+               end
+
+               var mentity_name = self.mentity_name
+               if mentity_name == null then return new ErrorMEntityNoName
+
+               mentity = view.mentity_by_full_name(mentity_name)
+               if mentity == null then
+                       var mentities = view.mentities_by_name(mentity_name)
+                       if mentities.is_empty then
+                               var suggest = view.find(mentity_name, 3)
+                               return new ErrorMEntityNotFound(mentity_name, suggest)
+                       else if mentities.length > 1 then
+                               return new ErrorMEntityConflict(mentity_name, mentities)
+                       end
+                       mentity = mentities.first
+               end
+               return new CmdSuccess
+       end
+
+       # See `init_mentity`.
+       redef fun init_command do return init_mentity
+end
+
+# No MEntity name provided
+class ErrorMEntityNoName
+       super CmdError
+       redef fun to_s do return "No entity name provided"
+end
+
+# No MEntity matching `mentity_name`
+class ErrorMEntityNotFound
+       super CmdError
+
+       # MEntity name provided
+       var mentity_name: String
+
+       # Suggestions matching the `mentity_name`.
+       var suggestions: Array[MEntity]
+
+       redef fun to_s do
+               var res = new Buffer
+               res.append "No entity for `{mentity_name}`.\n"
+               res.append "Did you mean: "
+               for mentity in suggestions do
+                       res.append " `{mentity.full_name}`"
+                       if mentity != suggestions.last then res.append ","
+               end
+               return res.write_to_string
+       end
+end
+
+# Multiple MEntities matching `mentity_name`
+class ErrorMEntityConflict
+       super CmdError
+
+       # MEntity name provided
+       var mentity_name: String
+
+       # Conflicts for `mentity_name`
+       var conflicts: Array[MEntity]
+
+       redef fun to_s do
+               var res = new Buffer
+               res.append "Multiple entities for `{mentity_name}`:"
+               for mentity in conflicts do
+                       res.append " `{mentity.full_name}`"
+                       if mentity != conflicts.last then res.append ","
+               end
+               return res.write_to_string
+       end
+end
+
+# A command that returns a list of results
+abstract class CmdList
+       super DocCommand
+
+       # Type of result
+       type ITEM: Object
+
+       # Limit the items in the list
+       var limit: nullable Int = null is optional, writable
+
+       # Page to display
+       var page: nullable Int = null is optional, writable
+
+       # Total number of ret
+       var count: nullable Int = null is optional, writable
+
+       # Total number of pages
+       var max: nullable Int = null is optional, writable
+
+       # Comparator used to sort the list
+       var sorter: nullable Comparator = null is writable
+
+       # Items in the list
+       var results: nullable Array[ITEM] = null is writable
+
+       # `init_command` is used to factorize the sorting and pagination of results
+       #
+       # See `init_results` for the result list initialization.
+       redef fun init_command do
+               var res = super
+               if not res isa CmdSuccess then return res
+               res = init_results
+               if not res isa CmdSuccess then return res
+               sort
+               paginate
+               return res
+       end
+
+       # Initialize the `results` list
+       #
+       # This method must be redefined by CmdList subclasses.
+       fun init_results: CmdMessage do return new CmdSuccess
+
+       # Sort `mentities` with `sorter`
+       fun sort do
+               var results = self.results
+               if results == null then return
+               var sorter = self.sorter
+               if sorter == null then return
+               sorter.sort(results)
+       end
+
+       # Paginate the results
+       #
+       # This methods keeps only a subset of `results` depending on the current `page` and the
+       # number of elements to return set by `limit`.
+       #
+       # The `count` can be specified when `results` does not contain all the results.
+       # For example when the results are already limited from a DB statement.
+       fun paginate do
+               var results = self.results
+               if results == null then return
+
+               var limit = self.limit
+               if limit == null then return
+
+               var page = self.page
+               if page == null or page <= 0 then page = 1
+
+               var count = self.count
+               if count == null then count = results.length
+
+               var max = count / limit
+               if max == 0 then
+                       page = 1
+                       max = 1
+               else if page > max then
+                       page = max
+               end
+
+               var lstart = (page - 1) * limit
+               var lend = limit
+               if lstart + lend > count then lend = count - lstart
+               self.results = results.subarray(lstart, lend)
+               self.max = max
+               self.limit = limit
+               self.page = page
+               self.count = count
+       end
+end
+
+# A list of mentities
+abstract class CmdEntities
+       super CmdList
+
+       redef type ITEM: MEntity
+
+       redef var sorter = new MEntityNameSorter
+end
+
+# A command about a MEntity that returns a list of mentities
+abstract class CmdEntityList
+       super CmdEntity
+       super CmdEntities
+
+       autoinit(view, mentity, mentity_name, limit, page, count, max)
+
+       redef fun init_command do
+               var res = init_mentity
+               if not res isa CmdSuccess then return res
+               res = init_results
+               if not res isa CmdSuccess then return res
+               sort
+               paginate
+               return res
+       end
+end
diff --git a/src/doc/commands/commands_catalog.nit b/src/doc/commands/commands_catalog.nit
new file mode 100644 (file)
index 0000000..be823d0
--- /dev/null
@@ -0,0 +1,341 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Commands to retrieve Catalog related data
+module commands_catalog
+
+import commands_model
+
+# A DocCommand based on a Catalog
+abstract class CmdCatalog
+       super DocCommand
+
+       # Catalog to query at
+       var catalog: Catalog
+end
+
+# A CmdSearch command using a Catalog
+class CmdCatalogSearch
+       super CmdCatalog
+       super CmdSearch
+
+       autoinit(view, catalog, query, limit, page, count, max)
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+
+               var query = self.query
+               if query == null then return new ErrorNoQuery
+               sorter = null
+
+               var index = view.index
+
+               # lookup by name prefix
+               var matches = index.find_by_name_prefix(query).uniq.
+                       sort(lname_sorter, name_sorter, kind_sorter)
+               matches = matches.rerank.sort(vis_sorter, score_sorter)
+
+               # lookup by tags
+               var malus = matches.length
+               if catalog.tag2proj.has_key(query) then
+                       for mpackage in catalog.tag2proj[query] do
+                               matches.add new IndexMatch(mpackage, malus)
+                               malus += 1
+                       end
+                       matches = matches.uniq.rerank.sort(vis_sorter, score_sorter)
+               end
+
+               # lookup by full_name prefix
+               malus = matches.length
+               var full_matches = new IndexMatches
+               for match in index.find_by_full_name_prefix(query).
+                       sort(lfname_sorter, fname_sorter) do
+                       match.score += 1
+                       full_matches.add match
+               end
+               matches = matches.uniq
+
+               # lookup by similarity
+               malus = matches.length
+               var sim_matches = new IndexMatches
+               for match in index.find_by_similarity(query).sort(score_sorter, lname_sorter, name_sorter) do
+                       if match.score > query.length then break
+                       match.score += 1
+                       sim_matches.add match
+               end
+               matches.add_all sim_matches
+               matches = matches.uniq
+               results = matches.rerank.sort(vis_sorter, score_sorter).mentities
+               return res
+       end
+
+       private var score_sorter = new ScoreComparator
+       private var vis_sorter = new VisibilityComparator
+       private var name_sorter = new NameComparator
+       private var lname_sorter = new NameLengthComparator
+       private var fname_sorter = new FullNameComparator
+       private var lfname_sorter = new FullNameLengthComparator
+       private var kind_sorter = new MEntityComparator
+end
+
+# Retrieve the catalog metadata for a MPackage
+class CmdMetadata
+       super CmdEntity
+
+       # MPackage metadata retrieved
+       var metadata: nullable MPackageMetadata = null is optional, writable
+
+       redef fun init_command do
+               if metadata != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               if mentity isa MPackage then
+                       metadata = mentity.metadata
+               else
+                       return new WarningNoMetadata(mentity)
+               end
+               return res
+       end
+end
+
+# No metadata for `mentity`
+class WarningNoMetadata
+       super CmdWarning
+
+       # MEntity provided
+       var mentity: MEntity
+
+       redef fun to_s do return "No metadata for `{mentity.full_name}`"
+end
+
+# Retrieve the packages in the catalog
+class CmdCatalogPackages
+       super CmdCatalog
+       super CmdEntities
+
+       autoinit(view, catalog, limit, page, count, max)
+
+       redef var sorter = new CatalogScoreSorter(catalog) is lazy
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+
+               results = catalog.mpackages.values.to_a
+               return res
+       end
+end
+
+# Retrieve the catalog stats
+class CmdCatalogStats
+       super CmdCatalog
+
+       # Retrieved catalog statistics
+       var stats: nullable CatalogStats = null is optional, writable
+
+       redef fun init_command do
+               super
+               self.stats = catalog.catalog_stats
+               return new CmdSuccess
+       end
+end
+
+# Retrieve the catalog tags list
+class CmdCatalogTags
+       super CmdCatalog
+
+       # Sorter to sort tags alphabetically
+       var tags_sorter = new CatalogTagsSorter is optional, writable
+
+       # Count of packages by tag
+       var packages_count_by_tags: nullable ArrayMap[String, Int] = null is optional, writable
+
+       redef fun init_command do
+               super
+               var tags_to_projects = new ArrayMap[String, Int]
+               var tags = catalog.tag2proj.keys.to_a
+               tags_sorter.sort(tags)
+               for tag in tags do
+                       if not catalog.tag2proj.has_key(tag) then continue
+                       tags_to_projects[tag] = catalog.tag2proj[tag].length
+               end
+               packages_count_by_tags = tags_to_projects
+               return new CmdSuccess
+       end
+end
+
+# Retrieve the packages for a tag
+class CmdCatalogTag
+       super CmdCatalogPackages
+
+       autoinit(view, catalog, tag, limit, page, count, max)
+
+       # The tag to retrieve
+       var tag: nullable String = null is optional, writable
+
+       redef fun init_command do
+               var tag = self.tag
+               if tag == null then return new ErrorNoTag
+
+               if not catalog.tag2proj.has_key(tag) then return new ErrorTagNotFound(tag)
+               return super
+       end
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+
+               results = catalog.tag2proj[tag].to_a
+               return res
+       end
+end
+
+# No tag name provided
+class ErrorNoTag
+       super CmdError
+
+       redef fun to_s do return "No tag name provided"
+end
+
+# No tag with this name in the catalog
+class ErrorTagNotFound
+       super CmdError
+
+       # The tag that was not found
+       var tag: String
+
+       redef fun to_s do return "No tag found for `{tag}`"
+end
+
+# Retrieve a person from the catalog
+class CmdCatalogPerson
+       super CmdCatalog
+
+       # Person to retrieve
+       #
+       # You can also pass a `person_name`.
+       var person: nullable Person = null is optional, writable
+
+       # Name of the person to retrieve
+       #
+       # You can also pass a `person` instance.
+       var person_name: nullable String = null is optional, writable
+
+       # Initialize the `person` result
+       fun init_person: CmdMessage do
+               var person = self.person
+               if person != null then
+                       person_name = person.name
+                       return new CmdSuccess
+               end
+
+               var name = self.person_name
+               if name == null then return new ErrorNoPerson
+               if not catalog.name2person.has_key(name) then return new ErrorPersonNotFound(name)
+               self.person = catalog.name2person[name]
+               return new CmdSuccess
+       end
+
+       redef fun init_command do
+               init_person
+               return super
+       end
+end
+
+# No person instance or name provided
+class ErrorNoPerson
+       super CmdError
+
+       redef fun to_s do return "No person provided"
+end
+
+# No person found with this name
+class ErrorPersonNotFound
+       super CmdError
+
+       # Name of the person that was not found
+       var name: String
+
+       redef fun to_s do return "No person found for `{name}`"
+end
+
+# Retrieve the packages maintained by a person
+class CmdCatalogMaintaining
+       super CmdCatalogPerson
+       super CmdCatalogPackages
+
+       autoinit(view, catalog, person, person_name, limit, page, count, max)
+
+       redef fun init_command do return super
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+               var res = super
+               if not res isa CmdSuccess then return res
+               var person = self.person.as(not null)
+
+               if not catalog.maint2proj.has_key(person) then return res
+               results = catalog.maint2proj[person]
+               return res
+       end
+end
+
+# Retrieve the packages contributed by a person
+class CmdCatalogContributing
+       super CmdCatalogPerson
+       super CmdCatalogPackages
+
+       autoinit(view, catalog, person, person_name, limit, page, count, max)
+
+       # Include maintained packages?
+       #
+       # Default is `false`.
+       var maintaining = false is optional, writable
+
+       # FIXME linearization
+       redef fun init_command do return super
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var person = self.person.as(not null)
+
+               if not catalog.contrib2proj.has_key(person) then return res
+
+               var maint2proj = null
+               if catalog.maint2proj.has_key(person) then
+                       maint2proj = catalog.maint2proj[person]
+               end
+
+               var results = new Array[MPackage]
+               for mpackage in catalog.contrib2proj[person] do
+                       if not maintaining and maint2proj != null and maint2proj.has(mpackage) then continue
+                       results.add mpackage
+               end
+               self.results = results
+               return res
+       end
+end
diff --git a/src/doc/commands/commands_docdown.nit b/src/doc/commands/commands_docdown.nit
new file mode 100644 (file)
index 0000000..9ec8294
--- /dev/null
@@ -0,0 +1,175 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Doc down related queries
+module commands_docdown
+
+import commands::commands_parser
+import commands::commands_html
+
+intrude import doc_down
+intrude import markdown::wikilinks
+
+# Retrieve the MDoc summary
+#
+# List all MarkdownHeading found and their ids.
+class CmdSummary
+       super CmdComment
+
+       # Markdown processor used to parse the headlines
+       var markdown_processor: nullable MarkdownProcessor = null is optional, writable
+
+       # Resulting summary
+       #
+       # Associates each headline to its id.
+       var summary: nullable ArrayMap[String, HeadLine] = null is optional, writable
+
+       redef fun init_command do
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               var markdown_processor = self.markdown_processor
+               if markdown_processor == null then
+                       markdown_processor = new MarkdownProcessor
+                       self.markdown_processor = markdown_processor
+               end
+
+               var mdoc = self.mdoc
+               if mdoc == null then
+                       mdoc = if fallback then mentity.mdoc_or_fallback else mentity.mdoc
+                       self.mdoc = mdoc
+               end
+               if mdoc == null then return new WarningNoMDoc(mentity)
+
+               markdown_processor.process(mdoc.md_documentation.write_to_string)
+
+               var summary = new ArrayMap[String, HeadLine]
+               summary.add_all markdown_processor.decorator.headlines
+               self.summary = summary
+               return res
+       end
+end
+
+# Custom Markdown processor able to process doc commands
+class CmdDecorator
+       super NitdocDecorator
+
+       redef type PROCESSOR: CmdMarkdownProcessor
+
+       # View used by wikilink commands to find model entities
+       var view: ModelView
+
+       redef fun add_span_code(v, buffer, from, to) do
+               var text = new FlatBuffer
+               buffer.read(text, from, to)
+               var name = text.write_to_string
+               name = name.replace("nullable ", "")
+               var mentity = try_find_mentity(view, name)
+               if mentity == null then
+                       super
+               else
+                       v.add "<code>"
+                       v.emit_text mentity.html_link.write_to_string
+                       v.add "</code>"
+               end
+       end
+
+       private fun try_find_mentity(view: ModelView, text: String): nullable MEntity do
+               var mentity = view.mentity_by_full_name(text)
+               if mentity != null then return mentity
+
+               var mentities = view.mentities_by_name(text)
+               if mentities.is_empty then
+                       return null
+               else if mentities.length > 1 then
+                       # TODO smart resolve conflicts
+               end
+               return mentities.first
+       end
+
+       redef fun add_wikilink(v, token) do
+               v.render_wikilink(token, view)
+       end
+end
+
+# Same as `InlineDecorator` but with wikilink commands handling
+class CmdInlineDecorator
+       super InlineDecorator
+
+       redef type PROCESSOR: CmdMarkdownProcessor
+
+       # View used by wikilink commands to find model entities
+       var view: ModelView
+
+       redef fun add_wikilink(v, token) do
+               v.render_wikilink(token, view)
+       end
+end
+
+# Custom MarkdownEmitter for commands
+class CmdMarkdownProcessor
+       super MarkdownProcessor
+
+       # Parser used to process doc commands
+       var parser: CommandParser
+
+       # Render a wikilink
+       fun render_wikilink(token: TokenWikiLink, model: ModelView) do
+               var link = token.link
+               if link == null then return
+               var name = token.name
+               if name != null then link = "{name} | {link}"
+
+               var cmd = link.write_to_string
+               if cmd.is_empty then
+                       var error = new CmdParserError("Empty wikilink")
+                       emit_text error.to_html.write_to_string
+                       return
+               end
+
+               var command = parser.parse(cmd)
+               var error = parser.error
+
+               # If not a command, try a comment command
+               if command == null and error isa CmdParserError then
+                       error = null
+                       command = new CmdEntity(parser.view, mentity_name = cmd)
+                       var status = command.parser_init(cmd, new HashMap[String, String])
+                       if not status isa CmdSuccess then error = status
+               end
+
+               if error isa CmdError then
+                       emit_text error.to_html.write_to_string
+                       return
+               end
+               if error isa CmdWarning then
+                       emit_text error.to_html.write_to_string
+               end
+               add command.as(not null).to_html
+       end
+end
+
+redef class Text
+       # Read `self` between `nstart` and `nend` (excluded) and writte chars to `out`.
+       private fun read(out: FlatBuffer, nstart, nend: Int): Int do
+               var pos = nstart
+               while pos < length and pos < nend do
+                       out.add self[pos]
+                       pos += 1
+               end
+               if pos == length then return -1
+               return pos
+       end
+end
similarity index 64%
rename from src/web/api_graph.nit
rename to src/doc/commands/commands_graph.nit
index 13a2177..7cb0f97 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Render various graph from a model.
-module api_graph
+# Graph commands
+#
+# Commands that return graphical representations about a Model or a MEntity.
+module commands_graph
+
+import commands_model
 
-import web_base
-import dot
 import uml
+import dot
+
+# An abstract command that returns a dot graph
+abstract class CmdGraph
+       super DocCommand
+
+       # Rendering format
+       #
+       # Default is `dot`.
+       # See `allowed_formats`.
+       var format = "dot" is optional, writable
+
+       # Allowed rendering formats.
+       #
+       # Can be `dot` or `svg`.
+       var allowed_formats: Array[String] = ["dot", "svg"]
+
+       # Dot to render
+       var dot: nullable Writable = null is optional, writable
+
+       # Render `dot` depending on `format`
+       fun render: nullable Writable do
+               var dot = self.dot
+               if dot == null then return null
+               if format == "svg" then
+                       var proc = new ProcessDuplex("dot", "-Tsvg")
+                       var svg = proc.write_and_read(dot.write_to_string)
+                       proc.close
+                       proc.wait
+                       return svg
+               end
+               return dot
+       end
 
-redef class APIRouter
-       init do
-               super
-               use("/graph/inheritance/:id", new APIInheritanceGraph(config))
+       redef fun init_command do
+               if not allowed_formats.has(format) then
+                       return new ErrorBadGraphFormat(format, allowed_formats)
+               end
+               return super
+       end
+end
+
+# Bad graph format requested
+class ErrorBadGraphFormat
+       super CmdError
+
+       # Provided format
+       var format: String
+
+       # Allowed formats
+       var allowed_formats: Array[String]
+
+       redef fun to_s do
+               var allowed_values = new Buffer
+               for allowed in allowed_formats do
+                       allowed_values.append "`{allowed}`"
+                       if allowed != allowed_formats.last then
+                               allowed_values.append ", "
+                       end
+               end
+               return "Bad format `{format}`. Allowed values are {allowed_values.write_to_string}."
        end
 end
 
+# UML command
+#
+# Return an UML diagram about a `mentity`.
+class CmdUML
+       super CmdEntity
+       super CmdGraph
+
+       autoinit(view, mentity, mentity_name, format, uml)
+
+       # UML model to return
+       var uml: nullable UMLModel = null is optional, writable
+
+       redef fun init_command do
+               if uml != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               if mentity isa MClassDef then mentity = mentity.mclass
+               if mentity isa MClass then
+                       uml = new UMLModel(view, view.mainmodule)
+               else if mentity isa MModule then
+                       uml = new UMLModel(view, view.mainmodule)
+               else
+                       return new WarningNoUML(mentity)
+               end
+               return res
+       end
+
+       redef fun render do
+               var uml = self.uml
+               if uml == null then return null
+               if mentity isa MClass then
+                       dot = uml.generate_class_uml.write_to_string
+               else if mentity isa MModule then
+                       dot = uml.generate_package_uml.write_to_string
+               end
+               return super
+       end
+end
+
+# No UML model for `mentity`
+class WarningNoUML
+       super CmdWarning
+
+       # MEntity provided
+       var mentity: MEntity
+
+       redef fun to_s do return "No UML for `{mentity.full_name}`"
+end
+
 # Render a hierarchy graph for `mentity` if any.
-class APIInheritanceGraph
-       super APIHandler
-
-       redef fun get(req, res) do
-               var mentity = mentity_from_uri(req, res)
-               if mentity == null then return
-               var pdepth = req.int_arg("pdepth")
-               var cdepth = req.int_arg("cdepth")
-               var g = new InheritanceGraph(mentity, config.view)
-               res.send g.draw(pdepth, cdepth).to_svg
+class CmdInheritanceGraph
+       super CmdEntity
+       super CmdGraph
+
+       autoinit(view, mentity, mentity_name, pdepth, cdepth, format, graph)
+
+       # Parents depth to display
+       var pdepth: nullable Int = null is optional, writable
+
+       # Children depth to display
+       var cdepth: nullable Int = null is optional, writable
+
+       # Inheritance graph to return
+       var graph: nullable InheritanceGraph = null is optional, writable
+
+       redef fun init_command do
+               if graph != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               graph = new InheritanceGraph(mentity, view)
+               return res
+       end
+
+       redef fun render do
+               var graph = self.graph
+               if graph == null then return ""
+               self.dot = graph.draw(pdepth, cdepth).to_dot
+               return super
        end
 end
 
@@ -44,7 +175,6 @@ end
 #
 # Recursively build parents and children list from a `center`.
 class InheritanceGraph
-       super ModelVisitor
 
        # MEntity at the center of this graph
        var center: MEntity
@@ -221,9 +351,9 @@ class InheritanceGraph
 end
 
 redef class MEntity
-       private fun to_dot_node: DotNode do
+       # Return `self` as a DotNode
+       fun to_dot_node: DotNode do
                var node = new DotNode(full_name)
-               node["URL"] = web_url
                node["label"] = name
                return node
        end
diff --git a/src/doc/commands/commands_html.nit b/src/doc/commands/commands_html.nit
new file mode 100644 (file)
index 0000000..ee7a792
--- /dev/null
@@ -0,0 +1,123 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Render commands results as HTML
+module commands_html
+
+import commands::commands_graph
+import commands::commands_usage
+
+import templates::templates_html
+import doc_down
+import highlight
+
+redef class DocCommand
+
+       # Render results as a HTML string
+       fun to_html: Writable do return "<p class='text-danger'>Not yet implemented</p>"
+end
+
+redef class CmdMessage
+
+       # Render the message as a HTML string
+       fun to_html: Writable is abstract
+end
+
+redef class CmdError
+       redef fun to_html do return "<p class='text-danger'>Error: {to_s}</p>"
+end
+
+redef class CmdWarning
+       redef fun to_html do return "<p class='text-warning'>Warning: {to_s}</p>"
+end
+
+# Model commands
+
+redef class CmdEntity
+       redef fun to_html do
+               var mentity = self.mentity
+               if mentity == null then return ""
+               return mentity.html_link
+       end
+end
+
+redef class CmdEntities
+       redef fun to_html do
+               var mentities = self.results
+               if mentities == null then return ""
+
+               var tpl = new Template
+               tpl.add "<ul>"
+               for mentity in mentities do
+                       var mdoc = mentity.mdoc_or_fallback
+                       tpl.add "<li>"
+                       tpl.add mentity.html_link
+                       if mdoc != null then
+                               tpl.add " - "
+                               tpl.add mdoc.html_synopsis
+                       end
+                       tpl.add "</li>"
+               end
+               tpl.add "</ul>"
+               return tpl.write_to_string
+       end
+end
+
+redef class CmdComment
+       redef fun to_html do
+               var mentity = self.mentity
+               if mentity == null then return ""
+
+               var mdoc = self.mdoc
+               var tpl = new Template
+               tpl.add "<h3>"
+               # FIXME comments left here until I figure out what to do about the presentation options
+               # if not opts.has_key("no-link") then
+                       tpl.add mentity.html_link
+               # end
+               if mdoc != null then
+                       # if not opts.has_key("no-link") and not opts.has_key("no-synopsis") then
+                               tpl.add " - "
+                       # end
+                       # if not opts.has_key("no-synopsis") then
+                               tpl.add mdoc.html_synopsis
+                       # end
+               end
+               tpl.add "</h3>"
+               if mdoc != null then
+                       # if not opts.has_key("no-comment") then
+                               tpl.add mdoc.html_comment
+                       # end
+               end
+               return tpl.write_to_string
+       end
+end
+
+redef class CmdEntityCode
+       redef fun to_html do
+               var output = render_code(node)
+               if output == null then return ""
+               return "<pre>{output.write_to_string}</pre>"
+       end
+end
+
+# Graph commands
+
+redef class CmdGraph
+       redef fun to_html do
+               var output = render
+               if output == null then return ""
+               return output.write_to_string
+       end
+end
diff --git a/src/doc/commands/commands_http.nit b/src/doc/commands/commands_http.nit
new file mode 100644 (file)
index 0000000..d35161b
--- /dev/null
@@ -0,0 +1,175 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Initialize commands from HTTP requests
+#
+# FIXME: this module is pretty tied up to the nitwed routes.
+# To be more generic, param names should be extracted as variables.
+module commands_http
+
+import commands
+import commands::commands_catalog
+import nitcorn::vararg_routes
+
+redef class DocCommand
+       # Init the command from an HTTPRequest
+       fun http_init(req: HttpRequest): CmdMessage do return init_command
+end
+
+redef class CmdEntity
+       redef fun http_init(req) do
+               var name = req.param("id")
+               if name != null then name = name.from_percent_encoding
+               self.mentity_name = name
+
+               return super
+       end
+end
+
+redef class CmdList
+       redef fun http_init(req) do
+               limit = req.int_arg("l")
+               page = req.int_arg("p")
+               return super
+       end
+end
+
+# Error Handling
+
+# Message handling
+
+redef class CmdMessage
+       # HTTP code to return for this message
+       var http_status_code = 200
+end
+
+redef class CmdError
+       redef var http_status_code = 400
+end
+
+redef class CmdWarning
+       redef var http_status_code = 404
+end
+
+redef class ErrorMEntityNoName
+       redef var http_status_code = 400
+end
+
+redef class ErrorMEntityNotFound
+       redef var http_status_code = 404
+end
+
+redef class ErrorMEntityConflict
+       redef var http_status_code = 300
+end
+
+# CmdModel
+
+redef class CmdComment
+       redef fun http_init(req) do
+               full_doc = req.bool_arg("full_doc") or else true
+               fallback = req.bool_arg("fallback") or else true
+               format = req.string_arg("format") or else "raw"
+               return super
+       end
+end
+
+redef class CmdAncestors
+       redef fun http_init(req) do
+               parents = req.bool_arg("parents") or else true
+               return super
+       end
+end
+
+redef class CmdDescendants
+       redef fun http_init(req) do
+               children = req.bool_arg("children") or else true
+               return super
+       end
+end
+
+redef class CmdEntityList
+       # FIXME avoid linearization conflict
+       redef fun http_init(req) do return super
+end
+
+redef class CmdSearch
+       redef fun http_init(req) do
+               query = req.string_arg("q")
+               return super
+       end
+end
+
+redef class CmdModelEntities
+       redef fun http_init(req) do
+               kind = req.string_arg("kind") or else "all"
+               return super
+       end
+end
+
+redef class CmdCode
+       redef fun http_init(req) do
+               format = req.string_arg("format") or else "raw"
+               return super
+       end
+end
+
+redef class CmdEntityCode
+       # FIXME avoid linearization conflict
+       redef fun http_init(req) do
+               var name = req.param("id")
+               if name != null then name = name.from_percent_encoding
+               mentity_name = name
+
+               format = req.string_arg("format") or else "raw"
+               return init_command
+       end
+end
+
+# CmdGraph
+
+redef class CmdGraph
+       redef fun http_init(req) do
+               format = req.string_arg("format") or else "dot"
+               return super
+       end
+end
+
+redef class CmdInheritanceGraph
+       redef fun http_init(req) do
+               pdepth = req.int_arg("pdepth")
+               cdepth = req.int_arg("cdepth")
+               return super
+       end
+end
+
+# CmdCatalog
+
+redef class CmdCatalogTag
+       redef fun http_init(req) do
+               var tag = req.param("tid")
+               if tag != null then tag = tag.from_percent_encoding
+               self.tag = tag
+               return super
+       end
+end
+
+redef class CmdCatalogPerson
+       redef fun http_init(req) do
+               var name = req.param("pid")
+               if name != null then name = name.from_percent_encoding
+               self.person_name = name
+               return super
+       end
+end
diff --git a/src/doc/commands/commands_json.nit b/src/doc/commands/commands_json.nit
new file mode 100644 (file)
index 0000000..a4457f1
--- /dev/null
@@ -0,0 +1,152 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Translate command results to json
+module commands_json
+
+import commands::commands_model
+import commands::commands_graph
+import commands::commands_usage
+import commands::commands_catalog
+
+import templates::templates_json
+import catalog::catalog_json
+
+redef class DocCommand
+       # Return a JSON Serializable representation of `self` results
+       fun to_json: nullable Serializable is abstract
+end
+
+# Message handling
+
+redef class CmdMessage
+       # Return a JSON Serializable representation of `self`
+       fun to_json: nullable Serializable do
+               var obj = new JsonObject
+               obj["status"] = class_name
+               obj["message"] = to_s
+               return obj
+       end
+end
+
+redef class CmdEntity
+       redef fun to_json do return mentity
+end
+
+redef class CmdList
+       redef fun to_json do
+               var obj = new JsonObject
+               obj["results"] = results
+               obj["page"] = page
+               obj["count"] = count
+               obj["limit"] = limit
+               obj["max"] = max
+               return obj
+       end
+end
+
+redef class CmdEntityList
+       redef fun to_json do return super
+end
+
+# Model commands
+
+redef class CmdComment
+       redef fun to_json do
+               var obj = new JsonObject
+               var render = self.render_comment
+               if render != null then
+                       obj["documentation"] = render.write_to_string
+               end
+               return obj
+       end
+end
+
+redef class CmdEntityCode
+       redef fun to_json do
+               var obj = new JsonObject
+               var node = self.node
+               if node != null then
+                       obj["location"] = node.location
+               end
+               var output = render_code(node)
+               if output != null then
+                       obj["code"] = output.write_to_string
+               end
+               return obj
+       end
+end
+
+redef class CmdGraph
+       redef fun to_json do
+               var obj = new JsonObject
+               var output = render
+               if output != null then
+                       obj["graph"] = output.write_to_string
+               end
+               return obj
+       end
+end
+
+redef class CmdMetadata
+       redef fun to_json do return metadata
+end
+
+# CmdCatalog
+
+redef class CmdCatalogStats
+       redef fun to_json do return stats
+end
+
+redef class CmdCatalogTags
+       redef fun to_json do return packages_count_by_tags
+end
+
+redef class CmdCatalogTag
+       redef fun to_json do
+               var obj = super.as(JsonObject)
+               obj["tag"] = tag
+               return obj
+       end
+end
+
+redef class CmdCatalogPerson
+       redef fun to_json do return person
+end
+
+redef class CmdCatalogMaintaining
+       redef fun to_json do
+               var obj = new JsonObject
+               obj["person"] = person
+               obj["results"] = results
+               obj["page"] = page
+               obj["count"] = count
+               obj["limit"] = limit
+               obj["max"] = max
+               return obj
+       end
+end
+
+redef class CmdCatalogContributing
+       redef fun to_json do
+               var obj = new JsonObject
+               obj["person"] = person
+               obj["results"] = results
+               obj["page"] = page
+               obj["count"] = count
+               obj["limit"] = limit
+               obj["max"] = max
+               return obj
+       end
+end
diff --git a/src/doc/commands/commands_model.nit b/src/doc/commands/commands_model.nit
new file mode 100644 (file)
index 0000000..c359546
--- /dev/null
@@ -0,0 +1,525 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Doc commands about a Model or a MEntity
+#
+# This module defines several commands to retrieve data about a Model and MEntities.
+module commands_model
+
+import commands_base
+
+import model::model_collect
+import modelize
+import modelbuilder
+import htmlight
+import doc_down
+
+# Retrieve the MDoc related to a MEntity
+class CmdComment
+       super CmdEntity
+
+       # Allow fallback
+       #
+       # If `true`, the command uses `mdoc_or_fallback`.
+       # Default is `true`.
+       var fallback = true is optional, writable
+
+       # Retrieve the full documentation
+       #
+       # If `true`, retrieves the full documentation.
+       # If `false`, retrieves only the synopsis.
+       # Default is `true`.
+       #
+       # Since the rendering the final string (md, html...) depends on the kind of
+       # client, the handling of this option is delegated to submodules.
+       var full_doc = true is optional, writable
+
+       # Format to render the comment
+       #
+       # Can be one of `raw` or `html`.
+       # Default is `raw`.
+       var format = "raw" is optional, writable
+
+       # MDoc to return
+       var mdoc: nullable MDoc = null is optional, writable
+
+       # Same states than `CmdEntity::init_mentity`
+       #
+       # Plus returns `WarningNoMDoc` if no MDoc was found for the MEntity.
+       redef fun init_command do
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               if mdoc == null then
+                       mdoc = if fallback then mentity.mdoc_or_fallback else mentity.mdoc
+               end
+               if mdoc == null then return new WarningNoMDoc(mentity)
+               return res
+       end
+
+       # Render `mdoc` depending on `full_doc` and `format`
+       fun render_comment: nullable Writable do
+               var mdoc = self.mdoc
+               if mdoc == null then return null
+
+               if format == "html" then
+                       if full_doc then return mdoc.html_documentation
+                       return mdoc.html_synopsis
+               end
+               if full_doc then return mdoc.documentation
+               return mdoc.synopsis
+       end
+end
+
+# No MDoc for `mentity`
+class WarningNoMDoc
+       super CmdWarning
+
+       # MEntity provided
+       var mentity: MEntity
+
+       redef fun to_s do return "No documentation for `{mentity.full_name}`."
+end
+
+# MEntity ancestors command
+#
+# Retrieve all the ancestors (direct and indirect) of a MEntity.
+class CmdAncestors
+       super CmdEntityList
+
+       # Include direct parents in the ancestors list
+       #
+       # Default is `true`.
+       var parents = true is optional, writable
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               var ancestors = mentity.collect_ancestors(view).to_a
+               if parents then
+                       results = ancestors
+                       return res
+               end
+
+               var parents = mentity.collect_parents(view)
+               var mentities = new HashSet[MEntity]
+               for ancestor in ancestors do
+                       if not parents.has(ancestor) then mentities.add ancestor
+               end
+               results = mentities.to_a
+               return res
+       end
+end
+
+# MEntity parents command
+class CmdParents
+       super CmdEntityList
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               results = mentity.collect_parents(view).to_a
+               return res
+       end
+end
+
+# MEntity children command
+class CmdChildren
+       super CmdEntityList
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               results = mentity.collect_children(view).to_a
+               return res
+       end
+end
+
+# MEntity descendants command
+class CmdDescendants
+       super CmdEntityList
+
+       # Include direct children in the descendants list
+       #
+       # Default is `true`.
+       var children = true is optional, writable
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               var descendants = mentity.collect_descendants(view).to_a
+               if children then
+                       results = descendants
+                       return res
+               end
+
+               var children = mentity.collect_children(view)
+               var mentities = new HashSet[MEntity]
+               for descendant in descendants do
+                       if not children.has(descendant) then mentities.add descendant
+               end
+               results = mentities.to_a
+               return res
+       end
+end
+
+# Linearization command
+#
+# Collects and linearizes definitions about an MEntity.
+class CmdLinearization
+       super CmdEntityList
+
+       # Same states than `CmdEntity::init_mentity`
+       #
+       # Plus returns `WarningNoLinearization` if no linearization can be computed
+       # from the mentity.
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               sorter = null
+               results = mentity.collect_linearization(view.mainmodule)
+               if results == null then return new WarningNoLinearization(mentity)
+               return res
+       end
+end
+
+# No linearization computed for `mentity`.
+class WarningNoLinearization
+       super CmdWarning
+
+       # MEntity provided
+       var mentity: MEntity
+
+       redef fun to_s do return "No linearization for `{mentity.full_name}`"
+end
+
+# A free text search command
+class CmdSearch
+       super CmdEntities
+
+       # Free text command string
+       var query: nullable String = null is optional, writable
+
+       # Return states:
+       # * `CmdSuccess`: everything was ok;
+       # * `ErrorNoQuery`: no `query` provided.
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+
+               var query = self.query
+               if query == null then return new ErrorNoQuery
+               sorter = null
+               results = view.find(query)
+               return res
+       end
+end
+
+# No query string given
+class ErrorNoQuery
+       super CmdError
+
+       redef fun to_s do return "Missing search string"
+end
+
+# MEntity feature list
+#
+# Mostly a list of mentities defined in `mentity`.
+class CmdFeatures
+       super CmdEntityList
+
+       # Same as `CmdEntity::init_mentity`
+       #
+       # Plus `WarningNoFeatures` if no features are found for `mentity`.
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               var mentities = new Array[MEntity]
+               if mentity isa MPackage then
+                       mentities.add_all mentity.collect_mgroups(view)
+                       mentities.add_all mentity.collect_mmodules(view)
+               else if mentity isa MGroup then
+                       mentities.add_all mentity.collect_mgroups(view)
+                       mentities.add_all mentity.collect_mmodules(view)
+               else if mentity isa MModule then
+                       mentities.add_all mentity.collect_local_mclassdefs(view)
+               else if mentity isa MClass then
+                       mentities.add_all mentity.collect_intro_mproperties(view)
+                       mentities.add_all mentity.collect_redef_mpropdefs(view)
+               else if mentity isa MClassDef then
+                       mentities.add_all mentity.collect_intro_mpropdefs(view)
+                       mentities.add_all mentity.collect_redef_mpropdefs(view)
+               else if mentity isa MProperty then
+                       mentities.add_all mentity.collect_mpropdefs(view)
+               else
+                       return new WarningNoFeatures(mentity)
+               end
+               self.results = mentities
+               return res
+       end
+end
+
+# TODO remove once the filters/sorters are merged
+class CmdIntros
+       super CmdEntityList
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               if mentity isa MModule then
+                       var mentities = mentity.collect_intro_mclasses(view).to_a
+                       self.results = mentities
+               else if mentity isa MClass then
+                       var mentities = mentity.collect_intro_mproperties(view).to_a
+                       self.results = mentities
+               else if mentity isa MClassDef then
+                       var mentities = mentity.collect_intro_mpropdefs(view).to_a
+                       view.mainmodule.linearize_mpropdefs(mentities)
+                       self.results = mentities
+               else
+                       return new WarningNoFeatures(mentity)
+               end
+               return res
+       end
+end
+
+# TODO remove once the filters/sorters are merged
+class CmdRedefs
+       super CmdEntityList
+
+       redef fun init_command do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               if mentity isa MModule then
+                       var mentities = mentity.collect_redef_mclasses(view).to_a
+                       self.results = mentities
+               else if mentity isa MClass then
+                       var mentities = mentity.collect_redef_mproperties(view).to_a
+                       self.results = mentities
+               else if mentity isa MClassDef then
+                       var mentities = mentity.collect_redef_mpropdefs(view).to_a
+                       view.mainmodule.linearize_mpropdefs(mentities)
+                       self.results = mentities
+               else
+                       return new WarningNoFeatures(mentity)
+               end
+               return res
+       end
+end
+
+# TODO remove once the filters/sorters are merged
+class CmdAllProps
+       super CmdEntityList
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               if mentity isa MClass then
+                       results = mentity.collect_accessible_mproperties(view).to_a
+               else
+                       return new WarningNoFeatures(mentity)
+               end
+               return res
+       end
+end
+
+# No feature list for `mentity`
+class WarningNoFeatures
+       super CmdWarning
+
+       # MEntity provided
+       var mentity: MEntity
+
+       redef fun to_s do return "No features for `{mentity.full_name}`"
+end
+
+# Abstract command that returns source-code pieces
+abstract class CmdCode
+       super DocCommand
+
+       autoinit(view, modelbuilder, format)
+
+       # ModelBuilder used to get AST nodes
+       var modelbuilder: ModelBuilder
+
+       # Rendering format
+       #
+       # Set the output format for this piece of code.
+       # Can be "raw", "html" or "ansi".
+       # Default is "raw".
+       #
+       # This format can be different than the format used in the command response.
+       # For example you can choose to render code as HTML inside a JSON object response.
+       # Another example is to render raw format to put into a HTML code tag.
+       var format = "raw" is optional, writable
+
+       # Render `node` depending on the selected `format`
+       fun render_code(node: nullable ANode): nullable Writable do
+               if node == null then return null
+               if format == "html" then
+                       var hl = new HtmlightVisitor
+                       hl.highlight_node node
+                       return hl.html
+               else if format == "ansi" then
+                       var hl = new AnsiHighlightVisitor
+                       hl.highlight_node node
+                       return hl.result
+               end
+               return node.location.text
+       end
+end
+
+# Cmd that finds the source code related to an `mentity`
+class CmdEntityCode
+       super CmdEntity
+       super CmdCode
+
+       autoinit(view, modelbuilder, mentity, mentity_name, format)
+
+       # AST node to return
+       var node: nullable ANode = null is optional, writable
+
+       # Same as `CmdEntity::init_mentity`
+       #
+       # Plus `WarningNoCode` if no code/AST node is found for `mentity`.
+       redef fun init_command do
+               if node != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               if mentity isa MClass then mentity = mentity.intro
+               if mentity isa MProperty then mentity = mentity.intro
+               node = modelbuilder.mentity2node(mentity)
+               if node == null then return new WarningNoCode(mentity)
+               return res
+       end
+end
+
+# No code for `mentity`
+class WarningNoCode
+       super CmdWarning
+
+       # MEntity provided
+       var mentity: MEntity
+
+       redef fun to_s do return "No code for `{mentity.full_name}`"
+end
+
+# Model commands
+
+# A command that returns a list of all mentities in a model
+class CmdModelEntities
+       super CmdEntities
+
+       # Kind of mentities to be returned.
+       #
+       # Value must be one of "packages", "groups", "modules", "classes", "classdefs",
+       # "properties", "propdefs" or "all".
+       #
+       # Default is "all".
+       var kind = "all" is optional, writable
+
+       # Default limit is `10`
+       redef var limit = 10
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+
+               var mentities = new Array[MEntity]
+               if kind == "packages" then
+                       mentities = view.mpackages.to_a
+               else if kind == "groups" then
+                       mentities = view.mgroups.to_a
+               else if kind == "modules" then
+                       mentities = view.mmodules.to_a
+               else if kind == "classes" then
+                       mentities = view.mclasses.to_a
+               else if kind == "classdefs" then
+                       mentities = view.mclassdefs.to_a
+               else if kind == "properties" then
+                       mentities = view.mproperties.to_a
+               else if kind == "propdefs" then
+                       mentities = view.mpropdefs.to_a
+               else
+                       mentities = view.mentities.to_a
+               end
+               results = mentities
+               return res
+       end
+end
+
+# A command that returns a random list of mentities from a model
+class CmdRandomEntities
+       super CmdModelEntities
+
+       # Always return `CmdSuccess`
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+               var res = super
+               if not res isa CmdSuccess then return res
+               randomize
+               return res
+       end
+
+       # Randomize mentities order
+       fun randomize do
+               var results = self.results
+               if results == null then return
+               results.shuffle
+       end
+end
diff --git a/src/doc/commands/commands_parser.nit b/src/doc/commands/commands_parser.nit
new file mode 100644 (file)
index 0000000..d0711eb
--- /dev/null
@@ -0,0 +1,315 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# A parser that create DocCommand from a string
+#
+# Used by both Nitx and the Markdown doc commands.
+module commands_parser
+
+import commands::commands_model
+import commands::commands_graph
+import commands::commands_usage
+import commands::commands_catalog
+
+# Parse string commands to create DocQueries
+class CommandParser
+
+       # ModelView used to retrieve mentities
+       var view: ModelView
+
+       # ModelBuilder used to retrieve AST nodes
+       var modelbuilder: ModelBuilder
+
+       # Catalog used for catalog commands
+       var catalog: nullable Catalog
+
+       # List of allowed command names for this parser
+       var allowed_commands: Array[String] = [
+       "doc", "code", "lin", "uml", "graph", "search",
+       "parents", "ancestors", "children", "descendants",
+       "param", "return", "new", "call", "defs", "list", "random",
+       "catalog", "stats", "tags", "tag", "person", "contrib", "maintain"] is writable
+
+       # List of commands usage and documentation
+       var commands_usage: Map[String, String] do
+               var usage = new ArrayMap[String, String]
+               usage["search: <string>"] = "list entities matching `string`"
+               usage["doc: <name>"] = "display the documentation for `name`"
+               usage["defs: <name>"] = "list all definitions for `name`"
+               usage["code: <name>"] = "display the code for `name`"
+               usage["lin: <name>"] = "display the linearization for `name`"
+               usage["uml: <name>"] = "display the UML diagram for `name`"
+               usage["graph: <name>"] = "display the inheritance graph for `name`"
+               usage["parents: <name>"] = "list the direct parents of `name`"
+               usage["ancestors: <name>"] = "list all ancestors of `name`"
+               usage["children: <name>"] = "list direct children of `name`"
+               usage["descendants: <name>"] = "list all descendants of `name`"
+               usage["param: <type>"] = "list all methods accepting `type` as parameter"
+               usage["return: <type>"] = "list all methods returning `type`"
+               usage["new: <class>"] = "list all methods initializing `class`"
+               usage["call: <property>"] = "list all methods calling `property`"
+               usage["list: <kind>"] = "list all entities of `kind` from the model"
+               usage["random: <kind>"] = "list random entities of `kind` from the model"
+               usage["catalog:"] = "list packages from catalog"
+               usage["stats:"] = "display catalog statistics"
+               usage["tags:"] = "list all tabs from catalog"
+               usage["tag: <tag>"] = "list all packages with `tag`"
+               usage["maintain: <person>"] = "list all packages maintained by `person`"
+               usage["contrib: <person>"] = "list all packages contributed by `person`"
+               return usage
+       end
+
+       # Parse `string` as a DocCommand
+       #
+       # Returns `null` if the string cannot be parsed.
+       # See `error` for the error messages produced by both the parser and the commands.
+       fun parse(string: String): nullable DocCommand do
+               var pos = 0
+               var tmp = new FlatBuffer
+               error = null
+
+               # Parse command name
+               pos = string.read_until(tmp, pos, ':')
+               var name = tmp.write_to_string.trim
+
+               # Check allowed commands
+               if name.is_empty then
+                       error = new CmdParserError("empty command name", 0)
+                       return null
+               end
+               if not allowed_commands.has(name) then
+                       error = new CmdParserError("unknown command name", 0)
+                       return null
+               end
+
+               # Parse the argument
+               tmp.clear
+               pos = string.read_until(tmp, pos + 1, '|')
+               var arg = tmp.write_to_string.trim
+
+               # Parse command options
+               var opts = new HashMap[String, String]
+               while pos < string.length do
+                       # Parse option name
+                       tmp.clear
+                       pos = string.read_until(tmp, pos + 1, ':', ',')
+                       var oname = tmp.write_to_string.trim
+                       var oval = ""
+                       if oname.is_empty then break
+                       # Parse option value
+                       if pos < string.length and string[pos] == ':' then
+                               tmp.clear
+                               pos = string.read_until(tmp, pos + 1, ',')
+                               oval = tmp.write_to_string.trim
+                       end
+                       opts[oname] = oval
+               end
+
+               # Build the command
+               var command = new_command(name)
+               if command == null then
+                       error = new CmdParserError("Unknown command name")
+                       return null
+               end
+
+               # Initialize command from string options
+               var status = command.parser_init(arg, opts)
+               if not status isa CmdSuccess then error = status
+
+               return command
+       end
+
+       # Init a new DocCommand from its `name`
+       #
+       # You must redefine this method to add new custom commands.
+       fun new_command(name: String): nullable DocCommand do
+               # CmdEntity
+               if name == "doc" then return new CmdComment(view)
+               if name == "code" then return new CmdEntityCode(view, modelbuilder)
+               if name == "lin" then return new CmdLinearization(view)
+               if name == "defs" then return new CmdFeatures(view)
+               if name == "parents" then return new CmdParents(view)
+               if name == "ancestors" then return new CmdAncestors(view)
+               if name == "children" then return new CmdChildren(view)
+               if name == "descendants" then return new CmdDescendants(view)
+               if name == "param" then return new CmdParam(view)
+               if name == "return" then return new CmdReturn(view)
+               if name == "new" then return new CmdNew(view, modelbuilder)
+               if name == "call" then return new CmdCall(view, modelbuilder)
+               # CmdGraph
+               if name == "uml" then return new CmdUML(view)
+               if name == "graph" then return new CmdInheritanceGraph(view)
+               # CmdModel
+               if name == "list" then return new CmdModelEntities(view)
+               if name == "random" then return new CmdRandomEntities(view)
+               # CmdCatalog
+               var catalog = self.catalog
+               if catalog != null then
+                       if name == "catalog" then return new CmdCatalogPackages(view, catalog)
+                       if name == "stats" then return new CmdCatalogStats(view, catalog)
+                       if name == "tags" then return new CmdCatalogTags(view, catalog)
+                       if name == "tag" then return new CmdCatalogTag(view, catalog)
+                       if name == "person" then return new CmdCatalogPerson(view, catalog)
+                       if name == "contrib" then return new CmdCatalogContributing(view, catalog)
+                       if name == "maintain" then return new CmdCatalogMaintaining(view, catalog)
+                       if name == "search" then return new CmdCatalogSearch(view, catalog)
+               else
+                       if name == "search" then return new CmdSearch(view)
+               end
+               return null
+       end
+
+       # Error or warning from last call to `parse`
+       var error: nullable CmdMessage = null
+end
+
+# An error produced by the CmdParser
+class CmdParserError
+       super CmdError
+
+       # Error message
+       var message: String
+
+       # Column related to the error
+       var column: nullable Int
+
+       redef fun to_s do return message
+end
+
+redef class DocCommand
+
+       # Initialize the command from the CommandParser data
+       fun parser_init(arg: String, options: Map[String, String]): CmdMessage do
+               return init_command
+       end
+end
+
+redef class CmdEntity
+       redef fun parser_init(mentity_name, options) do
+               self.mentity_name = mentity_name
+               return super
+       end
+end
+
+redef class CmdList
+       redef fun parser_init(mentity_name, options) do
+               if options.has_key("limit") and options["limit"].is_int then limit = options["limit"].to_i
+               return super
+       end
+end
+
+# Model commands
+
+redef class CmdComment
+       redef fun parser_init(mentity_name, options) do
+               full_doc = not options.has_key("only-synopsis")
+               fallback = not options.has_key("no-fallback")
+               if options.has_key("format") then format = options["format"]
+               return super
+       end
+end
+
+redef class CmdCode
+       redef fun parser_init(mentity_name, options) do
+               if options.has_key("format") then format = options["format"]
+               return super
+       end
+end
+
+redef class CmdSearch
+       redef fun parser_init(mentity_name, options) do
+               query = mentity_name
+               if options.has_key("page") and options["page"].is_int then page = options["page"].to_i
+               return super
+       end
+end
+
+redef class CmdAncestors
+       redef fun parser_init(mentity_name, options) do
+               if options.has_key("parents") and options["parents"] == "false" then parents = false
+               return super
+       end
+end
+
+redef class CmdDescendants
+       redef fun parser_init(mentity_name, options) do
+               if options.has_key("children") and options["children"] == "false" then children = false
+               return super
+       end
+end
+
+redef class CmdModelEntities
+       redef fun parser_init(kind, options) do
+               self.kind = kind
+               return super
+       end
+end
+
+redef class CmdGraph
+       redef fun parser_init(mentity_name, options) do
+               if options.has_key("format") then format = options["format"]
+               return super
+       end
+end
+
+redef class CmdInheritanceGraph
+       redef fun parser_init(mentity_name, options) do
+               if options.has_key("pdepth") and options["pdepth"].is_int then
+                       pdepth = options["pdepth"].to_i
+               end
+               if options.has_key("cdepth") and options["cdepth"].is_int then
+                       cdepth = options["cdepth"].to_i
+               end
+               return super
+       end
+end
+
+# Catalog commands
+
+redef class CmdCatalogTag
+       redef fun parser_init(mentity_name, options) do
+               tag = mentity_name
+               return super
+       end
+end
+
+redef class CmdCatalogPerson
+       redef fun parser_init(mentity_name, options) do
+               person_name = mentity_name
+               return super
+       end
+end
+
+# Utils
+
+redef class Text
+       # Read `self` as raw text until `nend` and append it to the `out` buffer.
+       private fun read_until(out: FlatBuffer, start: Int, nend: Char...): Int do
+               var pos = start
+               while pos < length do
+                       var c = self[pos]
+                       var end_reached = false
+                       for n in nend do
+                               if c == n then
+                                       end_reached = true
+                                       break
+                               end
+                       end
+                       if end_reached then break
+                       out.add c
+                       pos += 1
+               end
+               return pos
+       end
+end
diff --git a/src/doc/commands/commands_usage.nit b/src/doc/commands/commands_usage.nit
new file mode 100644 (file)
index 0000000..3b4efab
--- /dev/null
@@ -0,0 +1,224 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Commands about how mentities are used
+module commands_usage
+
+import commands_model
+import semantize
+
+# Retrieve all the mproperties using `mentity` as a type for its parameters
+#
+# `mentity` must be a MClass or a MClassDef.
+class CmdParam
+       super CmdEntityList
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               if mentity isa MClassDef then mentity = mentity.mclass
+               if not mentity isa MClass then return new ErrorNotClass(mentity)
+
+               var mentities = new HashSet[MEntity]
+               for mproperty in view.mproperties do
+                       if not mproperty isa MMethod then continue
+                       var msignature = mproperty.intro.msignature
+                       if msignature != null then
+                               for mparam in msignature.mparameters do
+                                       var mtype = mparam.mtype
+                                       if mtype isa MNullableType then mtype = mtype.mtype
+                                       if not mtype isa MClassType then continue
+                                       if mtype.mclass != mentity then continue
+                                       mentities.add mproperty
+                               end
+                       end
+               end
+               results = mentities.to_a
+               return res
+       end
+end
+
+# Retrieve all the mproperties that return somethinf of the `mentity` type.
+#
+# `mentity` must be a MClass or a MClassDef.
+class CmdReturn
+       super CmdEntityList
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               if mentity isa MClassDef then mentity = mentity.mclass
+               if not mentity isa MClass then return new ErrorNotClass(mentity)
+
+               var mentities = new HashSet[MEntity]
+               for mproperty in view.mproperties do
+                       if not mproperty isa MMethod then continue
+                       var msignature = mproperty.intro.msignature
+                       if msignature != null then
+                               var mtype = msignature.return_mtype
+                               if mtype == null then continue
+                               if mtype isa MNullableType then mtype = mtype.mtype
+                               if not mtype isa MClassType then continue
+                               if mtype.mclass != mentity then continue
+                               mentities.add mproperty
+                       end
+               end
+               results = mentities.to_a
+               return res
+       end
+end
+
+# Retrieve all the mproperties that initialize `mentity`
+#
+# `mentity` must be a MClass or a MClassDef.
+class CmdNew
+       super CmdEntityList
+
+       autoinit(view, modelbuilder, mentity, mentity_name, limit, page, count, max)
+
+       # ModelBuilder used to retrieve AST nodes
+       var modelbuilder: ModelBuilder
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               if mentity isa MClassDef then mentity = mentity.mclass
+               if not mentity isa MClass then return new ErrorNotClass(mentity)
+
+               var mentities = new HashSet[MEntity]
+               for mpropdef in view.mpropdefs do
+                       var visitor = new TypeInitVisitor(mentity)
+                       var npropdef = modelbuilder.mpropdef2node(mpropdef)
+                       if npropdef == null then continue
+                       visitor.enter_visit(npropdef)
+                       if visitor.called then
+                               mentities.add mpropdef
+                       end
+               end
+               results = mentities.to_a
+               return res
+       end
+end
+
+# Retrieve all the mproperties that call `mentity`
+#
+# `mentity` must be a MProperty or a MPropDef.
+class CmdCall
+       super CmdEntityList
+
+       autoinit(view, modelbuilder, mentity, mentity_name, limit, page, count, max)
+
+       # ModelBuilder used to retrieve AST nodes
+       var modelbuilder: ModelBuilder
+
+       redef fun init_results do
+               if results != null then return new CmdSuccess
+
+               var res = super
+               if not res isa CmdSuccess then return res
+               var mentity = self.mentity.as(not null)
+
+               if mentity isa MPropDef then mentity = mentity.mproperty
+               if not mentity isa MProperty then return new ErrorNotProperty(mentity)
+
+               var mentities = new HashSet[MEntity]
+               for mpropdef in view.mpropdefs do
+                       if mpropdef.mproperty == mentity then continue
+                       var visitor = new MPropertyCallVisitor
+                       var npropdef = modelbuilder.mpropdef2node(mpropdef)
+                       if npropdef == null then continue
+                       visitor.enter_visit(npropdef)
+                       if visitor.calls.has(mentity) then
+                               mentities.add mpropdef
+                       end
+               end
+               results = mentities.to_a
+               return res
+       end
+end
+
+## exploration
+
+# Visitor looking for initialized `MType` (new T).
+#
+# See `NewCmd`.
+private class TypeInitVisitor
+       super Visitor
+
+       var mclass: MClass
+
+       var called = false
+
+       redef fun visit(node)
+       do
+               node.visit_all(self)
+               # look for init
+               if not node isa ANewExpr then return
+               var mtype = node.n_type.mtype
+
+               if mtype == null then return
+               if mtype isa MNullableType then mtype = mtype.mtype
+               if not mtype isa MClassType then return
+               if mtype.mclass != mclass then return
+
+               called = true
+       end
+end
+
+# Visitor looking for calls to a `MProperty` (new T).
+#
+# See `CallCmd`.
+private class MPropertyCallVisitor
+       super Visitor
+
+       var calls = new HashSet[MProperty]
+       redef fun visit(node)
+       do
+               node.visit_all(self)
+               if not node isa ASendExpr then return
+               calls.add node.callsite.as(not null).mproperty
+       end
+end
+
+# The MEntity is not a MClass or a MClassDef
+class ErrorNotClass
+       super CmdError
+
+       # MEntity provided
+       var mentity: MEntity
+
+       redef fun to_s do return "`{mentity.full_name}` is not a class"
+end
+
+# The MEntity is not a MProperty or a MClassDef
+class ErrorNotProperty
+       super CmdError
+
+       # MEntity provided
+       var mentity: MEntity
+
+       redef fun to_s do return "`{mentity.full_name}` is not a property"
+end
diff --git a/src/doc/commands/tests/test_commands.nit b/src/doc/commands/tests/test_commands.nit
new file mode 100644 (file)
index 0000000..d91701b
--- /dev/null
@@ -0,0 +1,66 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Nitunit for doc commands
+module test_commands
+
+import commands_base
+import frontend
+
+# Nitunit test suite specific to commands
+class TestCommands
+
+       # The path to the testunit being executed
+       #
+       # Used to retrieve the path to sources to compile.
+       var test_path: String = "NIT_TESTING_PATH".environ.dirname is lazy
+
+       # Test program to compile
+       #
+       # Default is `$NIT_DIR/tests/test_prog`.
+       var test_src: String = test_path / "../../../../tests/test_prog" is lazy
+
+       # ModelView used for tests
+       var test_view: ModelView is noinit
+
+       # ModelBuilder used for tests
+       var test_builder: ModelBuilder is noinit
+
+       # Initialize test variables
+       #
+       # Must be called before test execution.
+       # FIXME should be before_all
+       fun build_test_env is before do
+               var toolcontext = new ToolContext
+
+               # build model
+               var model = new Model
+               var modelbuilder = new ModelBuilder(model, toolcontext)
+               var mmodules = modelbuilder.parse_full([test_src])
+
+               # process
+               modelbuilder.run_phases
+               toolcontext.run_global_phases(mmodules)
+               var mainmodule = toolcontext.make_main_module(mmodules)
+
+               # Build index
+               var filters = new ModelFilter(
+                       private_visibility,
+                       accept_fictive = false,
+                       accept_test = false)
+
+               test_builder = modelbuilder
+               test_view = new ModelView(model, mainmodule, filters)
+       end
+end
diff --git a/src/doc/commands/tests/test_commands_catalog.nit b/src/doc/commands/tests/test_commands_catalog.nit
new file mode 100644 (file)
index 0000000..9d60706
--- /dev/null
@@ -0,0 +1,113 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_commands_catalog is test
+
+import test_commands
+import doc::commands::commands_catalog
+
+class TestCommandsCatalog
+       super TestCommands
+       test
+
+       # Catalog used for tests
+       var test_catalog: Catalog is lazy do
+               var catalog = new Catalog(test_builder)
+
+               # Compute the poset
+               for p in test_view.mpackages do
+                       var g = p.root
+                       assert g != null
+                       test_builder.scan_group(g)
+
+                       catalog.deps.add_node(p)
+                       for gg in p.mgroups do for m in gg.mmodules do
+                               for im in m.in_importation.direct_greaters do
+                                       var ip = im.mpackage
+                                       if ip == null or ip == p then continue
+                                       test_catalog.deps.add_edge(p, ip)
+                               end
+                       end
+               end
+               # Build the catalog
+               for mpackage in test_view.mpackages do
+                       catalog.package_page(mpackage)
+                       catalog.git_info(mpackage)
+                       catalog.mpackage_stats(mpackage)
+               end
+               return catalog
+       end
+
+       fun test_cmd_catalog is test do
+               var cmd = new CmdCatalogPackages(test_view, test_catalog)
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).first.full_name == "test_prog"
+       end
+
+       fun test_cmd_catalog_search is test do
+               var cmd = new CmdCatalogSearch(test_view, test_catalog, "test")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).first.full_name == "test_prog"
+               assert cmd.results.as(not null).first isa MPackage
+       end
+
+       fun test_cmd_catalog_stats is test do
+               var cmd = new CmdCatalogStats(test_view, test_catalog)
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.stats != null
+       end
+
+       fun test_cmd_catalog_tags is test do
+               var cmd = new CmdCatalogTags(test_view, test_catalog)
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.packages_count_by_tags.as(not null).length == 2
+       end
+
+       fun test_cmd_catalog_tag is test do
+               var cmd = new CmdCatalogTag(test_view, test_catalog, "test")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.tag == "test"
+               assert cmd.results.as(not null).length == 1
+       end
+
+       fun test_cmd_catalog_person is test do
+               var cmd = new CmdCatalogPerson(test_view, test_catalog, person_name = "Alexandre Terrasa")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.person.as(not null).name == "Alexandre Terrasa"
+       end
+
+       fun test_cmd_catalog_contributing is test do
+               var cmd = new CmdCatalogContributing(test_view, test_catalog,
+                       person_name = "Alexandre Terrasa")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.person.as(not null).name == "Alexandre Terrasa"
+               assert cmd.results.as(not null).length == 1
+       end
+
+       fun test_cmd_catalog_maintaining is test do
+               var cmd = new CmdCatalogMaintaining(test_view, test_catalog,
+                       person_name = "Alexandre Terrasa")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.person.as(not null).name == "Alexandre Terrasa"
+               assert cmd.results.as(not null).length == 2
+       end
+end
diff --git a/src/doc/commands/tests/test_commands_graph.nit b/src/doc/commands/tests/test_commands_graph.nit
new file mode 100644 (file)
index 0000000..04f5966
--- /dev/null
@@ -0,0 +1,51 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_commands_graph is test
+
+import test_commands
+import doc::commands::commands_graph
+
+class TestCommandsGraph
+       super TestCommands
+       test
+
+       fun test_cmd_uml is test do
+               var cmd = new CmdUML(test_view, mentity_name = "test_prog::Character")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.uml != null
+       end
+
+       fun test_cmd_uml_bad_format is test do
+               var cmd = new CmdUML(test_view, mentity_name = "test_prog::Character", format = "foo")
+               var res = cmd.init_command
+               assert res isa ErrorBadGraphFormat
+               assert cmd.uml == null
+       end
+
+       fun test_cmd_uml_not_found is test do
+               var cmd = new CmdUML(test_view, mentity_name = "strength_bonus")
+               var res = cmd.init_command
+               assert res isa WarningNoUML
+               assert cmd.uml == null
+       end
+
+       fun test_cmd_inh_graph is test do
+               var cmd = new CmdInheritanceGraph(test_view, mentity_name = "test_prog::Character")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.graph != null
+       end
+end
diff --git a/src/doc/commands/tests/test_commands_http.nit b/src/doc/commands/tests/test_commands_http.nit
new file mode 100644 (file)
index 0000000..7cdd240
--- /dev/null
@@ -0,0 +1,289 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_commands_http is test
+
+import doc::commands::test_commands_catalog
+import doc::commands::commands_http
+
+class TestCommandsHttp
+       super TestCommandsCatalog
+       test
+
+       # Http parser to create Http requests
+       var http_parser = new HttpRequestParser
+
+       # Create a new and initialized http request from the `url` string
+       fun new_request(url: String, route_pattern: nullable String): HttpRequest do
+               if route_pattern == null then route_pattern = "/:id"
+               var route = new Route(route_pattern, new TestDummyAction)
+               var req = http_parser.parse_http_request("GET {url} HTTP/1.0")
+               assert req != null
+               req.uri_params = route.parse_params(req.uri)
+               return req
+       end
+
+       # CmdEntity
+
+       fun test_cmd_http_entity is test do
+               var req = new_request("/test_prog::Character")
+               var cmd = new CmdEntity(test_view)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.mentity.as(not null).full_name == "test_prog::Character"
+       end
+
+       fun test_cmd_http_entity_not_found is test do
+               var req = new_request("/Characterzzz")
+               var cmd = new CmdEntity(test_view)
+               var res = cmd.http_init(req)
+               assert res isa ErrorMEntityNotFound
+               assert res.suggestions.first.full_name == "test_prog::Character"
+       end
+
+       fun test_cmd_http_entity_conflict is test do
+               var req = new_request("/+")
+               var cmd = new CmdEntity(test_view)
+               var res = cmd.http_init(req)
+               assert res isa ErrorMEntityConflict
+               assert res.conflicts.length == 2
+       end
+
+       # CmdComment
+
+       fun test_cmd_http_comment is test do
+               var req = new_request("/test_prog::Character")
+               var cmd = new CmdComment(test_view)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.mdoc != null
+       end
+
+       fun test_cmd_http_comment_no_mdoc is test do
+               var req = new_request("/test_prog::Character?fallback=false")
+               var cmd = new CmdComment(test_view)
+               var res = cmd.http_init(req)
+               assert res isa WarningNoMDoc
+       end
+
+       # CmdInheritance
+
+       fun test_cmd_http_parents is test do
+               var req = new_request("/test_prog::Warrior")
+               var cmd = new CmdParents(test_view)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 1
+       end
+
+       fun test_cmd_http_ancestors is test do
+               var req = new_request("/test_prog::Warrior")
+               var cmd = new CmdAncestors(test_view)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 2
+       end
+
+       fun test_cmd_http_ancestorsi_without_parents is test do
+               var req = new_request("/test_prog::Warrior?parents=false")
+               var cmd = new CmdAncestors(test_view)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 1
+       end
+
+       fun test_cmd_http_children is test do
+               var req = new_request("/test_prog::Career")
+               var cmd = new CmdChildren(test_view)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 3
+       end
+
+       fun test_cmd_http_descendants is test do
+               var req = new_request("/test_prog::Career?children=false")
+               var cmd = new CmdDescendants(test_view)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 0
+       end
+
+       # CmdSearch
+
+       fun test_cmd_http_search is test do
+               var req = new_request("/?q=Carer&l=1")
+               var cmd = new CmdSearch(test_view)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).first.full_name == "test_prog::Career"
+               assert cmd.results.as(not null).length == 1
+       end
+
+       fun test_cmd_http_search_no_query is test do
+               var req = new_request("/")
+               var cmd = new CmdSearch(test_view)
+               var res = cmd.http_init(req)
+               assert res isa ErrorNoQuery
+       end
+
+       # CmdFeatures
+
+       fun test_cmd_http_features is test do
+               var req = new_request("/test_prog::Character?l=10")
+               var cmd = new CmdFeatures(test_view)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 10
+       end
+
+       fun test_cmd_http_features_no_features is test do
+               var req = new_request("/test_prog$Career$strength_bonus?l=10")
+               var cmd = new CmdFeatures(test_view)
+               var res = cmd.http_init(req)
+               assert res isa WarningNoFeatures
+       end
+
+       # CmdLinearization
+
+       fun test_cmd_http_lin is test do
+               var req = new_request("/init?l=10")
+               var cmd = new CmdLinearization(test_view)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 10
+       end
+
+       fun test_cmd_http_lin_no_lin is test do
+               var req = new_request("/test_prog?l=10")
+               var cmd = new CmdLinearization(test_view)
+               var res = cmd.http_init(req)
+               assert res isa WarningNoLinearization
+       end
+
+       # CmdCode
+
+       fun test_cmd_http_code is test do
+               var req = new_request("/test_prog::Career")
+               var cmd = new CmdEntityCode(test_view, test_builder)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.node isa AStdClassdef
+               assert cmd.format == "raw"
+       end
+
+       fun test_cmd_http_code_format is test do
+               var req = new_request("/test_prog::Career?format=html")
+               var cmd = new CmdEntityCode(test_view, test_builder)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.node isa AStdClassdef
+               assert cmd.format == "html"
+       end
+
+       fun test_cmd_http_code_no_code is test do
+               var req = new_request("/test_prog")
+               var cmd = new CmdEntityCode(test_view, test_builder)
+               var res = cmd.http_init(req)
+               assert res isa WarningNoCode
+       end
+
+       # CmdModel
+
+       fun test_cmd_http_results is test do
+               var req = new_request("/?kind=modules&l=2")
+               var cmd = new CmdModelEntities(test_view, kind = "modules")
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 2
+       end
+
+       fun test_cmd_http_results_random is test do
+               var req = new_request("/?kind=packages&l=1")
+               var cmd = new CmdRandomEntities(test_view, kind = "packages")
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 1
+       end
+
+       # CmdGraph
+
+       fun test_cmd_http_uml is test do
+               var req = new_request("/test_prog::Character?format=svg")
+               var cmd = new CmdUML(test_view)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.uml != null
+               assert cmd.format == "svg"
+       end
+
+       fun test_cmd_http_uml_not_found is test do
+               var req = new_request("/strength_bonus")
+               var cmd = new CmdUML(test_view)
+               var res = cmd.http_init(req)
+               assert res isa WarningNoUML
+               assert cmd.format == "dot"
+               assert cmd.uml == null
+       end
+
+       fun test_cmd_http_inh_graph is test do
+               var req = new_request("/test_prog::Character?pdepth=1&cdepth=1")
+               var cmd = new CmdInheritanceGraph(test_view)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.graph != null
+               assert cmd.pdepth == 1
+               assert cmd.cdepth == 1
+       end
+
+       # CmdCatalog
+
+       fun test_cmd_http_catalog_search is test do
+               var req = new_request("/?q=test&l=1")
+               var cmd = new CmdCatalogSearch(test_view, test_catalog)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).first.full_name == "test_prog"
+               assert cmd.results.as(not null).first isa MPackage
+               assert cmd.results.as(not null).length == 1
+       end
+
+       fun test_cmd_http_catalog_tag is test do
+               var req = new_request("/test", "/:tid")
+               var cmd = new CmdCatalogTag(test_view, test_catalog)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.tag == "test"
+               assert cmd.results.as(not null).length == 1
+       end
+
+       fun test_cmd_http_catalog_person is test do
+               var req = new_request("/Alexandre%20Terrasa", "/:pid")
+               var cmd = new CmdCatalogPerson(test_view, test_catalog)
+               var res = cmd.http_init(req)
+               assert res isa CmdSuccess
+               assert cmd.person.as(not null).name == "Alexandre Terrasa"
+       end
+end
+
+# Dummy action that does nothing
+#
+# Used to build the test route / http request.
+private class TestDummyAction
+       super Action
+end
+
+redef class CmdUML
+       # FIXME linerarization
+       redef fun http_init(req) do return super
+end
diff --git a/src/doc/commands/tests/test_commands_json.nit b/src/doc/commands/tests/test_commands_json.nit
new file mode 100644 (file)
index 0000000..c7db27e
--- /dev/null
@@ -0,0 +1,142 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_commands_json is test
+
+import test_commands
+import doc::commands::commands_json
+
+class TestCommandsJson
+       super TestCommands
+       test
+
+       fun print_json(json: nullable Serializable) do
+               if json == null then return
+               print json.serialize_to_json(pretty = true, plain = true)
+       end
+
+       # CmdEntity
+
+       fun test_cmd_entity is test do
+               var cmd = new CmdEntity(test_view, mentity_name = "test_prog::Character")
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       fun test_cmd_comment is test do
+               var cmd = new CmdComment(test_view, mentity_name = "test_prog::Character")
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       # CmdInheritance
+
+       fun test_cmd_parents is test do
+               var cmd = new CmdParents(test_view, mentity_name = "test_prog::Warrior")
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       fun test_cmd_ancestors is test do
+               var cmd = new CmdAncestors(test_view, mentity_name = "test_prog::Warrior", parents = false)
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       fun test_cmd_children is test do
+               var cmd = new CmdChildren(test_view, mentity_name = "test_prog::Career")
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       fun test_cmd_descendants is test do
+               var cmd = new CmdDescendants(test_view, mentity_name = "test_prog::Career")
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       # CmdSearch
+
+       fun test_cmd_search is test do
+               var cmd = new CmdSearch(test_view, query = "Carer", limit = 10)
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       # CmdFeatures
+
+       fun test_cmd_features is test do
+               var cmd = new CmdFeatures(test_view, mentity_name = "test_prog::Career")
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       # CmdLinearization
+
+       fun test_cmd_lin is test do
+               var cmd = new CmdLinearization(test_view, mentity_name = "init")
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       # CmdModel
+
+       fun test_cmd_mentities is test do
+               var cmd = new CmdModelEntities(test_view, kind = "modules")
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       # CmdUsage
+
+       fun test_cmd_new is test do
+               var cmd = new CmdNew(test_view, test_builder, mentity_name = "test_prog::Character")
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       fun test_cmd_call is test do
+               var cmd = new CmdCall(test_view, test_builder, mentity_name = "strength_bonus")
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       fun test_cmd_return is test do
+               var cmd = new CmdReturn(test_view, mentity_name = "test_prog::Character")
+               cmd.init_command
+               print_json cmd.to_json
+       end
+
+       fun test_cmd_param is test do
+               var cmd = new CmdParam(test_view, mentity_name = "test_prog::Character")
+               cmd.init_command
+               print_json cmd.to_json
+       end
+end
+
+redef class nitc::Location
+       serialize
+
+       # Avoid diff on location absolute path
+       redef fun core_serialize_to(v) do
+               v.serialize_attribute("column_end", column_end)
+               v.serialize_attribute("column_start", column_start)
+               v.serialize_attribute("line_end", line_end)
+               v.serialize_attribute("line_start", line_start)
+               var file = self.file
+               if file != null then
+                       v.serialize_attribute("file", "test_location")
+               end
+       end
+end
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_ancestors.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_ancestors.res
new file mode 100644 (file)
index 0000000..26a3c60
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "results": [{
+               "name": "Object",
+               "synopsis": "Root of everything.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }],
+               "class_name": "MClass",
+               "full_name": "test_prog::Object",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>",
+               "modifiers": ["interface"]
+       }],
+       "page": null,
+       "count": null,
+       "limit": null,
+       "max": null
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_call.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_call.res
new file mode 100644 (file)
index 0000000..b49877d
--- /dev/null
@@ -0,0 +1,58 @@
+{
+       "results": [{
+               "name": "init",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Character",
+                       "synopsis": "Characters can be played by both the human or the machine."
+               }, "$", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }, "::", {
+                       "name": "init"
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Character$Object::init",
+               "visibility": "public",
+               "modifiers": ["redef", "init"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "total_strengh",
+               "synopsis": "The actual strength of the character.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Character",
+                       "synopsis": "Characters can be played by both the human or the machine."
+               }, "$", {
+                       "name": "total_strengh",
+                       "synopsis": "The actual strength of the character."
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Character$total_strengh",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">The actual strength of the character.</span>",
+               "modifiers": ["fun"],
+               "is_intro": true,
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }
+       }],
+       "page": null,
+       "count": null,
+       "limit": null,
+       "max": null
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_children.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_children.res
new file mode 100644 (file)
index 0000000..0f1dd96
--- /dev/null
@@ -0,0 +1,52 @@
+{
+       "results": [{
+               "name": "Alcoholic",
+               "synopsis": "Alcoholics are good to nothing escept taking punches.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Alcoholic",
+                       "synopsis": "Alcoholics are good to nothing escept taking punches."
+               }],
+               "class_name": "MClass",
+               "full_name": "test_prog::Alcoholic",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Alcoholics are good to nothing escept taking punches.</span>",
+               "modifiers": ["class"]
+       }, {
+               "name": "Magician",
+               "synopsis": "Magicians know magic and how to use it.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Magician",
+                       "synopsis": "Magicians know magic and how to use it."
+               }],
+               "class_name": "MClass",
+               "full_name": "test_prog::Magician",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Magicians know magic and how to use it.</span>",
+               "modifiers": ["class"]
+       }, {
+               "name": "Warrior",
+               "synopsis": "Warriors are good for fighting.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Warrior",
+                       "synopsis": "Warriors are good for fighting."
+               }],
+               "class_name": "MClass",
+               "full_name": "test_prog::Warrior",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Warriors are good for fighting.</span>",
+               "modifiers": ["class"]
+       }],
+       "page": null,
+       "count": null,
+       "limit": null,
+       "max": null
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_comment.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_comment.res
new file mode 100644 (file)
index 0000000..5f4128d
--- /dev/null
@@ -0,0 +1,3 @@
+{
+       "documentation": "Characters can be played by both the human or the machine."
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_descendants.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_descendants.res
new file mode 100644 (file)
index 0000000..0f1dd96
--- /dev/null
@@ -0,0 +1,52 @@
+{
+       "results": [{
+               "name": "Alcoholic",
+               "synopsis": "Alcoholics are good to nothing escept taking punches.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Alcoholic",
+                       "synopsis": "Alcoholics are good to nothing escept taking punches."
+               }],
+               "class_name": "MClass",
+               "full_name": "test_prog::Alcoholic",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Alcoholics are good to nothing escept taking punches.</span>",
+               "modifiers": ["class"]
+       }, {
+               "name": "Magician",
+               "synopsis": "Magicians know magic and how to use it.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Magician",
+                       "synopsis": "Magicians know magic and how to use it."
+               }],
+               "class_name": "MClass",
+               "full_name": "test_prog::Magician",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Magicians know magic and how to use it.</span>",
+               "modifiers": ["class"]
+       }, {
+               "name": "Warrior",
+               "synopsis": "Warriors are good for fighting.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Warrior",
+                       "synopsis": "Warriors are good for fighting."
+               }],
+               "class_name": "MClass",
+               "full_name": "test_prog::Warrior",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Warriors are good for fighting.</span>",
+               "modifiers": ["class"]
+       }],
+       "page": null,
+       "count": null,
+       "limit": null,
+       "max": null
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_entity.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_entity.res
new file mode 100644 (file)
index 0000000..e229fc7
--- /dev/null
@@ -0,0 +1,16 @@
+{
+       "name": "Character",
+       "synopsis": "Characters can be played by both the human or the machine.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Character",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters can be played by both the human or the machine.</span>",
+       "modifiers": ["class"]
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_features.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_features.res
new file mode 100644 (file)
index 0000000..e483a2e
--- /dev/null
@@ -0,0 +1,255 @@
+{
+       "results": [{
+               "name": "_endurance_bonus",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "careers",
+                       "synopsis": "Careers of the game."
+               }, "::", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }, "::", {
+                       "name": "_endurance_bonus"
+               }],
+               "class_name": "MAttribute",
+               "full_name": "test_prog::careers::Career::_endurance_bonus",
+               "visibility": "private",
+               "modifiers": ["private", "var"],
+               "static_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }, {
+               "name": "_intelligence_bonus",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "careers",
+                       "synopsis": "Careers of the game."
+               }, "::", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }, "::", {
+                       "name": "_intelligence_bonus"
+               }],
+               "class_name": "MAttribute",
+               "full_name": "test_prog::careers::Career::_intelligence_bonus",
+               "visibility": "private",
+               "modifiers": ["private", "var"],
+               "static_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }, {
+               "name": "_strength_bonus",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "careers",
+                       "synopsis": "Careers of the game."
+               }, "::", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }, "::", {
+                       "name": "_strength_bonus"
+               }],
+               "class_name": "MAttribute",
+               "full_name": "test_prog::careers::Career::_strength_bonus",
+               "visibility": "private",
+               "modifiers": ["private", "var"],
+               "static_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }, {
+               "name": "endurance_bonus",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }, "::", {
+                       "name": "endurance_bonus"
+               }],
+               "class_name": "MMethod",
+               "full_name": "test_prog::Career::endurance_bonus",
+               "visibility": "public",
+               "modifiers": ["fun"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }
+       }, {
+               "name": "endurance_bonus=",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }, "::", {
+                       "name": "endurance_bonus="
+               }],
+               "class_name": "MMethod",
+               "full_name": "test_prog::Career::endurance_bonus=",
+               "visibility": "protected",
+               "modifiers": ["protected", "fun"],
+               "msignature": {
+                       "arity": 1,
+                       "mparameters": [{
+                               "is_vararg": false,
+                               "name": "endurance_bonus",
+                               "mtype": {
+                                       "name": "Int",
+                                       "synopsis": "Some services about Integers.",
+                                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               }
+                       }],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "init",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }, "$", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }, "::", {
+                       "name": "init"
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Career$Object::init",
+               "visibility": "public",
+               "modifiers": ["redef", "init"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "intelligence_bonus",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }, "::", {
+                       "name": "intelligence_bonus"
+               }],
+               "class_name": "MMethod",
+               "full_name": "test_prog::Career::intelligence_bonus",
+               "visibility": "public",
+               "modifiers": ["fun"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }
+       }, {
+               "name": "intelligence_bonus=",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }, "::", {
+                       "name": "intelligence_bonus="
+               }],
+               "class_name": "MMethod",
+               "full_name": "test_prog::Career::intelligence_bonus=",
+               "visibility": "protected",
+               "modifiers": ["protected", "fun"],
+               "msignature": {
+                       "arity": 1,
+                       "mparameters": [{
+                               "is_vararg": false,
+                               "name": "intelligence_bonus",
+                               "mtype": {
+                                       "name": "Int",
+                                       "synopsis": "Some services about Integers.",
+                                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               }
+                       }],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "strength_bonus",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }, "::", {
+                       "name": "strength_bonus"
+               }],
+               "class_name": "MMethod",
+               "full_name": "test_prog::Career::strength_bonus",
+               "visibility": "public",
+               "modifiers": ["fun"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }
+       }, {
+               "name": "strength_bonus=",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }, "::", {
+                       "name": "strength_bonus="
+               }],
+               "class_name": "MMethod",
+               "full_name": "test_prog::Career::strength_bonus=",
+               "visibility": "protected",
+               "modifiers": ["protected", "fun"],
+               "msignature": {
+                       "arity": 1,
+                       "mparameters": [{
+                               "is_vararg": false,
+                               "name": "strength_bonus",
+                               "mtype": {
+                                       "name": "Int",
+                                       "synopsis": "Some services about Integers.",
+                                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                               }
+                       }],
+                       "return_mtype": null
+               }
+       }],
+       "page": null,
+       "count": null,
+       "limit": null,
+       "max": null
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_lin.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_lin.res
new file mode 100644 (file)
index 0000000..c7ddd5a
--- /dev/null
@@ -0,0 +1,235 @@
+{
+       "results": [{
+               "name": "init",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }, "$", {
+                       "name": "init"
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Object$init",
+               "visibility": "public",
+               "modifiers": ["init"],
+               "is_intro": true,
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "init",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Race",
+                       "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+               }, "$", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }, "::", {
+                       "name": "init"
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Race$Object::init",
+               "visibility": "public",
+               "modifiers": ["redef", "init"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "init",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }, "$", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }, "::", {
+                       "name": "init"
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Career$Object::init",
+               "visibility": "public",
+               "modifiers": ["redef", "init"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "init",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Human",
+                       "synopsis": "Humans are able to do everithing."
+               }, "$", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }, "::", {
+                       "name": "init"
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Human$Object::init",
+               "visibility": "public",
+               "modifiers": ["redef", "init"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "init",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Elf",
+                       "synopsis": "Elves make good magicians."
+               }, "$", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }, "::", {
+                       "name": "init"
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Elf$Object::init",
+               "visibility": "public",
+               "modifiers": ["redef", "init"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "init",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Warrior",
+                       "synopsis": "Warriors are good for fighting."
+               }, "$", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }, "::", {
+                       "name": "init"
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Warrior$Object::init",
+               "visibility": "public",
+               "modifiers": ["redef", "init"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "init",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Magician",
+                       "synopsis": "Magicians know magic and how to use it."
+               }, "$", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }, "::", {
+                       "name": "init"
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Magician$Object::init",
+               "visibility": "public",
+               "modifiers": ["redef", "init"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "init",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Alcoholic",
+                       "synopsis": "Alcoholics are good to nothing escept taking punches."
+               }, "$", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }, "::", {
+                       "name": "init"
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Alcoholic$Object::init",
+               "visibility": "public",
+               "modifiers": ["redef", "init"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "init",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Character",
+                       "synopsis": "Characters can be played by both the human or the machine."
+               }, "$", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }, "::", {
+                       "name": "init"
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Character$Object::init",
+               "visibility": "public",
+               "modifiers": ["redef", "init"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": null
+               }
+       }, {
+               "name": "init",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "$", {
+                       "name": "Dwarf",
+                       "synopsis": "Dwarves make strong warriors."
+               }, "$", {
+                       "name": "Object",
+                       "synopsis": "Root of everything."
+               }, "::", {
+                       "name": "init"
+               }],
+               "class_name": "MMethodDef",
+               "full_name": "test_prog$Dwarf$Object::init",
+               "visibility": "public",
+               "modifiers": ["redef", "init"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": null
+               }
+       }],
+       "page": null,
+       "count": null,
+       "limit": null,
+       "max": null
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_mentities.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_mentities.res
new file mode 100644 (file)
index 0000000..07d815d
--- /dev/null
@@ -0,0 +1,150 @@
+{
+       "results": [{
+               "name": "careers",
+               "synopsis": "Careers of the game.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "careers",
+                       "synopsis": "Careers of the game."
+               }],
+               "class_name": "MModule",
+               "full_name": "test_prog::careers",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Careers of the game.</span>",
+               "modifiers": ["module"]
+       }, {
+               "name": "character",
+               "synopsis": "Characters are playable entity in the world.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "character",
+                       "synopsis": "Characters are playable entity in the world."
+               }],
+               "class_name": "MModule",
+               "full_name": "test_prog::character",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Characters are playable entity in the world.</span>",
+               "modifiers": ["module"]
+       }, {
+               "name": "combat",
+               "synopsis": "COmbat interactions between characters.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "combat",
+                       "synopsis": "COmbat interactions between characters."
+               }],
+               "class_name": "MModule",
+               "full_name": "test_prog::combat",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">COmbat interactions between characters.</span>",
+               "modifiers": ["module"]
+       }, {
+               "name": "excluded",
+               "namespace": [{
+                       "name": "excluded"
+               }, "::", {
+                       "name": "excluded"
+               }],
+               "class_name": "MModule",
+               "full_name": "excluded::excluded",
+               "visibility": "public",
+               "modifiers": ["module"]
+       }, {
+               "name": "game",
+               "synopsis": "A game abstraction for RPG.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "game",
+                       "synopsis": "A game abstraction for RPG."
+               }],
+               "class_name": "MModule",
+               "full_name": "test_prog::game",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">A game abstraction for RPG.</span>",
+               "modifiers": ["module"]
+       }, {
+               "name": "game_examples",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "game_examples"
+               }],
+               "class_name": "MModule",
+               "full_name": "test_prog::game_examples",
+               "visibility": "public",
+               "modifiers": ["module"]
+       }, {
+               "name": "platform",
+               "synopsis": "Declares base types allowed on the platform.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "platform",
+                       "synopsis": "Declares base types allowed on the platform."
+               }],
+               "class_name": "MModule",
+               "full_name": "test_prog::platform",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Declares base types allowed on the platform.</span>",
+               "modifiers": ["module"]
+       }, {
+               "name": "races",
+               "synopsis": "Races of the game.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "races",
+                       "synopsis": "Races of the game."
+               }],
+               "class_name": "MModule",
+               "full_name": "test_prog::races",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Races of the game.</span>",
+               "modifiers": ["module"]
+       }, {
+               "name": "rpg",
+               "synopsis": "A worlg RPG abstraction.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "rpg",
+                       "synopsis": "A worlg RPG abstraction."
+               }],
+               "class_name": "MModule",
+               "full_name": "test_prog::rpg",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">A worlg RPG abstraction.</span>",
+               "modifiers": ["module"]
+       }, {
+               "name": "test_prog",
+               "synopsis": "A test program with a fake model to check model tools.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "test_prog",
+                       "synopsis": "A test program with a fake model to check model tools."
+               }],
+               "class_name": "MModule",
+               "full_name": "test_prog::test_prog",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">A test program with a fake model to check model tools.</span>",
+               "modifiers": ["module"]
+       }],
+       "page": null,
+       "count": null,
+       "limit": null,
+       "max": null
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_new.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_new.res
new file mode 100644 (file)
index 0000000..99893dd
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "results": [],
+       "page": null,
+       "count": null,
+       "limit": null,
+       "max": null
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_param.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_param.res
new file mode 100644 (file)
index 0000000..99893dd
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "results": [],
+       "page": null,
+       "count": null,
+       "limit": null,
+       "max": null
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_parents.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_parents.res
new file mode 100644 (file)
index 0000000..5e2fe63
--- /dev/null
@@ -0,0 +1,22 @@
+{
+       "results": [{
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }],
+               "class_name": "MClass",
+               "full_name": "test_prog::Career",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>",
+               "modifiers": ["abstract class"]
+       }],
+       "page": null,
+       "count": null,
+       "limit": null,
+       "max": null
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_return.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_return.res
new file mode 100644 (file)
index 0000000..99893dd
--- /dev/null
@@ -0,0 +1,7 @@
+{
+       "results": [],
+       "page": null,
+       "count": null,
+       "limit": null,
+       "max": null
+}
diff --git a/src/doc/commands/tests/test_commands_json.sav/test_cmd_search.res b/src/doc/commands/tests/test_commands_json.sav/test_cmd_search.res
new file mode 100644 (file)
index 0000000..c392050
--- /dev/null
@@ -0,0 +1,175 @@
+{
+       "results": [{
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+               }],
+               "class_name": "MClass",
+               "full_name": "test_prog::Career",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>",
+               "modifiers": ["abstract class"]
+       }, {
+               "name": "career",
+               "synopsis": "The current `Career` of the character.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Character",
+                       "synopsis": "Characters can be played by both the human or the machine."
+               }, "::", {
+                       "name": "career",
+                       "synopsis": "The current `Career` of the character."
+               }],
+               "class_name": "MMethod",
+               "full_name": "test_prog::Character::career",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+               "modifiers": ["fun"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": {
+                               "name": "nullable Career",
+                               "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+                       }
+               }
+       }, {
+               "name": "game",
+               "synopsis": "Gaming group",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, ">", {
+                       "name": "game",
+                       "synopsis": "Gaming group"
+               }, ">"],
+               "class_name": "MGroup",
+               "full_name": "test_prog>game>",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Gaming group</span>",
+               "modifiers": ["group"]
+       }, {
+               "name": "game",
+               "synopsis": "A game abstraction for RPG.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "game",
+                       "synopsis": "A game abstraction for RPG."
+               }],
+               "class_name": "MModule",
+               "full_name": "test_prog::game",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">A game abstraction for RPG.</span>",
+               "modifiers": ["module"]
+       }, {
+               "name": "races",
+               "synopsis": "Races of the game.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "races",
+                       "synopsis": "Races of the game."
+               }],
+               "class_name": "MModule",
+               "full_name": "test_prog::races",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Races of the game.</span>",
+               "modifiers": ["module"]
+       }, {
+               "name": "careers",
+               "synopsis": "Careers of the game.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "careers",
+                       "synopsis": "Careers of the game."
+               }],
+               "class_name": "MModule",
+               "full_name": "test_prog::careers",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Careers of the game.</span>",
+               "modifiers": ["module"]
+       }, {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Game",
+                       "synopsis": "This is the interface you have to implement to use ure gaming platform."
+               }],
+               "class_name": "MClass",
+               "full_name": "test_prog::Game",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">This is the interface you have to implement to use ure gaming platform.</span>",
+               "modifiers": ["interface"]
+       }, {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Race",
+                       "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+               }],
+               "class_name": "MClass",
+               "full_name": "test_prog::Race",
+               "visibility": "public",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>",
+               "modifiers": ["abstract class"]
+       }, {
+               "name": "Starter",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Starter"
+               }],
+               "class_name": "MClass",
+               "full_name": "test_prog::Starter",
+               "visibility": "public",
+               "modifiers": ["class"]
+       }, {
+               "name": "age",
+               "namespace": [{
+                       "name": "test_prog",
+                       "synopsis": "Test program for model tools."
+               }, "::", {
+                       "name": "Character",
+                       "synopsis": "Characters can be played by both the human or the machine."
+               }, "::", {
+                       "name": "age"
+               }],
+               "class_name": "MMethod",
+               "full_name": "test_prog::Character::age",
+               "visibility": "public",
+               "modifiers": ["fun"],
+               "msignature": {
+                       "arity": 0,
+                       "mparameters": [],
+                       "return_mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }
+       }],
+       "page": 1,
+       "count": 113,
+       "limit": 10,
+       "max": 11
+}
diff --git a/src/doc/commands/tests/test_commands_model.nit b/src/doc/commands/tests/test_commands_model.nit
new file mode 100644 (file)
index 0000000..a785a09
--- /dev/null
@@ -0,0 +1,181 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_commands_model is test
+
+import test_commands
+import doc::commands::commands_model
+
+class TestCommandsModel
+       super TestCommands
+       test
+
+       # CmdEntity
+
+       fun test_cmd_entity is test do
+               var cmd = new CmdEntity(test_view, mentity_name = "test_prog::Character")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.mentity.as(not null).full_name == "test_prog::Character"
+       end
+
+       fun test_cmd_entity_not_found is test do
+               var cmd = new CmdEntity(test_view, mentity_name = "test_prog::Characterzz")
+               var res = cmd.init_command
+               assert res isa ErrorMEntityNotFound
+               assert res.suggestions.first.full_name == "test_prog::Character"
+       end
+
+       fun test_cmd_entity_conflict is test do
+               var cmd = new CmdEntity(test_view, mentity_name = "+")
+               var res = cmd.init_command
+               assert res isa ErrorMEntityConflict
+               assert res.conflicts.length == 2
+       end
+
+       fun test_cmd_entity_no_name is test do
+               var cmd = new CmdEntity(test_view)
+               var res = cmd.init_command
+               assert res isa ErrorMEntityNoName
+       end
+
+       # CmdComment
+
+       fun test_cmd_comment is test do
+               var cmd = new CmdComment(test_view, mentity_name = "test_prog::Character")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.mdoc != null
+       end
+
+       fun test_cmd_comment_no_mdoc is test do
+               var cmd = new CmdComment(test_view, mentity_name = "test_prog::Character", fallback = false)
+               var res = cmd.init_command
+               assert res isa WarningNoMDoc
+       end
+
+       # CmdInheritance
+
+       fun test_cmd_parents is test do
+               var cmd = new CmdParents(test_view, mentity_name = "test_prog::Warrior")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 1
+       end
+
+       fun test_cmd_ancestors is test do
+               var cmd = new CmdAncestors(test_view, mentity_name = "test_prog::Warrior")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 2
+       end
+
+       fun test_cmd_ancestorsi_without_parents is test do
+               var cmd = new CmdAncestors(test_view, mentity_name = "test_prog::Warrior", parents = false)
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 1
+       end
+
+       fun test_cmd_children is test do
+               var cmd = new CmdChildren(test_view, mentity_name = "test_prog::Career")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 3
+       end
+
+       fun test_cmd_descendants is test do
+               var cmd = new CmdDescendants(test_view, mentity_name = "test_prog::Career", children = false)
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 0
+       end
+
+       # CmdSearch
+
+       fun test_cmd_search is test do
+               var cmd = new CmdSearch(test_view, query = "Carer")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).first.full_name == "test_prog::Career"
+       end
+
+       fun test_cmd_search_no_query is test do
+               var cmd = new CmdSearch(test_view)
+               var res = cmd.init_command
+               assert res isa ErrorNoQuery
+       end
+
+       # CmdFeatures
+
+       fun test_cmd_features is test do
+               var cmd = new CmdFeatures(test_view, mentity_name = "test_prog::Career")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 10
+       end
+
+       fun test_cmd_features_no_features is test do
+               var cmd = new CmdFeatures(test_view, mentity_name = "test_prog$Career$strength_bonus")
+               var res = cmd.init_command
+               assert res isa WarningNoFeatures
+       end
+
+       # CmdLinearization
+
+       fun test_cmd_lin is test do
+               var cmd = new CmdLinearization(test_view, mentity_name = "init")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               print cmd.results.as(not null)
+               assert cmd.results.as(not null).length == 10
+       end
+
+       fun test_cmd_lin_no_lin is test do
+               var cmd = new CmdLinearization(test_view, mentity_name = "test_prog")
+               var res = cmd.init_command
+               assert res isa WarningNoLinearization
+       end
+
+       # CmdCode
+
+       fun test_cmd_code is test do
+               var cmd = new CmdEntityCode(test_view, test_builder, mentity_name = "test_prog::Career")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.node isa AStdClassdef
+       end
+
+       fun test_cmd_code_no_code is test do
+               var cmd = new CmdEntityCode(test_view, test_builder, mentity_name = "test_prog")
+               var res = cmd.init_command
+               assert res isa WarningNoCode
+       end
+
+       # CmdModel
+
+       fun test_cmd_results is test do
+               var cmd = new CmdModelEntities(test_view, kind = "modules")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 10
+       end
+
+       fun test_cmd_results_random is test do
+               var cmd = new CmdRandomEntities(test_view, kind = "packages")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results.as(not null).length == 2
+       end
+end
diff --git a/src/doc/commands/tests/test_commands_parser.nit b/src/doc/commands/tests/test_commands_parser.nit
new file mode 100644 (file)
index 0000000..ee956c7
--- /dev/null
@@ -0,0 +1,297 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_commands_parser is test
+
+import test_commands
+import doc::commands::tests::test_commands_catalog
+import doc::commands::commands_parser
+
+class TestCommandsParser
+       super TestCommandsCatalog
+       test
+
+       # CmdEntity
+
+       fun test_cmd_parser_comment is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("doc: test_prog::Character")
+               assert cmd isa CmdComment
+               assert parser.error == null
+               assert cmd.mdoc != null
+       end
+
+       # CmdInheritance
+
+       fun test_cmd_parser_parents is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("parents: test_prog::Warrior")
+               assert cmd isa CmdParents
+               assert parser.error == null
+               assert cmd.results.as(not null).length == 1
+       end
+
+       fun test_cmd_parser_ancestors is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("ancestors: test_prog::Warrior")
+               assert cmd isa CmdAncestors
+               assert parser.error == null
+               assert cmd.results.as(not null).length == 2
+       end
+
+       fun test_cmd_parser_ancestors_without_parents is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("ancestors: test_prog::Warrior | parents: false")
+               assert cmd isa CmdAncestors
+               assert parser.error == null
+               assert cmd.results.as(not null).length == 1
+       end
+
+       fun test_cmd_parser_children is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("children: test_prog::Career")
+               assert cmd isa CmdChildren
+               assert parser.error == null
+               assert cmd.results.as(not null).length == 3
+       end
+
+       fun test_cmd_parser_descendants is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("descendants: Object")
+               assert cmd isa CmdDescendants
+               assert parser.error == null
+               assert cmd.results.as(not null).length == 20
+       end
+
+       fun test_cmd_parser_descendants_without_children is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("descendants: Object | children: false")
+               assert cmd isa CmdDescendants
+               assert parser.error == null
+               assert cmd.results.as(not null).length == 8
+       end
+
+       # CmdSearch
+
+       fun test_cmd_parser_search is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("search: Caracter")
+               assert cmd isa CmdSearch
+               assert parser.error == null
+               assert cmd.results != null
+       end
+
+       fun test_cmd_parser_search_limit is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("search: Caracter | limit: 2")
+               assert cmd isa CmdSearch
+               assert parser.error == null
+               assert cmd.results.as(not null).length == 2
+       end
+
+       # CmdFeatures
+
+       fun test_cmd_parser_features is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("defs: test_prog::Character")
+               assert cmd isa CmdFeatures
+               assert parser.error == null
+               assert cmd.results != null
+       end
+
+       fun test_cmd_parser_features_limit is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("defs: test_prog::Character | limit: 2")
+               assert cmd isa CmdFeatures
+               assert parser.error == null
+               assert cmd.results.as(not null).length == 2
+       end
+
+       # CmdLinearization
+
+       fun test_cmd_parser_lin is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("lin: test_prog::Character")
+               assert cmd isa CmdLinearization
+               assert parser.error == null
+               assert cmd.results != null
+       end
+
+       fun test_cmd_parser_lin_limit is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("lin: test_prog::Character | limit: 2")
+               assert cmd isa CmdLinearization
+               assert parser.error == null
+               assert cmd.results.as(not null).length == 2
+       end
+
+       # CmdCode
+
+       fun test_cmd_parser_code is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("code: test_prog::Character")
+               assert cmd isa CmdEntityCode
+               assert parser.error == null
+               assert cmd.node != null
+       end
+
+       # CmdModel
+
+       fun test_cmd_parser_mentities is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("list: modules")
+               assert cmd isa CmdModelEntities
+               assert parser.error == null
+               assert cmd.results != null
+       end
+
+       fun test_cmd_parser_results_mentities is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("random: modules")
+               assert cmd isa CmdRandomEntities
+               assert parser.error == null
+               assert cmd.results != null
+       end
+
+       # CmdGraph
+
+       fun test_cmd_parser_uml is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("uml: test_prog::Career")
+               assert cmd isa CmdUML
+               assert parser.error == null
+               assert cmd.uml != null
+       end
+
+       fun test_cmd_parser_inh_graph is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("graph: test_prog::Career")
+               assert cmd isa CmdInheritanceGraph
+               assert parser.error == null
+               assert cmd.graph != null
+       end
+
+       fun test_cmd_parser_inh_graph_opts is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("graph: test_prog::Career | cdepth: 2, pdepth: 5")
+               assert cmd isa CmdInheritanceGraph
+               assert parser.error == null
+               assert cmd.graph != null
+               assert cmd.cdepth == 2
+               assert cmd.pdepth == 5
+       end
+
+       # CmdUsage
+
+       fun test_cmd_parser_new is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("new: test_prog::Career")
+               assert cmd isa CmdNew
+               assert parser.error == null
+               assert cmd.results != null
+       end
+
+       fun test_cmd_parser_call is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("call: strength_bonus")
+               assert cmd isa CmdCall
+               assert parser.error == null
+               assert cmd.results != null
+       end
+
+       fun test_cmd_parser_return is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("return: test_prog::Career")
+               assert cmd isa CmdReturn
+               assert parser.error == null
+               assert cmd.results != null
+       end
+
+       fun test_cmd_parser_param is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("param: test_prog::Career")
+               assert cmd isa CmdParam
+               assert parser.error == null
+               assert cmd.results != null
+       end
+
+       # CmdCatalog
+
+       fun test_parser_catalog_search is test do
+               var parser = new CommandParser(test_view, test_builder)
+               var cmd = parser.parse("search: Caracter")
+               assert cmd isa CmdSearch
+               assert parser.error == null
+               assert cmd.results != null
+       end
+
+       fun test_cmd_parser_catalog_packages is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               var cmd = parser.parse("catalog:")
+               assert cmd isa CmdCatalogPackages
+               assert parser.error == null
+               assert cmd.results != null
+       end
+
+       fun test_cmd_parser_catalog_stats is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               var cmd = parser.parse("stats:")
+               assert cmd isa CmdCatalogStats
+               assert parser.error == null
+               assert cmd.stats != null
+       end
+
+       fun test_cmd_parser_catalog_tags is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               var cmd = parser.parse("tags:")
+               assert cmd isa CmdCatalogTags
+               assert parser.error == null
+               assert cmd.packages_count_by_tags != null
+       end
+
+       fun test_cmd_parser_catalog_tag is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               var cmd = parser.parse("tag: test")
+               assert cmd isa CmdCatalogTag
+               assert parser.error == null
+               assert cmd.tag == "test"
+               assert cmd.results != null
+       end
+
+       fun test_cmd_parser_catalog_person is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               var cmd = parser.parse("person: Alexandre Terrasa")
+               assert cmd isa CmdCatalogPerson
+               assert parser.error == null
+               assert cmd.person.as(not null).name == "Alexandre Terrasa"
+       end
+
+       fun test_cmd_parser_catalog_contributing is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               var cmd = parser.parse("contrib: Alexandre Terrasa")
+               assert cmd isa CmdCatalogContributing
+               assert parser.error == null
+               assert cmd.person.as(not null).name == "Alexandre Terrasa"
+               assert cmd.results != null
+       end
+
+       fun test_cmd_parser_catalog_maintaining is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               var cmd = parser.parse("maintain: Alexandre Terrasa")
+               assert cmd isa CmdCatalogMaintaining
+               assert parser.error == null
+               assert cmd.person.as(not null).name == "Alexandre Terrasa"
+               assert cmd.results != null
+       end
+end
diff --git a/src/doc/commands/tests/test_commands_usage.nit b/src/doc/commands/tests/test_commands_usage.nit
new file mode 100644 (file)
index 0000000..b07c336
--- /dev/null
@@ -0,0 +1,63 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_commands_usage is test
+
+import test_commands
+import doc::commands::commands_usage
+
+class TestCommandsUsage
+       super TestCommands
+       test
+
+       fun test_cmd_new is test do
+               var cmd = new CmdNew(test_view, test_builder, mentity_name = "test_prog::Character")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results != null
+       end
+
+       fun test_cmd_new_not_class is test do
+               var cmd = new CmdNew(test_view, test_builder, mentity_name = "strength_bonus")
+               var res = cmd.init_command
+               assert res isa ErrorNotClass
+       end
+
+       fun test_cmd_call is test do
+               var cmd = new CmdCall(test_view, test_builder, mentity_name = "strength_bonus")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results != null
+       end
+
+       fun test_cmd_call_not_prop is test do
+               var cmd = new CmdCall(test_view, test_builder, mentity_name = "test_prog::Character")
+               var res = cmd.init_command
+               assert res isa ErrorNotProperty
+       end
+
+       fun test_cmd_return is test do
+               var cmd = new CmdReturn(test_view, mentity_name = "test_prog::Character")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results != null
+       end
+
+       fun test_cmd_param is test do
+               var cmd = new CmdParam(test_view, mentity_name = "test_prog::Character")
+               var res = cmd.init_command
+               assert res isa CmdSuccess
+               assert cmd.results != null
+       end
+end
diff --git a/src/doc/console_templates/console_model.nit b/src/doc/console_templates/console_model.nit
deleted file mode 100644 (file)
index cacac49..0000000
+++ /dev/null
@@ -1,668 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Console templates for Nit model MEntities.
-#
-# This module introduces console rendering services in model entities.
-module console_model
-
-import console
-import doc_base
-import ordered_tree
-
-redef class MDoc
-       # Returns the full comment formatted for the console.
-       fun cs_comment: String do
-               var res = new FlatBuffer
-               for line in content do
-                       res.append "    {line}\n"
-               end
-               return res.write_to_string
-       end
-
-       # Returns the synopsys formatted for the console.
-       fun cs_short_comment: String do return content.first
-end
-
-redef class MEntity
-
-       # Returns the mentity name with short signature.
-       #
-       # * MPackage: `foo`
-       # * MGroup: `foo`
-       # * MModule: `foo`
-       # * MClass: `Foo[E]`
-       # * MClassDef: `Foo[E]`
-       # * MProperty: `foo(e)`
-       # * MPropdef: `foo(e)`
-       var cs_name: String is lazy do return name
-
-       # Returns the list of keyword used in `self` declaration.
-       fun cs_modifiers: Array[String] is abstract
-
-       # Returns the complete MEntity declaration (modifiers + name + signature).
-       #
-       # * MPackage: `package foo`
-       # * MGroup: `group foo`
-       # * MModule: `module foo`
-       # * MClass: `private abstract class Foo[E: Object]`
-       # * MClassDef: `redef class Foo[E]`
-       # * MProperty: `private fun foo(e: Object): Int`
-       # * MPropdef: `redef fun foo(e)`
-       var cs_declaration: String is lazy do
-               var tpl = new FlatBuffer
-               tpl.append cs_modifiers.join(" ")
-               tpl.append " "
-               tpl.append cs_name
-               return tpl.write_to_string
-       end
-
-       # Returns `self` namespace formatted for console.
-       #
-       # * MPackage: `mpackage`
-       # * MGroup: `mpackage(::group)`
-       # * MModule: `mgroup::mmodule`
-       # * MClass: `mpackage::mclass`
-       # * MClassDef: `mmodule::mclassdef`
-       # * MProperty: `mclass::mprop`
-       # * MPropdef: `mclassdef:mpropdef`
-       fun cs_namespace: String is abstract
-
-       # Returns the comment of this MEntity formatted for console.
-       var cs_comment: nullable String is lazy do
-               var mdoc = mdoc_or_fallback
-               if mdoc == null then return null
-               # FIXME add markdown for console
-               return mdoc.cs_comment
-       end
-
-       # Returns the comment of this MEntity formatted for console.
-       var cs_short_comment: nullable String is lazy do
-               var mdoc = mdoc_or_fallback
-               if mdoc == null then return null
-               return mdoc.cs_short_comment
-       end
-
-       # Returns `self` as a list element that can be displayed in console.
-       #
-       # Displays `cs_icon`, `cs_name`, `cs_short_comment, `cs_namespace`,
-       # `cs_declaration` and `cs_location`.
-       fun cs_list_item: String do
-               var tpl = new FlatBuffer
-               tpl.append " {cs_visibility_color(cs_icon).bold} {cs_name.blue.bold}"
-               var comment = cs_short_comment
-               if comment != null then
-                       tpl.append " # {comment}".green
-               end
-               tpl.append "\n   "
-               tpl.append cs_namespace.gray.bold
-               tpl.append "\n   "
-               tpl.append cs_declaration
-               tpl.append "\n   "
-               tpl.append cs_location.gray
-               return tpl.write_to_string
-       end
-
-       # Returns `self` as a short list element that can be displayed in console.
-       # Displays `cs_icon`, `cs_name`, and `cs_short_comment.
-       fun cs_short_list_item: String do
-               var tpl = new FlatBuffer
-               tpl.append " {cs_visibility_color(cs_icon).bold} {cs_name.blue.bold}"
-               var comment = cs_short_comment
-               if comment != null then
-                       tpl.append " # {comment}".green
-               end
-               return tpl.write_to_string
-       end
-
-       # ASCII icon to be displayed in front of the list item.
-       fun cs_icon: String do return "*"
-
-       # Source code location of this MEntity formatted for console.
-       fun cs_location: String is abstract
-
-       # Sets text color depending on visibility.
-       #
-       # See module `console`.
-       fun cs_visibility_color(string: String): String do return string.green
-
-       # Source code associated to this MEntity.
-       #
-       # Uses `cs_location` to locate the source code.
-       fun cs_source_code: String do
-               # FIXME up location to mentity
-               var loc = new Location.from_string(cs_location)
-               var fr = new FileReader.open(loc.file.filename)
-               var content = new FlatBuffer
-               var i = 0
-               while not fr.eof do
-                       i += 1
-                       var line = fr.read_line
-                       if i < loc.line_start or i > loc.line_end then continue
-                       # FIXME add nitlight for console
-                       content.append "{line}\n"
-               end
-               fr.close
-               return content.write_to_string
-       end
-end
-
-redef class MPackage
-       redef var cs_modifiers = ["package"]
-       redef fun cs_namespace do return cs_name
-       redef fun cs_icon do return "P"
-       redef fun cs_location do return root.mmodules.first.location.to_s
-end
-
-redef class MGroup
-       redef var cs_modifiers = ["group"]
-       redef fun cs_icon do return "G"
-
-       # Depends if `self` is root or not.
-       #
-       # * If root `mpackage`.
-       # * Else `mpackage::self`.
-       redef fun cs_namespace do
-               var tpl = new FlatBuffer
-               tpl.append mpackage.cs_namespace
-               if mpackage.root != self then
-                       tpl.append "::"
-                       tpl.append cs_name
-               end
-               return tpl.write_to_string
-       end
-
-       redef fun cs_location do return mmodules.first.location.to_s
-end
-
-redef class MModule
-       redef var cs_modifiers = ["module"]
-       redef fun cs_icon do return "M"
-
-       # Depends if `self` belongs to a MGroup.
-       #
-       # * If mgroup `mgroup::self`.
-       # * Else `self`.
-       redef fun cs_namespace do
-               var tpl = new FlatBuffer
-               if mgroup != null then
-                       tpl.append mgroup.cs_namespace
-                       tpl.append "::"
-               end
-               tpl.append cs_name
-               return tpl.write_to_string
-       end
-
-       redef fun cs_location do return location.to_s
-end
-
-redef class MClass
-       redef fun cs_icon do return intro.cs_icon
-
-       # Format: `Foo[E]`
-       redef var cs_name is lazy do
-               var tpl = new FlatBuffer
-               tpl.append name
-               if arity > 0 then
-                       tpl.append "["
-                       var parameter_names = new Array[String]
-                       for p in mparameters do
-                               parameter_names.add(p.cs_name)
-                       end
-                       tpl.append parameter_names.join(", ")
-                       tpl.append "]"
-               end
-               return tpl.write_to_string
-       end
-
-       redef fun cs_modifiers do return intro.cs_modifiers
-       redef fun cs_declaration do return intro.cs_declaration
-
-       # Returns `mpackage::self`.
-       redef fun cs_namespace do
-               var tpl = new FlatBuffer
-               tpl.append intro_mmodule.mgroup.mpackage.cs_namespace
-               tpl.append "::"
-               tpl.append cs_name
-               return tpl.write_to_string
-       end
-
-       # Returns `intro.cs_short_signature`.
-       fun cs_short_signature: String do return intro.cs_short_signature
-
-       # Returns `intro.cs_signature`.
-       fun cs_signature: String do return intro.cs_signature
-
-       redef fun cs_visibility_color(string) do
-               if visibility == private_visibility then
-                       return string.red
-               else if visibility == protected_visibility then
-                       return string.yellow
-               end
-               return string.green
-       end
-
-       redef fun cs_location do return intro.location.to_s
-end
-
-redef class MClassDef
-       redef fun cs_icon do return "C"
-
-       # Depends if `self` is an intro or not.
-       #
-       # * If intro contains the visibility and kind.
-       # * If redef contains the `redef` keyword and kind.
-       redef fun cs_modifiers do
-               var res = new Array[String]
-               if not is_intro then
-                       res.add "redef"
-               else
-                       if mclass.visibility != public_visibility then
-                               res.add mclass.visibility.to_s
-                       end
-               end
-               res.add mclass.kind.to_s
-               return res
-       end
-
-       # Depends if `self` is an intro or not.
-       #
-       # For intro: `private abstract class Foo[E: Object]`
-       # For redef: `redef class Foo[E]`
-       redef fun cs_declaration do
-               var tpl = new FlatBuffer
-               tpl.append cs_modifiers.join(" ")
-               tpl.append " "
-               tpl.append cs_name
-               if is_intro then
-                       tpl.append cs_signature
-               else
-                       tpl.append cs_short_signature
-               end
-               return tpl.write_to_string.write_to_string.write_to_string
-       end
-
-       # Returns `mmodule::self`
-       redef fun cs_namespace do
-               var tpl = new FlatBuffer
-               tpl.append mmodule.cs_namespace
-               tpl.append "::"
-               tpl.append mclass.cs_name
-               return tpl.write_to_string.write_to_string
-       end
-
-       # Returns the MClassDef generic signature without static bounds.
-       fun cs_short_signature: String do
-               var tpl = new FlatBuffer
-               var mparameters = mclass.mparameters
-               if not mparameters.is_empty then
-                       tpl.append "["
-                       for i in [0..mparameters.length[ do
-                               tpl.append mparameters[i].cs_name
-                               if i < mparameters.length - 1 then tpl.append ", "
-                       end
-                       tpl.append "]"
-               end
-               return tpl.write_to_string
-       end
-
-       # Returns the MClassDef generic signature with static bounds.
-       fun cs_signature: String do
-               var tpl = new FlatBuffer
-               var mparameters = mclass.mparameters
-               if not mparameters.is_empty then
-                       tpl.append "["
-                       for i in [0..mparameters.length[ do
-                               tpl.append "{mparameters[i].cs_name}: "
-                               tpl.append bound_mtype.arguments[i].cs_signature
-                               if i < mparameters.length - 1 then tpl.append ", "
-                       end
-                       tpl.append "]"
-               end
-               return tpl.write_to_string
-       end
-
-       redef fun cs_location do return location.to_s
-end
-
-redef class MProperty
-       redef fun cs_modifiers do return intro.cs_modifiers
-       redef fun cs_declaration do return intro.cs_declaration
-       redef fun cs_icon do return intro.cs_icon
-
-       # Returns `mclass::self`.
-       redef fun cs_namespace do
-               var tpl = new FlatBuffer
-               tpl.append intro_mclassdef.mclass.cs_namespace
-               tpl.append "::"
-               tpl.append intro.cs_name
-               return tpl.write_to_string
-       end
-
-       # Returns `intro.cs_short_signature`.
-       fun cs_short_signature: String do return intro.cs_short_signature
-
-       # Returns `intro.cs_signature`.
-       fun cs_signature: String do return intro.cs_signature
-
-       redef fun cs_visibility_color(string) do
-               if visibility == private_visibility then
-                       return string.red
-               else if visibility == protected_visibility then
-                       return string.yellow
-               end
-               return string.green
-       end
-
-       # Returns `intro.cs_location`.
-       redef fun cs_location do return intro.location.to_s
-end
-
-redef class MPropDef
-       # Depends if `self` is an intro or not.
-       #
-       # * If intro contains the visibility and kind.
-       # * If redef contains the `redef` keyword and kind.
-       redef fun cs_modifiers do
-               var res = new Array[String]
-               if not is_intro then
-                       res.add "redef"
-               else
-                       if mproperty.visibility != public_visibility then
-                               res.add mproperty.visibility.to_s
-                       end
-               end
-               return res
-       end
-
-       # Depends if `self` is an intro or not.
-       #
-       # For intro: `private fun foo(e: Object): Bar is abstract`
-       # For redef: `redef fun foo(e) is cached`
-       redef fun cs_declaration do
-               var tpl = new FlatBuffer
-               tpl.append cs_modifiers.join(" ")
-               tpl.append " "
-               if is_intro then
-                       tpl.append cs_name
-                       tpl.append cs_signature
-               else
-                       tpl.append mproperty.intro.cs_name
-                       tpl.append cs_short_signature
-               end
-               return tpl.write_to_string
-       end
-
-       # Returns `mclassdef::self`
-       redef fun cs_namespace do
-               var tpl = new FlatBuffer
-               tpl.append mclassdef.cs_namespace
-               tpl.append "::"
-               tpl.append cs_name
-               return tpl.write_to_string
-       end
-
-       redef fun cs_location do return location.to_s
-
-       # Returns the MPropdDef signature without static types.
-       fun cs_short_signature: String is abstract
-
-       # Returns the MPropDef signature with static types.
-       fun cs_signature: String is abstract
-end
-
-redef class MAttributeDef
-
-       redef fun cs_modifiers do
-               var res = super
-               res.add "var"
-               return res
-       end
-
-       redef fun cs_short_signature do return ""
-
-       redef fun cs_signature do
-               var tpl = new FlatBuffer
-               if static_mtype != null then
-                       tpl.append ": "
-                       tpl.append static_mtype.cs_signature
-               end
-               return tpl.write_to_string
-       end
-
-       redef fun cs_icon do return "A"
-end
-
-redef class MMethodDef
-
-       redef fun cs_modifiers do
-               if mproperty.is_init then
-                       var res = new Array[String]
-                       if mproperty.visibility != public_visibility then
-                               res.add mproperty.visibility.to_s
-                       end
-                       return res
-               end
-               var res = super
-               if is_abstract then
-                       res.add "abstract"
-               else if is_intern then
-                       res.add "intern"
-               end
-               res.add "fun"
-               return res
-       end
-
-       redef fun cs_declaration do
-               if mproperty.is_init then
-                       var tpl = new FlatBuffer
-                       if not cs_modifiers.is_empty then
-                               tpl.append cs_modifiers.join(" ")
-                               tpl.append " "
-                       end
-                       tpl.append cs_name
-                       tpl.append cs_signature
-                       return tpl.write_to_string
-               end
-               return super
-       end
-
-       redef fun cs_short_signature do
-               if mproperty.is_root_init then
-                       return new_msignature.cs_short_signature
-               end
-               return msignature.cs_short_signature
-       end
-
-       redef fun cs_signature do
-               if mproperty.is_root_init then
-                       return new_msignature.cs_signature
-               end
-               return msignature.cs_signature
-       end
-
-       redef fun cs_icon do
-               if mproperty.is_init then
-                       return "I"
-               end
-               return "F"
-       end
-end
-
-redef class MVirtualTypeDef
-
-       redef fun cs_modifiers do
-               var res = super
-               res.add "type"
-               return res
-       end
-
-       # Short signature for `MVirtualType` is always empty.
-       redef fun cs_short_signature do return ""
-
-       redef fun cs_signature do
-               var tpl = new FlatBuffer
-               if bound == null then return tpl.write_to_string
-               tpl.append ": "
-               tpl.append bound.cs_signature
-               return tpl.write_to_string
-       end
-       redef fun cs_icon do return "V"
-end
-
-redef class MType
-       # Returns the signature of this type whithout bounds.
-       fun cs_short_signature: String is abstract
-
-       # Returns the signature of this type.
-       fun cs_signature: String is abstract
-
-       redef fun cs_icon do return "T"
-end
-
-redef class MClassType
-       redef fun cs_short_signature do return cs_name
-       redef fun cs_signature do return cs_name
-end
-
-redef class MNullableType
-
-       redef fun cs_short_signature do
-               var tpl = new FlatBuffer
-               tpl.append "nullable "
-               tpl.append mtype.cs_short_signature
-               return tpl.write_to_string
-       end
-
-       redef fun cs_signature do
-               var tpl = new FlatBuffer
-               tpl.append "nullable "
-               tpl.append mtype.cs_signature
-               return tpl.write_to_string
-       end
-end
-
-redef class MGenericType
-       redef fun cs_short_signature do
-               var tpl = new FlatBuffer
-               tpl.append name
-               tpl.append "["
-               for i in [0..arguments.length[ do
-                       tpl.append arguments[i].cs_short_signature
-                       if i < arguments.length - 1 then tpl.append ", "
-               end
-               tpl.append "]"
-               return tpl.write_to_string
-       end
-
-       redef fun cs_signature do
-               var tpl = new FlatBuffer
-               tpl.append mclass.name
-               tpl.append "["
-               for i in [0..arguments.length[ do
-                       tpl.append arguments[i].cs_signature
-                       if i < arguments.length - 1 then tpl.append ", "
-               end
-               tpl.append "]"
-               return tpl.write_to_string
-       end
-end
-
-redef class MParameterType
-       redef fun cs_short_signature do return cs_name
-       redef fun cs_signature do return cs_name
-end
-
-redef class MVirtualType
-       redef fun cs_signature do return cs_name
-end
-
-redef class MSignature
-
-       redef fun cs_short_signature do
-               var tpl = new FlatBuffer
-               if not mparameters.is_empty then
-                       tpl.append "("
-                       for i in [0..mparameters.length[ do
-                               tpl.append mparameters[i].cs_short_signature
-                               if i < mparameters.length - 1 then tpl.append ", "
-                       end
-                       tpl.append ")"
-               end
-               return tpl.write_to_string
-       end
-
-       redef fun cs_signature do
-               var tpl = new FlatBuffer
-               if not mparameters.is_empty then
-                       tpl.append "("
-                       for i in [0..mparameters.length[ do
-                               tpl.append mparameters[i].cs_signature
-                               if i < mparameters.length - 1 then tpl.append ", "
-                       end
-                       tpl.append ")"
-               end
-               if return_mtype != null then
-                       tpl.append ": "
-                       tpl.append return_mtype.cs_signature
-               end
-               return tpl.write_to_string
-       end
-end
-
-redef class MParameter
-
-       # Returns `self` name and ellipsys if any.
-       fun cs_short_signature: String do
-               var tpl = new FlatBuffer
-               tpl.append name
-               if is_vararg then tpl.append "..."
-               return tpl.write_to_string
-       end
-
-       # Returns `self` name with it's static type and ellipsys if any.
-       fun cs_signature: String do
-               var tpl = new FlatBuffer
-               tpl.append "{name}: "
-               tpl.append mtype.cs_signature
-               if is_vararg then tpl.append "..."
-               return tpl.write_to_string
-       end
-end
-
-################################################################################
-# Additions to `model_ext`.
-
-redef class MRawType
-       redef fun cs_signature do
-               var tpl = new FlatBuffer
-
-               for part in parts do
-                       if part.target != null then
-                               tpl.append part.target.as(not null).cs_name
-                       else
-                               tpl.append part.text
-                       end
-               end
-               return tpl.write_to_string
-       end
-end
-
-redef class MInnerClass
-       redef fun cs_signature do return inner.cs_signature
-end
-
-redef class MInnerClassDef
-       redef fun cs_signature do return inner.cs_signature
-end
diff --git a/src/doc/console_templates/console_templates.nit b/src/doc/console_templates/console_templates.nit
deleted file mode 100644 (file)
index fbeea29..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Introduces templates that compose the documentation in console rendering.
-module console_templates
-
-import console_model
-import doc_phases::doc_structure
-
-# Renders the page displayable as ASCII.
-redef class DocPage
-       super Template
-
-       # Renders the footer and content.
-       private fun render_content do add root
-
-       # Renders the whole page
-       redef fun rendering do render_content
-end
-
-redef class DocComposite
-       super Template
-
-       # Title that can be decorated for console display.
-       #
-       # Set as `null` if you don't want to display a title.
-       var cs_title: nullable String is writable, lazy do return title
-
-       # Subtitle that can be decorated for console display.
-       #
-       # Set as `null` if you don't want to display a subtitle.
-       var cs_subtitle: nullable String is noinit, writable
-
-       # Renders the element `cs_title` and `cs_subtitle` as any.
-       fun render_title do
-               if cs_title != null then
-                       add "{"#" * depth} ".blue.bold
-                       addn cs_title.blue.bold
-               end
-               if cs_subtitle != null then
-                       addn cs_subtitle.gray.bold
-               end
-               if cs_title != null or cs_subtitle != null then addn ""
-       end
-
-       # Renders the element body.
-       fun render_body do for child in children do add child.write_to_string
-
-       redef fun rendering do
-               render_title
-               render_body
-       end
-end
-
-redef class DocRoot
-       redef fun rendering do render_body
-end
-
-redef class ConcernSection
-       redef var cs_title is lazy do return "in {mentity.cs_namespace}"
-       redef var cs_subtitle is lazy do return mentity.cs_declaration
-
-       redef fun rendering do
-               var mentity = self.mentity
-               if mentity isa MGroup and mentity.mpackage.root == mentity then
-                       render_body
-               else
-                       super
-               end
-       end
-end
-
-redef class MEntityComposite
-       redef var cs_title is lazy do return mentity.cs_name
-       redef var cs_subtitle is lazy do return mentity.cs_namespace
-end
-
-redef class IntroArticle
-       redef fun render_body do
-               addn "    {mentity.cs_declaration.bold}"
-               addn "    {mentity.cs_location.gray.bold}"
-               addn ""
-               var comment = mentity.cs_comment
-               if comment != null then
-                       add comment
-               end
-               addn ""
-               super
-       end
-end
-
-redef class ConcernsArticle
-       redef fun render_body do
-               var w = new StringWriter
-               concerns.write_to(w)
-               addn w.to_s
-       end
-end
-
-redef class DefinitionArticle
-       # If short, displays only synopsyses.
-       var is_short = false is writable
-
-       redef fun render_body do
-               addn "    {mentity.cs_visibility_color(mentity.cs_declaration).bold}"
-               addn "    {mentity.cs_location.gray.bold}"
-               addn ""
-               var comment
-               if is_short then
-                       comment = mentity.cs_short_comment
-               else
-                       comment = mentity.cs_comment
-               end
-               if comment != null then
-                       add comment
-               end
-               addn ""
-               super
-       end
-end
-
-redef class MEntitiesListArticle
-       redef fun render_body do
-               for mentity in mentities do
-                       addn mentity.cs_short_list_item
-               end
-       end
-end
index c77c332..ce36170 100644 (file)
@@ -28,6 +28,8 @@ import model::model_views
 class DocModel
        super ModelView
 
+       autoinit model, mainmodule, filter
+
        # `DocPage` composing the documentation associated to their ids.
        #
        # This is where `DocPhase` store and access pages to produce documentation.
@@ -35,9 +37,6 @@ class DocModel
        # See `add_page`.
        var pages: Map[String, DocPage] = new HashMap[String, DocPage]
 
-       # The entry point of the `model`.
-       var mainmodule: MModule is writable
-
        # Add a `page` to this documentation.
        fun add_page(page: DocPage) do
                if pages.has_key(page.id) then
index 1537704..208738b 100644 (file)
 # * `nitdoc` wikilinks like `[[doc: MEntity::name]]`
 module doc_commands
 
-# A command aimed at a documentation tool like `nitdoc` or `nitx`.
 #
-# `DocCommand` are generally of the form `command: args`.
-interface DocCommand
+class DocCommandParser
 
-       # Original command string.
-       fun string: String is abstract
+       # List of allowed command names for this parser
+       var allowed_commands: Array[String] = [ "doc", "list", "param", "return",
+               "new", "call", "code", "graph"] is writable
 
-       # Command name.
-       fun name: String is abstract
-
-       # Command arguments.
+       # Parse `string` as a DocCommand
        #
-       # FIXME: define a syntax
-       fun args: Array[String] is abstract
-
-       # Command factory.
+       # Returns `null` if the string cannot be parsed.
+       #
+       # ~~~
+       # var parser = new DocCommandParser
        #
-       # Returns a concrete instance of `DocCommand` depending on the string.
-       new(command_string: String) do
-               if command_string.has_prefix("doc:") then
-                       return new ArticleCommand(command_string)
-               else if command_string.has_prefix("comment:") then
-                       return new CommentCommand(command_string)
-               else if command_string.has_prefix("list:") then
-                       return new ListCommand(command_string)
-               else if command_string.has_prefix("param:") then
-                       return new ParamCommand(command_string)
-               else if command_string.has_prefix("return:") then
-                       return new ReturnCommand(command_string)
-               else if command_string.has_prefix("new:") then
-                       return new NewCommand(command_string)
-               else if command_string.has_prefix("call:") then
-                       return new CallCommand(command_string)
-               else if command_string.has_prefix("code:") then
-                       return new CodeCommand(command_string)
-               else if command_string.has_prefix("graph:") then
-                       return new GraphCommand(command_string)
+       # var command = parser.parse("doc: core::Array")
+       # assert command isa CommentCommand
+       # assert command.arg == "core::Array"
+       #
+       # command = parser.parse(":") # syntax error
+       # assert command == null
+       # assert parser.errors.not_empty
+       # ~~~
+       fun parse(string: String): nullable DocCommand do
+               var pos = 0
+               var tmp = new FlatBuffer
+               errors.clear
+
+               # Parse command name
+               pos = string.read_until(tmp, pos, ':')
+               var name = tmp.write_to_string.trim
+
+               # Check allowed commands
+               if name.is_empty then
+                       error("empty command name", 0)
+                       return null
+               end
+               if not allowed_commands.has(name) then
+                       error("unknown command name", 0)
+                       return null
+               end
+
+               # Build the command
+               var command = new_command(name, string)
+               if command == null then
+                       error("unknown command name", 0)
+                       return null
+               end
+
+               # Parse the argument
+               tmp.clear
+               pos = string.read_until(tmp, pos + 1, '|')
+               var arg = tmp.write_to_string.trim
+               if arg.is_empty then
+                       error("empty command arg", pos)
+                       return null
+               end
+               command.arg = arg
+
+               # Parse command options
+               while pos < string.length do
+                       # Parse option name
+                       tmp.clear
+                       pos = string.read_until(tmp, pos + 1, ':', ',')
+                       var oname = tmp.write_to_string.trim
+                       var oval = ""
+                       if oname.is_empty then break
+                       # Parse option value
+                       if pos < string.length and string[pos] == ':' then
+                               tmp.clear
+                               pos = string.read_until(tmp, pos + 1, ',')
+                               oval = tmp.write_to_string.trim
+                       end
+                       command.opts[oname] = oval
+                       # TODO Check options
                end
-               return new UnknownCommand(command_string)
+
+               return command
+       end
+
+       # Init a new DocCommand from its `name`
+       #
+       # You must redefine this method to add new custom commands.
+       fun new_command(name, string: String): nullable DocCommand do
+               if name == "doc" then return new CommentCommand(string)
+               if name == "list" then return new ListCommand(string)
+               if name == "param" then return new ParamCommand(string)
+               if name == "return" then return new ReturnCommand(string)
+               if name == "new" then return new NewCommand(string)
+               if name == "call" then return new CallCommand(string)
+               if name == "code" then return new CodeCommand(string)
+               if name == "graph" then return new GraphCommand(string)
+               return null
        end
 
-       redef fun to_s do return string
+       # Errors and warnings from last call to `parse`
+       var errors = new Array[DocMessage]
+
+       # Generate an error
+       fun error(message: String, col: nullable Int) do
+               errors.add new DocMessage(1, message, col)
+       end
+
+       # Generate a warning
+       fun warning(message: String, col: nullable Int) do
+               errors.add new DocMessage(2, message, col)
+       end
 end
 
-# Used to factorize initialization of DocCommands.
-abstract class AbstractDocCommand
-       super DocCommand
+# A message generated by the DocCommandParser
+class DocMessage
+
+       # Message severity
+       #
+       # 1- Error
+       # 2- Warning
+       var level: Int
+
+       # Message explanatory string
+       var message: String
 
-       redef var string
-       redef var name is noinit
-       redef var args = new Array[String]
+       # Related column in original string if any
+       var col: nullable Int
 
-       init do
-               # parse command
+       redef fun to_s do
                var str = new FlatBuffer
-               var i = 0
-               while i < string.length do
-                       var c = string[i]
-                       i += 1
-                       if c == ':' then break
-                       str.add c
+               if level == 1 then
+                       str.append "Error: "
+               else
+                       str.append "Warning: "
                end
-               name = str.write_to_string
-               # parse args
-               args.add string.substring_from(i).trim
+               str.append message
+               var col = self.col
+               if col != null then
+                       str.append " (col: {col})"
+               end
+               return str.write_to_string
        end
 end
 
-# A `DocCommand` not recognized by documentation tools.
-#
-# Used to provide warnings or any other behavior for unexisting commands.
-class UnknownCommand
-       super AbstractDocCommand
+redef class Text
+       # Read `self` as raw text until `nend` and append it to the `out` buffer.
+       private fun read_until(out: FlatBuffer, start: Int, nend: Char...): Int do
+               var pos = start
+               while pos < length do
+                       var c = self[pos]
+                       var end_reached = false
+                       for n in nend do
+                               if c == n then
+                                       end_reached = true
+                                       break
+                               end
+                       end
+                       if end_reached then break
+                       out.add c
+                       pos += 1
+               end
+               return pos
+       end
 end
 
-# A `DocCommand` that includes the documentation article of a `MEntity`.
+# A command aimed at a documentation tool like `nitdoc` or `nitx`.
 #
-# Syntax: `doc: MEntity::name`.
-class ArticleCommand
-       super AbstractDocCommand
+# `DocCommand` are generally of the form `command: arg | opt1: val1, opt2: val2`.
+abstract class DocCommand
+
+       # Original command string.
+       var string: String
+
+       # Command name.
+       var name: String is noinit
+
+       # Command arguments.
+       var arg: String is noinit, writable
+
+       # Command options.
+       var opts = new HashMap[String, String] is writable
+
+       redef fun to_s do
+               if opts.is_empty then
+                       return "{name}: {arg}"
+               end
+               return "{name}: {arg} | {opts.join(", ", ": ")}"
+       end
 end
 
-# A `DocCommand` that includes the MDoc of a `MEntity`.
+# A `DocCommand` that includes the documentation article of a `MEntity`.
 #
-# Syntax: `comment: MEntity::name`.
+# Syntax: `doc: MEntity::name`.
 class CommentCommand
-       super AbstractDocCommand
+       super DocCommand
+
+       redef var name = "doc"
 end
 
 # A `DocCommand` that includes a list of something.
 #
 # Syntax: `list:kind: <arg>`.
 class ListCommand
-       super AbstractDocCommand
+       super DocCommand
+
+       redef var name = "list"
 end
 
 # A `DocCommand` that includes the list of methods tanking a `MType` as parameter.
 #
 # Syntax: `param: MType`.
 class ParamCommand
-       super AbstractDocCommand
+       super DocCommand
+
+       redef var name = "param"
 end
 
 # A `DocCommand` that includes the list of methods returning a `MType` as parameter.
 #
-# Syntax: `param: MType`.
+# Syntax: `return: MType`.
 class ReturnCommand
-       super AbstractDocCommand
+       super DocCommand
+
+       redef var name = "return"
 end
 
 # A `DocCommand` that includes the list of methods creating new instances of a specific `MType`
 #
 # Syntax: `new: MType`.
 class NewCommand
-       super AbstractDocCommand
+       super DocCommand
+
+       redef var name = "new"
 end
 
 # A `DocCommand` that includes the list of methods calling a specific `MProperty`.
 #
 # Syntax: `call: MEntity::name`.
 class CallCommand
-       super AbstractDocCommand
+       super DocCommand
+
+       redef var name = "call"
 end
 
 # A `DocCommand` that includes the source code of a `MEntity`.
@@ -151,7 +265,9 @@ end
 # * `./src/file.nit` to include source code from a file.
 # * `./src/file.nit:1,2--3,4` to select code between positions.
 class CodeCommand
-       super AbstractDocCommand
+       super DocCommand
+
+       redef var name = "code"
 end
 
 # A `DocCommand` that display an graph for a `MEntity`.
@@ -159,5 +275,7 @@ end
 # Syntax:
 # * `graph: MEntity::name`
 class GraphCommand
-       super AbstractDocCommand
+       super DocCommand
+
+       redef var name = "graph"
 end
index dbb5252..7bb330b 100644 (file)
@@ -16,7 +16,7 @@
 module doc_down
 
 import markdown
-import highlight
+import htmlight
 private import parser_util
 
 redef class MDoc
@@ -28,7 +28,7 @@ redef class MDoc
        var comment: String is lazy do
                var lines = content.to_a
                if not lines.is_empty then lines.shift
-               return content.join("\n")
+               return lines.join("\n")
        end
 
        # Full comment HTML escaped.
@@ -48,7 +48,12 @@ redef class MDoc
                var syn = inline_proc.process(content.first)
                res.add "<span class=\"synopsys nitdoc\">{syn}</span>"
                return res
+       end
 
+       # Renders the synopsis as a HTML comment block.
+       var md_synopsis: Writable is lazy do
+               if content.is_empty then return ""
+               return content.first
        end
 
        # Renders the comment without the synopsis as a HTML comment block.
@@ -58,13 +63,24 @@ redef class MDoc
                return lines_to_html(lines)
        end
 
+       #
+       var md_comment: Writable is lazy do
+               if content.is_empty then return ""
+               var lines = content.to_a
+               lines.shift
+               return lines.join("\n")
+       end
+
        # Renders the synopsis and the comment as a HTML comment block.
        var html_documentation: Writable is lazy do return lines_to_html(content.to_a)
 
+       # Renders the synopsis and the comment as a HTML comment block.
+       var md_documentation: Writable is lazy do return lines_to_md(content.to_a)
+
        # Renders markdown line as a HTML comment block.
        private fun lines_to_html(lines: Array[String]): Writable do
                var res = new Template
-               var decorator = markdown_proc.emitter.decorator.as(NitdocDecorator)
+               var decorator = markdown_proc.decorator.as(NitdocDecorator)
                decorator.current_mdoc = self
                res.add "<div class=\"nitdoc\">"
                # do not use DocUnit as synopsys
@@ -92,7 +108,20 @@ redef class MDoc
                res.add "</div>"
                decorator.current_mdoc = null
                return res
+       end
 
+       private fun lines_to_md(lines: Array[String]): Writable do
+               var res = new Template
+               if not lines.is_empty then
+                       var syn = lines.first
+                       if not syn.has_prefix("    ") and not syn.has_prefix("\t") and
+                         not syn.trim.has_prefix("#") then
+                               lines.shift
+                               res.add "# {syn}\n"
+                       end
+               end
+               res.add lines.join("\n")
+               return res
        end
 end
 
@@ -131,9 +160,9 @@ class NitdocDecorator
                        return
                end
                v.add "<pre class=\"nitcode\"><code>"
-               var hl = new HighlightVisitor
+               var hl = new HtmlightVisitor
                hl.line_id_prefix = ""
-               hl.enter_visit(ast)
+               hl.highlight_node(ast)
                v.add(hl.html)
                v.add "</code></pre>\n"
        end
@@ -148,9 +177,9 @@ class NitdocDecorator
                        append_code(v, text, from, to)
                else
                        v.add "<code class=\"nitcode\">"
-                       var hl = new HighlightVisitor
+                       var hl = new HtmlightVisitor
                        hl.line_id_prefix = ""
-                       hl.enter_visit(ast)
+                       hl.highlight_node(ast)
                        v.add(hl.html)
                end
                v.add "</code>"
@@ -188,8 +217,8 @@ private class InlineDecorator
                        return
                end
                v.add "<code class=\"nitcode\">"
-               var hl = new HighlightVisitor
-               hl.enter_visit(ast)
+               var hl = new HtmlightVisitor
+               hl.highlight_node(ast)
                v.add(hl.html)
                v.add "</code>"
        end
@@ -199,7 +228,7 @@ redef class Model
        # Get a markdown processor for Nitdoc comments.
        var nitdoc_md_processor: MarkdownProcessor is lazy, writable do
                var proc = new MarkdownProcessor
-               proc.emitter.decorator = new NitdocDecorator
+               proc.decorator = new NitdocDecorator
                return proc
        end
 
@@ -208,7 +237,7 @@ redef class Model
        # This processor is specificaly designed to inlinable doc elements like synopsys.
        var nitdoc_inline_processor: MarkdownProcessor is lazy, writable do
                var proc = new MarkdownProcessor
-               proc.emitter.decorator = new InlineDecorator
+               proc.decorator = new InlineDecorator
                return proc
        end
 end
diff --git a/src/doc/doc_phases/doc_console.nit b/src/doc/doc_phases/doc_console.nit
deleted file mode 100644 (file)
index e8cb281..0000000
+++ /dev/null
@@ -1,606 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Nitx related components
-#
-# This module is a place holder for `nitx` related services.
-# No `doc_phase` can be found here, only components used by Nitx tool.
-module doc_console
-
-import semantize
-import doc_commands
-import doc_poset
-import doc::console_templates
-import model::model_index
-
-# Nitx handles console I/O.
-#
-# Using `prompt`, the command line can be turned on an interactive tool.
-class Nitx
-
-       # ToolContext used to access options.
-       var ctx: ToolContext
-
-       # DocModel that contains the informations to display.
-       var doc: DocModel
-
-       # Comparator used to sort MEntities.
-       var sorter = new MEntityNameSorter
-
-       # Displays the welcome message and start prompt.
-       fun start do
-               welcome
-               prompt
-       end
-
-       # Displays the welcome message and the list of loaded modules.
-       fun welcome do
-               print "Welcome in the Nit Index."
-               print ""
-               print "Loaded modules:"
-               var mmodules = doc.mmodules.to_a
-               sorter.sort(mmodules)
-               for m in mmodules do
-                       print "\t{m.name}"
-               end
-               print ""
-               help
-       end
-
-       # Displays the list of available commands.
-       fun help do
-               print "\nCommands:\n"
-               print "\tname\t\t\tlookup module, class and property with the corresponding 'name'"
-               print "\tdoc: <name::space>\tdisplay the documentation page of 'namespace'"
-               print "\nType lookup:"
-               print "\tparam: <Type>\t\tlookup methods using the corresponding 'Type' as parameter"
-               print "\treturn: <Type>\t\tlookup methods returning the corresponding 'Type'"
-               print "\tnew: <Type>\t\tlookup methods creating new instances of 'Type'"
-               print "\tcall: <name>\t\tlookup methods calling 'name'"
-               print "\nHierarchy lookup:"
-               print "\tparents: <Class>\tlist direct parents of 'Class'"
-               print "\tancestors: <Class>\tlist all ancestors of 'Class'"
-               print "\tchildren: <Class>\tlist direct children of 'Class'"
-               print "\tdescendants: <Class>\tlist all descendants of 'Class'"
-               print "\nCode lookup:"
-               print "\tcode: <name>\t\tdisplay the source code associated to the 'name' entity"
-               print "\n"
-               print "\t:h\t\t\tdisplay this help message"
-               print "\t:q\t\t\tquit interactive mode"
-               print ""
-       end
-
-       # Prompts the user for a command.
-       fun prompt do
-               printn ">> "
-               do_query(sys.stdin.read_line)
-               prompt
-       end
-
-       # Processes the query string and performs it.
-       fun do_query(str: String) do
-               var query = new DocCommand(str)
-               if query isa NitxCommand then
-                       query.execute(self)
-                       return
-               end
-               var res = query.perform(self, doc)
-               var suggest = null
-               if res.is_empty then
-                       suggest = query.suggest(self, doc)
-               end
-               var page = query.make_results(self, res, suggest)
-               print page.write_to_string
-       end
-end
-
-redef interface DocCommand
-
-       redef new(query_string) do
-               if query_string == ":q" then
-                       return new NitxQuit
-               else if query_string == ":h" then
-                       return new NitxHelp
-               end
-               var cmd = super(query_string)
-               if cmd isa UnknownCommand then
-                       return new CommentCommand("comment: {query_string}")
-               end
-               return cmd
-       end
-
-       # Looks up the `doc` model and returns possible matches.
-       fun perform(nitx: Nitx, doc: DocModel): Array[NitxMatch] is abstract
-
-       # Looks up the `doc` model and returns possible suggestions.
-       fun suggest(nitx: Nitx, doc: DocModel): nullable Array[MEntity] do
-               return find_suggestions(doc, args.first)
-       end
-
-       # Pretty prints the results for the console.
-       fun make_results(nitx: Nitx, results: Array[NitxMatch], suggest: nullable Array[MEntity]): DocPage do
-               var page = new DocPage("results", "Results")
-               page.root.add_child(new QueryResultArticle("results", "Results", self, results, suggest))
-               return page
-       end
-
-       # Lookup mentities based on a `query` string.
-       #
-       # 1- lookup by first name (returns always one value)
-       # 2- lookup by name (can return conflicts)
-       fun find_mentities(doc: DocModel, query: String): Array[MEntityMatch] do
-               var res = new Array[MEntityMatch]
-
-               # First lookup by full_name
-               var mentity = doc.mentity_by_full_name(query)
-               if mentity != null then
-                       res.add new MEntityMatch(self, mentity)
-                       return res
-               end
-
-               # If no results, lookup by name
-               for m in doc.mentities_by_name(query) do
-                       res.add new MEntityMatch(self, m)
-               end
-
-               return res
-       end
-
-       # Suggest some mentities based on a `query` string.
-       fun find_suggestions(doc: DocModel, query: String): Array[MEntity] do
-               return doc.find(query, 3)
-       end
-end
-
-# Something that matches a `DocCommand`.
-abstract class NitxMatch
-
-       # Query matched by `self`.
-       var query: DocCommand
-
-       # Pretty prints `self` for console.
-       fun make_list_item: String is abstract
-end
-
-# A match between a `DocCommand` and a `MEntity`.
-class MEntityMatch
-       super NitxMatch
-
-       # MEntity matched.
-       var mentity: MEntity
-
-       redef fun make_list_item do return mentity.cs_list_item
-end
-
-redef class CommentCommand
-       redef fun perform(nitx, doc) do return find_mentities(doc, args.first)
-
-       redef fun make_results(nitx, results, suggest) do
-               var len = results.length
-               if len == 1 then
-                       var res = results.first.as(MEntityMatch)
-                       var mentity = res.mentity
-                       var page = new DocPage("resultats", "Results")
-                       var article = new DefinitionArticle("results", "Results", mentity)
-                       article.cs_title = mentity.name
-                       article.cs_subtitle = mentity.cs_declaration
-                       page.root.add_child article
-                       return page
-               else
-                       return super
-               end
-       end
-end
-
-# A query to search signatures using a specific `MType` as parameter.
-redef class ParamCommand
-       redef fun perform(nitx, doc) do
-               var res = new Array[NitxMatch]
-               var mtype_name = args.first
-               for mproperty in doc.mproperties do
-                       if not mproperty isa MMethod then continue
-                       var msignature = mproperty.intro.msignature
-                       if msignature != null then
-                               for mparam in msignature.mparameters do
-                                       if mparam.mtype.name == mtype_name then
-                                               res.add new MEntityMatch(self, mproperty)
-                                       end
-                               end
-                       end
-               end
-               return res
-       end
-end
-
-# A query to search signatures using a specific `MType` as return.
-redef class ReturnCommand
-       redef fun perform(nitx, doc) do
-               var res = new Array[NitxMatch]
-               var mtype_name = args.first
-               for mproperty in doc.mproperties do
-                       if not mproperty isa MMethod then continue
-                       var msignature = mproperty.intro.msignature
-                       if msignature != null then
-                               var mreturn = msignature.return_mtype
-                               if mreturn != null and mreturn.name == mtype_name then
-                                       res.add new MEntityMatch(self, mproperty)
-                               end
-                       end
-               end
-               return res
-       end
-end
-
-# A query to search methods creating new instances of a specific `MType`.
-redef class NewCommand
-       redef fun perform(nitx, doc) do
-               var res = new Array[NitxMatch]
-               var mtype_name = args.first
-               for mpropdef in doc.mpropdefs do
-                       var visitor = new TypeInitVisitor(mtype_name)
-                       var npropdef = nitx.ctx.modelbuilder.mpropdef2node(mpropdef)
-                       if npropdef == null then continue
-                       visitor.enter_visit(npropdef)
-                       for i in visitor.inits do
-                               res.add new MEntityMatch(self, mpropdef)
-                       end
-               end
-               return res
-       end
-end
-
-# A query to search methods calling a specific `MProperty`.
-redef class CallCommand
-       redef fun perform(nitx, doc) do
-               var res = new Array[NitxMatch]
-               var mprop_name = args.first
-               for mpropdef in doc.mpropdefs do
-                       var visitor = new MPropertyCallVisitor
-                       var npropdef = nitx.ctx.modelbuilder.mpropdef2node(mpropdef)
-                       if npropdef == null then continue
-                       visitor.enter_visit(npropdef)
-                       for mprop in visitor.calls do
-                               if mprop.name != mprop_name then continue
-                               res.add new MEntityMatch(self, mpropdef)
-                       end
-               end
-               return res
-       end
-end
-
-# A query to search a Nitdoc documentation page by its name.
-redef class ArticleCommand
-       redef fun perform(nitx, doc) do
-               var res = new Array[NitxMatch]
-               var name = args.first
-               for page in doc.pages.values do
-                       if name == "*" then # FIXME dev only
-                               res.add new PageMatch(self, page)
-                       else if page.title == name then
-                               res.add new PageMatch(self, page)
-                       else if page isa MEntityPage and page.mentity.cs_namespace == name then
-                               res.add new PageMatch(self, page)
-                       end
-               end
-               return res
-       end
-
-       redef fun make_results(nitx, results, suggest) do
-               var len = results.length
-               # FIXME how to render the pager for one worded namespaces like "core"?
-               if len == 1 then
-                       var page = results.first.as(PageMatch).page
-                       var pager = new Pager
-                       pager.add page.write_to_string
-                       pager.render
-                       return page
-               else
-                       return super
-               end
-       end
-end
-
-# A match between a `DocPage` and a `MEntity`.
-class PageMatch
-       super NitxMatch
-
-       # `DocPage` matched.
-       var page: DocPage
-
-       redef fun make_list_item do
-               var page = self.page
-               if page isa MEntityPage then
-                       return page.mentity.cs_list_item
-               end
-               return " * {page.title}"
-       end
-end
-
-# Search in class or module hierarchy of a `MEntity`.
-#
-# It actually searches for pages about the mentity and extracts the
-# pre-calculated hierarchies by the `doc_post` phase.
-abstract class HierarchiesQuery
-       super DocCommand
-
-       redef fun make_results(nitx, results, suggest) do
-               var page = new DocPage("hierarchy", "Hierarchy")
-               for result in results do
-                       if not result isa PageMatch then continue
-                       var rpage = result.page
-                       if not rpage isa MClassPage then continue
-                       page.root.add_child build_article(rpage)
-               end
-               return page
-       end
-
-       # Build an article containing the hierarchy list depending on subclasses.
-       private fun build_article(page: MClassPage): DocArticle is abstract
-end
-
-# List all parents of a `MClass`.
-class AncestorsQuery
-       super HierarchiesQuery
-
-       redef fun build_article(page) do
-               return new MEntitiesListArticle(
-                       "ancerstors",
-                       "Ancestors for {page.mentity.name}",
-                       page.ancestors.to_a)
-       end
-end
-
-# List direct parents of a `MClass`.
-class ParentsQuery
-       super HierarchiesQuery
-
-       redef fun build_article(page) do
-               return new MEntitiesListArticle(
-                       "parents",
-                       "Parents for {page.mentity.name}",
-                       page.parents.to_a)
-       end
-end
-
-# List direct children of a `MClass`.
-class ChildrenQuery
-       super HierarchiesQuery
-
-       redef fun build_article(page) do
-               return new MEntitiesListArticle(
-                       "children",
-                       "Children for {page.mentity.name}",
-                       page.children.to_a)
-       end
-end
-
-# List all descendants of a `MClass`.
-class DescendantsQuery
-       super HierarchiesQuery
-
-       redef fun build_article(page) do
-               return new MEntitiesListArticle(
-                       "descendants",
-                       "Descendants for {page.mentity.name}",
-                       page.children.to_a)
-       end
-end
-
-# A query to search source code from a file name.
-redef class CodeCommand
-       # FIXME refactor this!
-       redef fun perform(nitx, doc) do
-               var res = new Array[NitxMatch]
-               var name = args.first
-               # if name is an existing sourcefile, opens it
-               if name.file_exists then
-                       var fr = new FileReader.open(name)
-                       var content = fr.read_all
-                       fr.close
-                       res.add new CodeMatch(self, name, content)
-                       return res
-               end
-               # else, lookup the model by name
-               for match in find_mentities(doc, name) do
-                       if match.mentity isa MClass then continue
-                       if match.mentity isa MProperty then continue
-                       res.add new CodeMatch(self, match.mentity.cs_location, match.mentity.cs_source_code)
-               end
-               return res
-       end
-
-       redef fun make_results(nitx, results, suggest) do
-               var page = new DocPage("results", "Code Results")
-               for res in results do
-                       page.add new CodeQueryArticle("results", "Results", self, res.as(CodeMatch))
-               end
-               return page
-       end
-end
-
-# A match between a piece of code and a string.
-class CodeMatch
-       super NitxMatch
-
-       # Location of the code match.
-       var location: String
-
-       # Piece of code matched.
-       var content: String
-
-       redef fun make_list_item do return "* {location}"
-end
-
-
-# A query that contains a nitx command.
-#
-# These commands are prefixed with `:` and are used to control the execution of
-# `nitx` like displaying the help or quiting.
-interface NitxCommand
-       super DocCommand
-
-       # Executes the command.
-       fun execute(nitx: Nitx) is abstract
-end
-
-# Exits nitx.
-class NitxQuit
-       super NitxCommand
-
-       redef fun execute(nitx) do exit 0
-end
-
-# Displays the help message.
-class NitxHelp
-       super NitxCommand
-
-       redef fun execute(nitx) do nitx.help
-end
-
-## exploration
-
-# Visitor looking for initialized `MType` (new T).
-#
-# See `NewQuery`.
-private class TypeInitVisitor
-       super Visitor
-
-       # `MType` name to look for.
-       var mtype_name: String
-
-       var inits = new HashSet[MType]
-       redef fun visit(node)
-       do
-               node.visit_all(self)
-               # look for init
-               if not node isa ANewExpr then return
-               var mtype = node.n_type.mtype
-               if mtype != null and mtype.name == mtype_name then inits.add(mtype)
-       end
-end
-
-# Visitor looking for calls to a `MProperty` (new T).
-#
-# See `CallQuery`.
-private class MPropertyCallVisitor
-       super Visitor
-
-       var calls = new HashSet[MProperty]
-       redef fun visit(node)
-       do
-               node.visit_all(self)
-               if not node isa ASendExpr then return
-               calls.add node.callsite.as(not null).mproperty
-       end
-end
-
-# display
-
-# A `DocArticle` that displays query results.
-private class QueryResultArticle
-       super DocArticle
-
-       # Query linked to the results to display.
-       var query: DocCommand
-
-       # Results to display.
-       var results: Array[NitxMatch]
-
-       # Optional suggestion when no matches where found
-       var suggest: nullable Array[MEntity] = null is optional
-
-       redef fun render_title do
-               var len = results.length
-               if len == 0 then
-                       addn "No result found for '{query.string}'..."
-                       var suggest = self.suggest
-                       if suggest != null and suggest.not_empty then
-                               add "\nDid you mean "
-                               var i = 0
-                               for s in suggest do
-                                       add "`{s.full_name}`"
-                                       if i == suggest.length - 2 then add ", "
-                                       if i == suggest.length - 1 then add " or "
-                                       i += 1
-                               end
-                               add "?"
-                       end
-               else
-                       add "# {len} result(s) for '{query.string}'".green.bold
-               end
-       end
-
-       redef fun render_body do
-               addn ""
-               for result in results do
-                       addn ""
-                       addn result.make_list_item
-               end
-       end
-end
-
-# An article that displays a piece of code.
-private class CodeQueryArticle
-       super DocArticle
-
-       # The query linked to the result to display.
-       var query: DocCommand
-
-       # The result to display.
-       var result: CodeMatch
-
-       redef fun render_body do
-               addn ""
-               addn "in {result.location}".gray.bold
-               addn ""
-               add result.content
-       end
-end
-
-# A Pager is used to display data into a unix `less` container.
-private class Pager
-
-       # Content to display.
-       var content = new FlatBuffer
-
-       # Adds text to the pager.
-       fun add(text: String) do
-               content.append(escape(text))
-       end
-
-       fun render do sys.system("echo \"{content}\" | less -r")
-
-       fun escape(str: String): String
-       do
-               var b = new FlatBuffer
-               for c in str.chars do
-                       if c == '\n' then
-                               b.append("\\n")
-                       else if c == '\0' then
-                               b.append("\\0")
-                       else if c == '"' then
-                               b.append("\\\"")
-                       else if c == '\\' then
-                               b.append("\\\\")
-                       else if c == '`' then
-                               b.append("'")
-                       else if c.code_point < 32 then
-                               b.append("\\{c.code_point.to_base(8)}")
-                       else
-                               b.add(c)
-                       end
-               end
-               return b.to_s
-       end
-end
index a8d86b6..20cd2f4 100644 (file)
@@ -318,7 +318,9 @@ redef class MModulePage
        redef fun init_topmenu(v, doc) do
                super
                var mpackage = mentity.mpackage
-               topmenu.add_li new ListItem(new Link(mpackage.nitdoc_url, mpackage.html_name))
+               if mpackage != null then
+                       topmenu.add_li new ListItem(new Link(mpackage.nitdoc_url, mpackage.html_name))
+               end
                topmenu.add_li new ListItem(new Link(mentity.nitdoc_url, mentity.html_name))
                topmenu.active_item = topmenu.items.last
        end
index c026b77..b7d2ac8 100644 (file)
@@ -38,7 +38,8 @@ class ReadmePhase
        fun warning(location: nullable MDLocation, page: ReadmePage, message: String) do
                var loc = null
                if location != null then
-                       loc = location.to_location(page.mentity.mdoc.location.file)
+                       var mdoc = page.mentity.mdoc
+                       if mdoc != null then loc = location.to_location(mdoc.location.file)
                end
                ctx.warning(loc, "readme-warning", message)
        end
@@ -51,21 +52,21 @@ end
 
 redef class ReadmePage
        redef fun build_content(v, doc) do
-               if mentity.mdoc == null then
+               var mdoc = mentity.mdoc
+               if mdoc == null then
                        v.warning(null, self, "Empty README for group `{mentity}`")
                        return
                end
-               var proc = new MarkdownProcessor
-               proc.emitter = new ReadmeMdEmitter(proc, self, v)
-               proc.emitter.decorator = new ReadmeDecorator
-               var md = mentity.mdoc.content.join("\n")
+               var proc = new ReadmeMdProcessor(self, v)
+               proc.decorator = new ReadmeDecorator
+               var md = mdoc.content.join("\n")
                proc.process(md)
        end
 end
 
 # Markdown emitter used to produce the `ReadmeArticle`.
-class ReadmeMdEmitter
-       super MarkdownEmitter
+class ReadmeMdProcessor
+       super MarkdownProcessor
 
        # Readme page being decorated.
        var page: ReadmePage
@@ -90,7 +91,8 @@ class ReadmeMdEmitter
        #
        # Called from `add_headline`.
        private fun open_section(lvl: Int, title: String) do
-               var section = new ReadmeSection(title.escape_to_c, title, lvl, processor)
+               var section = new ReadmeSection(title.escape_to_c, title, lvl, self)
+               var current_section = self.current_section
                if current_section == null then
                        page.root.add_child(section)
                else
@@ -119,6 +121,7 @@ class ReadmeMdEmitter
        # This closes the current article, inserts `article` then opens a new article.
        private fun add_article(article: DocArticle) do
                close_article
+               var current_section = self.current_section
                if current_section == null then
                        page.root.add_child(article)
                else
@@ -133,7 +136,7 @@ class ReadmeMdEmitter
        private fun open_article do
                var section: DocComposite = page.root
                if current_section != null then section = current_section.as(not null)
-               var article = new ReadmeArticle("mdarticle-{section.children.length}", null, processor)
+               var article = new ReadmeArticle("mdarticle-{section.children.length}", null, self)
                section.add_child(article)
                context.add article
                push_article article
@@ -184,15 +187,18 @@ end
 class ReadmeDecorator
        super MdDecorator
 
-       redef type EMITTER: ReadmeMdEmitter
+       # Parser used to process doc commands
+       var parser = new DocCommandParser
+
+       redef type PROCESSOR: ReadmeMdProcessor
 
        redef fun add_headline(v, block) do
-               var txt = block.block.first_line.value
+               var txt = block.block.first_line.as(not null).value
                var lvl = block.depth
                if not v.context.is_empty then
                        v.close_article
                        while v.current_section != null do
-                               if v.current_section.depth < lvl then break
+                               if v.current_section.as(not null).depth < lvl then break
                                v.close_section
                        end
                end
@@ -201,9 +207,9 @@ class ReadmeDecorator
        end
 
        redef fun add_wikilink(v, token) do
-               var link = token.link.to_s
-               var cmd = new DocCommand(link)
-               if cmd isa UnknownCommand then
+               var link = token.link.as(not null).to_s
+               var cmd = parser.parse(link)
+               if cmd == null then
                        # search MEntities by name
                        var res = v.find_mentities(link.to_s)
                        # no match, print warning and display wikilink as is
@@ -219,24 +225,25 @@ class ReadmeDecorator
        end
 
        # Renders a link to a mentity.
-       private fun add_mentity_link(v: EMITTER, mentity: MEntity, name, comment: nullable Text) do
+       private fun add_mentity_link(v: PROCESSOR, mentity: MEntity, name, comment: nullable Text) do
                # TODO real link
                var link = mentity.full_name
                if name == null then name = mentity.name
-               if comment == null and mentity.mdoc != null then
-                       comment = mentity.mdoc.synopsis
+               if comment == null then
+                       var mdoc = mentity.mdoc
+                       if mdoc != null then comment = mdoc.synopsis
                end
                add_link(v, link, name, comment)
        end
 end
 
-redef interface DocCommand
+redef class DocCommand
 
        # Render the content of the doc command.
-       fun render(v: ReadmeMdEmitter, token: TokenWikiLink) is abstract
+       fun render(v: ReadmeMdProcessor, token: TokenWikiLink) is abstract
 end
 
-redef class ArticleCommand
+redef class CommentCommand
        redef fun render(v, token) do
                var string = args.first
                var res = v.find_mentities(string)
@@ -267,7 +274,7 @@ redef class ListCommand
                if mentity isa MModule then
                        v.add_article new MEntitiesListArticle("Classes", null, mentity.mclassdefs)
                else if mentity isa MClass then
-                       var mprops = mentity.collect_intro_mproperties(mentity.public_view)
+                       var mprops = mentity.collect_intro_mproperties(v.phase.doc)
                        v.add_article new MEntitiesListArticle("Methods", null, mprops.to_a)
                else if mentity isa MClassDef then
                        v.add_article new MEntitiesListArticle("Methods", null, mentity.mpropdefs)
index a0f1399..fa3bd69 100644 (file)
@@ -39,6 +39,7 @@ end
 # A component that display tabbed data.
 class DocTabs
        super BSComponent
+       autoinit(html_id, drop_text, css_classes)
 
        # HTML id of this component.
        var html_id: String
@@ -80,6 +81,7 @@ end
 # A list of tab regrouped in a dropdown
 class DocTabsDrop
        super UnorderedList
+       autoinit(html_id, html_title, items, css_classes)
 
        # HTML id used by the tabs group.
        var html_id: String
@@ -108,6 +110,7 @@ end
 # A panel that goes in a DocTabs.
 class DocTabPanel
        super BSComponent
+       autoinit(html_id, tab_title, html_content, is_active, css_classes)
 
        # HTML id of this panel.
        var html_id: String
@@ -119,7 +122,7 @@ class DocTabPanel
        var html_content: Writable is writable
 
        # Is this panel visible by default?
-       var is_active = false
+       var is_active = false is optional
 
        redef fun rendering do
                var active = ""
@@ -136,6 +139,7 @@ end
 # A ListItem that goes in a DocTabsDrop.
 private class DocTabItem
        super ListItem
+       autoinit(text, target_id, css_classes)
 
        # Panel id to trigger when the link is clicked.
        var target_id: String
index b8107ee..820a9a3 100644 (file)
@@ -143,7 +143,7 @@ end
 
 redef class MParameterType
        redef fun html_link do
-               return new Link.with_title("{mclass.nitdoc_url}#FT_{name.to_cmangle}", name, "formal type")
+               return new Link("{mclass.nitdoc_url}#FT_{name.to_cmangle}", name, "formal type")
        end
 end
 
@@ -191,7 +191,7 @@ redef class MConcern
        private fun html_concern_item: ListItem do
                var lnk = html_link
                var tpl = new Template
-               tpl.add new Link.with_title("#{nitdoc_id}.concern", lnk.text, lnk.title)
+               tpl.add new Link("#{nitdoc_id}.concern", lnk.text, lnk.title)
                var comment = html_synopsis
                if comment != null then
                        tpl.add ": "
index 290f04b..9f8390e 100644 (file)
@@ -334,6 +334,8 @@ end
 redef class DocSection
        super BSComponent
 
+       redef fun css_classes do return new Array[String]
+
        redef fun rendering do
                if is_hidden then
                        addn "<a id=\"{html_id}\"></a>"
@@ -349,6 +351,8 @@ end
 redef class DocArticle
        super BSComponent
 
+       redef fun css_classes do return new Array[String]
+
        redef fun rendering do
                if is_hidden then return
                addn "<article{render_css_classes} id=\"{html_id}\">"
@@ -578,7 +582,7 @@ end
 
 redef class ReadmeSection
        redef var html_id is lazy do
-               return markdown_processor.emitter.decorator.strip_id(html_title.as(not null).to_s)
+               return markdown_processor.decorator.strip_id(html_title.as(not null).to_s)
        end
 
        redef var html_title is lazy do
index 20ae4ed..8e89dd4 100644 (file)
@@ -539,7 +539,7 @@ redef class MGenericType
        redef fun html_short_signature do
                var lnk = html_link
                var tpl = new Template
-               tpl.add new Link.with_title(lnk.href, mclass.name.html_escape, lnk.title)
+               tpl.add new Link(lnk.href, mclass.name.html_escape, lnk.title)
                tpl.add "["
                for i in [0..arguments.length[ do
                        tpl.add arguments[i].html_short_signature
@@ -552,7 +552,7 @@ redef class MGenericType
        redef fun html_signature do
                var lnk = html_link
                var tpl = new Template
-               tpl.add new Link.with_title(lnk.href, mclass.name.html_escape, lnk.title)
+               tpl.add new Link(lnk.href, mclass.name.html_escape, lnk.title)
                tpl.add "["
                for i in [0..arguments.length[ do
                        tpl.add arguments[i].html_signature
diff --git a/src/doc/templates/templates_html.nit b/src/doc/templates/templates_html.nit
new file mode 100644 (file)
index 0000000..30a2817
--- /dev/null
@@ -0,0 +1,365 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Translate mentities to html blocks.
+module templates_html
+
+import model::model_collect
+import doc::doc_down
+import html::bootstrap
+
+redef class MEntity
+
+       # The MEntity unique ID in the HTML output
+       var html_id: String is lazy do return full_name.to_cmangle
+
+       # The MEntity URL in the HTML output
+       #
+       # You MUST redefine this method.
+       # Depending on your implementation, this URL can be a page URL or an anchor.
+       var html_url: String is lazy do return html_id
+
+       # The MEntity name escaped for HTML
+       var html_name: String is lazy do return name.html_escape
+
+       # The MEntity `full_name` escaped for HTML
+       var html_full_name: String is lazy do return full_name.html_escape
+
+       # Link to the MEntity in the HTML output
+       #
+       # You should redefine this method depending on the organization or your
+       # output.
+       fun html_link: Link do
+               var title = null
+               var mdoc = self.mdoc_or_fallback
+               if mdoc != null then
+                       title = mdoc.synopsis.html_escape
+               end
+               return new Link(html_url, html_name, title)
+       end
+
+       # Returns the complete MEntity declaration decorated with HTML
+       #
+       # Examples:
+       # * MPackage: `package foo`
+       # * MGroup: `group foo`
+       # * MModule: `module foo`
+       # * MClass: `private abstract class Foo[E: Object]`
+       # * MClassDef: `redef class Foo[E]`
+       # * MProperty: `private fun foo(e: Object): Int`
+       # * MPropdef: `redef fun foo(e)`
+       fun html_declaration: Template do
+               var tpl = new Template
+               tpl.add "<span class='signature'>"
+               for modifier in collect_modifiers do
+                       tpl.add "<span class='modifier'>{modifier}</span>&nbsp;"
+               end
+               tpl.add "<span class='name'>{html_link.write_to_string}</span>"
+               tpl.add html_signature(false)
+               tpl.add "</span>"
+               return tpl
+       end
+
+       # Returns the MEntity signature decorated with HTML
+       #
+       # This function only returns the parenthesis and return types.
+       # See `html_declaration` for the full declaration including modifiers and name.
+       fun html_signature(short: nullable Bool): Template do return new Template
+
+       # Returns `full_name` decorated with HTML links
+       fun html_namespace: Template is abstract
+
+       # An icon representative of the mentity
+       fun html_icon: BSIcon do return new BSIcon("tag", ["text-muted"])
+
+       # A li element that can go in a `HTMLList`
+       fun html_list_item: ListItem do
+               var tpl = new Template
+               tpl.add html_namespace
+               var comment = mdoc_or_fallback
+               if comment != null then
+                       tpl.add ": "
+                       tpl.add comment.html_synopsis
+               end
+               return new ListItem(tpl)
+       end
+
+       # CSS classes used to decorate `self`
+       #
+       # Mainly used for icons.
+       var css_classes: Array[String] = collect_modifiers is lazy
+end
+
+redef class MPackage
+       redef fun html_url do return "package_{html_id}.html"
+       redef fun html_namespace do return html_link
+       redef fun html_icon do return new BSIcon("book", ["text-muted"])
+       redef var css_classes = ["public"]
+end
+
+redef class MGroup
+       redef fun html_url do return "group_{html_id}.html"
+       redef fun html_icon do return new BSIcon("folder-close", ["text-muted"])
+
+       redef fun html_namespace do
+               var tpl = new Template
+               var parent = self.parent
+               if parent != null then
+                       tpl.add parent.html_namespace
+                       tpl.add " > "
+               end
+               tpl.add html_link
+               return tpl
+       end
+end
+
+redef class MModule
+       redef fun html_url do return "module_{html_id}.html"
+       redef fun html_icon do return new BSIcon("file", ["text-muted"])
+
+       redef fun html_namespace do
+               var mpackage = self.mpackage
+               var tpl = new Template
+               if mpackage != null then
+                       tpl.add mpackage.html_namespace
+                       tpl.add " :: "
+               end
+               tpl.add html_link
+               return tpl
+       end
+end
+
+redef class MClass
+       redef fun html_url do return "class_{html_id}.html"
+       redef fun html_icon do return new BSIcon("stop", css_classes)
+       redef fun html_signature(short) do return intro.html_signature(short)
+       redef fun css_classes do return super + [visibility.to_s]
+
+       redef fun html_namespace do
+               var mgroup = intro_mmodule.mgroup
+               var tpl = new Template
+               if mgroup != null then
+                       tpl.add mgroup.mpackage.html_namespace
+                       tpl.add " :: "
+               end
+               tpl.add "<span>"
+               tpl.add html_link
+               tpl.add "</span>"
+               return tpl
+       end
+end
+
+redef class MClassDef
+       redef fun html_url do return "{mclass.html_url}#{html_id}"
+       redef fun css_classes do return super + mclass.css_classes
+
+       redef fun html_namespace do
+               var tpl = new Template
+               var mpackage = mmodule.mpackage
+               if mpackage != null and is_intro then
+                       if is_intro then
+                               tpl.add mpackage.html_namespace
+                               tpl.add " $ "
+                       else
+                               tpl.add mmodule.html_namespace
+                               tpl.add " $ "
+                               var intro_mpackage = mclass.intro.mmodule.mpackage
+                               if intro_mpackage != null and mpackage != intro_mpackage then
+                                       tpl.add intro_mpackage.html_namespace
+                                       tpl.add " :: "
+                               end
+                       end
+               else
+                       tpl.add mmodule.html_namespace
+                       tpl.add " $ "
+               end
+               tpl.add html_link
+               return tpl
+       end
+
+       redef fun html_icon do
+               if is_intro then
+                       return new BSIcon("plus", css_classes)
+               end
+               return new BSIcon("asterisk", css_classes)
+       end
+
+       redef fun html_signature(short) do
+               var tpl = new Template
+               var mparameters = mclass.mparameters
+               if not mparameters.is_empty then
+                       tpl.add "["
+                       for i in [0..mparameters.length[ do
+                               tpl.add mparameters[i].html_name
+                               if short == null or not short then
+                                       tpl.add ": "
+                                       tpl.add bound_mtype.arguments[i].html_signature(short)
+                               end
+                               if i < mparameters.length - 1 then tpl.add ", "
+                       end
+                       tpl.add "]"
+               end
+               return tpl
+       end
+end
+
+redef class MProperty
+       redef fun html_url do return "property_{html_id}.html"
+       redef fun html_declaration do return intro.html_declaration
+       redef fun html_signature(short) do return intro.html_signature(short)
+       redef fun html_icon do return new BSIcon("tag", css_classes)
+       redef fun css_classes do return super + [visibility.to_s]
+
+       redef fun html_namespace do
+               var tpl = new Template
+               tpl.add intro_mclassdef.mclass.html_namespace
+               tpl.add " :: "
+               tpl.add intro.html_link
+               return tpl
+       end
+end
+
+redef class MPropDef
+       redef fun html_url do return "{mproperty.html_url}#{html_id}"
+       redef fun css_classes do return super + mproperty.css_classes
+
+       redef fun html_namespace do
+               var tpl = new Template
+               tpl.add mclassdef.html_namespace
+               tpl.add " :: "
+               tpl.add html_link
+               return tpl
+       end
+
+       redef fun html_icon do
+               if is_intro then
+                       return new BSIcon("plus", css_classes)
+               end
+               return new BSIcon("asterisk", css_classes)
+       end
+end
+
+redef class MAttributeDef
+       redef fun html_signature(short) do
+               var static_mtype = self.static_mtype
+               var tpl = new Template
+               if static_mtype != null then
+                       tpl.add ": "
+                       tpl.add static_mtype.html_signature(short)
+               end
+               return tpl
+       end
+end
+
+redef class MMethodDef
+       redef fun html_signature(short) do
+               var new_msignature = self.new_msignature
+               if mproperty.is_root_init and new_msignature != null then
+                       return new_msignature.html_signature(short)
+               end
+               return msignature.as(not null).html_signature(short)
+       end
+end
+
+redef class MVirtualTypeProp
+       redef fun html_link do return mvirtualtype.html_link
+end
+
+redef class MVirtualTypeDef
+       redef fun html_signature(short) do
+               var bound = self.bound
+               var tpl = new Template
+               if bound == null then return tpl
+               tpl.add ": "
+               tpl.add bound.html_signature(short)
+               return tpl
+       end
+end
+
+redef class MType
+       redef fun html_signature(short) do return html_link
+end
+
+redef class MClassType
+       redef fun html_link do return mclass.html_link
+end
+
+redef class MNullableType
+       redef fun html_signature(short) do
+               var tpl = new Template
+               tpl.add "nullable "
+               tpl.add mtype.html_signature(short)
+               return tpl
+       end
+end
+
+redef class MGenericType
+       redef fun html_signature(short) do
+               var lnk = html_link
+               var tpl = new Template
+               tpl.add new Link(lnk.href, mclass.name.html_escape, lnk.title)
+               tpl.add "["
+               for i in [0..arguments.length[ do
+                       tpl.add arguments[i].html_signature(short)
+                       if i < arguments.length - 1 then tpl.add ", "
+               end
+               tpl.add "]"
+               return tpl
+       end
+end
+
+redef class MParameterType
+       redef fun html_link do
+               return new Link("{mclass.html_url}#FT_{name.to_cmangle}", name, "formal type")
+       end
+end
+
+redef class MVirtualType
+       redef fun html_link do return mproperty.intro.html_link
+end
+
+redef class MSignature
+       redef fun html_signature(short) do
+               var tpl = new Template
+               if not mparameters.is_empty then
+                       tpl.add "("
+                       for i in [0..mparameters.length[ do
+                               tpl.add mparameters[i].html_signature(short)
+                               if i < mparameters.length - 1 then tpl.add ", "
+                       end
+                       tpl.add ")"
+               end
+               if short == null or not short then
+                       var return_mtype = self.return_mtype
+                       if return_mtype != null then
+                               tpl.add ": "
+                               tpl.add return_mtype.html_signature(short)
+                       end
+               end
+               return tpl
+       end
+end
+
+redef class MParameter
+       redef fun html_signature(short) do
+               var tpl = new Template
+               tpl.add name
+               if short == null or not short then
+                       tpl.add ": "
+                       tpl.add mtype.html_signature(short)
+               end
+               if is_vararg then tpl.add "..."
+               return tpl
+       end
+end
diff --git a/src/doc/templates/templates_json.nit b/src/doc/templates/templates_json.nit
new file mode 100644 (file)
index 0000000..a75dc49
--- /dev/null
@@ -0,0 +1,378 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Make model entities Serializable.
+#
+# To avoid cycles, every reference from a MEntity to another is replaced by a
+# MEntityRef.
+#
+# How subobjects are retrieved using the MEntityRef is the responsability of the
+# client. Json objects can be returned as this or inflated with concrete objet
+# rather than the refs.
+#
+# TODO consider serialization module?
+module templates_json
+
+import model::model_collect
+import json::static
+import json::serialization_write
+import catalog
+import doc_down
+
+redef class MEntity
+       serialize
+
+       private fun core_serialize_base(v: Serializer) do
+               v.serialize_attribute("name", name)
+               var mdoc = mdoc_or_fallback
+               if mdoc != null then
+                       v.serialize_attribute("synopsis", mdoc.synopsis)
+               end
+       end
+
+       redef fun core_serialize_to(v) do
+               core_serialize_base(v)
+
+               v.serialize_attribute("namespace", json_namespace)
+               v.serialize_attribute("class_name", class_name)
+               v.serialize_attribute("full_name", full_name)
+               v.serialize_attribute("visibility", visibility.to_s)
+               var mdoc = mdoc_or_fallback
+               if mdoc != null then
+                       v.serialize_attribute("html_synopsis", mdoc.html_synopsis.write_to_string)
+               end
+
+               var modifiers = collect_modifiers
+               if modifiers.not_empty then
+                       v.serialize_attribute("modifiers", modifiers)
+               end
+       end
+
+       # Return `self.full_name` as an object that can be serialized to json.
+       fun json_namespace: JsonNamespace is abstract
+
+       # Return a new MEntityRef to `self`.
+       fun to_json_ref: MEntityRef do return new MEntityRef(self)
+end
+
+redef class MDoc
+       serialize
+
+       redef fun core_serialize_to(v) do
+               var doc = html_documentation.write_to_string.trim
+               if not doc.is_empty then
+                       v.serialize_attribute("html_documentation", doc)
+               end
+       end
+end
+
+redef class nitc::Location
+       serialize
+
+       redef fun core_serialize_to(v) do
+               v.serialize_attribute("column_end", column_end)
+               v.serialize_attribute("column_start", column_start)
+               v.serialize_attribute("line_end", line_end)
+               v.serialize_attribute("line_start", line_start)
+               var file = self.file
+               if file != null then
+                       v.serialize_attribute("file", file.filename)
+               end
+       end
+end
+
+redef class MPackage
+       redef fun core_serialize_to(v) do
+               super
+
+               var metadata = self.metadata
+               if metadata.license != null then
+                       v.serialize_attribute("license", metadata.license)
+               end
+               if metadata.maintainers.not_empty then
+                       v.serialize_attribute("maintainer", metadata.maintainers.first)
+               end
+               if metadata.tags.not_empty then
+                       v.serialize_attribute("tags", metadata.tags)
+               end
+       end
+
+       redef fun json_namespace do
+               var ns = new JsonNamespace
+               ns.add to_json_ref
+               return ns
+       end
+end
+
+redef class MGroup
+       redef fun json_namespace do
+               var ns = new JsonNamespace
+               if parent != null then
+                       ns.prepend parent.as(not null).json_namespace
+               end
+               ns.add to_json_ref
+               ns.add ">"
+               return ns
+       end
+end
+
+redef class MModule
+       redef fun json_namespace do
+               var ns = new JsonNamespace
+               if mgroup != null then
+                       ns.add_all mgroup.as(not null).mpackage.json_namespace
+                       ns.add "::"
+               end
+               ns.add to_json_ref
+               return ns
+       end
+
+       private fun ns_for(visibility: MVisibility): JsonNamespace do
+               if visibility <= private_visibility then return json_namespace
+               var mgroup = self.mgroup
+               if mgroup == null then return json_namespace
+               return mgroup.mpackage.json_namespace
+       end
+end
+
+redef class MClass
+       redef fun core_serialize_to(v) do
+               super
+
+               if mparameters.not_empty then
+                       v.serialize_attribute("mparameters", mparameters)
+               end
+       end
+
+       redef fun json_namespace do
+               var ns = new JsonNamespace
+               ns.add_all intro_mmodule.ns_for(visibility)
+               ns.add "::"
+               ns.add to_json_ref
+               return ns
+       end
+end
+
+redef class MClassDef
+       redef fun core_serialize_to(v) do
+               super
+               if is_intro then
+                       v.serialize_attribute("is_intro", true)
+               end
+               if mclass.mparameters.not_empty then
+                       v.serialize_attribute("mparameters", mclass.mparameters)
+               end
+       end
+
+       redef fun json_namespace do
+               var ns = new JsonNamespace
+               if is_intro then
+                       ns.add_all mmodule.ns_for(mclass.visibility)
+                       ns.add "$"
+                       ns.add mclass.to_json_ref
+               else if mclass.intro_mmodule.mpackage != mmodule.mpackage then
+                       ns.add_all mmodule.json_namespace
+                       ns.add "$"
+                       ns.add_all mclass.json_namespace
+               else if mclass.visibility > private_visibility then
+                       ns.add_all mmodule.json_namespace
+                       ns.add "$"
+                       ns.add mclass.to_json_ref
+               else
+                       ns.add_all mmodule.json_namespace
+                       ns.add "$::"
+                       ns.add mclass.intro_mmodule.to_json_ref
+                       ns.add "::"
+                       ns.add mclass.to_json_ref
+               end
+               return ns
+       end
+end
+
+redef class MProperty
+       redef fun json_namespace do
+               var ns = new JsonNamespace
+               if intro_mclassdef.is_intro then
+                       ns.add_all intro_mclassdef.mmodule.ns_for(visibility)
+                       ns.add "::"
+                       ns.add intro_mclassdef.mclass.to_json_ref
+                       ns.add "::"
+                       ns.add to_json_ref
+               else
+                       ns.add_all intro_mclassdef.mmodule.json_namespace
+                       ns.add "::"
+                       ns.add intro_mclassdef.mclass.to_json_ref
+                       ns.add "::"
+                       ns.add to_json_ref
+               end
+               return ns
+       end
+end
+
+redef class MMethod
+       redef fun core_serialize_to(v) do
+               super
+               if is_init then
+                       v.serialize_attribute("is_init", true)
+               end
+               v.serialize_attribute("msignature", intro.msignature)
+       end
+end
+
+redef class MAttribute
+       redef fun core_serialize_to(v) do
+               super
+               v.serialize_attribute("static_mtype", intro.static_mtype)
+       end
+end
+
+redef class MVirtualTypeProp
+       redef fun core_serialize_to(v) do
+               super
+               v.serialize_attribute("bound", intro.bound)
+       end
+end
+
+redef class MPropDef
+       redef fun core_serialize_to(v) do
+               super
+               if is_intro then
+                       v.serialize_attribute("is_intro", true)
+               end
+       end
+
+       redef fun json_namespace do
+               var res = new JsonNamespace
+               res.add_all mclassdef.json_namespace
+               res.add "$"
+
+               if mclassdef.mclass == mproperty.intro_mclassdef.mclass then
+                       res.add to_json_ref
+               else
+                       if mclassdef.mmodule.mpackage != mproperty.intro_mclassdef.mmodule.mpackage then
+                               res.add_all mproperty.intro_mclassdef.mmodule.ns_for(mproperty.visibility)
+                               res.add "::"
+                       else if mproperty.visibility <= private_visibility then
+                               if mclassdef.mmodule.namespace_for(mclassdef.mclass.visibility) != mproperty.intro_mclassdef.mmodule.mpackage then
+                                       res.add "::"
+                                       res.add mproperty.intro_mclassdef.mmodule.to_json_ref
+                                       res.add "::"
+                               end
+                       end
+                       if mclassdef.mclass != mproperty.intro_mclassdef.mclass then
+                               res.add mproperty.intro_mclassdef.to_json_ref
+                               res.add "::"
+                       end
+                       res.add to_json_ref
+               end
+               return res
+       end
+end
+
+redef class MMethodDef
+       redef fun core_serialize_to(v) do
+               super
+               v.serialize_attribute("msignature", msignature)
+       end
+end
+
+redef class MAttributeDef
+       redef fun core_serialize_to(v) do
+               super
+               v.serialize_attribute("static_mtype", static_mtype)
+       end
+end
+
+redef class MVirtualTypeDef
+       redef fun core_serialize_to(v) do
+               super
+               v.serialize_attribute("bound", bound)
+       end
+end
+
+redef class MType
+       redef fun core_serialize_to(v) do
+               v.serialize_attribute("name", name)
+
+               var mdoc = mdoc_or_fallback
+               if mdoc != null then
+                       v.serialize_attribute("synopsis", mdoc.synopsis)
+                       v.serialize_attribute("html_synopsis", mdoc.html_synopsis.write_to_string)
+               end
+       end
+end
+
+
+redef class MSignature
+       redef fun core_serialize_to(v) do
+               v.serialize_attribute("arity", arity)
+               v.serialize_attribute("mparameters", mparameters)
+               v.serialize_attribute("return_mtype", return_mtype)
+       end
+end
+
+redef class MParameterType
+       redef fun core_serialize_to(v) do
+               v.serialize_attribute("name", name)
+               v.serialize_attribute("mtype", mclass.intro.bound_mtype.arguments[rank])
+       end
+end
+
+redef class MParameter
+       redef fun core_serialize_to(v) do
+               v.serialize_attribute("is_vararg", is_vararg)
+               v.serialize_attribute("name", name)
+               v.serialize_attribute("mtype", mtype)
+       end
+end
+
+# Fullname representation that can be used to build decorated links
+#
+# * MPackage: `mpackage_name`
+# * MGroup: `(mpackage_name::)mgroup_name`
+class JsonNamespace
+       super Array[nullable JsonRef]
+       serialize
+
+       redef fun to_s do return self.join("")
+       redef fun serialize_to(v) do to_a.serialize_to(v)
+end
+
+# Something that goes in a JsonNamespace
+#
+# Can be either:
+# * a `RefToken` for tokens like `::`, `>` and `$`
+# * a `MEntityRef` for references to mentities
+interface JsonRef
+       super Serializable
+end
+
+# A reference to another mentity.
+class MEntityRef
+       super JsonRef
+
+       # MEntity to link to.
+       var mentity: MEntity
+
+       redef fun core_serialize_to(v) do
+               mentity.core_serialize_base(v)
+       end
+end
+
+# A namespace token representation
+#
+# Used for namespace tokens like `::`, `>` and `$`
+redef class String
+       super JsonRef
+end
diff --git a/src/doc/templates/templates_term.nit b/src/doc/templates/templates_term.nit
new file mode 100644 (file)
index 0000000..b4fc2fe
--- /dev/null
@@ -0,0 +1,311 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Markdown templates for Nit model MEntities.
+#
+# This module introduces Markdown rendering services in model entities.
+# With the `no_color` option set to `false`, the output can be highlighted for console.
+module templates_term
+
+import model_collect
+import console
+
+redef class MDoc
+       # Returns the full comment formatted for the console
+       fun cs_comment(no_color: nullable Bool, indent: nullable Int): String do
+               var res = new FlatBuffer
+               indent = indent or else 0
+               for line in content do
+                       res.append "{" " * indent}{line}\n"
+               end
+               if no_color == null or not no_color then
+                       return res.write_to_string.green
+               end
+               return res.write_to_string
+       end
+
+       # Returns the synopsys formatted for the console
+       fun cs_short_comment(no_color: nullable Bool): String do
+               if no_color == null or not no_color then
+                       return content.first.green
+               end
+               return content.first
+       end
+end
+
+redef class MEntity
+
+       # Text icon to be displayed in front of the entity
+       fun cs_icon(no_color: nullable Bool): String do
+               return public_visibility.cs_icon(no_color)
+       end
+
+       # Source code location of this MEntity formatted for console
+       fun cs_location(no_color: nullable Bool): String do
+               if no_color == null or not no_color then
+                       return location.to_s.bold.gray
+               end
+               return location.to_s
+       end
+
+       # Returns `self.full_name` formatted for console
+       fun cs_full_name(no_color: nullable Bool): String do
+               if no_color == null or not no_color then
+                       return full_name.bold.blue
+               end
+               return full_name
+       end
+
+       # Returns `self` signature formatted for console.
+       fun cs_signature(no_color: nullable Bool): String do return ""
+
+       # Returns the comment of this MEntity formatted for console.
+       fun cs_comment(no_color: nullable Bool): nullable String do
+               var mdoc = mdoc_or_fallback
+               if mdoc == null then return null
+               # FIXME add markdown for console
+               return mdoc.cs_comment(no_color)
+       end
+
+       # Returns the comment of this MEntity formatted for console.
+       fun cs_short_comment(no_color: nullable Bool): nullable String do
+               var mdoc = mdoc_or_fallback
+               if mdoc == null then return null
+               return mdoc.cs_short_comment(no_color)
+       end
+
+       # Returns the complete MEntity declaration (modifiers + name + signature).
+       #
+       # * MPackage: `package foo`
+       # * MGroup: `group foo`
+       # * MModule: `module foo`
+       # * MClass: `private abstract class Foo[E: Object]`
+       # * MClassDef: `redef class Foo[E]`
+       # * MProperty: `private fun foo(e: Object): Int`
+       # * MPropdef: `redef fun foo(e)`
+       fun cs_declaration(no_color: nullable Bool): String do
+               var tpl = new FlatBuffer
+               tpl.append collect_modifiers.join(" ")
+               tpl.append " "
+               tpl.append name
+               tpl.append cs_signature(no_color)
+               if no_color == null or not no_color then
+                       return tpl.write_to_string.bold
+               end
+               return tpl.write_to_string
+       end
+
+       # Returns `self` as a list element that can be displayed in console.
+       #
+       # Displays `cs_icon`, `cs_name`, `cs_short_comment, `cs_namespace`,
+       # `cs_declaration` and `cs_location`.
+       fun cs_list_item(no_color: nullable Bool): String do
+               var tpl = new FlatBuffer
+               tpl.append " "
+               tpl.append cs_icon(no_color)
+               tpl.append " "
+               tpl.append cs_full_name(no_color)
+               var comment = cs_short_comment(no_color)
+               if comment != null then
+                       tpl.append "\n   "
+                       if no_color == null or not no_color then
+                               tpl.append "# ".green
+                       else
+                               tpl.append "# "
+                       end
+                       tpl.append comment
+               end
+               tpl.append "\n   "
+               tpl.append cs_declaration(no_color)
+               tpl.append "\n   "
+               tpl.append cs_location(no_color)
+               return tpl.write_to_string
+       end
+
+       # Source code associated to this MEntity.
+       #
+       # Uses `cs_location` to locate the source code.
+       fun cs_source_code: String do
+               var tpl = new Buffer
+               tpl.append "\n~~~\n"
+               tpl.append location.text
+               tpl.append "\n~~~\n"
+               return tpl.write_to_string
+       end
+end
+
+redef class MClass
+       redef fun cs_icon(no_color) do return intro.cs_icon(no_color)
+       redef fun cs_signature(no_color) do return intro.cs_signature(no_color)
+end
+
+redef class MClassDef
+       redef fun cs_icon(no_color) do
+               if is_intro then return visibility.cs_icon(no_color)
+               return visibility.cs_visibility_color("*")
+       end
+
+       # Returns the MClassDef generic signature with static bounds.
+       redef fun cs_signature(no_color) do
+               var tpl = new FlatBuffer
+               var mparameters = mclass.mparameters
+               if not mparameters.is_empty then
+                       tpl.append "["
+                       for i in [0..mparameters.length[ do
+                               tpl.append "{mparameters[i].name}: "
+                               tpl.append bound_mtype.arguments[i].cs_signature(no_color)
+                               if i < mparameters.length - 1 then tpl.append ", "
+                       end
+                       tpl.append "]"
+               end
+               return tpl.write_to_string
+       end
+end
+
+redef class MProperty
+       redef fun cs_icon(no_color) do return intro.cs_icon(no_color)
+       redef fun cs_signature(no_color) do return intro.cs_signature(no_color)
+end
+
+redef class MPropDef
+       redef fun cs_icon(no_color) do
+               if is_intro then return visibility.cs_icon(no_color)
+               return visibility.cs_visibility_color("*", no_color)
+       end
+end
+
+redef class MAttributeDef
+       redef fun cs_signature(no_color) do
+               var tpl = new FlatBuffer
+               var static_mtype = self.static_mtype
+               if static_mtype != null then
+                       tpl.append ": "
+                       tpl.append static_mtype.cs_signature(no_color)
+               end
+               return tpl.write_to_string
+       end
+end
+
+redef class MMethodDef
+       redef fun cs_signature(no_color) do
+               if mproperty.is_root_init then
+                       return new_msignature.as(not null).cs_signature(no_color)
+               end
+               return msignature.as(not null).cs_signature(no_color)
+       end
+end
+
+redef class MVirtualTypeDef
+       redef fun cs_signature(no_color) do
+               var tpl = new FlatBuffer
+               var bound = self.bound
+               if bound == null then return tpl.write_to_string
+               tpl.append ": "
+               tpl.append bound.cs_signature(no_color)
+               return tpl.write_to_string
+       end
+end
+
+redef class MClassType
+       redef fun cs_signature(no_color) do return name
+end
+
+redef class MNullableType
+       redef fun cs_signature(no_color) do
+               var tpl = new FlatBuffer
+               tpl.append "nullable "
+               tpl.append mtype.cs_signature(no_color)
+               return tpl.write_to_string
+       end
+end
+
+redef class MGenericType
+       redef fun cs_signature(no_color) do
+               var tpl = new FlatBuffer
+               tpl.append mclass.name
+               tpl.append "["
+               for i in [0..arguments.length[ do
+                       tpl.append arguments[i].cs_signature(no_color)
+                       if i < arguments.length - 1 then tpl.append ", "
+               end
+               tpl.append "]"
+               return tpl.write_to_string
+       end
+end
+
+redef class MParameterType
+       redef fun cs_signature(no_color) do return name
+end
+
+redef class MVirtualType
+       redef fun cs_signature(no_color) do return name
+end
+
+redef class MSignature
+       redef fun cs_signature(no_color) do
+               var tpl = new FlatBuffer
+               if not mparameters.is_empty then
+                       tpl.append "("
+                       for i in [0..mparameters.length[ do
+                               tpl.append mparameters[i].cs_signature(no_color)
+                               if i < mparameters.length - 1 then tpl.append ", "
+                       end
+                       tpl.append ")"
+               end
+               var return_mtype = self.return_mtype
+               if return_mtype != null then
+                       tpl.append ": "
+                       tpl.append return_mtype.cs_signature(no_color)
+               end
+               return tpl.write_to_string
+       end
+end
+
+redef class MParameter
+       redef fun cs_signature(no_color) do
+               var tpl = new FlatBuffer
+               tpl.append "{name}: "
+               tpl.append mtype.cs_signature(no_color)
+               if is_vararg then tpl.append "..."
+               return tpl.write_to_string
+       end
+end
+
+redef class MVisibility
+       # Visibility icon
+       fun cs_icon(no_color: nullable Bool): String do
+               var icon
+               if self == private_visibility then
+                       icon = cs_visibility_color("-", no_color)
+               else if self == protected_visibility then
+                       icon = cs_visibility_color("#", no_color)
+               else
+                       icon = cs_visibility_color("+", no_color)
+               end
+               if no_color != null and no_color then return icon
+               return icon.bold
+       end
+
+       # Colorize `string` depending on the visibility
+       fun cs_visibility_color(string: String, no_color: nullable Bool): String do
+               if no_color != null and no_color then return string
+               if self == private_visibility then
+                       return string.red
+               else if self == protected_visibility then
+                       return string.yellow
+               else
+                       return string.green
+               end
+       end
+end
similarity index 76%
rename from src/model/test_model_json.nit
rename to src/doc/templates/tests/test_templates_json.nit
index c544446..f1ba536 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-module test_model_json is test
+module test_templates_json is test
 
-import model_json
+import templates_json
 import frontend
 
 class TestModelSerialization
        test
 
        var suite_path: String = "NIT_TESTING_PATH".environ
-       var lib_path: String = "{suite_path.dirname}/../../tests/test_prog"
+       var lib_path: String = "{suite_path.dirname}/../../../../tests/test_prog"
+
+       var mainmodule: MModule is noinit
 
        private var model: Model do
                var toolcontext = new ToolContext
@@ -31,6 +33,7 @@ class TestModelSerialization
                if mmodules.is_empty then return model
                mbuilder.run_phases
                toolcontext.run_global_phases(mmodules)
+               mainmodule = mmodules.first
                return model
        end
 
@@ -40,54 +43,54 @@ class TestModelSerialization
                mentities.add model.mmodules.first
                mentities.add model.mclasses.first
                for mentity in mentities do
-                       print ((new MEntityRef(mentity)).to_pretty_full_json)
+                       print ((new MEntityRef(mentity)).serialize_to_json(pretty = true, plain = true))
                end
        end
 
        fun test_packages_to_full_json is test do
                for mentity in model.mpackages do
-                       print mentity.to_pretty_full_json
+                       print mentity.serialize_to_json(pretty = true, plain = true)
                end
        end
 
        fun test_groups_to_full_json is test do
                for mpackage in model.mpackages do
                        for mentity in mpackage.mgroups do
-                               print mentity.to_pretty_full_json
+                               print mentity.serialize_to_json(pretty = true, plain = true)
                        end
                end
        end
 
        fun test_modules_to_full_json is test do
                for mentity in model.mmodules do
-                       print mentity.to_pretty_full_json
+                       print mentity.serialize_to_json(pretty = true, plain = true)
                end
        end
 
        fun test_classes_to_full_json is test do
                for mentity in model.mclasses do
-                       print mentity.to_pretty_full_json
+                       print mentity.serialize_to_json(pretty = true, plain = true)
                end
        end
 
        fun test_classdefs_to_full_json is test do
                for mclass in model.mclasses do
                        for mentity in mclass.mclassdefs do
-                               print mentity.to_pretty_full_json
+                               print mentity.serialize_to_json(pretty = true, plain = true)
                        end
                end
        end
 
        fun test_props_to_full_json is test do
                for mentity in model.mproperties do
-                       print mentity.to_pretty_full_json
+                       print mentity.serialize_to_json(pretty = true, plain = true)
                end
        end
 
        fun test_propdefs_to_full_json is test do
                for mprop in model.mproperties do
                        for mentity in mprop.mpropdefs do
-                               print mentity.to_pretty_full_json
+                               print mentity.serialize_to_json(pretty = true, plain = true)
                        end
                end
        end
diff --git a/src/doc/templates/tests/test_templates_json.sav/test_classdefs_to_full_json.res b/src/doc/templates/tests/test_templates_json.sav/test_classdefs_to_full_json.res
new file mode 100644 (file)
index 0000000..241e975
--- /dev/null
@@ -0,0 +1,397 @@
+{
+       "name": "Object",
+       "synopsis": "Root of everything.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Object",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>",
+       "modifiers": ["interface"],
+       "is_intro": true
+}
+{
+       "name": "Int",
+       "synopsis": "Some services about Integers.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Int",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "Float",
+       "synopsis": "Some services about Floats.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Float",
+               "synopsis": "Some services about Floats."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Float",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "Bool",
+       "synopsis": "Booleans, `true` or `false`.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Bool",
+               "synopsis": "Booleans, `true` or `false`."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Bool",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "String",
+       "synopsis": "Strings (there is no chars...).",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "String",
+               "synopsis": "Strings (there is no chars...)."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$String",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "List",
+       "synopsis": "List of things.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "List",
+               "synopsis": "List of things."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$List",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>",
+       "modifiers": ["class"],
+       "is_intro": true,
+       "mparameters": [{
+               "name": "E",
+               "mtype": {
+                       "name": "nullable Object",
+                       "synopsis": "Root of everything.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>"
+               }
+       }]
+}
+{
+       "name": "Career",
+       "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Career",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>",
+       "modifiers": ["abstract class"],
+       "is_intro": true
+}
+{
+       "name": "Warrior",
+       "synopsis": "Warriors are good for fighting.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Warrior",
+               "synopsis": "Warriors are good for fighting."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Warrior",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Warriors are good for fighting.</span>",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "Magician",
+       "synopsis": "Magicians know magic and how to use it.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Magician",
+               "synopsis": "Magicians know magic and how to use it."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Magician",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Magicians know magic and how to use it.</span>",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "Alcoholic",
+       "synopsis": "Alcoholics are good to nothing escept taking punches.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Alcoholic",
+               "synopsis": "Alcoholics are good to nothing escept taking punches."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Alcoholic",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Alcoholics are good to nothing escept taking punches.</span>",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "Race",
+       "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Race",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>",
+       "modifiers": ["abstract class"],
+       "is_intro": true
+}
+{
+       "name": "Human",
+       "synopsis": "Humans are able to do everithing.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Human",
+               "synopsis": "Humans are able to do everithing."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Human",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Humans are able to do everithing.</span>",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "Dwarf",
+       "synopsis": "Dwarves make strong warriors.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Dwarf",
+               "synopsis": "Dwarves make strong warriors."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Dwarf",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Dwarves make strong warriors.</span>",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "Dwarf",
+       "synopsis": "Dwarves can be used as weapons.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "combat",
+               "synopsis": "COmbat interactions between characters."
+       }, "$", {
+               "name": "Dwarf",
+               "synopsis": "Dwarves make strong warriors."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog::combat$Dwarf",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Dwarves can be used as weapons.</span>",
+       "modifiers": ["redef", "class"]
+}
+{
+       "name": "Elf",
+       "synopsis": "Elves make good magicians.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Elf",
+               "synopsis": "Elves make good magicians."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Elf",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Elves make good magicians.</span>",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "Character",
+       "synopsis": "Characters can be played by both the human or the machine.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Character",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters can be played by both the human or the machine.</span>",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "Character",
+       "synopsis": "Characters are now `Comabatable`",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "combat",
+               "synopsis": "COmbat interactions between characters."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog::combat$Character",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters are now <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Comabatable</span></span></span></code></span>",
+       "modifiers": ["redef", "class"]
+}
+{
+       "name": "Weapon",
+       "synopsis": "Something that can be used to attack someone and inflict damage.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Weapon",
+               "synopsis": "Something that can be used to attack someone and inflict damage."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Weapon",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be used to attack someone and inflict damage.</span>",
+       "modifiers": ["interface"],
+       "is_intro": true
+}
+{
+       "name": "Combatable",
+       "synopsis": "Something that can be combatted, it can `attack` and `defend`.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Combatable",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>",
+       "modifiers": ["interface"],
+       "is_intro": true
+}
+{
+       "name": "Game",
+       "synopsis": "This is the interface you have to implement to use ure gaming platform.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Game",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">This is the interface you have to implement to use ure gaming platform.</span>",
+       "modifiers": ["interface"],
+       "is_intro": true
+}
+{
+       "name": "MyGame",
+       "synopsis": "This is an example of how to implement the Game interface",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$MyGame",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">This is an example of how to implement the Game interface</span>",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "Starter",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Starter"
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Starter",
+       "visibility": "public",
+       "modifiers": ["class"],
+       "is_intro": true
+}
+{
+       "name": "Sys",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Sys"
+       }],
+       "class_name": "MClassDef",
+       "full_name": "test_prog$Sys",
+       "visibility": "public",
+       "modifiers": ["class"],
+       "is_intro": true
+}
diff --git a/src/doc/templates/tests/test_templates_json.sav/test_classes_to_full_json.res b/src/doc/templates/tests/test_templates_json.sav/test_classes_to_full_json.res
new file mode 100644 (file)
index 0000000..7e7c7ad
--- /dev/null
@@ -0,0 +1,338 @@
+{
+       "name": "Object",
+       "synopsis": "Root of everything.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Object",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>",
+       "modifiers": ["interface"]
+}
+{
+       "name": "Int",
+       "synopsis": "Some services about Integers.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Int",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>",
+       "modifiers": ["class"]
+}
+{
+       "name": "Float",
+       "synopsis": "Some services about Floats.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Float",
+               "synopsis": "Some services about Floats."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Float",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>",
+       "modifiers": ["class"]
+}
+{
+       "name": "Bool",
+       "synopsis": "Booleans, `true` or `false`.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Bool",
+               "synopsis": "Booleans, `true` or `false`."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Bool",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>",
+       "modifiers": ["class"]
+}
+{
+       "name": "String",
+       "synopsis": "Strings (there is no chars...).",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "String",
+               "synopsis": "Strings (there is no chars...)."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::String",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>",
+       "modifiers": ["class"]
+}
+{
+       "name": "List",
+       "synopsis": "List of things.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "List",
+               "synopsis": "List of things."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::List",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>",
+       "modifiers": ["class"],
+       "mparameters": [{
+               "name": "E",
+               "mtype": {
+                       "name": "nullable Object",
+                       "synopsis": "Root of everything.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>"
+               }
+       }]
+}
+{
+       "name": "Career",
+       "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Career",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>",
+       "modifiers": ["abstract class"]
+}
+{
+       "name": "Warrior",
+       "synopsis": "Warriors are good for fighting.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Warrior",
+               "synopsis": "Warriors are good for fighting."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Warrior",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Warriors are good for fighting.</span>",
+       "modifiers": ["class"]
+}
+{
+       "name": "Magician",
+       "synopsis": "Magicians know magic and how to use it.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Magician",
+               "synopsis": "Magicians know magic and how to use it."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Magician",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Magicians know magic and how to use it.</span>",
+       "modifiers": ["class"]
+}
+{
+       "name": "Alcoholic",
+       "synopsis": "Alcoholics are good to nothing escept taking punches.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Alcoholic",
+               "synopsis": "Alcoholics are good to nothing escept taking punches."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Alcoholic",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Alcoholics are good to nothing escept taking punches.</span>",
+       "modifiers": ["class"]
+}
+{
+       "name": "Race",
+       "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Race",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>",
+       "modifiers": ["abstract class"]
+}
+{
+       "name": "Human",
+       "synopsis": "Humans are able to do everithing.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Human",
+               "synopsis": "Humans are able to do everithing."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Human",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Humans are able to do everithing.</span>",
+       "modifiers": ["class"]
+}
+{
+       "name": "Dwarf",
+       "synopsis": "Dwarves make strong warriors.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Dwarf",
+               "synopsis": "Dwarves make strong warriors."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Dwarf",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Dwarves make strong warriors.</span>",
+       "modifiers": ["class"]
+}
+{
+       "name": "Elf",
+       "synopsis": "Elves make good magicians.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Elf",
+               "synopsis": "Elves make good magicians."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Elf",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Elves make good magicians.</span>",
+       "modifiers": ["class"]
+}
+{
+       "name": "Character",
+       "synopsis": "Characters can be played by both the human or the machine.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Character",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters can be played by both the human or the machine.</span>",
+       "modifiers": ["class"]
+}
+{
+       "name": "Weapon",
+       "synopsis": "Something that can be used to attack someone and inflict damage.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Weapon",
+               "synopsis": "Something that can be used to attack someone and inflict damage."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Weapon",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be used to attack someone and inflict damage.</span>",
+       "modifiers": ["interface"]
+}
+{
+       "name": "Combatable",
+       "synopsis": "Something that can be combatted, it can `attack` and `defend`.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Combatable",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>",
+       "modifiers": ["interface"]
+}
+{
+       "name": "Game",
+       "synopsis": "This is the interface you have to implement to use ure gaming platform.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Game",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">This is the interface you have to implement to use ure gaming platform.</span>",
+       "modifiers": ["interface"]
+}
+{
+       "name": "MyGame",
+       "synopsis": "This is an example of how to implement the Game interface",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::MyGame",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">This is an example of how to implement the Game interface</span>",
+       "modifiers": ["class"]
+}
+{
+       "name": "Starter",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Starter"
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Starter",
+       "visibility": "public",
+       "modifiers": ["class"]
+}
+{
+       "name": "Sys",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Sys"
+       }],
+       "class_name": "MClass",
+       "full_name": "test_prog::Sys",
+       "visibility": "public",
+       "modifiers": ["class"]
+}
diff --git a/src/doc/templates/tests/test_templates_json.sav/test_groups_to_full_json.res b/src/doc/templates/tests/test_templates_json.sav/test_groups_to_full_json.res
new file mode 100644 (file)
index 0000000..3fc95f5
--- /dev/null
@@ -0,0 +1,84 @@
+{
+       "name": "test_prog",
+       "synopsis": "Test program for model tools.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, ">"],
+       "class_name": "MGroup",
+       "full_name": "test_prog>",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Test program for model tools.</span>",
+       "modifiers": ["group"]
+}
+{
+       "name": "examples",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, ">", {
+               "name": "examples"
+       }, ">"],
+       "class_name": "MGroup",
+       "full_name": "test_prog>examples>",
+       "visibility": "public",
+       "modifiers": ["group"]
+}
+{
+       "name": "game",
+       "synopsis": "Gaming group",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, ">", {
+               "name": "game",
+               "synopsis": "Gaming group"
+       }, ">"],
+       "class_name": "MGroup",
+       "full_name": "test_prog>game>",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Gaming group</span>",
+       "modifiers": ["group"]
+}
+{
+       "name": "platform",
+       "synopsis": "Fictive Crappy Platform.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, ">", {
+               "name": "platform",
+               "synopsis": "Fictive Crappy Platform."
+       }, ">"],
+       "class_name": "MGroup",
+       "full_name": "test_prog>platform>",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Fictive Crappy Platform.</span>",
+       "modifiers": ["group"]
+}
+{
+       "name": "rpg",
+       "synopsis": "Role Playing Game group",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, ">", {
+               "name": "rpg",
+               "synopsis": "Role Playing Game group"
+       }, ">"],
+       "class_name": "MGroup",
+       "full_name": "test_prog>rpg>",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Role Playing Game group</span>",
+       "modifiers": ["group"]
+}
+{
+       "name": "excluded",
+       "namespace": [{
+               "name": "excluded"
+       }, ">"],
+       "class_name": "MGroup",
+       "full_name": "excluded>",
+       "visibility": "public",
+       "modifiers": ["group"]
+}
diff --git a/src/doc/templates/tests/test_templates_json.sav/test_modules_to_full_json.res b/src/doc/templates/tests/test_templates_json.sav/test_modules_to_full_json.res
new file mode 100644 (file)
index 0000000..6b46961
--- /dev/null
@@ -0,0 +1,163 @@
+{
+       "name": "game_examples",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "game_examples"
+       }],
+       "class_name": "MModule",
+       "full_name": "test_prog::game_examples",
+       "visibility": "public",
+       "modifiers": ["module"]
+}
+{
+       "name": "excluded",
+       "namespace": [{
+               "name": "excluded"
+       }, "::", {
+               "name": "excluded"
+       }],
+       "class_name": "MModule",
+       "full_name": "excluded::excluded",
+       "visibility": "public",
+       "modifiers": ["module"]
+}
+{
+       "name": "game",
+       "synopsis": "A game abstraction for RPG.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "game",
+               "synopsis": "A game abstraction for RPG."
+       }],
+       "class_name": "MModule",
+       "full_name": "test_prog::game",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">A game abstraction for RPG.</span>",
+       "modifiers": ["module"]
+}
+{
+       "name": "platform",
+       "synopsis": "Declares base types allowed on the platform.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "platform",
+               "synopsis": "Declares base types allowed on the platform."
+       }],
+       "class_name": "MModule",
+       "full_name": "test_prog::platform",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Declares base types allowed on the platform.</span>",
+       "modifiers": ["module"]
+}
+{
+       "name": "careers",
+       "synopsis": "Careers of the game.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "careers",
+               "synopsis": "Careers of the game."
+       }],
+       "class_name": "MModule",
+       "full_name": "test_prog::careers",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Careers of the game.</span>",
+       "modifiers": ["module"]
+}
+{
+       "name": "character",
+       "synopsis": "Characters are playable entity in the world.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "character",
+               "synopsis": "Characters are playable entity in the world."
+       }],
+       "class_name": "MModule",
+       "full_name": "test_prog::character",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters are playable entity in the world.</span>",
+       "modifiers": ["module"]
+}
+{
+       "name": "combat",
+       "synopsis": "COmbat interactions between characters.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "combat",
+               "synopsis": "COmbat interactions between characters."
+       }],
+       "class_name": "MModule",
+       "full_name": "test_prog::combat",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">COmbat interactions between characters.</span>",
+       "modifiers": ["module"]
+}
+{
+       "name": "races",
+       "synopsis": "Races of the game.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "races",
+               "synopsis": "Races of the game."
+       }],
+       "class_name": "MModule",
+       "full_name": "test_prog::races",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Races of the game.</span>",
+       "modifiers": ["module"]
+}
+{
+       "name": "rpg",
+       "synopsis": "A worlg RPG abstraction.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "rpg",
+               "synopsis": "A worlg RPG abstraction."
+       }],
+       "class_name": "MModule",
+       "full_name": "test_prog::rpg",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">A worlg RPG abstraction.</span>",
+       "modifiers": ["module"]
+}
+{
+       "name": "test_prog",
+       "synopsis": "A test program with a fake model to check model tools.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "test_prog",
+               "synopsis": "A test program with a fake model to check model tools."
+       }],
+       "class_name": "MModule",
+       "full_name": "test_prog::test_prog",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">A test program with a fake model to check model tools.</span>",
+       "modifiers": ["module"]
+}
+{
+       "name": "test_prog-m",
+       "namespace": [{
+               "name": "test_prog-m"
+       }],
+       "class_name": "MModule",
+       "full_name": "test_prog-m",
+       "visibility": "public",
+       "modifiers": ["module"]
+}
diff --git a/src/doc/templates/tests/test_templates_json.sav/test_packages_to_full_json.res b/src/doc/templates/tests/test_templates_json.sav/test_packages_to_full_json.res
new file mode 100644 (file)
index 0000000..8715a80
--- /dev/null
@@ -0,0 +1,25 @@
+{
+       "name": "test_prog",
+       "synopsis": "Test program for model tools.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }],
+       "class_name": "MPackage",
+       "full_name": "test_prog",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Test program for model tools.</span>",
+       "modifiers": ["package"],
+       "license": "Apache-2.0",
+       "tags": ["test", "game"]
+}
+{
+       "name": "excluded",
+       "namespace": [{
+               "name": "excluded"
+       }],
+       "class_name": "MPackage",
+       "full_name": "excluded",
+       "visibility": "public",
+       "modifiers": ["package"]
+}
diff --git a/src/doc/templates/tests/test_templates_json.sav/test_propdefs_to_full_json.res b/src/doc/templates/tests/test_templates_json.sav/test_propdefs_to_full_json.res
new file mode 100644 (file)
index 0000000..dea3470
--- /dev/null
@@ -0,0 +1,2558 @@
+{
+       "name": "OTHER",
+       "synopsis": "Used for comparisons.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "$", {
+               "name": "OTHER",
+               "synopsis": "Used for comparisons."
+       }],
+       "class_name": "MVirtualTypeDef",
+       "full_name": "test_prog$Object$OTHER",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used for comparisons.</span>",
+       "modifiers": ["type"],
+       "is_intro": true,
+       "bound": {
+               "name": "nullable Object",
+               "synopsis": "Root of everything.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>"
+       }
+}
+{
+       "name": "==",
+       "synopsis": "Is `other` equqls to `self`?",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "$", {
+               "name": "==",
+               "synopsis": "Is `other` equqls to `self`?"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Object$==",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Is <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">other</span></span></span></code> equqls to <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">self</span></span></span></code>?</span>",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "other",
+                       "mtype": {
+                               "name": "OTHER",
+                               "synopsis": "Used for comparisons.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Used for comparisons.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Bool",
+                       "synopsis": "Booleans, `true` or `false`.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               }
+       }
+}
+{
+       "name": "!=",
+       "synopsis": "Is `other` different from `self`?",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "$", {
+               "name": "!=",
+               "synopsis": "Is `other` different from `self`?"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Object$!=",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Is <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">other</span></span></span></code> different from <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">self</span></span></span></code>?</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "other",
+                       "mtype": {
+                               "name": "OTHER",
+                               "synopsis": "Used for comparisons.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Used for comparisons.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Bool",
+                       "synopsis": "Booleans, `true` or `false`.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               }
+       }
+}
+{
+       "name": "init",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "$", {
+               "name": "init"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Object$init",
+       "visibility": "public",
+       "modifiers": ["init"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "init",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "init"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Career$Object::init",
+       "visibility": "public",
+       "modifiers": ["redef", "init"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "init",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Warrior",
+               "synopsis": "Warriors are good for fighting."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "init"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Warrior$Object::init",
+       "visibility": "public",
+       "modifiers": ["redef", "init"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "init",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Magician",
+               "synopsis": "Magicians know magic and how to use it."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "init"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Magician$Object::init",
+       "visibility": "public",
+       "modifiers": ["redef", "init"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "init",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Alcoholic",
+               "synopsis": "Alcoholics are good to nothing escept taking punches."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "init"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Alcoholic$Object::init",
+       "visibility": "public",
+       "modifiers": ["redef", "init"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "init",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "init"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Race$Object::init",
+       "visibility": "public",
+       "modifiers": ["redef", "init"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "init",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Human",
+               "synopsis": "Humans are able to do everithing."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "init"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Human$Object::init",
+       "visibility": "public",
+       "modifiers": ["redef", "init"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "init",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Dwarf",
+               "synopsis": "Dwarves make strong warriors."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "init"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Dwarf$Object::init",
+       "visibility": "public",
+       "modifiers": ["redef", "init"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "init",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Elf",
+               "synopsis": "Elves make good magicians."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "init"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Elf$Object::init",
+       "visibility": "public",
+       "modifiers": ["redef", "init"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "init",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "init"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$Object::init",
+       "visibility": "public",
+       "modifiers": ["redef", "init"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "unary -",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "$", {
+               "name": "unary -"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Int$unary -",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "+",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "$", {
+               "name": "+"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Int$+",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "i",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "-",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "$", {
+               "name": "-"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Int$-",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "i",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "*",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "$", {
+               "name": "*"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Int$*",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "i",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "/",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "$", {
+               "name": "/"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Int$/",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "i",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": ">",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "$", {
+               "name": ">"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Int$>",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "i",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Bool",
+                       "synopsis": "Booleans, `true` or `false`.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               }
+       }
+}
+{
+       "name": "to_f",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "$", {
+               "name": "to_f"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Int$to_f",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": "+",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Float",
+               "synopsis": "Some services about Floats."
+       }, "$", {
+               "name": "+"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Float$+",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "f",
+                       "mtype": {
+                               "name": "Float",
+                               "synopsis": "Some services about Floats.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": "-",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Float",
+               "synopsis": "Some services about Floats."
+       }, "$", {
+               "name": "-"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Float$-",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "f",
+                       "mtype": {
+                               "name": "Float",
+                               "synopsis": "Some services about Floats.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": "*",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Float",
+               "synopsis": "Some services about Floats."
+       }, "$", {
+               "name": "*"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Float$*",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "f",
+                       "mtype": {
+                               "name": "Float",
+                               "synopsis": "Some services about Floats.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": "/",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Float",
+               "synopsis": "Some services about Floats."
+       }, "$", {
+               "name": "/"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Float$/",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "f",
+                       "mtype": {
+                               "name": "Float",
+                               "synopsis": "Some services about Floats.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": ">",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Float",
+               "synopsis": "Some services about Floats."
+       }, "$", {
+               "name": ">"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Float$>",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "f",
+                       "mtype": {
+                               "name": "Float",
+                               "synopsis": "Some services about Floats.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Bool",
+                       "synopsis": "Booleans, `true` or `false`.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               }
+       }
+}
+{
+       "name": "_strength_bonus",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "$", {
+               "name": "_strength_bonus"
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$Career$_strength_bonus",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "strength_bonus",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "$", {
+               "name": "strength_bonus"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Career$strength_bonus",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "strength_bonus=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "$", {
+               "name": "strength_bonus="
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Career$strength_bonus=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "strength_bonus",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_endurance_bonus",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "$", {
+               "name": "_endurance_bonus"
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$Career$_endurance_bonus",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "endurance_bonus",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "$", {
+               "name": "endurance_bonus"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Career$endurance_bonus",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "endurance_bonus=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "$", {
+               "name": "endurance_bonus="
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Career$endurance_bonus=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "endurance_bonus",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_intelligence_bonus",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "$", {
+               "name": "_intelligence_bonus"
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$Career$_intelligence_bonus",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "intelligence_bonus",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "$", {
+               "name": "intelligence_bonus"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Career$intelligence_bonus",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "intelligence_bonus=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "$", {
+               "name": "intelligence_bonus="
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Career$intelligence_bonus=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "intelligence_bonus",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_base_strength",
+       "synopsis": "Used to represents how strong the race is.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "$", {
+               "name": "_base_strength",
+               "synopsis": "Used to represents how strong the race is."
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$Race$_base_strength",
+       "visibility": "private",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how strong the race is.</span>",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "base_strength",
+       "synopsis": "Used to represents how strong the race is.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "$", {
+               "name": "base_strength",
+               "synopsis": "Used to represents how strong the race is."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Race$base_strength",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how strong the race is.</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "base_strength=",
+       "synopsis": "Used to represents how strong the race is.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "$", {
+               "name": "base_strength=",
+               "synopsis": "Used to represents how strong the race is."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Race$base_strength=",
+       "visibility": "protected",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how strong the race is.</span>",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "base_strength",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_base_endurance",
+       "synopsis": "Used to represents how the race can absorb damage.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "$", {
+               "name": "_base_endurance",
+               "synopsis": "Used to represents how the race can absorb damage."
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$Race$_base_endurance",
+       "visibility": "private",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how the race can absorb damage.</span>",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "base_endurance",
+       "synopsis": "Used to represents how the race can absorb damage.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "$", {
+               "name": "base_endurance",
+               "synopsis": "Used to represents how the race can absorb damage."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Race$base_endurance",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how the race can absorb damage.</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "base_endurance=",
+       "synopsis": "Used to represents how the race can absorb damage.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "$", {
+               "name": "base_endurance=",
+               "synopsis": "Used to represents how the race can absorb damage."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Race$base_endurance=",
+       "visibility": "protected",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how the race can absorb damage.</span>",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "base_endurance",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_base_intelligence",
+       "synopsis": "Is this race smart?",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "$", {
+               "name": "_base_intelligence",
+               "synopsis": "Is this race smart?"
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$Race$_base_intelligence",
+       "visibility": "private",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Is this race smart?</span>",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "base_intelligence",
+       "synopsis": "Is this race smart?",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "$", {
+               "name": "base_intelligence",
+               "synopsis": "Is this race smart?"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Race$base_intelligence",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Is this race smart?</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "base_intelligence=",
+       "synopsis": "Is this race smart?",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "$", {
+               "name": "base_intelligence=",
+               "synopsis": "Is this race smart?"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Race$base_intelligence=",
+       "visibility": "protected",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Is this race smart?</span>",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "base_intelligence",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_race",
+       "synopsis": "The `Race` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "_race",
+               "synopsis": "The `Race` of the character."
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$Character$_race",
+       "visibility": "private",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
+       }
+}
+{
+       "name": "race",
+       "synopsis": "The `Race` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "race",
+               "synopsis": "The `Race` of the character."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$race",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Race",
+                       "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
+               }
+       }
+}
+{
+       "name": "race=",
+       "synopsis": "The `Race` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "race=",
+               "synopsis": "The `Race` of the character."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$race=",
+       "visibility": "protected",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "race",
+                       "mtype": {
+                               "name": "Race",
+                               "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_career",
+       "synopsis": "The current `Career` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "_career",
+               "synopsis": "The current `Career` of the character."
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$Character$_career",
+       "visibility": "private",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "nullable Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+       }
+}
+{
+       "name": "career",
+       "synopsis": "The current `Career` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "career",
+               "synopsis": "The current `Career` of the character."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$career",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "nullable Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+               }
+       }
+}
+{
+       "name": "career=",
+       "synopsis": "The current `Career` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "career=",
+               "synopsis": "The current `Career` of the character."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$career=",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "career",
+                       "mtype": {
+                               "name": "nullable Career",
+                               "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "quit",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "quit"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$quit",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_name",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "_name"
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$Character$_name",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "String",
+               "synopsis": "Strings (there is no chars...).",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>"
+       }
+}
+{
+       "name": "name",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "name"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$name",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "String",
+                       "synopsis": "Strings (there is no chars...).",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>"
+               }
+       }
+}
+{
+       "name": "name=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "name="
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$name=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "name",
+                       "mtype": {
+                               "name": "String",
+                               "synopsis": "Strings (there is no chars...).",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_age",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "_age"
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$Character$_age",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "age",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "age"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$age",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "age=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "age="
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$age=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "age",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_sex",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "_sex"
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$Character$_sex",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "Bool",
+               "synopsis": "Booleans, `true` or `false`.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+       }
+}
+{
+       "name": "sex",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "sex"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$sex",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Bool",
+                       "synopsis": "Booleans, `true` or `false`.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               }
+       }
+}
+{
+       "name": "sex=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "sex="
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$sex=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "sex",
+                       "mtype": {
+                               "name": "Bool",
+                               "synopsis": "Booleans, `true` or `false`.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "total_strengh",
+       "synopsis": "The actual strength of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "total_strengh",
+               "synopsis": "The actual strength of the character."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$total_strengh",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The actual strength of the character.</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "total_endurance",
+       "synopsis": "The actual endurance of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "total_endurance",
+               "synopsis": "The actual endurance of the character."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$total_endurance",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The actual endurance of the character.</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "total_intelligence",
+       "synopsis": "The acutal intelligence of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "total_intelligence",
+               "synopsis": "The acutal intelligence of the character."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$total_intelligence",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The acutal intelligence of the character.</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "max_health",
+       "synopsis": "Maximum health of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "max_health",
+               "synopsis": "Maximum health of the character."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$max_health",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Maximum health of the character.</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "_health",
+       "synopsis": "The current `health` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "_health",
+               "synopsis": "The current `health` of the character."
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$Character$_health",
+       "visibility": "private",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "health",
+       "synopsis": "The current `health` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "health",
+               "synopsis": "The current `health` of the character."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$health",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "health=",
+       "synopsis": "The current `health` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "health=",
+               "synopsis": "The current `health` of the character."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Character$health=",
+       "visibility": "protected",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "health",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "dps",
+       "synopsis": "Damage per second inflicted by this weapon.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Weapon",
+               "synopsis": "Something that can be used to attack someone and inflict damage."
+       }, "$", {
+               "name": "dps",
+               "synopsis": "Damage per second inflicted by this weapon."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Weapon$dps",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Damage per second inflicted by this weapon.</span>",
+       "modifiers": ["abstract", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": "dps",
+       "synopsis": "Dwarf `dps` are based on the dwarf `base_endurance` (represents weight here)",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "combat",
+               "synopsis": "COmbat interactions between characters."
+       }, "$", {
+               "name": "Dwarf",
+               "synopsis": "Dwarves make strong warriors."
+       }, "$", {
+               "name": "Weapon",
+               "synopsis": "Something that can be used to attack someone and inflict damage."
+       }, "::", {
+               "name": "dps",
+               "synopsis": "Dwarf `dps` are based on the dwarf `base_endurance` (represents weight here)"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog::combat$Dwarf$Weapon::dps",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Dwarf <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">dps</span></span></span></code> are based on the dwarf <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">base_endurance</span></span></span></code> (represents weight here)</span>",
+       "modifiers": ["redef", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": "hit_points",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }, "$", {
+               "name": "hit_points"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Combatable$hit_points",
+       "visibility": "public",
+       "modifiers": ["abstract", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "hit_points",
+       "synopsis": "Use character `health` to determines hit_points.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "combat",
+               "synopsis": "COmbat interactions between characters."
+       }, "$", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "$", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }, "::", {
+               "name": "hit_points",
+               "synopsis": "Use character `health` to determines hit_points."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog::combat$Character$Combatable::hit_points",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Use character <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> to determines hit_points.</span>",
+       "modifiers": ["redef", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "attack",
+       "synopsis": "A `Combatable` can attack a `target` that is also a `Combatable`.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }, "$", {
+               "name": "attack",
+               "synopsis": "A `Combatable` can attack a `target` that is also a `Combatable`."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Combatable$attack",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code> can attack a <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">target</span></span></span></code> that is also a <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code>.</span>",
+       "modifiers": ["abstract", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 2,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "target",
+                       "mtype": {
+                               "name": "Combatable",
+                               "synopsis": "Something that can be combatted, it can `attack` and `defend`.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>"
+                       }
+               }, {
+                       "is_vararg": false,
+                       "name": "weapon",
+                       "mtype": {
+                               "name": "Weapon",
+                               "synopsis": "Something that can be used to attack someone and inflict damage.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be used to attack someone and inflict damage.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "direct_attack",
+       "synopsis": "Like `attack` but cannot be defended.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }, "$", {
+               "name": "direct_attack",
+               "synopsis": "Like `attack` but cannot be defended."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Combatable$direct_attack",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Like <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> but cannot be defended.</span>",
+       "modifiers": ["abstract", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 2,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "target",
+                       "mtype": {
+                               "name": "Combatable",
+                               "synopsis": "Something that can be combatted, it can `attack` and `defend`.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>"
+                       }
+               }, {
+                       "is_vararg": false,
+                       "name": "weapon",
+                       "mtype": {
+                               "name": "Weapon",
+                               "synopsis": "Something that can be used to attack someone and inflict damage.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be used to attack someone and inflict damage.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "defend",
+       "synopsis": "`Combatable` can defend against attacks.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }, "$", {
+               "name": "defend",
+               "synopsis": "`Combatable` can defend against attacks."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Combatable$defend",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\"><code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code> can defend against attacks.</span>",
+       "modifiers": ["abstract", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "hit",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "is_dead",
+       "synopsis": "Is the character still have hit_points?",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }, "$", {
+               "name": "is_dead",
+               "synopsis": "Is the character still have hit_points?"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Combatable$is_dead",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Is the character still have hit_points?</span>",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Bool",
+                       "synopsis": "Booleans, `true` or `false`.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               }
+       }
+}
+{
+       "name": "player_characters",
+       "synopsis": "Characters played by human players.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "$", {
+               "name": "player_characters",
+               "synopsis": "Characters played by human players."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Game$player_characters",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters played by human players.</span>",
+       "modifiers": ["abstract", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "List[Character]",
+                       "synopsis": "List of things.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+               }
+       }
+}
+{
+       "name": "player_characters",
+       "synopsis": "Characters played by human players.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "$", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "::", {
+               "name": "player_characters",
+               "synopsis": "Characters played by human players."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$MyGame$Game::player_characters",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters played by human players.</span>",
+       "modifiers": ["redef", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "List[Character]",
+                       "synopsis": "List of things.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+               }
+       }
+}
+{
+       "name": "computer_characters",
+       "synopsis": "Characters players by computer.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "$", {
+               "name": "computer_characters",
+               "synopsis": "Characters players by computer."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Game$computer_characters",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters players by computer.</span>",
+       "modifiers": ["abstract", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "List[Character]",
+                       "synopsis": "List of things.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+               }
+       }
+}
+{
+       "name": "computer_characters",
+       "synopsis": "Characters players by computer.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "$", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "::", {
+               "name": "computer_characters",
+               "synopsis": "Characters players by computer."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$MyGame$Game::computer_characters",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters players by computer.</span>",
+       "modifiers": ["redef", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "List[Character]",
+                       "synopsis": "List of things.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+               }
+       }
+}
+{
+       "name": "start_game",
+       "synopsis": "Start the game.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "$", {
+               "name": "start_game",
+               "synopsis": "Start the game."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Game$start_game",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Start the game.</span>",
+       "modifiers": ["abstract", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "start_game",
+       "synopsis": "Start the game.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "$", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "::", {
+               "name": "start_game",
+               "synopsis": "Start the game."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$MyGame$Game::start_game",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Start the game.</span>",
+       "modifiers": ["redef", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "pause_game",
+       "synopsis": "Pause the game.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "$", {
+               "name": "pause_game",
+               "synopsis": "Pause the game."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Game$pause_game",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Pause the game.</span>",
+       "modifiers": ["abstract", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "pause_game",
+       "synopsis": "Pause the game.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "$", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "::", {
+               "name": "pause_game",
+               "synopsis": "Pause the game."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$MyGame$Game::pause_game",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Pause the game.</span>",
+       "modifiers": ["redef", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "stop_game",
+       "synopsis": "Stop the game.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "$", {
+               "name": "stop_game",
+               "synopsis": "Stop the game."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Game$stop_game",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Stop the game.</span>",
+       "modifiers": ["abstract", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "stop_game",
+       "synopsis": "Stop the game.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "$", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "::", {
+               "name": "stop_game",
+               "synopsis": "Stop the game."
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$MyGame$Game::stop_game",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Stop the game.</span>",
+       "modifiers": ["redef", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_player_characters",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "$", {
+               "name": "_player_characters"
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$MyGame$_player_characters",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "List[Character]",
+               "synopsis": "List of things.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+       }
+}
+{
+       "name": "player_characters=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "$", {
+               "name": "player_characters="
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$MyGame$player_characters=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "player_characters",
+                       "mtype": {
+                               "name": "List[Character]",
+                               "synopsis": "List of things.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_computer_characters",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "$", {
+               "name": "_computer_characters"
+       }],
+       "class_name": "MAttributeDef",
+       "full_name": "test_prog$MyGame$_computer_characters",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "is_intro": true,
+       "static_mtype": {
+               "name": "List[Character]",
+               "synopsis": "List of things.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+       }
+}
+{
+       "name": "computer_characters=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "$", {
+               "name": "computer_characters="
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$MyGame$computer_characters=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "computer_characters",
+                       "mtype": {
+                               "name": "List[Character]",
+                               "synopsis": "List of things.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "start",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Starter"
+       }, "$", {
+               "name": "start"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Starter$start",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "main",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "$", {
+               "name": "Sys"
+       }, "$", {
+               "name": "main"
+       }],
+       "class_name": "MMethodDef",
+       "full_name": "test_prog$Sys$main",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "is_intro": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
diff --git a/src/doc/templates/tests/test_templates_json.sav/test_props_to_full_json.res b/src/doc/templates/tests/test_templates_json.sav/test_props_to_full_json.res
new file mode 100644 (file)
index 0000000..bb15a19
--- /dev/null
@@ -0,0 +1,2098 @@
+{
+       "name": "OTHER",
+       "synopsis": "Used for comparisons.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "OTHER",
+               "synopsis": "Used for comparisons."
+       }],
+       "class_name": "MVirtualTypeProp",
+       "full_name": "test_prog::Object::OTHER",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used for comparisons.</span>",
+       "modifiers": ["type"],
+       "bound": {
+               "name": "nullable Object",
+               "synopsis": "Root of everything.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Root of everything.</span>"
+       }
+}
+{
+       "name": "==",
+       "synopsis": "Is `other` equqls to `self`?",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "==",
+               "synopsis": "Is `other` equqls to `self`?"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Object::==",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Is <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">other</span></span></span></code> equqls to <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">self</span></span></span></code>?</span>",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "other",
+                       "mtype": {
+                               "name": "OTHER",
+                               "synopsis": "Used for comparisons.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Used for comparisons.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Bool",
+                       "synopsis": "Booleans, `true` or `false`.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               }
+       }
+}
+{
+       "name": "!=",
+       "synopsis": "Is `other` different from `self`?",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "!=",
+               "synopsis": "Is `other` different from `self`?"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Object::!=",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Is <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">other</span></span></span></code> different from <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">self</span></span></span></code>?</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "other",
+                       "mtype": {
+                               "name": "OTHER",
+                               "synopsis": "Used for comparisons.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Used for comparisons.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Bool",
+                       "synopsis": "Booleans, `true` or `false`.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               }
+       }
+}
+{
+       "name": "init",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Object",
+               "synopsis": "Root of everything."
+       }, "::", {
+               "name": "init"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Object::init",
+       "visibility": "public",
+       "modifiers": ["init"],
+       "is_init": true,
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "unary -",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "::", {
+               "name": "unary -"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Int::unary -",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "+",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "::", {
+               "name": "+"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Int::+",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "i",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "-",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "::", {
+               "name": "-"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Int::-",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "i",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "*",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "::", {
+               "name": "*"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Int::*",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "i",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "/",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "::", {
+               "name": "/"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Int::/",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "i",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": ">",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "::", {
+               "name": ">"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Int::>",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "i",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Bool",
+                       "synopsis": "Booleans, `true` or `false`.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               }
+       }
+}
+{
+       "name": "to_f",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Int",
+               "synopsis": "Some services about Integers."
+       }, "::", {
+               "name": "to_f"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Int::to_f",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": "+",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Float",
+               "synopsis": "Some services about Floats."
+       }, "::", {
+               "name": "+"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Float::+",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "f",
+                       "mtype": {
+                               "name": "Float",
+                               "synopsis": "Some services about Floats.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": "-",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Float",
+               "synopsis": "Some services about Floats."
+       }, "::", {
+               "name": "-"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Float::-",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "f",
+                       "mtype": {
+                               "name": "Float",
+                               "synopsis": "Some services about Floats.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": "*",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Float",
+               "synopsis": "Some services about Floats."
+       }, "::", {
+               "name": "*"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Float::*",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "f",
+                       "mtype": {
+                               "name": "Float",
+                               "synopsis": "Some services about Floats.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": "/",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Float",
+               "synopsis": "Some services about Floats."
+       }, "::", {
+               "name": "/"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Float::/",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "f",
+                       "mtype": {
+                               "name": "Float",
+                               "synopsis": "Some services about Floats.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": ">",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Float",
+               "synopsis": "Some services about Floats."
+       }, "::", {
+               "name": ">"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Float::>",
+       "visibility": "public",
+       "modifiers": ["intern", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "f",
+                       "mtype": {
+                               "name": "Float",
+                               "synopsis": "Some services about Floats.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Bool",
+                       "synopsis": "Booleans, `true` or `false`.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               }
+       }
+}
+{
+       "name": "_strength_bonus",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "careers",
+               "synopsis": "Careers of the game."
+       }, "::", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "::", {
+               "name": "_strength_bonus"
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::careers::Career::_strength_bonus",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "strength_bonus",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "::", {
+               "name": "strength_bonus"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Career::strength_bonus",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "strength_bonus=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "::", {
+               "name": "strength_bonus="
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Career::strength_bonus=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "strength_bonus",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_endurance_bonus",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "careers",
+               "synopsis": "Careers of the game."
+       }, "::", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "::", {
+               "name": "_endurance_bonus"
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::careers::Career::_endurance_bonus",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "endurance_bonus",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "::", {
+               "name": "endurance_bonus"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Career::endurance_bonus",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "endurance_bonus=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "::", {
+               "name": "endurance_bonus="
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Career::endurance_bonus=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "endurance_bonus",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_intelligence_bonus",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "careers",
+               "synopsis": "Careers of the game."
+       }, "::", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "::", {
+               "name": "_intelligence_bonus"
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::careers::Career::_intelligence_bonus",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "intelligence_bonus",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "::", {
+               "name": "intelligence_bonus"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Career::intelligence_bonus",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "intelligence_bonus=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character."
+       }, "::", {
+               "name": "intelligence_bonus="
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Career::intelligence_bonus=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "intelligence_bonus",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_base_strength",
+       "synopsis": "Used to represents how strong the race is.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "races",
+               "synopsis": "Races of the game."
+       }, "::", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "::", {
+               "name": "_base_strength",
+               "synopsis": "Used to represents how strong the race is."
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::races::Race::_base_strength",
+       "visibility": "private",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how strong the race is.</span>",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "base_strength",
+       "synopsis": "Used to represents how strong the race is.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "::", {
+               "name": "base_strength",
+               "synopsis": "Used to represents how strong the race is."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Race::base_strength",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how strong the race is.</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "base_strength=",
+       "synopsis": "Used to represents how strong the race is.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "::", {
+               "name": "base_strength=",
+               "synopsis": "Used to represents how strong the race is."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Race::base_strength=",
+       "visibility": "protected",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how strong the race is.</span>",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "base_strength",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_base_endurance",
+       "synopsis": "Used to represents how the race can absorb damage.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "races",
+               "synopsis": "Races of the game."
+       }, "::", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "::", {
+               "name": "_base_endurance",
+               "synopsis": "Used to represents how the race can absorb damage."
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::races::Race::_base_endurance",
+       "visibility": "private",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how the race can absorb damage.</span>",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "base_endurance",
+       "synopsis": "Used to represents how the race can absorb damage.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "::", {
+               "name": "base_endurance",
+               "synopsis": "Used to represents how the race can absorb damage."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Race::base_endurance",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how the race can absorb damage.</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "base_endurance=",
+       "synopsis": "Used to represents how the race can absorb damage.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "::", {
+               "name": "base_endurance=",
+               "synopsis": "Used to represents how the race can absorb damage."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Race::base_endurance=",
+       "visibility": "protected",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Used to represents how the race can absorb damage.</span>",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "base_endurance",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_base_intelligence",
+       "synopsis": "Is this race smart?",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "races",
+               "synopsis": "Races of the game."
+       }, "::", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "::", {
+               "name": "_base_intelligence",
+               "synopsis": "Is this race smart?"
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::races::Race::_base_intelligence",
+       "visibility": "private",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Is this race smart?</span>",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "base_intelligence",
+       "synopsis": "Is this race smart?",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "::", {
+               "name": "base_intelligence",
+               "synopsis": "Is this race smart?"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Race::base_intelligence",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Is this race smart?</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "base_intelligence=",
+       "synopsis": "Is this race smart?",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life."
+       }, "::", {
+               "name": "base_intelligence=",
+               "synopsis": "Is this race smart?"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Race::base_intelligence=",
+       "visibility": "protected",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Is this race smart?</span>",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "base_intelligence",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_race",
+       "synopsis": "The `Race` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "character",
+               "synopsis": "Characters are playable entity in the world."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "_race",
+               "synopsis": "The `Race` of the character."
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::character::Character::_race",
+       "visibility": "private",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "Race",
+               "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
+       }
+}
+{
+       "name": "race",
+       "synopsis": "The `Race` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "race",
+               "synopsis": "The `Race` of the character."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::race",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Race",
+                       "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
+               }
+       }
+}
+{
+       "name": "race=",
+       "synopsis": "The `Race` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "race=",
+               "synopsis": "The `Race` of the character."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::race=",
+       "visibility": "protected",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Race</span></span></span></code> of the character.</span>",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "race",
+                       "mtype": {
+                               "name": "Race",
+                               "synopsis": "Race determines basic characteristics and what the character will be able to do in life.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Race determines basic characteristics and what the character will be able to do in life.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_career",
+       "synopsis": "The current `Career` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "character",
+               "synopsis": "Characters are playable entity in the world."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "_career",
+               "synopsis": "The current `Career` of the character."
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::character::Character::_career",
+       "visibility": "private",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "nullable Career",
+               "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+       }
+}
+{
+       "name": "career",
+       "synopsis": "The current `Career` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "career",
+               "synopsis": "The current `Career` of the character."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::career",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "nullable Career",
+                       "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+               }
+       }
+}
+{
+       "name": "career=",
+       "synopsis": "The current `Career` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "career=",
+               "synopsis": "The current `Career` of the character."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::career=",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> of the character.</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "career",
+                       "mtype": {
+                               "name": "nullable Career",
+                               "synopsis": "A `Career` gives a characteristic bonus or malus to the character.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Career</span></span></span></code> gives a characteristic bonus or malus to the character.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "quit",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "quit"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::quit",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_name",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "character",
+               "synopsis": "Characters are playable entity in the world."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "_name"
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::character::Character::_name",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "String",
+               "synopsis": "Strings (there is no chars...).",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>"
+       }
+}
+{
+       "name": "name",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "name"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::name",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "String",
+                       "synopsis": "Strings (there is no chars...).",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>"
+               }
+       }
+}
+{
+       "name": "name=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "name="
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::name=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "name",
+                       "mtype": {
+                               "name": "String",
+                               "synopsis": "Strings (there is no chars...).",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Strings (there is no chars...).</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_age",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "character",
+               "synopsis": "Characters are playable entity in the world."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "_age"
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::character::Character::_age",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "age",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "age"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::age",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "age=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "age="
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::age=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "age",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_sex",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "character",
+               "synopsis": "Characters are playable entity in the world."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "_sex"
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::character::Character::_sex",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "Bool",
+               "synopsis": "Booleans, `true` or `false`.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+       }
+}
+{
+       "name": "sex",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "sex"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::sex",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Bool",
+                       "synopsis": "Booleans, `true` or `false`.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               }
+       }
+}
+{
+       "name": "sex=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "sex="
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::sex=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "sex",
+                       "mtype": {
+                               "name": "Bool",
+                               "synopsis": "Booleans, `true` or `false`.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "total_strengh",
+       "synopsis": "The actual strength of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "total_strengh",
+               "synopsis": "The actual strength of the character."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::total_strengh",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The actual strength of the character.</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "total_endurance",
+       "synopsis": "The actual endurance of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "total_endurance",
+               "synopsis": "The actual endurance of the character."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::total_endurance",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The actual endurance of the character.</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "total_intelligence",
+       "synopsis": "The acutal intelligence of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "total_intelligence",
+               "synopsis": "The acutal intelligence of the character."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::total_intelligence",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The acutal intelligence of the character.</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "max_health",
+       "synopsis": "Maximum health of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "max_health",
+               "synopsis": "Maximum health of the character."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::max_health",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Maximum health of the character.</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "_health",
+       "synopsis": "The current `health` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "character",
+               "synopsis": "Characters are playable entity in the world."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "_health",
+               "synopsis": "The current `health` of the character."
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::character::Character::_health",
+       "visibility": "private",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "Int",
+               "synopsis": "Some services about Integers.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+       }
+}
+{
+       "name": "health",
+       "synopsis": "The current `health` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "health",
+               "synopsis": "The current `health` of the character."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::health",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "health=",
+       "synopsis": "The current `health` of the character.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Character",
+               "synopsis": "Characters can be played by both the human or the machine."
+       }, "::", {
+               "name": "health=",
+               "synopsis": "The current `health` of the character."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Character::health=",
+       "visibility": "protected",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">The current <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">health</span></span></span></code> of the character.</span>",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "health",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "dps",
+       "synopsis": "Damage per second inflicted by this weapon.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Weapon",
+               "synopsis": "Something that can be used to attack someone and inflict damage."
+       }, "::", {
+               "name": "dps",
+               "synopsis": "Damage per second inflicted by this weapon."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Weapon::dps",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Damage per second inflicted by this weapon.</span>",
+       "modifiers": ["abstract", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Float",
+                       "synopsis": "Some services about Floats.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Floats.</span>"
+               }
+       }
+}
+{
+       "name": "hit_points",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }, "::", {
+               "name": "hit_points"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Combatable::hit_points",
+       "visibility": "public",
+       "modifiers": ["abstract", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "attack",
+       "synopsis": "A `Combatable` can attack a `target` that is also a `Combatable`.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }, "::", {
+               "name": "attack",
+               "synopsis": "A `Combatable` can attack a `target` that is also a `Combatable`."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Combatable::attack",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">A <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code> can attack a <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">target</span></span></span></code> that is also a <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code>.</span>",
+       "modifiers": ["abstract", "fun"],
+       "msignature": {
+               "arity": 2,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "target",
+                       "mtype": {
+                               "name": "Combatable",
+                               "synopsis": "Something that can be combatted, it can `attack` and `defend`.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>"
+                       }
+               }, {
+                       "is_vararg": false,
+                       "name": "weapon",
+                       "mtype": {
+                               "name": "Weapon",
+                               "synopsis": "Something that can be used to attack someone and inflict damage.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be used to attack someone and inflict damage.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "direct_attack",
+       "synopsis": "Like `attack` but cannot be defended.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }, "::", {
+               "name": "direct_attack",
+               "synopsis": "Like `attack` but cannot be defended."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Combatable::direct_attack",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Like <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> but cannot be defended.</span>",
+       "modifiers": ["abstract", "fun"],
+       "msignature": {
+               "arity": 2,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "target",
+                       "mtype": {
+                               "name": "Combatable",
+                               "synopsis": "Something that can be combatted, it can `attack` and `defend`.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be combatted, it can <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">attack</span></span></span></code> and <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_i\">defend</span></span></span></code>.</span>"
+                       }
+               }, {
+                       "is_vararg": false,
+                       "name": "weapon",
+                       "mtype": {
+                               "name": "Weapon",
+                               "synopsis": "Something that can be used to attack someone and inflict damage.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Something that can be used to attack someone and inflict damage.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "defend",
+       "synopsis": "`Combatable` can defend against attacks.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }, "::", {
+               "name": "defend",
+               "synopsis": "`Combatable` can defend against attacks."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Combatable::defend",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\"><code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_t\">Combatable</span></span></span></code> can defend against attacks.</span>",
+       "modifiers": ["abstract", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "hit",
+                       "mtype": {
+                               "name": "Int",
+                               "synopsis": "Some services about Integers.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+                       }
+               }],
+               "return_mtype": {
+                       "name": "Int",
+                       "synopsis": "Some services about Integers.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Some services about Integers.</span>"
+               }
+       }
+}
+{
+       "name": "is_dead",
+       "synopsis": "Is the character still have hit_points?",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Combatable",
+               "synopsis": "Something that can be combatted, it can `attack` and `defend`."
+       }, "::", {
+               "name": "is_dead",
+               "synopsis": "Is the character still have hit_points?"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Combatable::is_dead",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Is the character still have hit_points?</span>",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "Bool",
+                       "synopsis": "Booleans, `true` or `false`.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">Booleans, <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">true</span></span></span></code> or <code class=\"nitcode\"><span class=\"nitcode\"><span class=\"line\"><span class=\"nc_k\">false</span></span></span></code>.</span>"
+               }
+       }
+}
+{
+       "name": "player_characters",
+       "synopsis": "Characters played by human players.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "::", {
+               "name": "player_characters",
+               "synopsis": "Characters played by human players."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Game::player_characters",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters played by human players.</span>",
+       "modifiers": ["abstract", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "List[Character]",
+                       "synopsis": "List of things.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+               }
+       }
+}
+{
+       "name": "computer_characters",
+       "synopsis": "Characters players by computer.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "::", {
+               "name": "computer_characters",
+               "synopsis": "Characters players by computer."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Game::computer_characters",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Characters players by computer.</span>",
+       "modifiers": ["abstract", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": {
+                       "name": "List[Character]",
+                       "synopsis": "List of things.",
+                       "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+               }
+       }
+}
+{
+       "name": "start_game",
+       "synopsis": "Start the game.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "::", {
+               "name": "start_game",
+               "synopsis": "Start the game."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Game::start_game",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Start the game.</span>",
+       "modifiers": ["abstract", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "pause_game",
+       "synopsis": "Pause the game.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "::", {
+               "name": "pause_game",
+               "synopsis": "Pause the game."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Game::pause_game",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Pause the game.</span>",
+       "modifiers": ["abstract", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "stop_game",
+       "synopsis": "Stop the game.",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Game",
+               "synopsis": "This is the interface you have to implement to use ure gaming platform."
+       }, "::", {
+               "name": "stop_game",
+               "synopsis": "Stop the game."
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Game::stop_game",
+       "visibility": "public",
+       "html_synopsis": "<span class=\"synopsys nitdoc\">Stop the game.</span>",
+       "modifiers": ["abstract", "fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_player_characters",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "game_examples"
+       }, "::", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "::", {
+               "name": "_player_characters"
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::game_examples::MyGame::_player_characters",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "List[Character]",
+               "synopsis": "List of things.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+       }
+}
+{
+       "name": "player_characters=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "::", {
+               "name": "player_characters="
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::MyGame::player_characters=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "player_characters",
+                       "mtype": {
+                               "name": "List[Character]",
+                               "synopsis": "List of things.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "_computer_characters",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "game_examples"
+       }, "::", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "::", {
+               "name": "_computer_characters"
+       }],
+       "class_name": "MAttribute",
+       "full_name": "test_prog::game_examples::MyGame::_computer_characters",
+       "visibility": "private",
+       "modifiers": ["private", "var"],
+       "static_mtype": {
+               "name": "List[Character]",
+               "synopsis": "List of things.",
+               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+       }
+}
+{
+       "name": "computer_characters=",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "MyGame",
+               "synopsis": "This is an example of how to implement the Game interface"
+       }, "::", {
+               "name": "computer_characters="
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::MyGame::computer_characters=",
+       "visibility": "protected",
+       "modifiers": ["protected", "fun"],
+       "msignature": {
+               "arity": 1,
+               "mparameters": [{
+                       "is_vararg": false,
+                       "name": "computer_characters",
+                       "mtype": {
+                               "name": "List[Character]",
+                               "synopsis": "List of things.",
+                               "html_synopsis": "<span class=\"synopsys nitdoc\">List of things.</span>"
+                       }
+               }],
+               "return_mtype": null
+       }
+}
+{
+       "name": "start",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Starter"
+       }, "::", {
+               "name": "start"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Starter::start",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
+{
+       "name": "main",
+       "namespace": [{
+               "name": "test_prog",
+               "synopsis": "Test program for model tools."
+       }, "::", {
+               "name": "Sys"
+       }, "::", {
+               "name": "main"
+       }],
+       "class_name": "MMethod",
+       "full_name": "test_prog::Sys::main",
+       "visibility": "public",
+       "modifiers": ["fun"],
+       "msignature": {
+               "arity": 0,
+               "mparameters": [],
+               "return_mtype": null
+       }
+}
diff --git a/src/doc/templates/tests/test_templates_json.sav/test_refs_to_full_json.res b/src/doc/templates/tests/test_templates_json.sav/test_refs_to_full_json.res
new file mode 100644 (file)
index 0000000..b0034b7
--- /dev/null
@@ -0,0 +1,11 @@
+{
+       "name": "test_prog",
+       "synopsis": "Test program for model tools."
+}
+{
+       "name": "game_examples"
+}
+{
+       "name": "Object",
+       "synopsis": "Root of everything."
+}
diff --git a/src/doc/term/term.nit b/src/doc/term/term.nit
new file mode 100644 (file)
index 0000000..a82d7b8
--- /dev/null
@@ -0,0 +1,349 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module term
+
+import commands::commands_parser
+import templates::templates_term
+
+redef class CommandParser
+
+       fun execute(query: String, no_color: nullable Bool) do
+               var cmd = self.parse(query)
+               var error = self.error
+
+               # If not a command, try a comment query
+               if cmd == null and error isa CmdParserError then
+                       error = null
+                       cmd = new CmdComment(view, mentity_name = query)
+                       var opts = new HashMap[String, String]
+                       var status = cmd.parser_init(query, opts)
+                       if not status isa CmdSuccess then error = status
+               end
+
+               if error isa CmdError or error isa CmdWarning then
+                       error.print_message(no_color)
+                       print ""
+               end
+               cmd.as(not null).execute(no_color)
+       end
+end
+
+redef class DocCommand
+       fun execute(no_color: nullable Bool) is abstract
+end
+
+redef class CmdMessage
+       fun print_message(no_color: nullable Bool) do print to_s
+end
+
+redef class CmdError
+       redef fun print_message(no_color) do
+               var res = "Error: {to_s}"
+               if no_color == null or not no_color then res = res.bold.red
+               print res
+       end
+end
+
+redef class CmdWarning
+       redef fun print_message(no_color) do
+               var res = "Warning: {to_s}"
+               if no_color == null or not no_color then res = res.bold.yellow
+               print res
+       end
+end
+
+# Model queries
+
+redef class ErrorMEntityNotFound
+       redef fun print_message(no_color) do
+               if no_color == null or not no_color then
+                       print "No result found for `{mentity_name.blue}`...".bold
+               else
+                       print "No result found for `{mentity_name}`..."
+               end
+               print ""
+               if suggestions.not_empty then
+                       print "Did you mean?"
+                       print ""
+                       for s in suggestions do
+                               print s.cs_list_item(no_color)
+                               print ""
+                       end
+               end
+       end
+end
+
+redef class ErrorMEntityConflict
+       redef fun print_message(no_color) do
+               if no_color == null or not no_color then
+                       print "Multiple results found for `{mentity_name.blue}`...".bold
+               else
+                       print "Multiple results found for `{mentity_name}`..."
+               end
+               print ""
+               if conflicts.not_empty then
+                       print "Did you mean?"
+                       print ""
+                       for s in conflicts do
+                               print s.cs_list_item(no_color)
+                               print ""
+                       end
+               end
+       end
+end
+
+redef class CmdList
+       fun print_list(list_title: nullable String, list_items: nullable Array[MEntity], no_color: nullable Bool) do
+               if list_title != null then
+                       if no_color == null or not no_color then
+                               print list_title.bold
+                       else
+                               print list_title
+                       end
+                       print ""
+               end
+               if list_items != null and list_items.not_empty then
+                       for mentity in list_items do
+                               print mentity.cs_list_item(no_color)
+                               print ""
+                       end
+               else
+                       print "None."
+               end
+       end
+end
+
+redef class CmdComment
+       redef fun execute(no_color) do
+               var mentity = self.mentity
+               if mentity == null then return
+
+               var full_name = mentity.cs_full_name(no_color)
+               if no_color == null or not no_color then
+                       print "Documentation for `{full_name}`:".bold
+               else
+                       print "Documentation for `{full_name}`:"
+               end
+               print ""
+               print " {mentity.cs_icon(no_color)} {mentity.cs_full_name(no_color)}"
+               print "   {mentity.cs_declaration(no_color)}"
+               print "   {mentity.cs_location(no_color)}"
+               print ""
+               var mdoc = self.mdoc
+               if mdoc == null then return
+               if full_doc then
+                       print mdoc.cs_comment(no_color, 3)
+               else
+                       print "   {mdoc.cs_short_comment(no_color)}\n"
+               end
+       end
+end
+
+redef class CmdAncestors
+       redef fun execute(no_color) do
+               var full_name = mentity.as(not null).cs_full_name(no_color)
+               print_list("Ancestors for `{full_name}`:", results, no_color)
+       end
+end
+
+redef class CmdParents
+       redef fun execute(no_color) do
+               var full_name = mentity.as(not null).cs_full_name(no_color)
+               print_list("Parents for `{full_name}`:", results, no_color)
+       end
+end
+
+redef class CmdChildren
+       redef fun execute(no_color) do
+               var full_name = mentity.as(not null).cs_full_name(no_color)
+               print_list("Children for `{full_name}`:", results, no_color)
+       end
+end
+
+redef class CmdDescendants
+       redef fun execute(no_color) do
+               var full_name = mentity.as(not null).cs_full_name(no_color)
+               print_list("Descendants for `{full_name}`:", results, no_color)
+       end
+end
+
+redef class CmdLinearization
+       redef fun execute(no_color) do
+               var full_name = mentity.as(not null).cs_full_name(no_color)
+               print_list("Linearization for `{full_name}`:", results, no_color)
+       end
+end
+
+redef class CmdSearch
+       redef fun execute(no_color) do
+               print_list("Search results for `{query.as(not null)}`:", results, no_color)
+       end
+end
+
+redef class CmdModelEntities
+       redef fun execute(no_color) do
+               var kind = self.kind
+               if no_color != null and not no_color then kind = kind.blue
+               print_list("MEntities for kind `{kind}`:", results, no_color)
+       end
+end
+
+redef class CmdFeatures
+       redef fun execute(no_color) do
+               var full_name = mentity.as(not null).cs_full_name(no_color)
+               print_list("Features for `{full_name}`:", results, no_color)
+       end
+end
+
+redef class CmdEntityCode
+
+       redef var format = "ansi" is optional
+
+       redef fun execute(no_color) do
+               var mentity = self.mentity
+               if mentity == null then return
+
+               var title = "Code for `{mentity.cs_full_name(no_color)}`:"
+               if no_color == null or not no_color then
+                       print title.bold
+               else
+                       print title
+               end
+               if no_color == null or not no_color then
+                       var ansi = render_code(node)
+                       if ansi != null then
+                               print "~~~"
+                               print ansi.write_to_string
+                               print "~~~"
+                       end
+               else
+                       printn mentity.cs_source_code
+               end
+       end
+end
+
+redef class CmdGraph
+       redef fun execute(no_color) do
+               format = "dot"
+               var dot = self.render
+               if dot == null then return
+               var f = new ProcessWriter("dot", "-Txlib")
+               f.write dot.write_to_string
+               f.close
+               f.wait
+       end
+end
+
+# CmdUsage
+
+redef class CmdCall
+       redef fun execute(no_color) do
+               var full_name = mentity.as(not null).cs_full_name(no_color)
+               print_list("Methods calling `{full_name}`:", results, no_color)
+       end
+end
+
+redef class CmdNew
+       redef fun execute(no_color) do
+               var full_name = mentity.as(not null).cs_full_name(no_color)
+               print_list("Methods intializing `{full_name}`:", results, no_color)
+       end
+end
+
+redef class CmdReturn
+       redef fun execute(no_color) do
+               var full_name = mentity.as(not null).cs_full_name(no_color)
+               print_list("Methods returning `{full_name}`:", results, no_color)
+       end
+end
+
+redef class CmdParam
+       redef fun execute(no_color) do
+               var full_name = mentity.as(not null).cs_full_name(no_color)
+               print_list("Methods accepting `{full_name}` as parameter:", results, no_color)
+       end
+end
+
+# CmdCatalog
+
+redef class CmdCatalogPackages
+       redef fun execute(no_color) do
+               print_list("Packages from catalog:", results, no_color)
+       end
+end
+
+redef class CmdCatalogStats
+       redef fun execute(no_color) do
+               if no_color == null or not no_color then
+                       print "Catalog statistics:".bold
+               else
+                       print "Catalog statistics:"
+               end
+
+               var stats = self.stats.as(not null)
+               print " * {stats.packages} packages"
+               print " * {stats.modules} modules"
+               print " * {stats.methods} methods"
+               print " * {stats.classes} classes"
+               print " * {stats.loc} lines of code"
+               print " * {stats.contributors} contributors"
+               print " * {stats.maintainers} maintainers"
+               print " * {stats.tags} tags"
+       end
+end
+
+redef class CmdCatalogTags
+       redef fun execute(no_color) do
+               if no_color == null or not no_color then
+                       print "Tags from catalog:".bold
+               else
+                       print "Tags from catalog:"
+               end
+
+               print ""
+               var counts = self.packages_count_by_tags.as(not null)
+               for tag, count in counts do
+                       if no_color == null or not no_color then
+                               print " * {tag.blue.bold}: {count} packages"
+                       else
+                               print " * {tag}: {count} packages"
+                       end
+               end
+       end
+end
+
+redef class CmdCatalogTag
+       redef fun execute(no_color) do
+               var tag = self.tag.as(not null)
+               if no_color == null or not no_color then tag = tag.blue.bold
+               print_list("Packages tagged with `{tag}`:", results, no_color)
+       end
+end
+
+redef class CmdCatalogMaintaining
+       redef fun execute(no_color) do
+               var name = self.person_name.as(not null)
+               if no_color == null or not no_color then name = name.blue.bold
+               print_list("Packages maintained by `{name}`:", results, no_color)
+       end
+end
+
+redef class CmdCatalogContributing
+       redef fun execute(no_color) do
+               var name = self.person_name.as(not null)
+               if no_color == null or not no_color then name = name.blue.bold
+               print_list("Packages contributed by `{name}`:", results, no_color)
+       end
+end
diff --git a/src/doc/term/tests/test_term.nit b/src/doc/term/tests/test_term.nit
new file mode 100644 (file)
index 0000000..08530da
--- /dev/null
@@ -0,0 +1,202 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_term is test
+
+import term
+import commands::test_commands_catalog
+
+# Nitunit test suite specific to commands
+class TestTerm
+       super TestCommandsCatalog
+       test
+
+       # CmdEntity
+
+       fun test_mentity_full_name is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("test_prog::Character", true)
+       end
+
+       fun test_mentity_name is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("Character", true)
+       end
+
+       fun test_mentity_empty is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("", true)
+       end
+
+       fun test_mentity_not_found is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("Caracter", true)
+       end
+
+       fun test_mentity_conflict is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("+", true)
+       end
+
+       # CmdDoc
+
+       fun test_comment is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("doc: Character", true)
+       end
+
+       fun test_comment_short is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("doc: Character | only-synopsis", true)
+       end
+
+       fun test_comment_no_fallback is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("doc: Character | no-fallback", true)
+       end
+
+       # CmdInheritance
+
+       fun test_ancestors is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("ancestors: Warrior | parents: true", true)
+       end
+
+       fun test_ancestors_without_parents is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("ancestors: Warrior | parents: false", true)
+       end
+
+       fun test_parents is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("parents: Warrior", true)
+       end
+
+       fun test_children is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("children: Career", true)
+       end
+
+       fun test_descendants is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("descendants: Career", true)
+       end
+
+       fun test_descendants_without_children is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("descendants: Career | children: false", true)
+       end
+
+       # CmdLin
+
+       fun test_lin is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("lin: init | limit: 2", true)
+       end
+
+       fun test_lin_no_lin is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("lin: test_prog", true)
+       end
+
+       # CmdSearch
+
+       fun test_search is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("search: Caracter | limit: 2", true)
+       end
+
+       fun test_search_no_query is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("search: | limit: 1", true)
+       end
+
+       # CmdDefs
+
+       fun test_features is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("defs: Character | limit: 3", true)
+       end
+
+       # CmdCode
+
+       fun test_code is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("code: Character", true)
+       end
+
+       # CmdUsage
+
+       fun test_init is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("new: Elf | limit: 2", true)
+       end
+
+       fun test_call is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("call: endurance_bonus", true)
+       end
+
+       fun test_return is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("return: Int | limit: 3", true)
+       end
+
+       fun test_param is test do
+               var parser = new CommandParser(test_view, test_builder)
+               parser.execute("param: Career | limit: 3", true)
+       end
+
+       # CmdCatalog
+
+       fun test_term_catalog is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("catalog:", true)
+       end
+
+       fun test_term_catalog_search is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("search: Caracter | limit: 3", true)
+       end
+
+       fun test_term_catalog_stats is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("stats:", true)
+       end
+
+       fun test_term_catalog_tags is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("tags:", true)
+       end
+
+       fun test_term_catalog_tag is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("tag: game", true)
+       end
+
+       fun test_term_catalog_maintain is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("maintain: Alexandre Terrasa", true)
+       end
+
+       fun test_term_catalog_contrib is test do
+               var parser = new CommandParser(test_view, test_builder, test_catalog)
+               parser.execute("contrib: Alexandre Terrasa", true)
+       end
+end
+
+redef class nitc::Location
+       # Avoid location diffs
+       redef fun to_s do return "test_location"
+end
diff --git a/src/doc/term/tests/test_term.sav/test_ancestors.res b/src/doc/term/tests/test_term.sav/test_ancestors.res
new file mode 100644 (file)
index 0000000..eeefbdf
--- /dev/null
@@ -0,0 +1,12 @@
+Ancestors for `test_prog::Warrior`:
+
+ + test_prog::Career
+   # A `Career` gives a characteristic bonus or malus to the character.
+   abstract class Career
+   test_location
+
+ + test_prog::Object
+   # Root of everything.
+   interface Object
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_ancestors_without_parents.res b/src/doc/term/tests/test_term.sav/test_ancestors_without_parents.res
new file mode 100644 (file)
index 0000000..548c77c
--- /dev/null
@@ -0,0 +1,7 @@
+Ancestors for `test_prog::Warrior`:
+
+ + test_prog::Object
+   # Root of everything.
+   interface Object
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_call.res b/src/doc/term/tests/test_term.sav/test_call.res
new file mode 100644 (file)
index 0000000..ac3c732
--- /dev/null
@@ -0,0 +1,11 @@
+Methods calling `test_prog::Career::endurance_bonus`:
+
+ * test_prog$Character$Object::init
+   redef init init(race: Race, name: String, age: Int, sex: Bool)
+   test_location
+
+ + test_prog$Character$total_endurance
+   # The actual endurance of the character.
+   fun total_endurance: Int
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_children.res b/src/doc/term/tests/test_term.sav/test_children.res
new file mode 100644 (file)
index 0000000..7c3a626
--- /dev/null
@@ -0,0 +1,17 @@
+Children for `test_prog::Career`:
+
+ + test_prog::Alcoholic
+   # Alcoholics are good to nothing escept taking punches.
+   class Alcoholic
+   test_location
+
+ + test_prog::Magician
+   # Magicians know magic and how to use it.
+   class Magician
+   test_location
+
+ + test_prog::Warrior
+   # Warriors are good for fighting.
+   class Warrior
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_code.res b/src/doc/term/tests/test_term.sav/test_code.res
new file mode 100644 (file)
index 0000000..0ce0299
--- /dev/null
@@ -0,0 +1,52 @@
+Code for `test_prog::Character`:
+
+~~~
+# Characters can be played by both the human or the machine.
+class Character
+
+       # The `Race` of the character.
+       var race: Race
+
+       # The current `Career` of the character.
+       # Returns `null` if character is unemployed.
+       var career: nullable Career = null is writable
+
+       fun quit do
+               career = null
+       end
+
+       var name: String
+       var age: Int
+       var sex: Bool
+
+       # The actual strength of the character.
+       #
+       # Returns `race.base_strength + career.strength_bonus` or just `race.base_strength` is unemployed.
+       fun total_strengh: Int do
+               if career != null then return race.base_strength + career.strength_bonus
+               return race.base_strength
+       end
+
+       # The actual endurance of the character.
+       fun total_endurance: Int do
+               if career != null then return race.base_endurance + career.endurance_bonus
+               return race.base_endurance
+       end
+
+       # The acutal intelligence of the character.
+       fun total_intelligence: Int do
+               if career != null then return race.base_intelligence + career.intelligence_bonus
+               return race.base_intelligence
+       end
+
+       # Maximum health of the character.
+       #
+       # Based on `total endurance * 10`.
+       fun max_health: Int do return total_endurance * 10
+
+       # The current `health` of the character.
+       #
+       # Starts at `max_health`.
+       var health: Int = max_health
+end
+~~~
diff --git a/src/doc/term/tests/test_term.sav/test_comment.res b/src/doc/term/tests/test_term.sav/test_comment.res
new file mode 100644 (file)
index 0000000..7dd578d
--- /dev/null
@@ -0,0 +1,8 @@
+Documentation for `test_prog::Character`:
+
+ + test_prog::Character
+   class Character
+   test_location
+
+   Characters can be played by both the human or the machine.
+
diff --git a/src/doc/term/tests/test_term.sav/test_comment_no_fallback.res b/src/doc/term/tests/test_term.sav/test_comment_no_fallback.res
new file mode 100644 (file)
index 0000000..54c0e88
--- /dev/null
@@ -0,0 +1,8 @@
+Warning: No documentation for `test_prog::Character`.
+
+Documentation for `test_prog::Character`:
+
+ + test_prog::Character
+   class Character
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_comment_short.res b/src/doc/term/tests/test_term.sav/test_comment_short.res
new file mode 100644 (file)
index 0000000..7dd578d
--- /dev/null
@@ -0,0 +1,8 @@
+Documentation for `test_prog::Character`:
+
+ + test_prog::Character
+   class Character
+   test_location
+
+   Characters can be played by both the human or the machine.
+
diff --git a/src/doc/term/tests/test_term.sav/test_descendants.res b/src/doc/term/tests/test_term.sav/test_descendants.res
new file mode 100644 (file)
index 0000000..288bb38
--- /dev/null
@@ -0,0 +1,17 @@
+Descendants for `test_prog::Career`:
+
+ + test_prog::Alcoholic
+   # Alcoholics are good to nothing escept taking punches.
+   class Alcoholic
+   test_location
+
+ + test_prog::Magician
+   # Magicians know magic and how to use it.
+   class Magician
+   test_location
+
+ + test_prog::Warrior
+   # Warriors are good for fighting.
+   class Warrior
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_descendants_without_children.res b/src/doc/term/tests/test_term.sav/test_descendants_without_children.res
new file mode 100644 (file)
index 0000000..04c1fd9
--- /dev/null
@@ -0,0 +1,3 @@
+Descendants for `test_prog::Career`:
+
+None.
diff --git a/src/doc/term/tests/test_term.sav/test_features.res b/src/doc/term/tests/test_term.sav/test_features.res
new file mode 100644 (file)
index 0000000..1a12c90
--- /dev/null
@@ -0,0 +1,16 @@
+Features for `test_prog::Character`:
+
+ - test_prog::character::Character::_age
+   private var _age: Int
+   test_location
+
+ - test_prog::character::Character::_career
+   # The current `Career` of the character.
+   private var _career: nullable Career
+   test_location
+
+ - test_prog::character::Character::_health
+   # The current `health` of the character.
+   private var _health: Int
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_init.res b/src/doc/term/tests/test_term.sav/test_init.res
new file mode 100644 (file)
index 0000000..45ed0a3
--- /dev/null
@@ -0,0 +1,3 @@
+Methods intializing `test_prog::Elf`:
+
+None.
diff --git a/src/doc/term/tests/test_term.sav/test_lin.res b/src/doc/term/tests/test_term.sav/test_lin.res
new file mode 100644 (file)
index 0000000..23e94dc
--- /dev/null
@@ -0,0 +1,10 @@
+Linearization for `test_prog::Object::init`:
+
+ + test_prog$Object$init
+   init init
+   test_location
+
+ * test_prog$Race$Object::init
+   redef init init(base_strength: Int, base_endurance: Int, base_intelligence: Int)
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_lin_no_lin.res b/src/doc/term/tests/test_term.sav/test_lin_no_lin.res
new file mode 100644 (file)
index 0000000..6543a17
--- /dev/null
@@ -0,0 +1,5 @@
+Warning: No linearization for `test_prog`
+
+Linearization for `test_prog`:
+
+None.
diff --git a/src/doc/term/tests/test_term.sav/test_mentity_conflict.res b/src/doc/term/tests/test_term.sav/test_mentity_conflict.res
new file mode 100644 (file)
index 0000000..b66c27f
--- /dev/null
@@ -0,0 +1,13 @@
+Multiple results found for `+`...
+
+Did you mean?
+
+ + test_prog::Int::+
+   intern fun +(i: Int): Int
+   test_location
+
+ + test_prog::Float::+
+   intern fun +(f: Float): Float
+   test_location
+
+
diff --git a/src/doc/term/tests/test_term.sav/test_mentity_empty.res b/src/doc/term/tests/test_term.sav/test_mentity_empty.res
new file mode 100644 (file)
index 0000000..eed622c
--- /dev/null
@@ -0,0 +1,17 @@
+No result found for ``...
+
+Did you mean?
+
+ + test_prog::Int::*
+   intern fun *(i: Int): Int
+   test_location
+
+ + test_prog::Float::*
+   intern fun *(f: Float): Float
+   test_location
+
+ + test_prog::Float::+
+   intern fun +(f: Float): Float
+   test_location
+
+
diff --git a/src/doc/term/tests/test_term.sav/test_mentity_full_name.res b/src/doc/term/tests/test_term.sav/test_mentity_full_name.res
new file mode 100644 (file)
index 0000000..7dd578d
--- /dev/null
@@ -0,0 +1,8 @@
+Documentation for `test_prog::Character`:
+
+ + test_prog::Character
+   class Character
+   test_location
+
+   Characters can be played by both the human or the machine.
+
diff --git a/src/doc/term/tests/test_term.sav/test_mentity_name.res b/src/doc/term/tests/test_term.sav/test_mentity_name.res
new file mode 100644 (file)
index 0000000..7dd578d
--- /dev/null
@@ -0,0 +1,8 @@
+Documentation for `test_prog::Character`:
+
+ + test_prog::Character
+   class Character
+   test_location
+
+   Characters can be played by both the human or the machine.
+
diff --git a/src/doc/term/tests/test_term.sav/test_mentity_not_found.res b/src/doc/term/tests/test_term.sav/test_mentity_not_found.res
new file mode 100644 (file)
index 0000000..ff87303
--- /dev/null
@@ -0,0 +1,20 @@
+No result found for `Caracter`...
+
+Did you mean?
+
+ + test_prog::Character
+   # Characters can be played by both the human or the machine.
+   class Character
+   test_location
+
+ + test_prog::character
+   # Characters are playable entity in the world.
+   module character
+   test_location
+
+ + test_prog::Career
+   # A `Career` gives a characteristic bonus or malus to the character.
+   abstract class Career
+   test_location
+
+
diff --git a/src/doc/term/tests/test_term.sav/test_param.res b/src/doc/term/tests/test_term.sav/test_param.res
new file mode 100644 (file)
index 0000000..5f65e7f
--- /dev/null
@@ -0,0 +1,7 @@
+Methods accepting `test_prog::Career` as parameter:
+
+ + test_prog::Character::career=
+   # The current `Career` of the character.
+   fun career=(career: nullable Career)
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_parents.res b/src/doc/term/tests/test_term.sav/test_parents.res
new file mode 100644 (file)
index 0000000..814f320
--- /dev/null
@@ -0,0 +1,7 @@
+Parents for `test_prog::Warrior`:
+
+ + test_prog::Career
+   # A `Career` gives a characteristic bonus or malus to the character.
+   abstract class Career
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_return.res b/src/doc/term/tests/test_term.sav/test_return.res
new file mode 100644 (file)
index 0000000..ce6c68f
--- /dev/null
@@ -0,0 +1,14 @@
+Methods returning `test_prog::Int`:
+
+ + test_prog::Int::*
+   intern fun *(i: Int): Int
+   test_location
+
+ + test_prog::Int::+
+   intern fun +(i: Int): Int
+   test_location
+
+ + test_prog::Int::-
+   intern fun -(i: Int): Int
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_search.res b/src/doc/term/tests/test_term.sav/test_search.res
new file mode 100644 (file)
index 0000000..965f6dc
--- /dev/null
@@ -0,0 +1,12 @@
+Search results for `Caracter`:
+
+ + test_prog::Character
+   # Characters can be played by both the human or the machine.
+   class Character
+   test_location
+
+ + test_prog::character
+   # Characters are playable entity in the world.
+   module character
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_search_no_query.res b/src/doc/term/tests/test_term.sav/test_search_no_query.res
new file mode 100644 (file)
index 0000000..591c48b
--- /dev/null
@@ -0,0 +1,6 @@
+Search results for ``:
+
+ + test_prog::Int::*
+   intern fun *(i: Int): Int
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog.res b/src/doc/term/tests/test_term.sav/test_term_catalog.res
new file mode 100644 (file)
index 0000000..79ba492
--- /dev/null
@@ -0,0 +1,11 @@
+Packages from catalog:
+
+ + test_prog
+   # Test program for model tools.
+   package test_prog
+   test_location
+
+ + excluded
+   package excluded
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog_contrib.res b/src/doc/term/tests/test_term.sav/test_term_catalog_contrib.res
new file mode 100644 (file)
index 0000000..60ce480
--- /dev/null
@@ -0,0 +1,7 @@
+Packages contributed by `Alexandre Terrasa`:
+
+ + test_prog
+   # Test program for model tools.
+   package test_prog
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog_maintain.res b/src/doc/term/tests/test_term.sav/test_term_catalog_maintain.res
new file mode 100644 (file)
index 0000000..4dfedb2
--- /dev/null
@@ -0,0 +1,11 @@
+Packages maintained by `Alexandre Terrasa`:
+
+ + test_prog
+   # Test program for model tools.
+   package test_prog
+   test_location
+
+ + excluded
+   package excluded
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog_search.res b/src/doc/term/tests/test_term.sav/test_term_catalog_search.res
new file mode 100644 (file)
index 0000000..ae5fe51
--- /dev/null
@@ -0,0 +1,17 @@
+Search results for `Caracter`:
+
+ + test_prog::Character
+   # Characters can be played by both the human or the machine.
+   class Character
+   test_location
+
+ + test_prog::character
+   # Characters are playable entity in the world.
+   module character
+   test_location
+
+ + test_prog::Career
+   # A `Career` gives a characteristic bonus or malus to the character.
+   abstract class Career
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog_stats.res b/src/doc/term/tests/test_term.sav/test_term_catalog_stats.res
new file mode 100644 (file)
index 0000000..fd8b8ba
--- /dev/null
@@ -0,0 +1,9 @@
+Catalog statistics:
+ * 2 packages
+ * 10 modules
+ * 75 methods
+ * 23 classes
+ * 471 lines of code
+ * 6 contributors
+ * 1 maintainers
+ * 2 tags
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog_tag.res b/src/doc/term/tests/test_term.sav/test_term_catalog_tag.res
new file mode 100644 (file)
index 0000000..143fd74
--- /dev/null
@@ -0,0 +1,7 @@
+Packages tagged with `game`:
+
+ + test_prog
+   # Test program for model tools.
+   package test_prog
+   test_location
+
diff --git a/src/doc/term/tests/test_term.sav/test_term_catalog_tags.res b/src/doc/term/tests/test_term.sav/test_term_catalog_tags.res
new file mode 100644 (file)
index 0000000..ced4b52
--- /dev/null
@@ -0,0 +1,4 @@
+Tags from catalog:
+
+ * game: 1 packages
+ * test: 1 packages
diff --git a/src/doc/test_doc_commands.nit b/src/doc/test_doc_commands.nit
new file mode 100644 (file)
index 0000000..82f5e7c
--- /dev/null
@@ -0,0 +1,143 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_doc_commands is test
+
+import doc_commands
+
+class TestDocCommandParser
+       test
+
+       var parser: DocCommandParser
+
+       fun init_parser is before do
+               parser = new DocCommandParser
+       end
+
+       fun test_empty_string is test do
+               var command = parser.parse("")
+               assert command == null
+               assert parser.errors.length == 1
+               assert parser.errors.first.to_s == "Error: empty command name (col: 0)"
+       end
+
+       fun test_bad_string is test do
+               var command = parser.parse(":")
+               assert command == null
+               assert parser.errors.length == 1
+               assert parser.errors.first.to_s == "Error: empty command name (col: 0)"
+       end
+
+       fun test_unknown_command is test do
+               var command = parser.parse("foo: foo")
+               assert command == null
+               assert parser.errors.length == 1
+               assert parser.errors.first.to_s == "Error: unknown command name (col: 0)"
+       end
+
+       fun test_unallowed_command is test do
+               parser.allowed_commands.clear
+               var command = parser.parse("comment: core::Array")
+               assert command == null
+               assert parser.errors.length == 1
+               assert parser.errors.first.to_s == "Error: unknown command name (col: 0)"
+       end
+
+       fun test_no_arg is test do
+               var command = parser.parse("doc:")
+               assert command == null
+               assert parser.errors.length == 1
+               print parser.errors.first
+               assert parser.errors.first.to_s == "Error: empty command arg (col: 4)"
+       end
+
+       fun test_no_opts is test do
+               var command = parser.parse("doc: core::Array")
+               assert command isa CommentCommand
+               assert command.name == "doc"
+               assert command.arg == "core::Array"
+               assert parser.errors.is_empty
+       end
+
+       fun test_opts_empty is test do
+               var command = parser.parse("doc: core::Array | ")
+               assert command isa CommentCommand
+               assert command.name == "doc"
+               assert command.arg == "core::Array"
+               assert parser.errors.is_empty
+       end
+
+       fun test_1_opt is test do
+               var command = parser.parse("doc: core::Array | opt1: val1 ")
+               assert command isa CommentCommand
+               assert command.name == "doc"
+               assert command.arg == "core::Array"
+               assert command.opts.length == 1
+               assert command.opts["opt1"] == "val1"
+               assert parser.errors.is_empty
+       end
+
+       fun test_2_opts is test do
+               var command = parser.parse("doc: core::Array | opt1: val1 , opt2: val2,  ")
+               assert command isa CommentCommand
+               assert command.name == "doc"
+               assert command.arg == "core::Array"
+               assert command.opts.length == 2
+               assert command.opts["opt1"] == "val1"
+               assert command.opts["opt2"] == "val2"
+               assert parser.errors.is_empty
+       end
+
+       fun test_empty_opt_name is test do
+               var command = parser.parse("doc: core::Array | opt1: val1  , :")
+               assert command isa CommentCommand
+               assert command.name == "doc"
+               assert command.arg == "core::Array"
+               assert command.opts.length == 1
+               assert command.opts["opt1"] == "val1"
+               assert parser.errors.is_empty
+       end
+
+       fun test_empty_opt_value is test do
+               var command = parser.parse("doc: core::Array | opt1:  , opt2: val2,  ")
+               assert command isa CommentCommand
+               assert command.name == "doc"
+               assert command.arg == "core::Array"
+               assert command.opts.length == 2
+               assert command.opts["opt1"] == ""
+               assert command.opts["opt2"] == "val2"
+               assert parser.errors.is_empty
+       end
+
+       fun test_empty_opt_value2 is test do
+               var command = parser.parse("doc: core::Array | opt1")
+               assert command isa CommentCommand
+               assert command.name == "doc"
+               assert command.arg == "core::Array"
+               assert command.opts.length == 1
+               assert command.opts["opt1"] == ""
+               assert parser.errors.is_empty
+       end
+
+       fun test_empty_opt_value3 is test do
+               var command = parser.parse("doc: core::Array | opt1, opt2: val2")
+               assert command isa CommentCommand
+               assert command.name == "doc"
+               assert command.arg == "core::Array"
+               assert command.opts.length == 2
+               assert command.opts["opt1"] == ""
+               assert command.opts["opt2"] == "val2"
+               assert parser.errors.is_empty
+       end
+end
index 0846e85..395a57d 100644 (file)
@@ -49,21 +49,11 @@ redef class ToolContext
        end
 end
 
-redef class Model
-
-       # Get a custom view for vimautocomplete.
-       private fun vim_view: ModelView do
-               var view = new ModelView(self)
-               view.min_visibility = protected_visibility
-               return view
-       end
-end
-
 redef class MEntity
        private fun field_separator: String do return "#====#"
        private fun line_separator: String do return "#nnnn#"
 
-       private fun write_doc(mainmodule: MModule, stream: Writer)
+       private fun write_doc(view: ModelView, stream: Writer)
        do
                # 1. Short name for autocompletion
                stream.write complete_name
@@ -90,9 +80,9 @@ redef class MEntity
                        stream.write mdoc.content.join(line_separator)
                end
 
-               write_location(mainmodule, stream)
+               write_location(view.mainmodule, stream)
 
-               write_extra_doc(mainmodule, stream)
+               write_extra_doc(view, stream)
 
                stream.write "\n"
        end
@@ -106,7 +96,7 @@ redef class MEntity
        private fun complete_mdoc: nullable MDoc do return mdoc
 
        # Extra auto documentation to append to the `stream`
-       private fun write_extra_doc(mainmodule: MModule, stream: Writer) do end
+       private fun write_extra_doc(view: ModelView, stream: Writer) do end
 
        # Location (file and line when available) of related declarations
        private fun write_location(mainmodule: MModule, stream: Writer)
@@ -196,13 +186,13 @@ redef class MClassDef
 end
 
 redef class MClassType
-       redef fun write_extra_doc(mainmodule, stream)
+       redef fun write_extra_doc(view, stream)
        do
                # Super classes
                stream.write line_separator*2
                stream.write "## Class hierarchy"
 
-               var direct_supers = [for s in mclass.in_hierarchy(mainmodule).direct_greaters do s.name]
+               var direct_supers = [for s in mclass.in_hierarchy(view.mainmodule).direct_greaters do s.name]
                if not direct_supers.is_empty then
                        alpha_comparator.sort direct_supers
                        stream.write line_separator
@@ -210,7 +200,7 @@ redef class MClassType
                        stream.write direct_supers.join(", ")
                end
 
-               var supers = [for s in mclass.in_hierarchy(mainmodule).greaters do s.name]
+               var supers = [for s in mclass.in_hierarchy(view.mainmodule).greaters do s.name]
                supers.remove mclass.name
                if not supers.is_empty then
                        alpha_comparator.sort supers
@@ -219,7 +209,7 @@ redef class MClassType
                        stream.write supers.join(", ")
                end
 
-               var direct_subs = [for s in mclass.in_hierarchy(mainmodule).direct_smallers do s.name]
+               var direct_subs = [for s in mclass.in_hierarchy(view.mainmodule).direct_smallers do s.name]
                if not direct_subs.is_empty then
                        alpha_comparator.sort direct_subs
                        stream.write line_separator
@@ -227,7 +217,7 @@ redef class MClassType
                        stream.write direct_subs.join(", ")
                end
 
-               var subs = [for s in mclass.in_hierarchy(mainmodule).smallers do s.name]
+               var subs = [for s in mclass.in_hierarchy(view.mainmodule).smallers do s.name]
                subs.remove mclass.name
                if not subs.is_empty then
                        alpha_comparator.sort subs
@@ -240,11 +230,11 @@ redef class MClassType
                stream.write line_separator*2
                stream.write "## Properties"
                stream.write line_separator
-               var props = mclass.collect_accessible_mproperties(model.protected_view).to_a
+               var props = mclass.collect_accessible_mproperties(view).to_a
                alpha_comparator.sort props
                for prop in props do
                        if mclass.name == "Object" or prop.intro.mclassdef.mclass.name != "Object" then
-                               prop.write_synopsis(mainmodule, stream)
+                               prop.write_synopsis(view.mainmodule, stream)
                        end
                end
        end
@@ -281,8 +271,9 @@ private class AutocompletePhase
 
                # Got all known modules
                var model = mainmodule.model
+               var view = new ModelView(model, mainmodule)
                for mmodule in model.mmodules do
-                       mmodule.write_doc(mainmodule, modules_stream)
+                       mmodule.write_doc(view, modules_stream)
                end
 
                # TODO list other modules from the Nit lib
@@ -295,18 +286,18 @@ private class AutocompletePhase
                        # Can it be instantiated?
                        if mclass.kind != interface_kind and mclass.kind != abstract_kind then
 
-                               for prop in mclass.collect_accessible_mproperties(model.public_view) do
+                               for prop in mclass.collect_accessible_mproperties(view) do
                                        if prop isa MMethod and prop.is_init then
                                                mclass_intro.target_constructor = prop.intro
-                                               mclass_intro.write_doc(mainmodule, constructors_stream)
+                                               mclass_intro.write_doc(view, constructors_stream)
                                        end
                                end
                                mclass_intro.target_constructor = null
                        end
 
                        # Always add to types and classes
-                       mclass.mclass_type.write_doc(mainmodule, classes_stream)
-                       mclass.mclass_type.write_doc(mainmodule, types_stream)
+                       mclass.mclass_type.write_doc(view, classes_stream)
+                       mclass.mclass_type.write_doc(view, types_stream)
                end
 
                # Get all known properties
@@ -316,7 +307,7 @@ private class AutocompletePhase
 
                        # Is it a virtual type?
                        if mproperty isa MVirtualTypeProp then
-                               mproperty.intro.write_doc(mainmodule, types_stream)
+                               mproperty.intro.write_doc(view, types_stream)
                                continue
                        end
 
@@ -324,7 +315,7 @@ private class AutocompletePhase
                        var first_letter = mproperty.name.chars.first
                        if first_letter == '@' or first_letter == '_' then continue
 
-                       mproperty.intro.write_doc(mainmodule, properties_stream)
+                       mproperty.intro.write_doc(view, properties_stream)
                end
 
                # Close streams
@@ -341,10 +332,10 @@ private class AutocompletePhase
 end
 
 redef class MModule
-       redef fun write_extra_doc(mainmodule, stream)
+       redef fun write_extra_doc(view, stream)
        do
                # Introduced classes
-               var class_intros = collect_intro_mclasses(model.protected_view).to_a
+               var class_intros = collect_intro_mclasses(view).to_a
                if class_intros.not_empty then
                        alpha_comparator.sort class_intros
                        stream.write line_separator*2
@@ -361,7 +352,7 @@ redef class MModule
                # Introduced properties
                var prop_intros = new Array[MPropDef]
                for c in mclassdefs do
-                       prop_intros.add_all c.collect_intro_mpropdefs(model.protected_view)
+                       prop_intros.add_all c.collect_intro_mpropdefs(view)
                end
 
                if prop_intros.not_empty then
@@ -371,7 +362,7 @@ redef class MModule
                        stream.write line_separator
 
                        for p in prop_intros do
-                               p.mproperty.write_synopsis(mainmodule, stream)
+                               p.mproperty.write_synopsis(view.mainmodule, stream)
                        end
                end
        end
index 79e22ba..d1887ba 100644 (file)
@@ -19,7 +19,7 @@
 # ~~~raw
 # get_mclasses ../../lib core::Array Array care::Arrow Fail
 # ~~~
-module get_mclasses
+module get_mclasses is example
 
 import parser_util
 import modelbuilder
index 103a3c8..da179be 100644 (file)
 # This is an example of a client of the frontend without command-line processing.
 #
 # It offers a simple nitcorn web server that offers a textarea and nitpick and nitlignt it.
-module nitlight_as_a_service
+module nitlight_as_a_service is example
 
 import frontend
-import highlight
+import htmlight
 import nitcorn
 import nitcorn::log
 import template
 import json::serialization_write
 
-# Nitcorn service to hightlight code
+# Nitcorn service to highlight code
 #
 # It's a single stand-alone page that has to form to itself.
 class HighlightAction
@@ -32,13 +32,13 @@ class HighlightAction
 
        redef fun answer(http_request, turi)
        do
-               var hl = new HighlightVisitor
+               var hl = new HtmlightVisitor
                var page = new Template
 
                # There is code? Process it
                var code = http_request.post_args.get_or_null("code")
                var hlcode = null
-               if code != null then hlcode = hightlightcode(hl, code)
+               if code != null then hlcode = hl.highlightcode(code)
 
                if http_request.post_args.get_or_null("json") == "true" and hlcode != null then
                        var response = new HttpResponse(200)
index 8199c16..767e64c 100644 (file)
@@ -13,7 +13,7 @@
 # limitations under the License.
 
 # Crawler on the nitweb web API
-module nitwebcrawl
+module nitwebcrawl is example
 
 import json::static
 
index e81a0af..2f7e3cf 100644 (file)
@@ -15,7 +15,7 @@
 # Sample program that scan and load things.
 #
 # It shows the difference betwenn the various services of the `loader`.
-module test_loader
+module test_loader is example
 
 import loader
 
index 453ddfc..74dc8fc 100644 (file)
@@ -23,11 +23,48 @@ private import annotation
 private import literal
 
 redef class ToolContext
+       # Detects the `pkgconfig` annotation on the module declaration only
        var pkgconfig_phase: Phase = new PkgconfigPhase(self, [literal_phase])
+
+       # Is the external program `pkg-config` available?
+       var pkgconfig_is_available: Bool is lazy do
+               # Ignore/silence the process output
+               var proc_which = new ProcessReader("which", "pkg-config")
+               proc_which.wait
+
+               var status = proc_which.status
+               if status != 0 then
+                       error(null, "Error: program `pkg-config` not found, make sure it is installed.")
+                       return false
+               end
+               return true
+       end
+
+       # Check if the `packages` are known by the external program `pkg-config`
+       #
+       # Missing packages are reported to the console via `ToolContext::error`.
+       # Check for errors using `check_errors`.
+       fun check_pkgconfig_packages(packages: Array[String])
+       do
+               if not pkgconfig_is_available then return
+
+               for pkg in packages do
+                       var proc_exist = new Process("pkg-config", "--exists", pkg)
+                       proc_exist.wait
+                       var status = proc_exist.status
+                       if status == 1 then
+                               error(null,
+                                       "Error: dev package for `{pkg}` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.")
+                       else if status != 0 then
+                               error(null,
+                                       "Error: something went wrong calling `pkg-config`, make sure it is correctly configured.")
+                       end
+               end
+       end
 end
 
-# Detects the `pkgconfig` annotation on the module declaration only.
-class PkgconfigPhase
+# Detects the `pkgconfig` annotation on the module declaration only
+private class PkgconfigPhase
        super Phase
 
        redef fun process_annotated_node(nmoduledecl, nat)
@@ -43,7 +80,7 @@ class PkgconfigPhase
                        return
                end
 
-               # retreive module
+               # retrieve module
                var nmodule = nmoduledecl.parent.as(AModule)
                var mmodule = nmodule.mmodule.as(not null)
 
@@ -66,27 +103,7 @@ class PkgconfigPhase
                        end
                end
 
-               # check availability of pkg-config
-               var proc_which = new ProcessReader("which", "pkg-config")
-               proc_which.wait
-               var status = proc_which.status
-               if status != 0 then
-                       modelbuilder.error(nat, "Error: program `pkg-config` not found, make sure it is installed.")
-                       return
-               end
-
                for pkg in pkgs do
-                       var proc_exist = new Process("pkg-config", "--exists", pkg)
-                       proc_exist.wait
-                       status = proc_exist.status
-                       if status == 1 then
-                               modelbuilder.error(nat, "Error: dev package for `{pkg}` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.")
-                               continue
-                       else if status != 0 then
-                               modelbuilder.error(nat, "Error: something went wrong calling `pkg-config`, make sure it is correctly installed.")
-                               continue
-                       end
-
                        mmodule.pkgconfigs.add pkg
                end
        end
index 3dd8042..b002d16 100644 (file)
@@ -104,6 +104,13 @@ ldflags
 light_ffi
 
 platform
+
+test
+before
+before_all
+after
+after_all
+example
 """
 
        # Efficient set build from `primtives_annotations_list`
diff --git a/src/frontend/parse_examples.nit b/src/frontend/parse_examples.nit
new file mode 100644 (file)
index 0000000..95d4830
--- /dev/null
@@ -0,0 +1,187 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Example parsing
+#
+# This module parses example from mentities annotated with `is example`.
+#
+# TODO rank examples
+module parse_examples
+
+import counter
+import typing
+import parse_annotations
+import doc_down
+import model::model_examples
+
+redef class ToolContext
+
+       # Examples parsing phase
+       var examples_phase: Phase = new ExamplesPhase(self,
+               [typing_phase, parse_annotations_phase])
+end
+
+# Parse examples from modules, classdefs and propdefs
+#
+# For each node annotated with `is example` we parse the example and associate
+# it with existing model entities.
+#
+# Association between examples and mentities is based on:
+# `MModule`: Used in `import`
+# `MClassDef`: Used in `super`, redefined class, init or other method called
+# `MPropDef`: Used in `super`, redefined property, called
+private class ExamplesPhase
+       super Phase
+
+       redef fun process_nmodule(nmodule) do
+               var mmodule = nmodule.mmodule
+               if mmodule == null then return
+
+               if not mmodule.has_annotation("example") then return
+
+               process_example(mmodule, nmodule)
+       end
+
+       redef fun process_nclassdef(nclassdef) do
+               var mclassdef = nclassdef.mclassdef
+               if mclassdef == null then return
+
+               if not mclassdef.has_annotation("example") and not mclassdef.mmodule.is_example then return
+
+               process_example(mclassdef, nclassdef)
+       end
+
+       redef fun process_npropdef(npropdef) do
+               var mpropdef = npropdef.mpropdef
+               if mpropdef == null then return
+
+               if not mpropdef.has_annotation("example") and not mpropdef.mclassdef.is_example then return
+
+               process_example(mpropdef, npropdef)
+       end
+
+       # Process an mentity as an MExample
+       #
+       # This method parses the mentity node and link the mentity to possible
+       # examplified entities.
+       fun process_example(example_mentity: MEntity, node: ANode) do
+               var visitor = new ExampleVisitor(toolcontext)
+               visitor.enter_visit(node)
+               var sorted = visitor.counter.sort.reversed
+
+               var example = new MExample(example_mentity)
+               example.node = node
+               for mentity in sorted do
+                       example.example_for[mentity] = visitor.counter[mentity]
+                       if not mentity.examples.has(example) then mentity.examples.add example
+               end
+       end
+end
+
+redef class MExample
+       # AST node containing the example code
+       var node: nullable ANode = null is writable
+end
+
+# Example parsing
+
+# Visit examples to find what they are an example for.
+private class ExampleVisitor
+       super Visitor
+
+       var counter = new Counter[MEntity]
+
+       # The toolcontext is our entree point to most services
+       var toolcontext: ToolContext
+
+       redef fun visit(node) do
+               node.accept_example_visitor(self)
+       end
+end
+
+redef class ANode
+       private fun accept_example_visitor(v: ExampleVisitor) do visit_all(v)
+end
+
+redef class ANewExpr
+       redef fun accept_example_visitor(v) do
+               var recvtype = self.recvtype
+               if recvtype != null then
+                       v.counter.inc recvtype.mclass.intro
+               end
+               visit_all(v)
+       end
+end
+
+redef class AStdImport
+       redef fun accept_example_visitor(v) do
+               var mmodule = self.mmodule
+               if mmodule != null then
+                       v.counter.inc mmodule
+
+                       var mgroup = mmodule.mgroup
+                       if mgroup != null then
+                               v.counter.inc mgroup
+                               v.counter.inc mgroup.mpackage
+                       end
+               end
+       end
+end
+
+redef class AStdClassdef
+       redef fun accept_example_visitor(v) do
+               var mclassdef = self.mclassdef
+               if mclassdef == null then return
+
+               if not mclassdef.is_intro then
+                       v.counter.inc mclassdef.mclass.intro
+               end
+               visit_all(v)
+       end
+end
+
+redef class APropdef
+       redef fun accept_example_visitor(v) do
+               var mpropdef = self.mpropdef
+               if mpropdef == null then return
+
+               if not mpropdef.is_intro then
+                       v.counter.inc mpropdef.mproperty.intro.mclassdef.mclass
+                       v.counter.inc mpropdef.mproperty.intro.mclassdef
+                       v.counter.inc mpropdef.mproperty.intro
+               end
+               visit_all(v)
+       end
+end
+
+redef class ASuperPropdef
+       redef fun accept_example_visitor(v) do
+               var mtype = self.n_type.mtype
+               if mtype isa MClassType then
+                       v.counter.inc mtype.mclass
+                       v.counter.inc mtype.mclass.intro
+               end
+       end
+end
+
+redef class ASendExpr
+       redef fun accept_example_visitor(v) do
+               var callsite = self.callsite
+               if callsite == null then return
+               v.counter.inc callsite.mpropdef
+               v.counter.inc callsite.mpropdef.mproperty
+               v.counter.inc callsite.mpropdef.mclassdef
+               v.counter.inc callsite.mpropdef.mclassdef.mclass
+       end
+end
diff --git a/src/frontend/tests/test_examples.nit b/src/frontend/tests/test_examples.nit
new file mode 100644 (file)
index 0000000..fbd4803
--- /dev/null
@@ -0,0 +1,63 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_examples is test
+
+import frontend
+import parse_examples
+import model_views
+
+class TestExample
+       test
+
+       # The path to the testunit being executed
+       #
+       # Used to retrieve the path to sources to compile.
+       var test_path: String = "NIT_TESTING_PATH".environ.dirname is lazy
+
+       # Test program to compile
+       #
+       # Default is `$NIT_DIR/tests/test_prog`.
+       var test_src: String = test_path / "../../../tests/test_prog" is lazy
+
+       fun test_model_examples is test do
+               var toolcontext = new ToolContext
+
+               # build model
+               var model = new Model
+               var modelbuilder = new ModelBuilder(model, toolcontext)
+               var mmodules = modelbuilder.parse_full([test_src])
+
+               # process
+               modelbuilder.run_phases
+               toolcontext.run_global_phases(mmodules)
+               var mainmodule = toolcontext.make_main_module(mmodules)
+
+               var filters = new ModelFilter(accept_example = true)
+
+               var view = new ModelView(model, mainmodule, filters)
+
+               for mentity in view.mentities do
+                       if not mentity.is_example then continue
+
+                       var mexample = mentity.mexample
+                       if mexample == null then continue
+
+                       print "{mentity.full_name} provides example for:"
+                       for oentity, score in mexample.example_for do
+                               print " * {oentity.full_name} ({score})"
+                       end
+               end
+       end
+end
diff --git a/src/frontend/tests/test_examples.sav/test_model_examples.res b/src/frontend/tests/test_examples.sav/test_model_examples.res
new file mode 100644 (file)
index 0000000..de733c8
--- /dev/null
@@ -0,0 +1,33 @@
+test_prog::game_examples provides example for:
+ * test_prog::Game (4)
+ * test_prog$Game (4)
+ * test_prog$List (2)
+ * test_prog$Game$stop_game (1)
+ * test_prog$Game$pause_game (1)
+ * test_prog$Game$start_game (1)
+ * test_prog::game (1)
+ * test_prog>game> (1)
+ * test_prog (1)
+test_prog$MyGame provides example for:
+ * test_prog::Game (4)
+ * test_prog$Game (4)
+ * test_prog$List (2)
+ * test_prog$Game$stop_game (1)
+ * test_prog$Game$pause_game (1)
+ * test_prog$Game$start_game (1)
+test_prog$MyGame$Game::start_game provides example for:
+ * test_prog$Game$start_game (1)
+ * test_prog$Game (1)
+ * test_prog::Game (1)
+test_prog$MyGame$Game::pause_game provides example for:
+ * test_prog$Game$pause_game (1)
+ * test_prog$Game (1)
+ * test_prog::Game (1)
+test_prog$MyGame$Game::stop_game provides example for:
+ * test_prog$Game$stop_game (1)
+ * test_prog$Game (1)
+ * test_prog::Game (1)
+test_prog$MyGame$_player_characters provides example for:
+ * test_prog$List (1)
+test_prog$MyGame$_computer_characters provides example for:
+ * test_prog$List (1)
index f654c3e..d2411fb 100644 (file)
 module highlight
 
 import frontend
-import html
-import pipeline
 import astutil
-import serialization
-
-# Fully process `content` as a Nit source file.
-#
-# Set `print_errors = true` to print errors in the code to the console.
-fun hightlightcode(hl: HighlightVisitor, content: String, print_errors: nullable Bool): HLCode
-do
-       # Prepare a stand-alone tool context
-       var tc = new ToolContext
-       tc.nit_dir = tc.locate_nit_dir # still use the common lib to have core
-       tc.keep_going = true # no exit, obviously
-       if print_errors != true then tc.opt_warn.value = -1 # no output
-
-       # Prepare an stand-alone model and model builder.
-       # Unfortunately, models are enclosing and append-only.
-       # There is no way (yet?) to have a shared module `core` with
-       # isolated and throwable user modules.
-       var model = new Model
-       var mb = new ModelBuilder(model, tc)
-
-       # Parse the code
-       var source = new SourceFile.from_string("", content + "\n")
-       var lexer = new Lexer(source)
-       var parser = new Parser(lexer)
-       var tree = parser.parse
-
-       var hlcode = new HLCode(hl, content, source)
-
-       # Check syntax error
-       var eof = tree.n_eof
-       if eof isa AError then
-               mb.error(eof, eof.message)
-               hl.hightlight_source(source)
-               return hlcode
-       end
-       var amodule = tree.n_base.as(not null)
-
-       # Load the AST as a module in the model
-       # Then process it
-       mb.load_rt_module(null, amodule, "")
-       mb.run_phases
-
-       # Highlight the processed module
-       hl.enter_visit(amodule)
-       return hlcode
-end
-
-# A standalone highlighted piece of code
-class HLCode
-       super Serializable
-
-       # The highlighter used
-       var hl: HighlightVisitor
-
-       # The raw code source
-       var content: String
-
-       # The pseudo source-file
-       var source: SourceFile
-
-       # JavaScript code to update an existing codemirror editor.
-       fun code_mirror_update: Template
-       do
-
-               var res = new Template
-               res.add """
-       function nitmessage() {
-               editor.operation(function(){
-                       for (var i = 0; i < widgets.length; ++i)
-                             editor.removeLineWidget(widgets[i]);
-                       widgets.length = 0;
-"""
-
-               for m in source.messages do
-                       res.add """
-                       var l = document.createElement("div");
-                       l.className = "lint-error"
-                       l.innerHTML = "<span class='glyphicon glyphicon-warning-sign lint-error-icon'></span> {{{m.text.html_escape}}}";
-                       var w = editor.addLineWidget({{{m.location.line_start-1}}}, l);
-                       widgets.push(w);
-"""
-               end
-               res.add """});}"""
-               return res
-       end
-
-       redef fun core_serialize_to(v)
-       do
-               v.serialize_attribute("code", hl.html.write_to_string)
-               var msgs = new Array[Map[String, Serializable]]
-               for m in source.messages do
-                       var o = new Map[String, Serializable]
-                       msgs.add o
-                       o["line"] = m.location.line_start-1
-                       o["message"] = m.text
-               end
-               v.serialize_attribute("messages", msgs)
-       end
-end
+import console
 
 # Visitor used to produce a HTML tree based on a AST on a `Source`
-class HighlightVisitor
-       # The root of the HTML hierarchy
-       var html = new HTMLTag("span")
-
-       # Should the HTML include a nested `<span class"{type_of_node}">` element for each `ANode` of the AST?
-       #
-       # Used to have a really huge and verbose HTML (mainly for debug)
-       var with_ast = false is writable
-
-       # Prefixes used in generated IDs for line `<span>` elements.
-       # Useful if more than one highlighted code is present in the same HTML document.
-       #
-       # If set to the empty string, id for lines are disabled.
-       #
-       # Is `"L"` by default.
-       var line_id_prefix = "L" is writable
-
+class AbstractHighlightVisitor
        # The first line to generate, null if start at the first line
        var first_line: nullable Int = null is writable
 
@@ -148,27 +32,6 @@ class HighlightVisitor
        # default: true
        var show_messages = true is writable
 
-       # When highlighting a node, attach a full popupable infobox, if any.
-       #
-       # If `false`, only a simple `title` tooltip is used.
-       #
-       # default: true
-       var show_infobox = true is writable
-
-       # A reference to an entity used in generated `<a>` elements.
-       #
-       # It is used to refer to some specific entities when generating links.
-       # If `null` is returned, then no link are generated and `<a>` elements become `<span>`.
-       #
-       # By default, `null` is returned.
-       # Clients are therefore encouraged to redefine the method in a subclass to control where entities should link to.
-       fun hrefto(entity: MEntity): nullable String do return null
-
-       init
-       do
-               html.add_class("nitcode")
-       end
-
        # When highlighting a node, also consider the loose tokens around it.
        #
        # Loose tokens are tokens discarded from the AST but attached before
@@ -188,9 +51,8 @@ class HighlightVisitor
        # Default: false
        var include_whole_lines = false is writable
 
-       # The entry-point of the highlighting.
-       # Will fill `html` with the generated HTML content.
-       fun enter_visit(n: ANode)
+       # Highlight a AST element.
+       fun highlight_node(n: ANode)
        do
                n.parentize_tokens
 
@@ -234,953 +96,62 @@ class HighlightVisitor
                        l = l.last_real_token_in_line
                end
 
-               htmlize(f, l)
-       end
-
-       private fun full_tag(anode: ANode, hv: HighlightVisitor): nullable HTMLTag
-       do
-               var tag = anode.make_tag(hv)
-               if tag == null then return null
-               var infobox = anode.infobox(hv)
-               if infobox == null and anode isa Token then
-                       var pa = anode.parent
-                       if pa != null then
-                               infobox = pa.decorate_tag(hv, tag, anode)
-                       end
-               end
-               if infobox != null and not show_infobox then
-                       tag.attr("title", infobox.title)
-                       tag.classes.add "titled"
-                       infobox = null
-               end
-               var messages = anode.location.messages
-               if messages != null and show_messages then
-                       tag.css("border-bottom", "solid 2px red")
-                       if infobox == null then
-                               infobox = new HInfoBox(hv, "Messages")
-                       end
-                       var c = infobox.new_dropdown("{messages.length} message(s)", "")
-                       for m in messages do
-                               c.open("li").append(m.text)
-                       end
-               end
-               if infobox != null then
-                       tag.attach_infobox(infobox)
-               end
-               return tag
+               do_highlight(f, l)
        end
 
        # Highlight a full lexed source file.
        #
        # REQUIRE `source.first_token != null`
-       fun hightlight_source(source: SourceFile)
-       do
-               htmlize(source.first_token.as(not null), null)
-       end
-
-       # Produce HTML between two tokens
-       protected fun htmlize(first_token: Token, last_token: nullable Token)
-       do
-               var stack2 = new Array[HTMLTag]
-               var stack = new Array[Prod]
-               var line = 0
-               var c: nullable Token = first_token
-               var hv = self
-               while c != null do
-                       var starting
-
-                       # Handle start of line
-                       var cline = c.location.line_start
-                       if cline != line then
-                               # Handle starting block productions,
-                               # Because c could be a detached token, get prods in
-                               # the first AST token
-                               var c0 = c.first_token_in_line
-                               starting = null
-                               if c0 != null then starting = c0.starting_prods
-                               if starting != null then for p in starting do
-                                       if not p.is_block then continue
-                                       var tag = full_tag(p, hv)
-                                       if tag == null then continue
-                                       tag.add_class("foldable")
-                                       stack2.add(html)
-                                       html.add tag
-                                       html = tag
-                                       stack.add(p)
-                               end
-
-                               # Add a div for the whole line
-                               var tag = new HTMLTag("span")
-                               var p = line_id_prefix
-                               if p != "" then tag.attrs["id"] = "{p}{cline}"
-                               tag.classes.add "line"
-                               stack2.add(html)
-                               html.add tag
-                               html = tag
-                               line = cline
-                       end
-
-                       # Add the blank, verbatim
-                       html.add_raw_html c.blank_before
-
-                       # Handle starting span production
-                       starting = c.starting_prods
-                       if starting != null then for p in starting do
-                               if not p.is_span then continue
-                               var tag = full_tag(p, hv)
-                               if tag == null then continue
-                               stack2.add(html)
-                               html.add tag
-                               html = tag
-                               stack.add(p)
-                       end
-
-                       # Add the token
-                       if c isa TEol then
-                               html.append "\n"
-                       else
-                               var tag = full_tag(c, hv)
-                               if tag != null then html.add tag
-                       end
-
-                       # Handle ending span productions
-                       var ending = c.ending_prods
-                       if ending != null then for p in ending do
-                               if not p.is_span then continue
-                               if stack.is_empty or p != stack.last then continue
-                               stack.pop
-                               html = stack2.pop
-                       end
-
-                       # Handle end of line and end of file
-                       var n = c.next_token
-                       if c == last_token then n = null
-                       if n == null or n.location.line_start != line  then
-                               # closes the line div
-                               html = stack2.pop
-
-                               # close the block production divs
-                               var c0 = c.last_token_in_line
-                               ending = null
-                               if c0 != null then ending = c0.ending_prods
-                               if ending != null then for p in ending do
-                                       if not p.is_block then continue
-                                       if stack.is_empty or p != stack.last then continue
-                                       stack.pop
-                                       html = stack2.pop
-                               end
-                       end
-
-                       c = n
-               end
-               if not stack2.is_empty then html = stack2.first
-       end
-
-       # Return a default CSS content related to CSS classes used in the `html` tree.
-       # Could be inlined in the `.html` file of saved as a specific `.css` file.
-       fun css_content: String
+       fun highlight_source(source: SourceFile)
        do
-               return """
-.nitcode a { color: inherit; cursor:pointer; }
-.nitcode .titled:hover { text-decoration: underline; } /* underline titles */
-.nitcode .popupable:hover { text-decoration: underline; cursor:help; } /* underline titles */
-.nitcode .foldable { display: block } /* for block productions*/
-.nitcode .line{ display: block } /* for lines */
-.nitcode .line:hover{ background-color: #FFFFE0; } /* current line */
-.nitcode :target { background-color: #FFF3C2 } /* target highlight*/
-/* lexical raw tokens. independent of usage or semantic: */
-.nitcode .nc_c { color: gray; font-style: italic; } /* comment */
-.nitcode .nc_d { color: #3D8127; font-style: italic; } /* documentation comments */
-.nitcode .nc_k { font-weight: bold; } /* keyword */
-.nitcode .nc_o {} /* operator */
-.nitcode .nc_i {} /* standard identifier */
-.nitcode .nc_t { color: #445588; font-weight: bold; } /* type/class identifier */
-.nitcode .nc_a { color: #445588; font-style: italic; } /* old style attribute identifier */
-.nitcode .nc_l { color: #009999; } /* char and number literal */
-.nitcode .nc_s { color: #8F1546; } /* string literal */
-/* syntactic token usage. added because of their position in the AST */
-.nitcode .nc_ast { color: blue; } /* assert label */
-.nitcode .nc_la { color: blue; } /* break/continue label */
-.nitcode .nc_m { color: #445588; } /* module name */
-/* syntactic groups */
-.nitcode .nc_def { font-weight: bold; color: blue; } /* name used in a definition */
-  .nitcode .nc_def.nc_a { color: blue; } /* name used in a attribute definition */
-  .nitcode .nc_def.nc_t { color: blue; } /* name used in a class or vt definition */
-.nitcode .nc_ss { color: #9E6BEB; } /* superstrings */
-.nitcode .nc_cdef {} /* A whole class definition */
-.nitcode .nc_pdef {} /* A whole property definition */
-/* semantic token usage */
-.nitcode .nc_v { font-style: italic; } /* local variable or parameter */
-.nitcode .nc_vt { font-style: italic; } /* virtual type or formal type */
-
-.nitcode .nc_error { border: 1px red solid;} /* not used */
-.popover { max-width: 800px !important; }
-"""
+               do_highlight(source.first_token.as(not null), null)
        end
 
-       # Additional content to inject in the <head> tag
-       # Note: does not include `css_content`; handle it yourself.
-       fun head_content: String
-       do
-               return """<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">\n"""
-       end
-
-       # Additional content to inject just before the closing </body> tag
-       fun foot_content: String
-       do
-               return """
-<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
-<script src="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
-<script>$(".popupable").popover({html:true, placement:'top'})/*initialize bootstrap popover*/</script>"""
-       end
-end
-
-redef class HTMLTag
-       # Attach the infobox to the node by using BootStrap popover
-       fun attach_infobox(infobox: HInfoBox)
-       do
-               classes.add("popupable")
-               attrs["title"] = infobox.title
-               var href = infobox.href
-               if href != null then
-                       attrs["data-title"] = """<a href="{{{href}}}">{{{infobox.title}}}</a>"""
-               end
-               attrs["data-content"] = infobox.content.write_to_string
-               attrs["data-toggle"] = "popover"
-       end
+       # Low-level highlighting between 2 tokens
+       protected fun do_highlight(first_token: Token, last_token: nullable Token) is abstract
 end
 
+# Text-based highlighter that use ANSI escape sequence for colors
+class AnsiHighlightVisitor
+       super AbstractHighlightVisitor
 
-# A generic information container that can be used to decorate AST entities
-class HInfoBox
-       # The visitor used for contextualisation, if needed 
-       var visitor: HighlightVisitor
-
-       # A short title for the AST element
-       var title: String
-
-       # The primary link where the entity points
-       # null if no link
-       var href: nullable String = null
-
-       # The content of the popuped infobox
-       var content = new HTMLTag("div")
-
-       # Append a new field in the popuped infobox
-       fun new_field(title: String): HTMLTag
-       do
-               content.open("b").text(title)
-               content.append(" ")
-               var res = content.open("span")
-               content.open("br")
-               return res
-       end
-
-       # Append a new dropdown in the popuped content
-       fun new_dropdown(title, text: String, text_is_html: nullable Bool): HTMLTag
-       do
-               content.add_raw_html """<div class="dropdown"> <a data-toggle="dropdown" href="#"><b>"""
-               content.append(title)
-               content.add_raw_html "</b> "
-               if text_is_html == true then
-                       content.add_raw_html(text)
-               else content.append(text)
-               content.add_raw_html """<span class="caret"></span></a>"""
-               var res = content.open("ul").add_class("dropdown-menu").attr("role", "menu").attr("aria-labelledby", "dLabel")
-               content.add_raw_html "</div>"
-               return res
-       end
-end
-
-##
-
-# Model entity or whatever that can produce an infobox
-interface HInfoBoxable
-       # An new infobox documenting the entity
-       fun infobox(v: HighlightVisitor): HInfoBox is abstract
-end
-
-redef class MDoc
-       # Append an entry for the doc in the given infobox
-       fun fill_infobox(res: HInfoBox)
-       do
-               if content.length < 2 then
-                       res.new_field("doc").text(content.first)
-                       return
-               end
-               var c = res.new_dropdown("doc", content.first)
-               for x in content.iterator.skip_head(1) do
-                       c.append x
-                       c.add_raw_html "<br>"
-               end
-       end
-end
-
-redef class MEntity
-       super HInfoBoxable
-
-       # A HTML version of `to_s` with hyper-links.
-       #
-       # By default, `linkto_text(v, to_s)` is used, c.f. see `linkto_text`.
-       #
-       # For some complex entities, like generic types, multiple `<a>` and `<span>` elements can be generated.
-       # E.g. `Array[Int]` might become `<a>Array</a>[<a>Int</a>]` with the correct `href` attributes
-       # provided  by `v.hrefto`.
-       fun linkto(v: HighlightVisitor): HTMLTag do return linkto_text(v, to_s)
-
-       # Link to the `self` with a specific text.
-       #
-       # The whole text is linked with a single `<a>` element.
-       #
-       # The `href` used is provided by `v.hrefto`.
-       # If `href` is null then a `<span>` element is used instead of `<a>`.
-       fun linkto_text(v: HighlightVisitor, text: String): HTMLTag
-       do
-               var href = v.hrefto(self)
-               if href == null then
-                       return (new HTMLTag("span")).text(text)
-               end
-               return (new HTMLTag("a")).attr("href", href).text(text)
-       end
-
-       # Append an entry for the doc in the given infobox
-       private fun add_doc_to_infobox(res: HInfoBox)
-       do
-               var mdoc = mdoc_or_fallback
-               if mdoc != null then mdoc.fill_infobox(res)
-       end
-end
-
-redef class MModule
-       redef fun infobox(v)
-       do
-               var res = new HInfoBox(v, "module {name}")
-               res.href = v.hrefto(self)
-               res.new_field("module").add(linkto(v))
-               add_doc_to_infobox(res)
-               if in_importation.greaters.length > 1 then
-                       var c = res.new_dropdown("imports", "{in_importation.greaters.length-1} modules")
-                       for x in in_importation.greaters do
-                               if x == self then continue
-                               c.open("li").add x.linkto(v)
-                       end
-               end
-               return res
-       end
-
-       redef fun linkto(v) do return linkto_text(v, name)
-end
-
-redef class MClassDef
-       redef fun infobox(v)
-       do
-               var res = new HInfoBox(v, "class {mclass.name}")
-               res.href = v.hrefto(self)
-               if is_intro then
-                       res.new_field("class").text(mclass.name)
-               else
-                       res.new_field("redef class").text(mclass.name)
-                       res.new_field("intro").add mclass.intro.linkto_text(v, "in {mclass.intro_mmodule.to_s}")
-               end
-               add_doc_to_infobox(res)
-
-               var in_hierarchy = self.in_hierarchy
-               if in_hierarchy == null then return res
-
-               if in_hierarchy.greaters.length > 1 then
-                       var c = res.new_dropdown("hier", "super-classes")
-                       for x in in_hierarchy.greaters do
-                               if x == self then continue
-                               if not x.is_intro then continue
-                               c.open("li").add x.linkto(v)
-                       end
-               end
-               if in_hierarchy.smallers.length > 1 then
-                       var c = res.new_dropdown("hier", "sub-classes")
-                       for x in in_hierarchy.smallers do
-                               if x == self then continue
-                               if not x.is_intro then continue
-                               c.open("li").add x.linkto(v)
-                       end
-               end
-               if mclass.mclassdefs.length > 1 then
-                       var c = res.new_dropdown("redefs", "refinements")
-                       for x in mclass.mclassdefs do
-                               if x == self then continue
-                               c.open("li").add x.linkto_text(v, "in {x.mmodule}")
-                       end
-               end
-               return res
-       end
-end
-
-redef class MPropDef
-       redef fun infobox(v)
-       do
-               var res = new HInfoBox(v, to_s)
-               res.href = v.hrefto(self)
-               if self isa MMethodDef then
-                       var msignature = self.msignature
-                       if msignature != null then res.new_field("fun").append(mproperty.name).add msignature.linkto(v)
-               else if self isa MAttributeDef then
-                       var static_mtype = self.static_mtype
-                       if static_mtype != null then res.new_field("fun").append(mproperty.name).add static_mtype.linkto(v)
-               else if self isa MVirtualTypeDef then
-                       var bound = self.bound
-                       if bound != null then res.new_field("add").append(mproperty.name).add bound.linkto(v)
-               else
-                       res.new_field("wat?").append(mproperty.name)
-               end
-
-               if is_intro then
-               else
-                       res.new_field("intro").add mproperty.intro.linkto_text(v, "in {mproperty.intro.mclassdef}")
-               end
-               add_doc_to_infobox(res)
-               if mproperty.mpropdefs.length > 1 then
-                       var c = res.new_dropdown("redef", "redefinitions")
-                       for x in mproperty.mpropdefs do
-                               c.open("li").add x.linkto_text(v, "in {x.mclassdef}")
-                       end
-               end
-
-               return res
-       end
-end
-
-redef class MClassType
-       redef fun infobox(v)
-       do
-               var res = new HInfoBox(v, to_s)
-               res.href = v.hrefto(self)
-               res.new_field("class").add mclass.intro.linkto(v)
-               add_doc_to_infobox(res)
-               return res
-       end
-       redef fun linkto(v)
-       do
-               return mclass.intro.linkto(v)
-       end
-end
-redef class MVirtualType
-       redef fun infobox(v)
-       do
-               var res = new HInfoBox(v, to_s)
-               res.href = v.hrefto(mproperty)
-               var p = mproperty
-               res.new_field("virtual type").add p.intro.linkto(v)
-               add_doc_to_infobox(res)
-               return res
-       end
-       redef fun linkto(v)
-       do
-               return mproperty.intro.linkto(v)
-       end
-end
-redef class MParameterType
-       redef fun infobox(v)
-       do
-               var res = new HInfoBox(v, to_s)
-               res.new_field("parameter type").append("{name} from class ").add mclass.intro.linkto(v)
-               return res
-       end
-end
-
-redef class MNullableType
-       redef fun infobox(v)
-       do
-               return mtype.infobox(v)
-       end
-       redef fun linkto(v)
-       do
-               var res = new HTMLTag("span")
-               res.append("nullable ").add(mtype.linkto(v))
-               return res
-       end
-end
-
-redef class MNotNullType
-       redef fun infobox(v)
-       do
-               return mtype.infobox(v)
-       end
-       redef fun linkto(v)
-       do
-               var res = new HTMLTag("span")
-               res.append("not null ").add(mtype.linkto(v))
-               return res
-       end
-end
+       # The produced highlighting
+       var result = new Template
 
-redef class MNullType
-       redef fun infobox(v)
+       redef fun do_highlight(f, l)
        do
-               var res = new HInfoBox(v, to_s)
-               return res
-       end
-       redef fun linkto(v)
-       do
-               var res = new HTMLTag("span")
-               res.append("null")
-               return res
-       end
-end
+               var c
+               c = f
+               while c != null do
+                       if c != f then result.add(c.blank_before)
+                       result.add c.ansi_colored
 
-redef class MSignature
-       redef fun linkto(v)
-       do
-               var res = new HTMLTag("span")
-               var first = true
-               if not mparameters.is_empty then
-                       res.append "("
-                       for p in mparameters do
-                               if first then
-                                       first = false
-                               else
-                                       res.append ", "
-                               end
-                               res.append p.name
-                               res.append ": "
-                               res.add p.mtype.linkto(v)
+                       if c == l then
+                               c = null
+                       else
+                               c = c.next_token
                        end
-                       res.append ")"
-               end
-               var ret = return_mtype
-               if ret != null then
-                       res.append ": "
-                       res.add ret.linkto(v)
                end
-               return res
-       end
-end
-
-redef class CallSite
-       redef fun infobox(v)
-       do
-               var res = new HInfoBox(v, "call {mpropdef}")
-               res.href = v.hrefto(mpropdef)
-               res.new_field("call").add(mpropdef.linkto(v)).add(msignature.linkto(v))
-               if mpropdef.is_intro then
-               else
-                       res.new_field("intro").add mproperty.intro.linkto_text(v, "in {mproperty.intro.mclassdef}")
-               end
-               add_doc_to_infobox(res)
-
-               return res
-       end
-       redef fun linkto(v)
-       do
-               return mpropdef.linkto(v)
-       end
-end
-
-redef class Variable
-       super HInfoBoxable
-       redef fun infobox(v)
-       do
-               var declared_type = self.declared_type
-               if declared_type == null then
-                       var res = new HInfoBox(v, "{name}")
-                       res.new_field("local var").append("{name}")
-                       return res
-               end
-               var res = new HInfoBox(v, "{name}: {declared_type}")
-               res.new_field("local var").append("{name}:").add(declared_type.linkto(v))
-               return res
-       end
-end
-
-
-##
-
-redef class ANode
-       # Optionally creates a tag that encapsulate the AST element on HTML rendering
-       protected fun make_tag(v: HighlightVisitor): nullable HTMLTag do return null
-
-       # Add aditionnal information on a child-token and return an additionnal HInfoBox on it
-       protected fun decorate_tag(v: HighlightVisitor, res: HTMLTag, token: Token): nullable HInfoBox
-       do
-               #debug("no decoration for {token.inspect}")
-               #res.add_class("nc_error")
-               return null
-       end
-
-       # Return a optional infobox
-       fun infobox(v: HighlightVisitor): nullable HInfoBox do return null
-end
-
-redef class AQclassid
-       redef fun decorate_tag(v, res, token)
-       do
-               if token != n_id then return null
-               var parent = self.parent
-               if parent == null then return null
-               return parent.decorate_tag(v, res, token)
-       end
-end
-
-redef class AQid
-       redef fun decorate_tag(v, res, token)
-       do
-               if token != n_id then return null
-               var parent = self.parent
-               if parent == null then return null
-               return parent.decorate_tag(v, res, token)
-       end
-end
-
-redef class AStdClassdef
-       redef fun make_tag(v)
-       do
-               var res = new HTMLTag("span")
-               res.add_class("nc_cdef")
-               var md = mclassdef
-               if md != null then res.attr("id", md.to_s)
-               return res
-       end
-       redef fun decorate_tag(v, res, token)
-       do
-               if not token isa TClassid then return null
-               res.add_class("nc_def")
-
-               var md = mclassdef
-               if md == null then return null
-               return md.infobox(v)
-       end
-end
-redef class APropdef
-       redef fun make_tag(v)
-       do
-               var res = new HTMLTag("span")
-               res.add_class("nc_pdef")
-               var mpd
-               mpd = mpropdef
-               if mpd != null then
-                       #res.add(tag(mpd))
-                       res.attr("id", mpd.to_s)
-               end
-               if self isa AAttrPropdef then
-                       mpd = mreadpropdef
-                       if mpd != null then res.add(tag(mpd))
-                       mpd = mwritepropdef
-                       if mpd != null then res.add(tag(mpd))
-               end
-               return res
-       end
-
-       private fun tag(mpd: MPropDef): HTMLTag
-       do
-               var a = new HTMLTag("a")
-               a.attr("id", mpd.to_s)
-               return a
        end
 end
 
 redef class Token
-       # Produce an HTMLTag with the correct contents and CSS classes
-       # Subclasses can redefine it to decorate the tag
-       redef fun make_tag(v): HTMLTag
-       do
-               var res = new HTMLTag("span")
-               res.text(text)
-               return res
-       end
-end
-
-redef class TokenKeyword
-       redef fun make_tag(v)
-       do
-               var res = super
-               res.add_class("nc_k")
-               return res
-       end
-end
-redef class TokenOperator
-       redef fun make_tag(v)
-       do
-               var res = super
-               res.add_class("nc_o")
-               return res
-       end
-end
-
-redef class AVarFormExpr
-       redef fun decorate_tag(v, res, token)
-       do
-               if token != n_id then return null
-               var variable = self.variable
-               if variable == null then return null
-               res.add_class("nc_v")
-               return variable.infobox(v)
-       end
+       # Return the ANSI colored text
+       fun ansi_colored: String do return text
 end
 
-redef class AVardeclExpr
-       redef fun decorate_tag(v, res, token)
-       do
-               if token != n_id then return null
-               var variable = self.variable
-               if variable == null then return null
-               res.add_class("nc_v")
-               return variable.infobox(v)
-       end
-end
-
-redef class AForGroup
-       redef fun decorate_tag(v, res, token)
-       do
-               if not token isa TId then return null
-               var vs = variables
-               if vs == null then return null
-               res.add_class("nc_v")
-               var idx = n_ids.index_of(token)
-               var variable = vs[idx]
-               return variable.infobox(v)
-       end
-end
-
-redef class AParam
-       redef fun decorate_tag(v, res, token)
-       do
-               if token != n_id then return null
-               var mp = mparameter
-               if mp == null then return null
-               var variable = self.variable
-               if variable == null then return null
-               res.add_class("nc_v")
-               return variable.infobox(v)
-       end
-end
-
-redef class AAssertExpr
-       redef fun decorate_tag(v, res, token)
-       do
-               if not token isa TId then return null
-               res.add_class("nc_ast")
-               return null
-       end
-end
-
-redef class ALabel
-       redef fun decorate_tag(v, res, token)
-       do
-               if not token isa TId then return null
-               res.add_class("nc_la")
-               return null
-       end
-end
-
-redef class ASendExpr
-       redef fun decorate_tag(v, res, token)
-       do
-               var callsite = self.callsite
-               if callsite == null then return null
-               return callsite.infobox(v)
-       end
-end
-
-redef class ANewExpr
-       redef fun decorate_tag(v, res, token)
-       do
-               var callsite = self.callsite
-               if callsite == null then return null
-               return callsite.infobox(v)
-       end
-end
-
-redef class AAssignOp
-       redef fun decorate_tag(v, res, token)
-       do
-               var p = parent
-               assert p isa AReassignFormExpr
-
-               var callsite = p.reassign_callsite
-               if callsite == null then return null
-               return callsite.infobox(v)
-       end
-end
-
-redef class AModuleName
-       redef fun decorate_tag(v, res, token)
-       do
-               var p = parent
-               if p == null then return null
-               return p.decorate_tag(v, res, token)
-       end
-end
-
-redef class AModuledecl
-       redef fun decorate_tag(v, res, token)
-       do
-               if not token isa TId then return null
-               res.add_class("nc_def")
-               res.add_class("nc_m")
-               var p = parent
-               assert p isa AModule
-               var mm = p.mmodule
-               if mm == null then return null
-               return mm.infobox(v)
-       end
+redef class TComment
+       redef fun ansi_colored do return super.blue
 end
 
-redef class AStdImport
-       redef fun decorate_tag(v, res, token)
-       do
-               if not token isa TId then return null
-               res.add_class("nc_m")
-               var mm = mmodule
-               if mm == null then return null
-               return mm.infobox(v)
-       end
-end
-redef class AAttrPropdef
-       redef fun decorate_tag(v, res, token)
-       do
-               if not token isa TId then return null
-               res.add_class("nc_def")
-               var mpd: nullable MPropDef
-               mpd = mreadpropdef
-               if mpd == null then mpd = mpropdef
-               if mpd == null then return null
-               return mpd.infobox(v)
-       end
+redef class TokenKeyword
+       redef fun ansi_colored do return super.yellow
 end
 
-redef class TId
-       redef fun make_tag(v)
-       do
-               var res = super
-               res.add_class("nc_i")
-               return res
-       end
-end
-redef class AMethid
-       redef fun make_tag(v)
-       do
-               var res = new HTMLTag("span")
-               res.add_class("nc_def")
-               return res
-       end
-       redef fun decorate_tag(v, res, token)
-       do
-               return null
-               # nothing to decorate
-       end
-       redef fun infobox(v)
-       do
-               var p = parent
-               if not p isa AMethPropdef then return null
-               var mpd = p.mpropdef
-               if mpd == null then return null
-               return mpd.infobox(v)
-       end
-end
-redef class TAttrid
-       redef fun make_tag(v)
-       do
-               var res = super
-               res.add_class("nc_a")
-               return res
-       end
-end
-redef class AAttrFormExpr
-       redef fun decorate_tag(v, res, token)
-       do
-               if not token isa TAttrid then return null
-               var p = mproperty
-               if p == null then return null
-               return p.intro.infobox(v)
-       end
-end
 redef class TClassid
-       redef fun make_tag(v)
-       do
-               var res = super
-               res.add_class("nc_t")
-               return res
-       end
-end
-redef class AType
-       redef fun decorate_tag(v, res, token)
-       do
-               if not token isa TClassid then return null
-               var mt = mtype
-               if mt == null then return null
-               mt = mt.undecorate
-               if mt isa MFormalType then
-                       res.add_class("nc_vt")
-               end
-               return mt.infobox(v)
-       end
-end
-redef class AFormaldef
-       redef fun decorate_tag(v, res, token)
-       do
-               if not token isa TClassid then return null
-               res.add_class("nc_vt")
-               var mtype = self.mtype
-               if mtype == null then return null
-               return mtype.infobox(v)
-       end
-end
-redef class ATypePropdef
-       redef fun decorate_tag(v, res, token)
-       do
-               if not token isa TClassid then return null
-               res.add_class("nc_def")
-               var md = mpropdef
-               if md == null then return null
-               return md.infobox(v)
-       end
-end
-redef class TComment
-       redef fun make_tag(v)
-       do
-               var res = super
-               if is_loose then
-                       res.add_class("nc_c")
-               end
-               return res
-       end
-end
-redef class ADoc
-       redef fun make_tag(v)
-       do
-               var res = new HTMLTag("span")
-               res.add_class("nc_d")
-               return res
-       end
+       redef fun ansi_colored do return super.green
 end
+
 redef class TokenLiteral
-       redef fun make_tag(v)
-       do
-               var res = super
-               res.add_class("nc_l")
-               return res
-       end
-end
-redef class ASuperstringExpr
-       redef fun make_tag(v)
-       do
-               var res = new HTMLTag("span")
-               res.add_class("nc_ss")
-               return res
-       end
-end
-redef class AStringFormExpr
-       redef fun decorate_tag(v, res, token)
-       do
-               # Workaround to tag strings
-               res.classes.remove("nc_l")
-               res.add_class("nc_s")
-               return super
-       end
-end
-redef class AExpr
-       redef fun decorate_tag(v, res, token)
-       do
-               var t = mtype
-               if t == null then return null
-               return t.infobox(v)
-       end
+       redef fun ansi_colored do return super.red
 end
diff --git a/src/htmlight.nit b/src/htmlight.nit
new file mode 100644 (file)
index 0000000..eb6f282
--- /dev/null
@@ -0,0 +1,1099 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Highlighting of Nit AST with HTML
+module htmlight
+
+import highlight
+import html
+import pipeline
+import serialization
+
+# A standalone highlighted piece of code
+class HLCode
+       super Serializable
+
+       # The highlighter used
+       var hl: HtmlightVisitor
+
+       # The raw code source
+       var content: String
+
+       # The pseudo source-file
+       var source: SourceFile
+
+       # JavaScript code to update an existing codemirror editor.
+       fun code_mirror_update: Template
+       do
+
+               var res = new Template
+               res.add """
+       function nitmessage() {
+               editor.operation(function(){
+                       for (var i = 0; i < widgets.length; ++i)
+                             editor.removeLineWidget(widgets[i]);
+                       widgets.length = 0;
+"""
+
+               for m in source.messages do
+                       res.add """
+                       var l = document.createElement("div");
+                       l.className = "lint-error"
+                       l.innerHTML = "<span class='glyphicon glyphicon-warning-sign lint-error-icon'></span> {{{m.text.html_escape}}}";
+                       var w = editor.addLineWidget({{{m.location.line_start-1}}}, l);
+                       widgets.push(w);
+"""
+               end
+               res.add """});}"""
+               return res
+       end
+
+       redef fun core_serialize_to(v)
+       do
+               v.serialize_attribute("code", hl.html.write_to_string)
+               var msgs = new Array[Map[String, Serializable]]
+               for m in source.messages do
+                       var o = new Map[String, Serializable]
+                       msgs.add o
+                       o["line"] = m.location.line_start-1
+                       o["message"] = m.text
+               end
+               v.serialize_attribute("messages", msgs)
+       end
+end
+
+# Visitor used to produce a HTML tree based on a AST on a `Source`
+class HtmlightVisitor
+       super AbstractHighlightVisitor
+
+       # The root of the HTML hierarchy
+       var html = new HTMLTag("span")
+
+       # Should the HTML include a nested `<span class"{type_of_node}">` element for each `ANode` of the AST?
+       #
+       # Used to have a really huge and verbose HTML (mainly for debug)
+       var with_ast = false is writable
+
+       # Prefixes used in generated IDs for line `<span>` elements.
+       # Useful if more than one highlighted code is present in the same HTML document.
+       #
+       # If set to the empty string, id for lines are disabled.
+       #
+       # Is `"L"` by default.
+       var line_id_prefix = "L" is writable
+
+       # When highlighting a node, attach a full popupable infobox, if any.
+       #
+       # If `false`, only a simple `title` tooltip is used.
+       #
+       # default: true
+       var show_infobox = true is writable
+
+       # A reference to an entity used in generated `<a>` elements.
+       #
+       # It is used to refer to some specific entities when generating links.
+       # If `null` is returned, then no link are generated and `<a>` elements become `<span>`.
+       #
+       # By default, `null` is returned.
+       # Clients are therefore encouraged to redefine the method in a subclass to control where entities should link to.
+       fun hrefto(entity: MEntity): nullable String do return null
+
+       init
+       do
+               html.add_class("nitcode")
+       end
+
+       private fun full_tag(anode: ANode): nullable HTMLTag
+       do
+               var tag = anode.make_tag(self)
+               if tag == null then return null
+               var infobox = anode.infobox(self)
+               if infobox == null and anode isa Token then
+                       var pa = anode.parent
+                       if pa != null then
+                               infobox = pa.decorate_tag(self, tag, anode)
+                       end
+               end
+               if infobox != null and not show_infobox then
+                       tag.attr("title", infobox.title)
+                       tag.classes.add "titled"
+                       infobox = null
+               end
+               var messages = anode.location.messages
+               if messages != null and show_messages then
+                       tag.css("border-bottom", "solid 2px red")
+                       if infobox == null then
+                               infobox = new HInfoBox(self, "Messages")
+                       end
+                       var c = infobox.new_dropdown("{messages.length} message(s)", "")
+                       for m in messages do
+                               c.open("li").append(m.text)
+                       end
+               end
+               if infobox != null then
+                       tag.attach_infobox(infobox)
+               end
+               return tag
+       end
+
+       # Low-level highlighting between 2 tokens
+       redef fun do_highlight(first_token, last_token)
+       do
+               var stack2 = new Array[HTMLTag]
+               var stack = new Array[Prod]
+               var line = 0
+               var c: nullable Token = first_token
+               while c != null do
+                       var starting
+
+                       # Handle start of line
+                       var cline = c.location.line_start
+                       if cline != line then
+                               # Handle starting block productions,
+                               # Because c could be a detached token, get prods in
+                               # the first AST token
+                               var c0 = c.first_token_in_line
+                               starting = null
+                               if c0 != null then starting = c0.starting_prods
+                               if starting != null then for p in starting do
+                                       if not p.is_block then continue
+                                       var tag = full_tag(p)
+                                       if tag == null then continue
+                                       tag.add_class("foldable")
+                                       stack2.add(html)
+                                       html.add tag
+                                       html = tag
+                                       stack.add(p)
+                               end
+
+                               # Add a div for the whole line
+                               var tag = new HTMLTag("span")
+                               var p = line_id_prefix
+                               if p != "" then tag.attrs["id"] = "{p}{cline}"
+                               tag.classes.add "line"
+                               stack2.add(html)
+                               html.add tag
+                               html = tag
+                               line = cline
+                       end
+
+                       # Add the blank, verbatim
+                       html.add_raw_html c.blank_before
+
+                       # Handle starting span production
+                       starting = c.starting_prods
+                       if starting != null then for p in starting do
+                               if not p.is_span then continue
+                               var tag = full_tag(p)
+                               if tag == null then continue
+                               stack2.add(html)
+                               html.add tag
+                               html = tag
+                               stack.add(p)
+                       end
+
+                       # Add the token
+                       if c isa TEol then
+                               html.append "\n"
+                       else
+                               var tag = full_tag(c)
+                               if tag != null then html.add tag
+                       end
+
+                       # Handle ending span productions
+                       var ending = c.ending_prods
+                       if ending != null then for p in ending do
+                               if not p.is_span then continue
+                               if stack.is_empty or p != stack.last then continue
+                               stack.pop
+                               html = stack2.pop
+                       end
+
+                       # Handle end of line and end of file
+                       var n = c.next_token
+                       if c == last_token then n = null
+                       if n == null or n.location.line_start != line  then
+                               # closes the line div
+                               html = stack2.pop
+
+                               # close the block production divs
+                               var c0 = c.last_token_in_line
+                               ending = null
+                               if c0 != null then ending = c0.ending_prods
+                               if ending != null then for p in ending do
+                                       if not p.is_block then continue
+                                       if stack.is_empty or p != stack.last then continue
+                                       stack.pop
+                                       html = stack2.pop
+                               end
+                       end
+
+                       c = n
+               end
+               if not stack2.is_empty then html = stack2.first
+       end
+
+       # Return a default CSS content related to CSS classes used in the `html` tree.
+       # Could be inlined in the `.html` file of saved as a specific `.css` file.
+       fun css_content: String
+       do
+               return """
+.nitcode a { color: inherit; cursor:pointer; }
+.nitcode .titled:hover { text-decoration: underline; } /* underline titles */
+.nitcode .popupable:hover { text-decoration: underline; cursor:help; } /* underline titles */
+.nitcode .foldable { display: block } /* for block productions*/
+.nitcode .line{ display: block } /* for lines */
+.nitcode .line:hover{ background-color: #FFFFE0; } /* current line */
+.nitcode :target { background-color: #FFF3C2 } /* target highlight*/
+/* lexical raw tokens. independent of usage or semantic: */
+.nitcode .nc_c { color: gray; font-style: italic; } /* comment */
+.nitcode .nc_d { color: #3D8127; font-style: italic; } /* documentation comments */
+.nitcode .nc_k { font-weight: bold; } /* keyword */
+.nitcode .nc_o {} /* operator */
+.nitcode .nc_i {} /* standard identifier */
+.nitcode .nc_t { color: #445588; font-weight: bold; } /* type/class identifier */
+.nitcode .nc_a { color: #445588; font-style: italic; } /* old style attribute identifier */
+.nitcode .nc_l { color: #009999; } /* char and number literal */
+.nitcode .nc_s { color: #8F1546; } /* string literal */
+/* syntactic token usage. added because of their position in the AST */
+.nitcode .nc_ast { color: blue; } /* assert label */
+.nitcode .nc_la { color: blue; } /* break/continue label */
+.nitcode .nc_m { color: #445588; } /* module name */
+/* syntactic groups */
+.nitcode .nc_def { font-weight: bold; color: blue; } /* name used in a definition */
+  .nitcode .nc_def.nc_a { color: blue; } /* name used in a attribute definition */
+  .nitcode .nc_def.nc_t { color: blue; } /* name used in a class or vt definition */
+.nitcode .nc_ss { color: #9E6BEB; } /* superstrings */
+.nitcode .nc_cdef {} /* A whole class definition */
+.nitcode .nc_pdef {} /* A whole property definition */
+/* semantic token usage */
+.nitcode .nc_v { font-style: italic; } /* local variable or parameter */
+.nitcode .nc_vt { font-style: italic; } /* virtual type or formal type */
+
+.nitcode .nc_error { border: 1px red solid;} /* not used */
+.popover { max-width: 800px !important; }
+"""
+       end
+
+       # Additional content to inject in the <head> tag
+       # Note: does not include `css_content`; handle it yourself.
+       fun head_content: String
+       do
+               return """<link rel="stylesheet" href="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/css/bootstrap.min.css">\n"""
+       end
+
+       # Additional content to inject just before the closing </body> tag
+       fun foot_content: String
+       do
+               return """
+<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
+<script src="http://netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script>
+<script>$(".popupable").popover({html:true, placement:'top'})/*initialize bootstrap popover*/</script>"""
+       end
+
+       # Fully process `content` as a Nit source file.
+       #
+       # Set `print_errors = true` to print errors in the code to the console.
+       fun highlightcode(content: String, print_errors: nullable Bool): HLCode
+       do
+               # Prepare a stand-alone tool context
+               var tc = new ToolContext
+               tc.nit_dir = tc.locate_nit_dir # still use the common lib to have core
+               tc.keep_going = true # no exit, obviously
+               if print_errors != true then tc.opt_warn.value = -1 # no output
+
+               # Prepare an stand-alone model and model builder.
+               # Unfortunately, models are enclosing and append-only.
+               # There is no way (yet?) to have a shared module `core` with
+               # isolated and throwable user modules.
+               var model = new Model
+               var mb = new ModelBuilder(model, tc)
+
+               # Parse the code
+               var source = new SourceFile.from_string("", content + "\n")
+               var lexer = new Lexer(source)
+               var parser = new Parser(lexer)
+               var tree = parser.parse
+
+               var hlcode = new HLCode(self, content, source)
+
+               # Check syntax error
+               var eof = tree.n_eof
+               if eof isa AError then
+                       mb.error(eof, eof.message)
+                       highlight_source(source)
+                       return hlcode
+               end
+               var amodule = tree.n_base.as(not null)
+
+               # Load the AST as a module in the model
+               # Then process it
+               mb.load_rt_module(null, amodule, "")
+               mb.run_phases
+
+               # Highlight the processed module
+               highlight_node(amodule)
+               return hlcode
+       end
+end
+
+redef class HTMLTag
+       # Attach the infobox to the node by using BootStrap popover
+       fun attach_infobox(infobox: HInfoBox)
+       do
+               classes.add("popupable")
+               attrs["title"] = infobox.title
+               var href = infobox.href
+               if href != null then
+                       attrs["data-title"] = """<a href="{{{href}}}">{{{infobox.title}}}</a>"""
+               end
+               attrs["data-content"] = infobox.content.write_to_string
+               attrs["data-toggle"] = "popover"
+       end
+end
+
+
+# A generic information container that can be used to decorate AST entities
+class HInfoBox
+       # The visitor used for contextualisation, if needed
+       var visitor: HtmlightVisitor
+
+       # A short title for the AST element
+       var title: String
+
+       # The primary link where the entity points
+       # null if no link
+       var href: nullable String = null
+
+       # The content of the popuped infobox
+       var content = new HTMLTag("div")
+
+       # Append a new field in the popuped infobox
+       fun new_field(title: String): HTMLTag
+       do
+               content.open("b").text(title)
+               content.append(" ")
+               var res = content.open("span")
+               content.open("br")
+               return res
+       end
+
+       # Append a new dropdown in the popuped content
+       fun new_dropdown(title, text: String, text_is_html: nullable Bool): HTMLTag
+       do
+               content.add_raw_html """<div class="dropdown"> <a data-toggle="dropdown" href="#"><b>"""
+               content.append(title)
+               content.add_raw_html "</b> "
+               if text_is_html == true then
+                       content.add_raw_html(text)
+               else content.append(text)
+               content.add_raw_html """<span class="caret"></span></a>"""
+               var res = content.open("ul").add_class("dropdown-menu").attr("role", "menu").attr("aria-labelledby", "dLabel")
+               content.add_raw_html "</div>"
+               return res
+       end
+end
+
+##
+
+# Model entity or whatever that can produce an infobox
+interface HInfoBoxable
+       # An new infobox documenting the entity
+       fun infobox(v: HtmlightVisitor): HInfoBox is abstract
+end
+
+redef class MDoc
+       # Append an entry for the doc in the given infobox
+       fun fill_infobox(res: HInfoBox)
+       do
+               if content.length < 2 then
+                       res.new_field("doc").text(content.first)
+                       return
+               end
+               var c = res.new_dropdown("doc", content.first)
+               for x in content.iterator.skip_head(1) do
+                       c.append x
+                       c.add_raw_html "<br>"
+               end
+       end
+end
+
+redef class MEntity
+       super HInfoBoxable
+
+       # A HTML version of `to_s` with hyper-links.
+       #
+       # By default, `linkto_text(v, to_s)` is used, c.f. see `linkto_text`.
+       #
+       # For some complex entities, like generic types, multiple `<a>` and `<span>` elements can be generated.
+       # E.g. `Array[Int]` might become `<a>Array</a>[<a>Int</a>]` with the correct `href` attributes
+       # provided  by `v.hrefto`.
+       fun linkto(v: HtmlightVisitor): HTMLTag do return linkto_text(v, to_s)
+
+       # Link to the `self` with a specific text.
+       #
+       # The whole text is linked with a single `<a>` element.
+       #
+       # The `href` used is provided by `v.hrefto`.
+       # If `href` is null then a `<span>` element is used instead of `<a>`.
+       fun linkto_text(v: HtmlightVisitor, text: String): HTMLTag
+       do
+               var href = v.hrefto(self)
+               if href == null then
+                       return (new HTMLTag("span")).text(text)
+               end
+               return (new HTMLTag("a")).attr("href", href).text(text)
+       end
+
+       # Append an entry for the doc in the given infobox
+       private fun add_doc_to_infobox(res: HInfoBox)
+       do
+               var mdoc = mdoc_or_fallback
+               if mdoc != null then mdoc.fill_infobox(res)
+       end
+end
+
+redef class MModule
+       redef fun infobox(v)
+       do
+               var res = new HInfoBox(v, "module {name}")
+               res.href = v.hrefto(self)
+               res.new_field("module").add(linkto(v))
+               add_doc_to_infobox(res)
+               if in_importation.greaters.length > 1 then
+                       var c = res.new_dropdown("imports", "{in_importation.greaters.length-1} modules")
+                       for x in in_importation.greaters do
+                               if x == self then continue
+                               c.open("li").add x.linkto(v)
+                       end
+               end
+               return res
+       end
+
+       redef fun linkto(v) do return linkto_text(v, name)
+end
+
+redef class MClassDef
+       redef fun infobox(v)
+       do
+               var res = new HInfoBox(v, "class {mclass.name}")
+               res.href = v.hrefto(self)
+               if is_intro then
+                       res.new_field("class").text(mclass.name)
+               else
+                       res.new_field("redef class").text(mclass.name)
+                       res.new_field("intro").add mclass.intro.linkto_text(v, "in {mclass.intro_mmodule.to_s}")
+               end
+               add_doc_to_infobox(res)
+
+               var in_hierarchy = self.in_hierarchy
+               if in_hierarchy == null then return res
+
+               if in_hierarchy.greaters.length > 1 then
+                       var c = res.new_dropdown("hier", "super-classes")
+                       for x in in_hierarchy.greaters do
+                               if x == self then continue
+                               if not x.is_intro then continue
+                               c.open("li").add x.linkto(v)
+                       end
+               end
+               if in_hierarchy.smallers.length > 1 then
+                       var c = res.new_dropdown("hier", "sub-classes")
+                       for x in in_hierarchy.smallers do
+                               if x == self then continue
+                               if not x.is_intro then continue
+                               c.open("li").add x.linkto(v)
+                       end
+               end
+               if mclass.mclassdefs.length > 1 then
+                       var c = res.new_dropdown("redefs", "refinements")
+                       for x in mclass.mclassdefs do
+                               if x == self then continue
+                               c.open("li").add x.linkto_text(v, "in {x.mmodule}")
+                       end
+               end
+               return res
+       end
+end
+
+redef class MPropDef
+       redef fun infobox(v)
+       do
+               var res = new HInfoBox(v, to_s)
+               res.href = v.hrefto(self)
+               if self isa MMethodDef then
+                       var msignature = self.msignature
+                       if msignature != null then res.new_field("fun").append(mproperty.name).add msignature.linkto(v)
+               else if self isa MAttributeDef then
+                       var static_mtype = self.static_mtype
+                       if static_mtype != null then res.new_field("fun").append(mproperty.name).add static_mtype.linkto(v)
+               else if self isa MVirtualTypeDef then
+                       var bound = self.bound
+                       if bound != null then res.new_field("add").append(mproperty.name).add bound.linkto(v)
+               else
+                       res.new_field("wat?").append(mproperty.name)
+               end
+
+               if is_intro then
+               else
+                       res.new_field("intro").add mproperty.intro.linkto_text(v, "in {mproperty.intro.mclassdef}")
+               end
+               add_doc_to_infobox(res)
+               if mproperty.mpropdefs.length > 1 then
+                       var c = res.new_dropdown("redef", "redefinitions")
+                       for x in mproperty.mpropdefs do
+                               c.open("li").add x.linkto_text(v, "in {x.mclassdef}")
+                       end
+               end
+
+               return res
+       end
+end
+
+redef class MClassType
+       redef fun infobox(v)
+       do
+               var res = new HInfoBox(v, to_s)
+               res.href = v.hrefto(self)
+               res.new_field("class").add mclass.intro.linkto(v)
+               add_doc_to_infobox(res)
+               return res
+       end
+       redef fun linkto(v)
+       do
+               return mclass.intro.linkto(v)
+       end
+end
+redef class MVirtualType
+       redef fun infobox(v)
+       do
+               var res = new HInfoBox(v, to_s)
+               res.href = v.hrefto(mproperty)
+               var p = mproperty
+               res.new_field("virtual type").add p.intro.linkto(v)
+               add_doc_to_infobox(res)
+               return res
+       end
+       redef fun linkto(v)
+       do
+               return mproperty.intro.linkto(v)
+       end
+end
+redef class MParameterType
+       redef fun infobox(v)
+       do
+               var res = new HInfoBox(v, to_s)
+               res.new_field("parameter type").append("{name} from class ").add mclass.intro.linkto(v)
+               return res
+       end
+end
+
+redef class MNullableType
+       redef fun infobox(v)
+       do
+               return mtype.infobox(v)
+       end
+       redef fun linkto(v)
+       do
+               var res = new HTMLTag("span")
+               res.append("nullable ").add(mtype.linkto(v))
+               return res
+       end
+end
+
+redef class MNotNullType
+       redef fun infobox(v)
+       do
+               return mtype.infobox(v)
+       end
+       redef fun linkto(v)
+       do
+               var res = new HTMLTag("span")
+               res.append("not null ").add(mtype.linkto(v))
+               return res
+       end
+end
+
+redef class MNullType
+       redef fun infobox(v)
+       do
+               var res = new HInfoBox(v, to_s)
+               return res
+       end
+       redef fun linkto(v)
+       do
+               var res = new HTMLTag("span")
+               res.append("null")
+               return res
+       end
+end
+
+redef class MSignature
+       redef fun linkto(v)
+       do
+               var res = new HTMLTag("span")
+               var first = true
+               if not mparameters.is_empty then
+                       res.append "("
+                       for p in mparameters do
+                               if first then
+                                       first = false
+                               else
+                                       res.append ", "
+                               end
+                               res.append p.name
+                               res.append ": "
+                               res.add p.mtype.linkto(v)
+                       end
+                       res.append ")"
+               end
+               var ret = return_mtype
+               if ret != null then
+                       res.append ": "
+                       res.add ret.linkto(v)
+               end
+               return res
+       end
+end
+
+redef class CallSite
+       redef fun infobox(v)
+       do
+               var res = new HInfoBox(v, "call {mpropdef}")
+               res.href = v.hrefto(mpropdef)
+               res.new_field("call").add(mpropdef.linkto(v)).add(msignature.linkto(v))
+               if mpropdef.is_intro then
+               else
+                       res.new_field("intro").add mproperty.intro.linkto_text(v, "in {mproperty.intro.mclassdef}")
+               end
+               add_doc_to_infobox(res)
+
+               return res
+       end
+       redef fun linkto(v)
+       do
+               return mpropdef.linkto(v)
+       end
+end
+
+redef class Variable
+       super HInfoBoxable
+       redef fun infobox(v)
+       do
+               var declared_type = self.declared_type
+               if declared_type == null then
+                       var res = new HInfoBox(v, "{name}")
+                       res.new_field("local var").append("{name}")
+                       return res
+               end
+               var res = new HInfoBox(v, "{name}: {declared_type}")
+               res.new_field("local var").append("{name}:").add(declared_type.linkto(v))
+               return res
+       end
+end
+
+
+##
+
+redef class ANode
+       # Optionally creates a tag that encapsulate the AST element on HTML rendering
+       protected fun make_tag(v: HtmlightVisitor): nullable HTMLTag do return null
+
+       # Add aditionnal information on a child-token and return an additionnal HInfoBox on it
+       protected fun decorate_tag(v: HtmlightVisitor, res: HTMLTag, token: Token): nullable HInfoBox
+       do
+               #debug("no decoration for {token.inspect}")
+               #res.add_class("nc_error")
+               return null
+       end
+
+       # Return a optional infobox
+       fun infobox(v: HtmlightVisitor): nullable HInfoBox do return null
+end
+
+redef class AQclassid
+       redef fun decorate_tag(v, res, token)
+       do
+               if token != n_id then return null
+               var parent = self.parent
+               if parent == null then return null
+               return parent.decorate_tag(v, res, token)
+       end
+end
+
+redef class AQid
+       redef fun decorate_tag(v, res, token)
+       do
+               if token != n_id then return null
+               var parent = self.parent
+               if parent == null then return null
+               return parent.decorate_tag(v, res, token)
+       end
+end
+
+redef class AStdClassdef
+       redef fun make_tag(v)
+       do
+               var res = new HTMLTag("span")
+               res.add_class("nc_cdef")
+               var md = mclassdef
+               if md != null then res.attr("id", md.to_s)
+               return res
+       end
+       redef fun decorate_tag(v, res, token)
+       do
+               if not token isa TClassid then return null
+               res.add_class("nc_def")
+
+               var md = mclassdef
+               if md == null then return null
+               return md.infobox(v)
+       end
+end
+redef class APropdef
+       redef fun make_tag(v)
+       do
+               var res = new HTMLTag("span")
+               res.add_class("nc_pdef")
+               var mpd
+               mpd = mpropdef
+               if mpd != null then
+                       #res.add(tag(mpd))
+                       res.attr("id", mpd.to_s)
+               end
+               if self isa AAttrPropdef then
+                       mpd = mreadpropdef
+                       if mpd != null then res.add(tag(mpd))
+                       mpd = mwritepropdef
+                       if mpd != null then res.add(tag(mpd))
+               end
+               return res
+       end
+
+       private fun tag(mpd: MPropDef): HTMLTag
+       do
+               var a = new HTMLTag("a")
+               a.attr("id", mpd.to_s)
+               return a
+       end
+end
+
+redef class Token
+       # Produce an HTMLTag with the correct contents and CSS classes
+       # Subclasses can redefine it to decorate the tag
+       redef fun make_tag(v): HTMLTag
+       do
+               var res = new HTMLTag("span")
+               res.text(text)
+               return res
+       end
+end
+
+redef class TokenKeyword
+       redef fun make_tag(v)
+       do
+               var res = super
+               res.add_class("nc_k")
+               return res
+       end
+end
+redef class TokenOperator
+       redef fun make_tag(v)
+       do
+               var res = super
+               res.add_class("nc_o")
+               return res
+       end
+end
+
+redef class AVarFormExpr
+       redef fun decorate_tag(v, res, token)
+       do
+               if token != n_id then return null
+               var variable = self.variable
+               if variable == null then return null
+               res.add_class("nc_v")
+               return variable.infobox(v)
+       end
+end
+
+redef class AVardeclExpr
+       redef fun decorate_tag(v, res, token)
+       do
+               if token != n_id then return null
+               var variable = self.variable
+               if variable == null then return null
+               res.add_class("nc_v")
+               return variable.infobox(v)
+       end
+end
+
+redef class AForGroup
+       redef fun decorate_tag(v, res, token)
+       do
+               if not token isa TId then return null
+               var vs = variables
+               if vs == null then return null
+               res.add_class("nc_v")
+               var idx = n_ids.index_of(token)
+               var variable = vs[idx]
+               return variable.infobox(v)
+       end
+end
+
+redef class AParam
+       redef fun decorate_tag(v, res, token)
+       do
+               if token != n_id then return null
+               var mp = mparameter
+               if mp == null then return null
+               var variable = self.variable
+               if variable == null then return null
+               res.add_class("nc_v")
+               return variable.infobox(v)
+       end
+end
+
+redef class AAssertExpr
+       redef fun decorate_tag(v, res, token)
+       do
+               if not token isa TId then return null
+               res.add_class("nc_ast")
+               return null
+       end
+end
+
+redef class ALabel
+       redef fun decorate_tag(v, res, token)
+       do
+               if not token isa TId then return null
+               res.add_class("nc_la")
+               return null
+       end
+end
+
+redef class ASendExpr
+       redef fun decorate_tag(v, res, token)
+       do
+               var callsite = self.callsite
+               if callsite == null then return null
+               return callsite.infobox(v)
+       end
+end
+
+redef class ANewExpr
+       redef fun decorate_tag(v, res, token)
+       do
+               var callsite = self.callsite
+               if callsite == null then return null
+               return callsite.infobox(v)
+       end
+end
+
+redef class AAssignOp
+       redef fun decorate_tag(v, res, token)
+       do
+               var p = parent
+               assert p isa AReassignFormExpr
+
+               var callsite = p.reassign_callsite
+               if callsite == null then return null
+               return callsite.infobox(v)
+       end
+end
+
+redef class AModuleName
+       redef fun decorate_tag(v, res, token)
+       do
+               var p = parent
+               if p == null then return null
+               return p.decorate_tag(v, res, token)
+       end
+end
+
+redef class AModuledecl
+       redef fun decorate_tag(v, res, token)
+       do
+               if not token isa TId then return null
+               res.add_class("nc_def")
+               res.add_class("nc_m")
+               var p = parent
+               assert p isa AModule
+               var mm = p.mmodule
+               if mm == null then return null
+               return mm.infobox(v)
+       end
+end
+
+redef class AStdImport
+       redef fun decorate_tag(v, res, token)
+       do
+               if not token isa TId then return null
+               res.add_class("nc_m")
+               var mm = mmodule
+               if mm == null then return null
+               return mm.infobox(v)
+       end
+end
+redef class AAttrPropdef
+       redef fun decorate_tag(v, res, token)
+       do
+               if not token isa TId then return null
+               res.add_class("nc_def")
+               var mpd: nullable MPropDef
+               mpd = mreadpropdef
+               if mpd == null then mpd = mpropdef
+               if mpd == null then return null
+               return mpd.infobox(v)
+       end
+end
+
+redef class TId
+       redef fun make_tag(v)
+       do
+               var res = super
+               res.add_class("nc_i")
+               return res
+       end
+end
+redef class AMethid
+       redef fun make_tag(v)
+       do
+               var res = new HTMLTag("span")
+               res.add_class("nc_def")
+               return res
+       end
+       redef fun decorate_tag(v, res, token)
+       do
+               return null
+               # nothing to decorate
+       end
+       redef fun infobox(v)
+       do
+               var p = parent
+               if not p isa AMethPropdef then return null
+               var mpd = p.mpropdef
+               if mpd == null then return null
+               return mpd.infobox(v)
+       end
+end
+redef class TAttrid
+       redef fun make_tag(v)
+       do
+               var res = super
+               res.add_class("nc_a")
+               return res
+       end
+end
+redef class AAttrFormExpr
+       redef fun decorate_tag(v, res, token)
+       do
+               if not token isa TAttrid then return null
+               var p = mproperty
+               if p == null then return null
+               return p.intro.infobox(v)
+       end
+end
+redef class TClassid
+       redef fun make_tag(v)
+       do
+               var res = super
+               res.add_class("nc_t")
+               return res
+       end
+end
+redef class AType
+       redef fun decorate_tag(v, res, token)
+       do
+               if not token isa TClassid then return null
+               var mt = mtype
+               if mt == null then return null
+               mt = mt.undecorate
+               if mt isa MFormalType then
+                       res.add_class("nc_vt")
+               end
+               return mt.infobox(v)
+       end
+end
+redef class AFormaldef
+       redef fun decorate_tag(v, res, token)
+       do
+               if not token isa TClassid then return null
+               res.add_class("nc_vt")
+               var mtype = self.mtype
+               if mtype == null then return null
+               return mtype.infobox(v)
+       end
+end
+redef class ATypePropdef
+       redef fun decorate_tag(v, res, token)
+       do
+               if not token isa TClassid then return null
+               res.add_class("nc_def")
+               var md = mpropdef
+               if md == null then return null
+               return md.infobox(v)
+       end
+end
+redef class TComment
+       redef fun make_tag(v)
+       do
+               var res = super
+               if is_loose then
+                       res.add_class("nc_c")
+               end
+               return res
+       end
+end
+redef class ADoc
+       redef fun make_tag(v)
+       do
+               var res = new HTMLTag("span")
+               res.add_class("nc_d")
+               return res
+       end
+end
+redef class TokenLiteral
+       redef fun make_tag(v)
+       do
+               var res = super
+               res.add_class("nc_l")
+               return res
+       end
+end
+redef class ASuperstringExpr
+       redef fun make_tag(v)
+       do
+               var res = new HTMLTag("span")
+               res.add_class("nc_ss")
+               return res
+       end
+end
+redef class AStringFormExpr
+       redef fun decorate_tag(v, res, token)
+       do
+               # Workaround to tag strings
+               res.classes.remove("nc_l")
+               res.add_class("nc_s")
+               return super
+       end
+end
+redef class AExpr
+       redef fun decorate_tag(v, res, token)
+       do
+               var t = mtype
+               if t == null then return null
+               return t.infobox(v)
+       end
+end
index 3ac05af..44f6854 100644 (file)
@@ -138,19 +138,10 @@ redef class AModule
                var pkgconfigs = mmodule.pkgconfigs
                var pkg_cflags = ""
                if not pkgconfigs.is_empty then
-                       var cmd = "which pkg-config >/dev/null"
-                       if system(cmd) != 0 then
-                               v.fatal "FFI Error: Command `pkg-config` not found. Please install it"
-                               return false
-                       end
 
-                       for p in pkgconfigs do
-                               cmd = "pkg-config --exists '{p}'"
-                               if system(cmd) != 0 then
-                                       v.fatal "FFI Error: package {p} is not found by `pkg-config`. Please install it."
-                                       return false
-                               end
-                       end
+                       # Check if the pkgconfig packages are available
+                       v.modelbuilder.toolcontext.check_pkgconfig_packages pkgconfigs
+                       if not v.modelbuilder.toolcontext.check_errors then return false
 
                        pkg_cflags = "`pkg-config --cflags {pkgconfigs.join(" ")}`"
                        ldflags += " `pkg-config --libs {pkgconfigs.join(" ")}`"
index 6c899bd..ac7b970 100644 (file)
@@ -826,7 +826,7 @@ class InterpreterFrame
        super Frame
 
        # Mapping between a variable and the current value
-       private var map: Map[Variable, Instance] = new HashMap[Variable, Instance]
+       var map: Map[Variable, Instance] = new HashMap[Variable, Instance]
 end
 
 redef class ANode
@@ -875,7 +875,10 @@ redef class AMethPropdef
                return res
        end
 
-       private fun call_commons(v: NaiveInterpreter, mpropdef: MMethodDef, arguments: Array[Instance], f: Frame): nullable Instance
+       # Execution of the body of the method
+       #
+       # It handle the common special cases: super, intern, extern
+       fun call_commons(v: NaiveInterpreter, mpropdef: MMethodDef, arguments: Array[Instance], f: Frame): nullable Instance
        do
                v.frames.unshift(f)
 
@@ -1700,6 +1703,8 @@ redef class AEscapeExpr
                        var i = v.expr(ne)
                        if i == null then return
                        v.escapevalue = i
+               else
+                       v.escapevalue = null
                end
                v.escapemark = self.escapemark
        end
index 36157d3..448d17d 100644 (file)
@@ -208,7 +208,7 @@ class Location
 
                if line_start == loc.line_start then
                        if column_start < loc.column_start then return false
-                       if column_start > loc.column_end then return false
+                       if line_start == loc.line_end and column_start > loc.column_end then return false
                end
 
                if line_end == loc.line_end and column_end > loc.column_end then return false
index e335d8f..cd98e85 100644 (file)
@@ -33,8 +33,11 @@ class CodeSmellsMetricsPhase
 
        redef fun process_mainmodule(mainmodule, given_mmodules) do
                print toolcontext.format_h1("--- Code Smells Metrics ---")
-               self.set_all_average_metrics
-               var mclass_codesmell = new BadConceptonController
+
+               var filter = new ModelFilter(private_visibility)
+               var view = new ModelView(toolcontext.modelbuilder.model, mainmodule, filter)
+               self.set_all_average_metrics(view)
+               var mclass_codesmell = new BadConceptonController(view)
                var collect = new Counter[MClassDef]
                var mclassdefs = new Array[MClassDef]
 
@@ -48,17 +51,19 @@ class CodeSmellsMetricsPhase
                end
        end
 
-       fun set_all_average_metrics do
+       fun set_all_average_metrics(view: ModelView) do
                var model_builder = toolcontext.modelbuilder
-               var model_view = model_builder.model.private_view
-               self.average_number_of_lines = model_view.get_avg_linenumber(model_builder)
-               self.average_number_of_parameter = model_view.get_avg_parameter
-               self.average_number_of_method = model_view.get_avg_method
-               self.average_number_of_attribute = model_view.get_avg_attribut
+               self.average_number_of_lines = view.get_avg_linenumber(model_builder)
+               self.average_number_of_parameter = view.get_avg_parameter
+               self.average_number_of_method = view.get_avg_method
+               self.average_number_of_attribute = view.get_avg_attribut
        end
 end
 
 class BadConceptonController
+
+       var view: ModelView
+
        # Code smell list
        var bad_conception_elements = new Array[BadConceptionFinder]
 
@@ -79,7 +84,7 @@ class BadConceptonController
        # Collect method take Array of mclassdef to find the code smells for every class
        fun collect(mclassdefs: Array[MClassDef],phase: CodeSmellsMetricsPhase) do
                for mclassdef in mclassdefs do
-                       var bad_conception_class = new BadConceptionFinder(mclassdef,phase)
+                       var bad_conception_class = new BadConceptionFinder(mclassdef, phase, view)
                        bad_conception_class.collect
                        bad_conception_elements.add(bad_conception_class)
                end
@@ -112,17 +117,18 @@ class BadConceptionFinder
        var mclassdef: MClassDef
        var array_badconception = new Array[BadConception]
        var phase: CodeSmellsMetricsPhase
+       var view: ModelView
        var score = 0.0
 
        # Collect code smell with selected toolcontext option
        fun collect do
                var bad_conception_elements = new Array[BadConception]
                # Check toolcontext option
-               if phase.toolcontext.opt_feature_envy.value or phase.toolcontext.opt_all.value then bad_conception_elements.add(new FeatureEnvy(phase))
-               if phase.toolcontext.opt_long_method.value or phase.toolcontext.opt_all.value then bad_conception_elements.add(new LongMethod(phase))
-               if phase.toolcontext.opt_long_params.value or phase.toolcontext.opt_all.value then bad_conception_elements.add(new LongParameterList(phase))
-               if phase.toolcontext.opt_no_abstract_implementation.value or phase.toolcontext.opt_all.value then bad_conception_elements.add(new NoAbstractImplementation(phase))
-               if phase.toolcontext.opt_large_class.value or phase.toolcontext.opt_all.value then bad_conception_elements.add(new LargeClass(phase))
+               if phase.toolcontext.opt_feature_envy.value or phase.toolcontext.opt_all.value then bad_conception_elements.add(new FeatureEnvy(phase, view))
+               if phase.toolcontext.opt_long_method.value or phase.toolcontext.opt_all.value then bad_conception_elements.add(new LongMethod(phase, view))
+               if phase.toolcontext.opt_long_params.value or phase.toolcontext.opt_all.value then bad_conception_elements.add(new LongParameterList(phase, view))
+               if phase.toolcontext.opt_no_abstract_implementation.value or phase.toolcontext.opt_all.value then bad_conception_elements.add(new NoAbstractImplementation(phase, view))
+               if phase.toolcontext.opt_large_class.value or phase.toolcontext.opt_all.value then bad_conception_elements.add(new LargeClass(phase, view))
                # Collected all code smell if their state is true
                for bad_conception_element in bad_conception_elements do
                        if bad_conception_element.collect(self.mclassdef,phase.toolcontext.modelbuilder) then array_badconception.add(bad_conception_element)
@@ -153,6 +159,8 @@ end
 abstract class BadConception
        var phase: CodeSmellsMetricsPhase
 
+       var view: ModelView
+
        var score = 0.0
 
        # Name
@@ -184,9 +192,9 @@ class LargeClass
        redef fun desc do return "Large class"
 
        redef fun collect(mclassdef, model_builder): Bool do
-               self.number_attribut = mclassdef.collect_intro_and_redef_mattributes(model_builder.model.private_view).length
+               self.number_attribut = mclassdef.collect_intro_and_redef_mattributes(view).length
                # Get the number of methods (Accessor include) (subtract the get and set of attibutes with (numberAtribut*2))
-               self.number_method = mclassdef.collect_intro_and_redef_methods(model_builder.model.private_view).length
+               self.number_method = mclassdef.collect_intro_and_redef_methods(view).length
                self.score_rate
                return self.number_method.to_f > phase.average_number_of_method and self.number_attribut.to_f > phase.average_number_of_attribute
        end
@@ -209,7 +217,7 @@ class LongParameterList
        redef fun desc do return "Long parameter list"
 
        redef fun collect(mclassdef, model_builder): Bool do
-               for meth in mclassdef.collect_intro_and_redef_mpropdefs(model_builder.model.private_view) do
+               for meth in mclassdef.collect_intro_and_redef_mpropdefs(view) do
                        var threshold_value = 4
                        # Get the threshold value from the toolcontext command
                        if phase.toolcontext.opt_long_params_threshold.value != 0 then threshold_value = phase.toolcontext.opt_long_params_threshold.value
@@ -250,7 +258,7 @@ class FeatureEnvy
        redef fun desc do return "Feature envy"
 
        redef fun collect(mclassdef, model_builder): Bool do
-               var mmethoddefs = call_analyze_methods(mclassdef,model_builder)
+               var mmethoddefs = call_analyze_methods(mclassdef,model_builder, view)
                for mmethoddef in mmethoddefs do
                        var max_class_call = mmethoddef.class_call.max
                        # Check if the class with the maximum call is >= auto-call and the maximum call class is != of this class
@@ -295,7 +303,7 @@ class LongMethod
        redef fun desc do return "Long method"
 
        redef fun collect(mclassdef, model_builder): Bool do
-               var mmethoddefs = call_analyze_methods(mclassdef,model_builder)
+               var mmethoddefs = call_analyze_methods(mclassdef,model_builder, view)
                var threshold_value = phase.average_number_of_lines.to_i
                # Get the threshold value from the toolcontext command
                if phase.toolcontext.opt_long_method_threshold.value != 0 then threshold_value = phase.toolcontext.opt_long_method_threshold.value
@@ -335,8 +343,8 @@ class NoAbstractImplementation
 
        redef fun collect(mclassdef, model_builder): Bool do
                if not mclassdef.mclass.is_abstract and not mclassdef.mclass.is_interface then
-                       if mclassdef.collect_abstract_methods(model_builder.model.private_view).not_empty then
-                               bad_methods.add_all(mclassdef.collect_not_define_properties(model_builder.model.private_view))
+                       if mclassdef.collect_abstract_methods(view).not_empty then
+                               bad_methods.add_all(mclassdef.collect_not_define_properties(view))
                        end
                end
                self.score_rate
@@ -399,7 +407,7 @@ redef class ModelView
                for mclassdef in mclassdefs do
                        var result = 0
                        var count = 0
-                       for mmethoddef in call_analyze_methods(mclassdef,model_builder) do
+                       for mmethoddef in call_analyze_methods(mclassdef,model_builder, self) do
                                result += mmethoddef.line_number
                                if mmethoddef.line_number == 0 then continue
                                count += 1
index a9a4a6d..29a15ce 100644 (file)
@@ -38,28 +38,28 @@ private class InheritanceMetricsPhase
                out.mkdir
 
                var model = toolcontext.modelbuilder.model
-               var model_view = model.private_view
+               var model_view = new ModelView(model, mainmodule)
 
                print toolcontext.format_h1("\n# Inheritance metrics")
 
                var hmetrics = new MetricSet
-               hmetrics.register(new MDUI(mainmodule, model_view))
-               hmetrics.register(new MDUIC(mainmodule, model_view))
-               hmetrics.register(new MDUII(mainmodule, model_view))
-               hmetrics.register(new MIF(mainmodule, model_view))
-               hmetrics.register(new MIFC(mainmodule, model_view))
-               hmetrics.register(new MIFI(mainmodule, model_view))
+               hmetrics.register(new MDUI(model_view))
+               hmetrics.register(new MDUIC(model_view))
+               hmetrics.register(new MDUII(model_view))
+               hmetrics.register(new MIF(model_view))
+               hmetrics.register(new MIFC(model_view))
+               hmetrics.register(new MIFI(model_view))
 
                var cmetrics = new MetricSet
-               cmetrics.register(new CNOAC(mainmodule, model_view))
-               cmetrics.register(new CNOPC(mainmodule, model_view))
-               cmetrics.register(new CNOCC(mainmodule, model_view))
-               cmetrics.register(new CNODC(mainmodule, model_view))
-               cmetrics.register(new CNOPI(mainmodule, model_view))
-               cmetrics.register(new CNOCI(mainmodule, model_view))
-               cmetrics.register(new CNODI(mainmodule, model_view))
-               cmetrics.register(new CDITC(mainmodule, model_view))
-               cmetrics.register(new CDITI(mainmodule, model_view))
+               cmetrics.register(new CNOAC(model_view))
+               cmetrics.register(new CNOPC(model_view))
+               cmetrics.register(new CNOCC(model_view))
+               cmetrics.register(new CNODC(model_view))
+               cmetrics.register(new CNOPI(model_view))
+               cmetrics.register(new CNOCI(model_view))
+               cmetrics.register(new CNODI(model_view))
+               cmetrics.register(new CDITC(model_view))
+               cmetrics.register(new CDITI(model_view))
 
                var mmodules = new HashSet[MModule]
                var mclasses = new HashSet[MClass]
@@ -116,7 +116,7 @@ class MDUI
                for mmodule in mmodules do
                        var count = 0
                        for mclass in mmodule.intro_mclasses do
-                               if mclass.in_hierarchy(mainmodule).greaters.length > 2 then count += 1
+                               if mclass.in_hierarchy(model_view.mainmodule).greaters.length > 2 then count += 1
                        end
                        if mmodule.intro_mclasses.is_empty then
                                values[mmodule] = 0.0
@@ -142,7 +142,7 @@ class MDUIC
                        var nb = 0
                        for mclass in mmodule.intro_mclasses do
                                if mclass.kind == abstract_kind or mclass.kind == concrete_kind or mclass.kind == extern_kind then
-                                       if mclass.in_hierarchy(mainmodule).greaters.length > 2 then count += 1
+                                       if mclass.in_hierarchy(model_view.mainmodule).greaters.length > 2 then count += 1
                                end
                                nb += 1
                        end
@@ -170,7 +170,7 @@ class MDUII
                        var nb = 0
                        for mclass in mmodule.intro_mclasses do
                                if mclass.kind == interface_kind then
-                                       if mclass.in_hierarchy(mainmodule).greaters.length > 2 then count += 1
+                                       if mclass.in_hierarchy(model_view.mainmodule).greaters.length > 2 then count += 1
                                end
                                nb += 1
                        end
@@ -196,7 +196,7 @@ class MIF
                for mmodule in mmodules do
                        var count = 0
                        for mclass in mmodule.intro_mclasses do
-                               if mclass.in_hierarchy(mainmodule).direct_smallers.length > 0 then count += 1
+                               if mclass.in_hierarchy(model_view.mainmodule).direct_smallers.length > 0 then count += 1
                        end
                        if mmodule.intro_mclasses.is_empty then
                                values[mmodule] = 0.0
@@ -222,7 +222,7 @@ class MIFC
                        var nb = 0
                        for mclass in mmodule.intro_mclasses do
                                if mclass.kind == abstract_kind or mclass.kind == concrete_kind or mclass.kind == extern_kind then
-                                       if mclass.in_hierarchy(mainmodule).direct_smallers.length > 0 then count += 1
+                                       if mclass.in_hierarchy(model_view.mainmodule).direct_smallers.length > 0 then count += 1
                                end
                                nb += 1
                        end
@@ -250,7 +250,7 @@ class MIFI
                        var nb = 0
                        for mclass in mmodule.intro_mclasses do
                                if mclass.kind == interface_kind then
-                                       if mclass.in_hierarchy(mainmodule).direct_smallers.length > 0 then count += 1
+                                       if mclass.in_hierarchy(model_view.mainmodule).direct_smallers.length > 0 then count += 1
                                end
                                nb += 1
                        end
@@ -275,7 +275,7 @@ class CNOAC
        redef fun collect(mclasses) do
                for mclass in mclasses do
                        var count = 0
-                       for parent in mclass.in_hierarchy(mainmodule).greaters do
+                       for parent in mclass.in_hierarchy(model_view.mainmodule).greaters do
                                if parent == mclass then continue
                                if parent.kind == abstract_kind or parent.kind == concrete_kind or parent.kind == extern_kind then
                                        count += 1
@@ -298,7 +298,7 @@ class CNOPC
        redef fun collect(mclasses) do
                for mclass in mclasses do
                        var count = 0
-                       for parent in mclass.in_hierarchy(mainmodule).direct_greaters do
+                       for parent in mclass.in_hierarchy(model_view.mainmodule).direct_greaters do
                                if parent == mclass then continue
                                if parent.kind == abstract_kind or parent.kind == concrete_kind or parent.kind == extern_kind then
                                        count += 1
@@ -321,7 +321,7 @@ class CNOCC
        redef fun collect(mclasses) do
                for mclass in mclasses do
                        var count = 0
-                       for parent in mclass.in_hierarchy(mainmodule).direct_smallers do
+                       for parent in mclass.in_hierarchy(model_view.mainmodule).direct_smallers do
                                if parent == mclass then continue
                                if parent.kind == abstract_kind or parent.kind == concrete_kind or parent.kind == extern_kind then
                                        count += 1
@@ -344,7 +344,7 @@ class CNODC
        redef fun collect(mclasses) do
                for mclass in mclasses do
                        var count = 0
-                       for parent in mclass.in_hierarchy(mainmodule).smallers do
+                       for parent in mclass.in_hierarchy(model_view.mainmodule).smallers do
                                if parent == mclass then continue
                                if parent.kind == abstract_kind or parent.kind == concrete_kind or parent.kind == extern_kind then
                                        count += 1
@@ -367,7 +367,7 @@ class CNOAA
        redef fun collect(mclasses) do
                for mclass in mclasses do
                        var count = 0
-                       for parent in mclass.in_hierarchy(mainmodule).greaters do
+                       for parent in mclass.in_hierarchy(model_view.mainmodule).greaters do
                                if parent == mclass then continue
                                if parent.kind == abstract_kind then
                                        count += 1
@@ -390,7 +390,7 @@ class CNOAI
        redef fun collect(mclasses) do
                for mclass in mclasses do
                        var count = 0
-                       for parent in mclass.in_hierarchy(mainmodule).greaters do
+                       for parent in mclass.in_hierarchy(model_view.mainmodule).greaters do
                                if parent == mclass then continue
                                if parent.kind == interface_kind then
                                        count += 1
@@ -413,7 +413,7 @@ class CNOPI
        redef fun collect(mclasses) do
                for mclass in mclasses do
                        var count = 0
-                       for parent in mclass.in_hierarchy(mainmodule).direct_greaters do
+                       for parent in mclass.in_hierarchy(model_view.mainmodule).direct_greaters do
                                if parent == mclass then continue
                                if parent.kind == interface_kind then
                                        count += 1
@@ -436,7 +436,7 @@ class CNOCI
        redef fun collect(mclasses) do
                for mclass in mclasses do
                        var count = 0
-                       for parent in mclass.in_hierarchy(mainmodule).direct_smallers do
+                       for parent in mclass.in_hierarchy(model_view.mainmodule).direct_smallers do
                                if parent == mclass then continue
                                if parent.kind == interface_kind then
                                        count += 1
@@ -459,7 +459,7 @@ class CNODI
        redef fun collect(mclasses) do
                for mclass in mclasses do
                        var count = 0
-                       for parent in mclass.in_hierarchy(mainmodule).smallers do
+                       for parent in mclass.in_hierarchy(model_view.mainmodule).smallers do
                                if parent == mclass then continue
                                if parent.kind == interface_kind then
                                        count += 1
@@ -481,7 +481,7 @@ class CDITC
 
        redef fun collect(mclasses) do
                for mclass in mclasses do
-                       values[mclass] = mclass.ditc(mainmodule)
+                       values[mclass] = mclass.ditc(model_view.mainmodule)
                end
        end
 end
@@ -497,7 +497,7 @@ class CDITI
 
        redef fun collect(mclasses) do
                for mclass in mclasses do
-                       values[mclass] = mclass.diti(mainmodule)
+                       values[mclass] = mclass.diti(model_view.mainmodule)
                end
        end
 end
index 872d66e..158a448 100644 (file)
@@ -37,24 +37,25 @@ private class MClassesMetricsPhase
                out.mkdir
 
                var model = toolcontext.modelbuilder.model
-               var model_view = model.private_view
+               var filter = new ModelFilter(private_visibility)
+               var model_view = new ModelView(model, mainmodule, filter)
 
                print toolcontext.format_h1("\n# MClasses metrics")
 
                var metrics = new MetricSet
-               metrics.register(new CNOA(mainmodule, model_view))
-               metrics.register(new CNOP(mainmodule, model_view))
-               metrics.register(new CNOC(mainmodule, model_view))
-               metrics.register(new CNOD(mainmodule, model_view))
-               metrics.register(new CDIT(mainmodule, model_view))
-               metrics.register(new CNBP(mainmodule, model_view))
-               metrics.register(new CNBA(mainmodule, model_view))
-               metrics.register(new CNBI(mainmodule, model_view))
-               metrics.register(new CNBM(mainmodule, model_view))
-               metrics.register(new CNBV(mainmodule, model_view))
-               metrics.register(new CNBIP(mainmodule, model_view))
-               metrics.register(new CNBRP(mainmodule, model_view))
-               metrics.register(new CNBHP(mainmodule, model_view))
+               metrics.register(new CNOA(model_view))
+               metrics.register(new CNOP(model_view))
+               metrics.register(new CNOC(model_view))
+               metrics.register(new CNOD(model_view))
+               metrics.register(new CDIT(model_view))
+               metrics.register(new CNBP(model_view))
+               metrics.register(new CNBA(model_view))
+               metrics.register(new CNBI(model_view))
+               metrics.register(new CNBM(model_view))
+               metrics.register(new CNBV(model_view))
+               metrics.register(new CNBIP(model_view))
+               metrics.register(new CNBRP(model_view))
+               metrics.register(new CNBHP(model_view))
 
                var mclasses = new HashSet[MClass]
                for mpackage in model.mpackages do
@@ -92,9 +93,6 @@ abstract class MClassMetric
        super Metric
        redef type ELM: MClass
 
-       # Main module used for class linearization
-       var mainmodule: MModule
-
        # Model view used to collect and filter entities
        var model_view: ModelView
 end
@@ -108,7 +106,7 @@ class CNOA
 
        redef fun collect(mclasses) do
                for mclass in mclasses do
-                       values[mclass] = mclass.in_hierarchy(mainmodule).greaters.length - 1
+                       values[mclass] = mclass.in_hierarchy(model_view.mainmodule).greaters.length - 1
                end
        end
 end
@@ -122,7 +120,7 @@ class CNOP
 
        redef fun collect(mclasses) do
                for mclass in mclasses do
-                       values[mclass] = mclass.in_hierarchy(mainmodule).direct_greaters.length
+                       values[mclass] = mclass.in_hierarchy(model_view.mainmodule).direct_greaters.length
                end
        end
 end
@@ -136,7 +134,7 @@ class CNOC
 
        redef fun collect(mclasses) do
                for mclass in mclasses do
-                       values[mclass] = mclass.in_hierarchy(mainmodule).direct_smallers.length
+                       values[mclass] = mclass.in_hierarchy(model_view.mainmodule).direct_smallers.length
                end
        end
 end
@@ -150,7 +148,7 @@ class CNOD
 
        redef fun collect(mclasses) do
                for mclass in mclasses do
-                       values[mclass] = mclass.in_hierarchy(mainmodule).smallers.length - 1
+                       values[mclass] = mclass.in_hierarchy(model_view.mainmodule).smallers.length - 1
                end
        end
 end
@@ -164,7 +162,7 @@ class CDIT
 
        redef fun collect(mclasses) do
                for mclass in mclasses do
-                       values[mclass] = mclass.in_hierarchy(mainmodule).depth
+                       values[mclass] = mclass.in_hierarchy(model_view.mainmodule).depth
                end
        end
 end
index 5bd6f97..e16e75f 100644 (file)
@@ -67,7 +67,8 @@ private class MendelMetricsPhase
                print toolcontext.format_h1("\n# Mendel metrics")
 
                var model = toolcontext.modelbuilder.model
-               var model_view = model.protected_view
+               var filter = new ModelFilter(min_visibility = protected_visibility)
+               var model_view = new ModelView(model, mainmodule, filter)
 
                var mclasses = new HashSet[MClass]
                for mclass in model_view.mclasses do
@@ -75,9 +76,9 @@ private class MendelMetricsPhase
                        mclasses.add(mclass)
                end
 
-               var cnblp = new CNBLP(mainmodule, model_view)
-               var cnvi = new CNVI(mainmodule, model_view)
-               var cnvs = new CNVS(mainmodule, model_view)
+               var cnblp = new CNBLP(model_view)
+               var cnvi = new CNVI(model_view)
+               var cnvs = new CNVS(model_view)
 
                var metrics = new MetricSet
                metrics.register(cnblp, cnvi, cnvs)
@@ -140,7 +141,7 @@ class CBMS
        redef fun collect(mclasses) do
                for mclass in mclasses do
                        var totc = mclass.collect_accessible_mproperties(model_view).length
-                       var ditc = mclass.in_hierarchy(mainmodule).depth
+                       var ditc = mclass.in_hierarchy(model_view.mainmodule).depth
                        values[mclass] = totc.to_f / (ditc + 1).to_f
                end
        end
@@ -173,10 +174,10 @@ class CNVI
        redef fun desc do return "class novelty index, contribution of the class to its branch in term of introductions"
 
        redef fun collect(mclasses) do
-               var cbms = new CBMS(mainmodule, model_view)
+               var cbms = new CBMS(model_view)
                for mclass in mclasses do
                        # compute branch mean size
-                       var parents = mclass.in_hierarchy(mainmodule).direct_greaters
+                       var parents = mclass.in_hierarchy(model_view.mainmodule).direct_greaters
                        if parents.length > 0 then
                                cbms.clear
                                cbms.collect(new HashSet[MClass].from(parents))
@@ -199,7 +200,7 @@ class MNVI
        redef fun desc do return "module novelty index, contribution of the module to its branch in term of introductions"
 
        redef fun collect(mmodules) do
-               var mbms = new MBMS(mainmodule, model_view)
+               var mbms = new MBMS(model_view)
                for mmodule in mmodules do
                        # compute branch mean size
                        var parents = mmodule.in_importation.direct_greaters
@@ -226,7 +227,7 @@ class CNVS
        redef fun desc do return "class novelty score, importance of the contribution of the class to its branch"
 
        redef fun collect(mclasses) do
-               var cnvi = new CNVI(mainmodule, model_view)
+               var cnvi = new CNVI(model_view)
                cnvi.collect(mclasses)
                for mclass in mclasses do
                        var locc = mclass.collect_local_mproperties(model_view).length
@@ -244,7 +245,7 @@ class MNVS
        redef fun desc do return "module novelty score, importance of the contribution of the module to its branch"
 
        redef fun collect(mmodules) do
-               var mnvi = new MNVI(mainmodule, model_view)
+               var mnvi = new MNVI(model_view)
                mnvi.collect(mmodules)
                for mmodule in mmodules do
                        var locc = mmodule.collect_intro_mclassdefs(model_view).length
index 3402abf..73333a0 100644 (file)
@@ -21,9 +21,9 @@ import nitsmell_toolcontext
 import mclassdef_collect
 
 
-fun call_analyze_methods(mclassdef: MClassDef, model_builder: ModelBuilder): Array[MMethodDef] do
+fun call_analyze_methods(mclassdef: MClassDef, model_builder: ModelBuilder, view: ModelView): Array[MMethodDef] do
        var mmethoddefs = new Array[MMethodDef]
-       for m_prop in mclassdef.collect_intro_and_redef_mpropdefs(model_builder.model.private_view) do
+       for m_prop in mclassdef.collect_intro_and_redef_mpropdefs(view) do
                var n_prop = model_builder.mpropdef2node(m_prop)
                #Check if the property is a method definition
                if n_prop isa AMethPropdef and m_prop isa MMethodDef then
index 1e9d190..3a6227f 100644 (file)
@@ -37,21 +37,21 @@ private class MModulesMetricsPhase
                out.mkdir
 
                var model = toolcontext.modelbuilder.model
-               var model_view = model.private_view
+               var model_view = new ModelView(model, mainmodule)
 
                print toolcontext.format_h1("\n# MModules metrics")
 
                var metrics = new MetricSet
-               metrics.register(new MNOA(mainmodule, model_view))
-               metrics.register(new MNOP(mainmodule, model_view))
-               metrics.register(new MNOC(mainmodule, model_view))
-               metrics.register(new MNOD(mainmodule, model_view))
-               metrics.register(new MDIT(mainmodule, model_view))
-               metrics.register(new MNBI(mainmodule, model_view))
-               metrics.register(new MNBR(mainmodule, model_view))
-               metrics.register(new MNBCC(mainmodule, model_view))
-               metrics.register(new MNBAC(mainmodule, model_view))
-               metrics.register(new MNBIC(mainmodule, model_view))
+               metrics.register(new MNOA(model_view))
+               metrics.register(new MNOP(model_view))
+               metrics.register(new MNOC(model_view))
+               metrics.register(new MNOD(model_view))
+               metrics.register(new MDIT(model_view))
+               metrics.register(new MNBI(model_view))
+               metrics.register(new MNBR(model_view))
+               metrics.register(new MNBCC(model_view))
+               metrics.register(new MNBAC(model_view))
+               metrics.register(new MNBIC(model_view))
 
                var mmodules = new HashSet[MModule]
                for mpackage in model.mpackages do
@@ -85,9 +85,6 @@ abstract class MModuleMetric
        super Metric
        redef type ELM: MModule
 
-       # Main module used for linearization
-       var mainmodule: MModule
-
        # Model view used to collect and filter entities
        var model_view: ModelView
 end
index f88c3ba..a7634f1 100644 (file)
@@ -40,11 +40,12 @@ private class NullablesMetricsPhase
                print toolcontext.format_h1("\n# Nullable metrics")
 
                var model = toolcontext.modelbuilder.model
-               var model_view = model.private_view
+               var filter = new ModelFilter(private_visibility)
+               var model_view = new ModelView(model, mainmodule, filter)
 
                var metrics = new MetricSet
-               metrics.register(new CNBA(mainmodule, model_view))
-               metrics.register(new CNBNA(mainmodule, model_view))
+               metrics.register(new CNBA(model_view))
+               metrics.register(new CNBNA(model_view))
 
                var mclasses = new HashSet[MClass]
                for mpackage in model.mpackages do
index a4c3e28..94a4dca 100644 (file)
@@ -38,25 +38,26 @@ private class RTAMetricsPhase
                out.mkdir
 
                var model = toolcontext.modelbuilder.model
-               var model_view = model.protected_view
+               var filter = new ModelFilter(min_visibility = protected_visibility)
+               var model_view = new ModelView(model, mainmodule, filter)
 
                print toolcontext.format_h1("\n# RTA metrics")
 
                print toolcontext.format_h2("\n ## Live instances by mainmodules")
                var mmetrics = new MetricSet
-               mmetrics.register(new MNLC(mainmodule, model_view, toolcontext.modelbuilder))
-               mmetrics.register(new MNLT(mainmodule, model_view, toolcontext.modelbuilder))
-               mmetrics.register(new MNCT(mainmodule, model_view, toolcontext.modelbuilder))
-               mmetrics.register(new MNLI(mainmodule, model_view, toolcontext.modelbuilder))
-               mmetrics.register(new MNLM(mainmodule, model_view, toolcontext.modelbuilder))
-               mmetrics.register(new MNLMD(mainmodule, model_view, toolcontext.modelbuilder))
-               mmetrics.register(new MNLDD(mainmodule, model_view, toolcontext.modelbuilder))
+               mmetrics.register(new MNLC(model_view, toolcontext.modelbuilder))
+               mmetrics.register(new MNLT(model_view, toolcontext.modelbuilder))
+               mmetrics.register(new MNCT(model_view, toolcontext.modelbuilder))
+               mmetrics.register(new MNLI(model_view, toolcontext.modelbuilder))
+               mmetrics.register(new MNLM(model_view, toolcontext.modelbuilder))
+               mmetrics.register(new MNLMD(model_view, toolcontext.modelbuilder))
+               mmetrics.register(new MNLDD(model_view, toolcontext.modelbuilder))
                mmetrics.collect(new HashSet[MModule].from([mainmodule]))
                mmetrics.to_console(1, not toolcontext.opt_nocolors.value)
                if csv then mmetrics.to_csv.write_to_file("{out}/{mainmodule}.csv")
 
                var mtypes = new HashSet[MType]
-               var analysis = new RapidTypeAnalysis(toolcontext.modelbuilder, mainmodule)
+               var analysis = new MetricsRapidTypeAnalysis(toolcontext.modelbuilder, mainmodule, model_view)
                analysis.run_analysis
                mtypes.add_all(analysis.live_types)
                mtypes.add_all(analysis.live_cast_types)
@@ -139,7 +140,7 @@ class MNLI
 
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
-                       var analysis = new RapidTypeAnalysis(modelbuilder, mainmodule)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
                        analysis.run_analysis
                        values[mainmodule] = analysis.tnli.sum
                end
@@ -155,7 +156,7 @@ class MNLT
 
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
-                       var analysis = new RapidTypeAnalysis(modelbuilder, mainmodule)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
                        analysis.run_analysis
                        values[mainmodule] = analysis.live_types.length
                end
@@ -171,7 +172,7 @@ class MNCT
 
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
-                       var analysis = new RapidTypeAnalysis(modelbuilder, mainmodule)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
                        analysis.run_analysis
                        values[mainmodule] = analysis.live_cast_types.length
                end
@@ -188,7 +189,7 @@ class MNLC
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
                        var live = new HashSet[MClass]
-                       var analysis = new RapidTypeAnalysis(modelbuilder, mainmodule)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
                        analysis.run_analysis
                        for mtype in analysis.live_types do
                                live.add(mtype.mclass)
@@ -207,7 +208,7 @@ class MNLM
 
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
-                       var analysis = new RapidTypeAnalysis(modelbuilder, mainmodule)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
                        analysis.run_analysis
                        values[mainmodule] = analysis.live_methods.length
                end
@@ -223,7 +224,7 @@ class MNLMD
 
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
-                       var analysis = new RapidTypeAnalysis(modelbuilder, mainmodule)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
                        analysis.run_analysis
                        values[mainmodule] = analysis.live_methoddefs.length
                end
@@ -240,7 +241,7 @@ class MNLDD
        redef fun collect(mainmodules) do
                for mainmodule in mainmodules do
                        var dead = 0
-                       var analysis = new RapidTypeAnalysis(modelbuilder, mainmodule)
+                       var analysis = new MetricsRapidTypeAnalysis(modelbuilder, mainmodule, model_view)
                        analysis.run_analysis
                        for mmethod in analysis.live_methods do
                                for mdef in mmethod.mpropdefs do
@@ -351,13 +352,18 @@ end
 
 # rta redef
 
-redef class RapidTypeAnalysis
+# Custom RTA analyzer
+class MetricsRapidTypeAnalysis
+       super RapidTypeAnalysis
+
+       # Model view used to linearize classes
+       var view: ModelView
 
        # Class Live Instances
-       var cnli: CNLI is lazy do return new CNLI(mainmodule, modelbuilder.model.protected_view)
+       var cnli: CNLI is lazy do return new CNLI(view)
 
        # Class Live Casts
-       var cnlc: CNLC is lazy do return new CNLC(mainmodule, modelbuilder.model.protected_view)
+       var cnlc: CNLC is lazy do return new CNLC(view)
 
        # Type Live Instances
        var tnli = new TNLI
index 47900c5..c86bf96 100644 (file)
@@ -159,6 +159,14 @@ class ConcernsTree
        super OrderedTree[MConcern]
 end
 
+redef class MGroup
+       redef var is_test is lazy do
+               var parent = self.parent
+               if parent != null and parent.is_test then return true
+               return name == "tests"
+       end
+end
+
 redef class MModule
        # All the classes introduced in the module
        var intro_mclasses = new Array[MClass]
@@ -1795,6 +1803,8 @@ class MNullableType
                if t == mtype then return self
                return t.as_nullable
        end
+
+       redef fun mdoc_or_fallback do return mtype.mdoc_or_fallback
 end
 
 # A non-null version of a formal type.
@@ -2377,6 +2387,29 @@ class MMethod
        # A specific method that is safe to call on null.
        # Currently, only `==`, `!=` and `is_same_instance` are safe
        fun is_null_safe: Bool do return name == "==" or name == "!=" or name == "is_same_instance"
+
+       # Is this method a getter (auto or not)?
+       #
+       # See `getter_for`.
+       fun is_getter: Bool do return getter_for != null
+
+       # The attribute this getter is for
+       #
+       # Return `null` is this method is not a getter.
+       var getter_for: nullable MAttribute = null is writable
+
+       # Is this method a setter (auto or not)?
+       #
+       # See `setter_for`.
+       fun is_setter: Bool do return setter_for != null
+
+       # The attribute this setter is for
+       #
+       # Return `null` is this method is not a setter.
+       var setter_for: nullable MAttribute = null is writable
+
+       # Is this method a getter or a setter?
+       fun is_accessor: Bool do return is_getter or is_setter
 end
 
 # A global attribute
@@ -2385,6 +2418,21 @@ class MAttribute
 
        redef type MPROPDEF: MAttributeDef
 
+       # Does this attribute have a getter (auto or not)?
+       #
+       # See `getter`.
+       fun has_getter: Bool do return getter != null
+
+       # The getter of this attribute (if any)
+       var getter: nullable MProperty = null is writable
+
+       # Does this attribute have a setter (auto or not)?
+       #
+       # See `setter`.
+       fun has_setter: Bool do return setter != null
+
+       # The setter of this attribute (if any)
+       var setter: nullable MProperty = null is writable
 end
 
 # A global virtual type
@@ -2420,7 +2468,7 @@ abstract class MPropDef
        # The associated global property
        var mproperty: MPROPERTY
 
-       redef var location: Location
+       redef var location
 
        redef fun visibility do return mproperty.visibility
 
index bfe5fdf..8da799a 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Collect things from a `Model`.
+# Collect things from a `ModelView`
+#
+# This module introduce several usefull methods to list and count things from a
+# ModelView.
+#
+# First setup you view from a Model:
+#
+# ~~~nitih
+# var view = new ModelView(model, mainmodule)
+# ~~~
+#
+# Then ask question using the view:
+#
+# ~~~nitish
+# print number of parents for `{my_class}`
+# print my_class.collect_parents(view).count
+# ~~~
 #
 # **Warning**
 #
 # `model_collect` offers a flattened view of the model without considering any
 # main module.
 # For this reason, `model_collect` lists all the definitions reachable from all
-# modules
+# modules.
 #
 # This is usefull for tools that need a global view of a model like `nitdoc`,
-# `nitx` or `nituml`.
+# `nitx`, `nitmetrics` or `nituml`.
 # It should not be used for compiling stuffs like computing VFT, where the listed
 # entities could not be reachable depending on the modules really imported.
 module model_collect
@@ -33,20 +49,18 @@ import model_views
 
 redef class MEntity
 
-       # FIXME used to bypass RTA limitation on type resolution.
+       # FIXME used to bypass RTA limitation on type resolution
        type MENTITY: SELF
 
-       # Collect modifier keywords like `redef`, `private` etc.
-       fun collect_modifiers: Array[String] do
-               return new Array[String]
-       end
+       # Collect modifier keywords like `redef`, `private` etc
+       fun collect_modifiers: Array[String] do return new Array[String]
 
-       # Collect `self` linearization anchored on `mainmodule`.
+       # Collect `self` linearization anchored on `mainmodule`
        fun collect_linearization(mainmodule: MModule): nullable Array[MEntity] do
                return null
        end
 
-       # Collect `self` ancestors (direct and indirect).
+       # Collect `self` ancestors (direct and indirect)
        #
        # The concept of ancestor is abstract at this stage.
        fun collect_ancestors(view: ModelView): Set[MENTITY] do
@@ -57,24 +71,23 @@ redef class MEntity
                while todo.not_empty do
                        var mentity = todo.pop
                        if mentity == self or done.has(mentity) then continue
-                       print "{mentity} == {self}"
                        done.add mentity
                        todo.add_all mentity.collect_parents(view)
                end
                return done
        end
 
-       # Collect `self` parents (direct ancestors).
+       # Collect `self` parents (direct ancestors)
        #
        # The concept of parent is abstract at this stage.
        fun collect_parents(view: ModelView): Set[MENTITY] is abstract
 
-       # Collect `self` children (direct descendants).
+       # Collect `self` children (direct descendants)
        #
        # The concept of child is abstract at this stage.
        fun collect_children(view: ModelView): Set[MENTITY] is abstract
 
-       # Collect `self` descendants (direct and direct).
+       # Collect `self` descendants (direct and direct)
        #
        # The concept of descendant is abstract at this stage.
        fun collect_descendants(view: ModelView): Set[MENTITY] do
@@ -91,49 +104,94 @@ redef class MEntity
                return done
        end
 
-       # Build a poset representing `self` in it's own hierarchy.
+       # Build a poset representing `self` in it's own hierarchy
        #
        # The notion of hierarchy depends on the type of MEntity.
        #
        # Here a recap:
-       # * MPackage: package dependencies
-       # * MGroup: group dependencies
-       # * MModule: modules imports
-       # * MClass: class inheritance (all classdefs flattened)
-       # * MClassDef: classdef inheritance
-       # * MProperty: property definitions graph (all propdefs flattened)
-       # * MPropDef: property definitions graph
+       # * `MPackage`: package dependencies
+       # * `MGroup`: group dependencies
+       # * `MModule`: modules imports
+       # * `MClass`: class inheritance (all classdefs flattened)
+       # * `MClassDef`: classdef inheritance
+       # * `MProperty`: property definitions graph (all propdefs flattened)
+       # * `MPropDef`: property definitions graph
        fun hierarchy_poset(view: ModelView): POSet[MENTITY] do
-               var done = new HashSet[MENTITY]
-               var mentities = new Array[MENTITY]
-               mentities.add self
                var poset = new POSet[MENTITY]
-               while mentities.not_empty do
-                       var mentity = mentities.pop
-                       if done.has(mentity) then continue
-                       done.add mentity
+               var parents_done = new HashSet[MENTITY]
+               var parents = new Array[MENTITY]
+               parents.add self
+               while parents.not_empty do
+                       var mentity = parents.pop
+                       if parents_done.has(mentity) then continue
+                       parents_done.add mentity
                        poset.add_node mentity
                        for parent in mentity.collect_parents(view) do
                                poset.add_edge(mentity, parent)
-                               mentities.add parent
+                               parents.add parent
                        end
+               end
+               var children_done = new HashSet[MEntity]
+               var children = new Array[MEntity]
+               children.add self
+               while children.not_empty do
+                       var mentity = children.pop
+                       if children_done.has(mentity) then continue
+                       children_done.add mentity
                        for child in mentity.collect_children(view) do
                                poset.add_edge(child, mentity)
-                               mentities.add child
+                               children.add child
                        end
                end
                return poset
        end
 end
 
-redef class MPackage
-       redef fun collect_modifiers do
-               var res = super
-               res.add "package"
+redef class Model
+
+       # Collect all MPackages in `self`
+       fun collect_mpackages(view: ModelView): HashSet[MPackage] do
+               var res = new HashSet[MPackage]
+               for mpackage in mpackages do
+                       if not view.accept_mentity(mpackage) then continue
+                       res.add(mpackage)
+               end
                return res
        end
 
-       # `MPackage` parents are its direct dependencies.
+       # Collect all MModules in `self`
+       fun collect_mmodules(view: ModelView): HashSet[MModule] do
+               var res = new HashSet[MModule]
+               for mpackage in collect_mpackages(view) do
+                       res.add_all mpackage.collect_all_mmodules(view)
+               end
+               return res
+       end
+
+       # Collect all MClasses introduced in `self`
+       fun collect_intro_mclasses(view: ModelView): HashSet[MClass] do
+               var res = new HashSet[MClass]
+               for mpackage in collect_mpackages(view) do
+                       res.add_all mpackage.collect_intro_mclasses(view)
+               end
+               return res
+       end
+
+       # Collect all MProperties introduced in `self`
+       fun collect_intro_mproperties(view: ModelView): HashSet[MProperty] do
+               var res = new HashSet[MProperty]
+               for mpackage in collect_mpackages(view) do
+                       res.add_all mpackage.collect_intro_mproperties(view)
+               end
+               return res
+       end
+end
+
+redef class MPackage
+
+       redef fun collect_modifiers do return super + ["package"]
+
+       # Collect all packages directly imported by `self`
        redef fun collect_parents(view) do
                var res = new HashSet[MENTITY]
                for mgroup in mgroups do
@@ -146,7 +204,7 @@ redef class MPackage
                return res
        end
 
-       # `MPackage` children are packages that directly depends on `self`.
+       # Collect all packages that directly depends on `self`
        redef fun collect_children(view) do
                var res = new HashSet[MENTITY]
                for mpackage in view.mpackages do
@@ -155,27 +213,139 @@ redef class MPackage
                return res
        end
 
-       # `MModules` contained in `self`.
+       # Collect all groups contained in `self`
+       fun collect_all_mgroups(view: ModelView): HashSet[MGroup] do
+               var res = new HashSet[MGroup]
+               for mgroup in mgroups do
+                       if not view.accept_mentity(mgroup) then continue
+                       res.add(mgroup)
+               end
+               return res
+       end
+
+       # Collect only groups contained in `self.root`
+       fun collect_mgroups(view: ModelView): HashSet[MGroup] do
+               var res = new HashSet[MGroup]
+               var root = self.root
+               if root == null then return res
+               res.add_all root.collect_mgroups(view)
+               return res
+       end
+
+       # Collect all modules contained in `self`
+       fun collect_all_mmodules(view: ModelView): HashSet[MModule] do
+               var res = new HashSet[MModule]
+               for mgroup in collect_mgroups(view) do
+                       res.add_all mgroup.collect_mmodules(view)
+               end
+               return res
+       end
+
+       # Collect only modules contained in `self.root`
        fun collect_mmodules(view: ModelView): HashSet[MModule] do
                var res = new HashSet[MModule]
+               var root = self.root
+               if root == null then return res
+               res.add_all root.collect_mmodules(view)
+               return res
+       end
+
+       # Collect all classes introduced in `self`
+       fun collect_intro_mclasses(view: ModelView): HashSet[MClass] do
+               var res = new HashSet[MClass]
                for mgroup in mgroups do
-                       for mmodule in mgroup.mmodules do
-                               if not view.accept_mentity(mmodule) then continue
-                               res.add(mmodule)
+                       for mmodule in collect_all_mmodules(view) do
+                               res.add_all mmodule.collect_intro_mclasses(view)
                        end
                end
                return res
        end
-end
 
-redef class MGroup
-       redef fun collect_modifiers do
-               var res = super
-               res.add "group"
+       # Collect all classes redefined or refined in `self`
+       fun collect_redef_mclasses(view: ModelView): Set[MClass] do
+               var res = new HashSet[MClass]
+               for mgroup in mgroups do
+                       for mmodule in collect_all_mmodules(view) do
+                               res.add_all mmodule.collect_redef_mclasses(view)
+                       end
+               end
+               return res
+       end
+
+       # Collect all properties introduced in `self`
+       fun collect_intro_mproperties(view: ModelView): HashSet[MProperty] do
+               var res = new HashSet[MProperty]
+               for mgroup in mgroups do
+                       for mmodule in collect_all_mmodules(view) do
+                               res.add_all mmodule.collect_intro_mproperties(view)
+                       end
+               end
+               return res
+       end
+
+       # Collect all properties redefined in `self`
+       fun collect_redef_mproperties(view: ModelView): HashSet[MProperty] do
+               var res = new HashSet[MProperty]
+               for mgroup in mgroups do
+                       for mmodule in collect_all_mmodules(view) do
+                               res.add_all mmodule.collect_redef_mproperties(view)
+                       end
+               end
+               return res
+       end
+
+       # Collect all attributes introduced in `self`
+       fun collect_intro_attributes(view: ModelView): Set[MAttribute] do
+               var res = new HashSet[MAttribute]
+               for mgroup in mgroups do
+                       for mmodule in collect_all_mmodules(view) do
+                               res.add_all mmodule.collect_intro_attributes(view)
+                       end
+               end
                return res
        end
 
-       # `MGroup` parents are its direct dependencies.
+       # Collect all inits introduced in `self`
+       fun collect_intro_inits(view: ModelView): Set[MMethod] do
+               var res = new HashSet[MMethod]
+               for mgroup in mgroups do
+                       for mmodule in collect_all_mmodules(view) do
+                               res.add_all mmodule.collect_intro_inits(view)
+                       end
+               end
+               return res
+       end
+
+       # Collect all methods introduced in `self` excluding inits
+       #
+       # See `collect_intro_inits`.
+       fun collect_intro_methods(view: ModelView): Set[MMethod] do
+               var res = new HashSet[MMethod]
+               for mgroup in mgroups do
+                       for mmodule in collect_all_mmodules(view) do
+                               res.add_all mmodule.collect_intro_methods(view)
+                       end
+               end
+               return res
+       end
+
+       # Collect all virtual types introduced in `self`
+       fun collect_intro_vts(view: ModelView): Set[MVirtualTypeProp] do
+               var res = new HashSet[MVirtualTypeProp]
+               for mgroup in mgroups do
+                       for mmodule in collect_all_mmodules(view) do
+                               res.add_all mmodule.collect_intro_vts(view)
+                       end
+               end
+               return res
+       end
+end
+
+redef class MGroup
+
+       redef fun collect_modifiers do return super + ["group"]
+
+       # Collect all groups directly import by `self`
        redef fun collect_parents(view) do
                var res = new HashSet[MENTITY]
                for mmodule in mmodules do
@@ -189,7 +359,7 @@ redef class MGroup
                return res
        end
 
-       # `MGroup` children are mgroups that directly depends on `self`.
+       # Collect all group that directly import `self`
        redef fun collect_children(view) do
                var res = new HashSet[MENTITY]
                for mgroup in view.mgroups do
@@ -198,28 +368,33 @@ redef class MGroup
                end
                return res
        end
-end
-
-redef class MModule
 
-       redef fun collect_modifiers do
-               var res = super
-               res.add "module"
+       # Collect all groups contained in `self`
+       fun collect_mgroups(view: ModelView): HashSet[MENTITY] do
+               var res = new HashSet[MENTITY]
+               for mgroup in in_nesting.direct_smallers do
+                       if not view.accept_mentity(mgroup) then continue
+                       res.add(mgroup)
+               end
                return res
        end
 
-       # `MModule` ancestors are all its transitive imports.
-       redef fun collect_ancestors(view) do
-               var res = new HashSet[MENTITY]
-               for mentity in in_importation.greaters do
-                       if mentity == self then continue
-                       if not view.accept_mentity(mentity) then continue
-                       res.add mentity
+       # Collect all modules contained in `self`
+       fun collect_mmodules(view: ModelView): HashSet[MModule] do
+               var res = new HashSet[MModule]
+               for mmodule in mmodules do
+                       if not view.accept_mentity(mmodule) then continue
+                       res.add(mmodule)
                end
                return res
        end
+end
+
+redef class MModule
 
-       # `MModule` parents are all its direct imports.
+       redef fun collect_modifiers do return super + ["module"]
+
+       # Collect all modules directly imported by `self`
        redef fun collect_parents(view) do
                var res = new HashSet[MENTITY]
                for mentity in in_importation.direct_greaters do
@@ -230,7 +405,7 @@ redef class MModule
                return res
        end
 
-       # `MModule` children are modules that directly import `self`.
+       # Collect all modules that directly import `self`
        redef fun collect_children(view) do
                var res = new HashSet[MENTITY]
                for mentity in in_importation.direct_smallers do
@@ -241,7 +416,7 @@ redef class MModule
                return res
        end
 
-       # `MModule` children are modules that transitively import `self`.
+       # Collect all module descendants of `self` (direct and transitive imports)
        redef fun collect_descendants(view) do
                var res = new HashSet[MENTITY]
                for mentity in in_importation.smallers do
@@ -252,7 +427,7 @@ redef class MModule
                return res
        end
 
-       # Collect mclassdefs introduced in `self` with `visibility >= to min_visibility`.
+       # Collect all class definitions introduced in `self`
        fun collect_intro_mclassdefs(view: ModelView): Set[MClassDef] do
                var res = new HashSet[MClassDef]
                for mclassdef in mclassdefs do
@@ -263,7 +438,7 @@ redef class MModule
                return res
        end
 
-       # Collect mclassdefs redefined in `self` with `visibility >= to min_visibility`.
+       # Collect all class definitions refined in `self`
        fun collect_redef_mclassdefs(view: ModelView): Set[MClassDef] do
                var res = new HashSet[MClassDef]
                for mclassdef in mclassdefs do
@@ -274,7 +449,15 @@ redef class MModule
                return res
        end
 
-       # Collect mclasses introduced in `self` with `visibility >= to min_visibility`.
+       # Collect all class definitions introduced and refined in `self`
+       fun collect_local_mclassdefs(view: ModelView): Set[MClassDef] do
+               var res = new HashSet[MClassDef]
+               res.add_all collect_intro_mclassdefs(view)
+               res.add_all collect_redef_mclassdefs(view)
+               return res
+       end
+
+       # Collect all classes introduced in `self`
        fun collect_intro_mclasses(view: ModelView): Set[MClass] do
                var res = new HashSet[MClass]
                for mclass in intro_mclasses do
@@ -284,15 +467,90 @@ redef class MModule
                return res
        end
 
-       # Collect mclasses redefined in `self` with `visibility >= to min_visibility`.
+       # Collect all classes refined in `self`
        fun collect_redef_mclasses(view: ModelView): Set[MClass] do
                var mclasses = new HashSet[MClass]
                for mclassdef in mclassdefs do
-                       if not view.accept_mentity(mclassdef) then continue
+                       if not view.accept_mentity(mclassdef.mclass) then continue
                        if not mclassdef.is_intro then mclasses.add(mclassdef.mclass)
                end
                return mclasses
        end
+
+       # Collect all classes introduced and refined in `self`
+       fun collect_local_mclasses(view: ModelView): Set[MClass] do
+               var res = new HashSet[MClass]
+               res.add_all collect_intro_mclasses(view)
+               res.add_all collect_redef_mclasses(view)
+               return res
+       end
+
+       # Collect all classes imported from `self` parents
+       fun collect_imported_mclasses(view: ModelView): Set[MClass] do
+               var res = new HashSet[MClass]
+               for parent in collect_parents(view) do
+                       res.add_all parent.collect_intro_mclasses(view)
+                       res.add_all parent.collect_redef_mclasses(view)
+                       res.add_all parent.collect_imported_mclasses(view)
+               end
+               return res
+       end
+
+       # Collect all properties introduced in `self`
+       fun collect_intro_mproperties(view: ModelView): Set[MProperty] do
+               var res = new HashSet[MProperty]
+               for mclass in collect_intro_mclasses(view) do
+                       res.add_all mclass.collect_intro_mproperties(view)
+               end
+               return res
+       end
+
+       # Collect properties redefined in `self`
+       fun collect_redef_mproperties(view: ModelView): Set[MProperty] do
+               var res = new HashSet[MProperty]
+               for mclassdef in mclassdefs do
+                       for mpropdef in mclassdef.collect_redef_mpropdefs(view) do
+                               res.add mpropdef.mproperty
+                       end
+               end
+               return res
+       end
+
+       # Collect attributes introduced in `self`
+       fun collect_intro_attributes(view: ModelView): Set[MAttribute] do
+               var res = new HashSet[MAttribute]
+               for mproperty in collect_intro_mproperties(view) do
+                       if mproperty isa MAttribute then res.add(mproperty)
+               end
+               return res
+       end
+
+       # Collect all inits introduced in `self`
+       fun collect_intro_inits(view: ModelView): Set[MMethod] do
+               var res = new HashSet[MMethod]
+               for mproperty in collect_intro_mproperties(view) do
+                       if mproperty isa MMethod and mproperty.is_init then res.add(mproperty)
+               end
+               return res
+       end
+
+       # Collect methods introduced in `self` (without inits)
+       fun collect_intro_methods(view: ModelView): Set[MMethod] do
+               var res = new HashSet[MMethod]
+               for mproperty in collect_intro_mproperties(view) do
+                       if mproperty isa MMethod and not mproperty.is_init then res.add(mproperty)
+               end
+               return res
+       end
+
+       # Collect virtual types introduced in `self`
+       fun collect_intro_vts(view: ModelView): Set[MVirtualTypeProp] do
+               var res = new HashSet[MVirtualTypeProp]
+               for mproperty in collect_intro_mproperties(view) do
+                       if mproperty isa MVirtualTypeProp then res.add(mproperty)
+               end
+               return res
+       end
 end
 
 redef class MClass
@@ -305,49 +563,56 @@ redef class MClass
                return mclassdefs
        end
 
-       # `MClass` parents are the direct parents of `self`.
+       # Collect all direct parents of `self`
        #
        # This method uses a flattened hierarchy containing all the mclassdefs.
        redef fun collect_parents(view) do
                var res = new HashSet[MENTITY]
-               for mclassdef in mclassdefs do
-                       for parent in mclassdef.collect_parents(view) do
-                               var mclass = parent.mclass
-                               if mclass == self or not view.accept_mentity(parent) then continue
-                               res.add mclass
-                       end
+               if not view.mainmodule.flatten_mclass_hierarchy.has(self) then return res
+               for mclass in in_hierarchy(view.mainmodule).direct_greaters do
+                       if mclass == self or not view.accept_mentity(mclass) then continue
+                       res.add mclass
                end
                return res
        end
 
-       # Collect all ancestors of `self` with `visibility >= to min_visibility`.
-       redef fun collect_ancestors(view) do
+       # Collect all direct children of `self`
+       #
+       # This method uses a flattened hierarchy containing all the mclassdefs.
+       redef fun collect_children(view) do
                var res = new HashSet[MENTITY]
+               if not view.mainmodule.flatten_mclass_hierarchy.has(self) then return res
+               for mclass in in_hierarchy(view.mainmodule).direct_smallers do
+                       if mclass == self or not view.accept_mentity(mclass) then continue
+                       res.add mclass
+               end
+               return res
+       end
+
+       # Collect all class definitions of `self`
+       fun collect_mclassdefs(view: ModelView): Set[MClassDef] do
+               var res = new HashSet[MClassDef]
                for mclassdef in mclassdefs do
-                       for parent in mclassdef.collect_parents(view) do
-                               if not view.accept_mentity(parent) then continue
-                               res.add parent.mclass
-                       end
+                       if not view.accept_mentity(mclassdef) then continue
+                       res.add mclassdef
                end
                return res
        end
 
-       # `MClass` parents are the direct parents of `self`.
-       #
-       # This method uses a flattened hierarchy containing all the mclassdefs.
-       redef fun collect_children(view) do
-               var res = new HashSet[MENTITY]
+       # Collect all property definitions that are introductions in `self`
+       fun collect_intro_mpropdefs(view: ModelView): Set[MPropDef] do
+               var set = new HashSet[MPropDef]
                for mclassdef in mclassdefs do
-                       for child in mclassdef.collect_children(view) do
-                               var mclass = child.mclass
-                               if mclass == self or not view.accept_mentity(child) then continue
-                               res.add mclass
+                       for mpropdef in mclassdef.mpropdefs do
+                               if not mpropdef.is_intro then continue
+                               if not view.accept_mentity(mpropdef) then continue
+                               set.add(mpropdef)
                        end
                end
-               return res
+               return set
        end
 
-       # Collect all mproperties introduced in 'self' with `visibility >= min_visibility`.
+       # Collect all properties introduced in `self`
        fun collect_intro_mproperties(view: ModelView): Set[MProperty] do
                var set = new HashSet[MProperty]
                for mclassdef in mclassdefs do
@@ -359,7 +624,20 @@ redef class MClass
                return set
        end
 
-       # Collect all mproperties redefined in 'self' with `visibility >= min_visibility`.
+       # Collect all propierty definitions that are redefinition in `self`
+       fun collect_redef_mpropdefs(view: ModelView): Set[MPropDef] do
+               var set = new HashSet[MPropDef]
+               for mclassdef in mclassdefs do
+                       for mpropdef in mclassdef.mpropdefs do
+                               if mpropdef.is_intro then continue
+                               if not view.accept_mentity(mpropdef) then continue
+                               set.add(mpropdef)
+                       end
+               end
+               return set
+       end
+
+       # Collect all properties redefined in `self`
        fun collect_redef_mproperties(view: ModelView): Set[MProperty] do
                var set = new HashSet[MProperty]
                for mclassdef in mclassdefs do
@@ -372,7 +650,7 @@ redef class MClass
                return set
        end
 
-       # Collect mproperties introduced and redefined in 'self' with `visibility >= min_visibility`.
+       # Collect all properties introduced and redefined in `self`
        fun collect_local_mproperties(view: ModelView): Set[MProperty] do
                var set = new HashSet[MProperty]
                set.add_all collect_intro_mproperties(view)
@@ -380,7 +658,7 @@ redef class MClass
                return set
        end
 
-       # Collect all mproperties inehrited by 'self' with `visibility >= min_visibility`.
+       # Collect all properties inehrited by `self`
        fun collect_inherited_mproperties(view: ModelView): Set[MProperty] do
                var set = new HashSet[MProperty]
                for parent in collect_parents(view) do
@@ -390,9 +668,9 @@ redef class MClass
                return set
        end
 
-       # Collect all mproperties accessible by 'self' with `visibility >= min_visibility`.
+       # Collect all properties accessible by `self`
        #
-       # This include introduced, redefined, inherited mproperties.
+       # This include introduced, redefined, inherited properties.
        fun collect_accessible_mproperties(view: ModelView): Set[MProperty] do
                var set = new HashSet[MProperty]
                set.add_all(collect_intro_mproperties(view))
@@ -401,7 +679,7 @@ redef class MClass
                return set
        end
 
-       # Collect mmethods introduced in 'self' with `visibility >= min_visibility`.
+       # Collect all methods introduced in `self`
        fun collect_intro_mmethods(view: ModelView): Set[MMethod] do
                var res = new HashSet[MMethod]
                for mproperty in collect_intro_mproperties(view) do
@@ -410,7 +688,7 @@ redef class MClass
                return res
        end
 
-       # Collect mmethods redefined in 'self' with `visibility >= min_visibility`.
+       # Collect all methods redefined in `self`
        fun collect_redef_mmethods(view: ModelView): Set[MMethod] do
                var res = new HashSet[MMethod]
                for mproperty in collect_redef_mproperties(view) do
@@ -419,7 +697,7 @@ redef class MClass
                return res
        end
 
-       # Collect mmethods introduced and redefined in 'self' with `visibility >= min_visibility`.
+       # Collect all methods introduced and redefined in `self`
        fun collect_local_mmethods(view: ModelView): Set[MMethod] do
                var set = new HashSet[MMethod]
                set.add_all collect_intro_mmethods(view)
@@ -427,7 +705,7 @@ redef class MClass
                return set
        end
 
-       # Collect mmethods inherited by 'self' if accepted by `view`.
+       # Collect all methods inherited by `self`
        fun collect_inherited_mmethods(view: ModelView): Set[MMethod] do
                var res = new HashSet[MMethod]
                for mproperty in collect_inherited_mproperties(view) do
@@ -436,9 +714,9 @@ redef class MClass
                return res
        end
 
-       # Collect all mmethods accessible by 'self' with `visibility >= min_visibility`.
+       # Collect all methods accessible by `self`
        #
-       # This include introduced, redefined, inherited mmethods.
+       # This include introduced, redefined, inherited methods.
        fun collect_accessible_mmethods(view: ModelView): Set[MMethod] do
                var set = new HashSet[MMethod]
                set.add_all(collect_intro_mmethods(view))
@@ -447,7 +725,7 @@ redef class MClass
                return set
        end
 
-       # Collect mattributes introduced in 'self' with `visibility >= min_visibility`.
+       # Collect all attributes introduced in `self`
        fun collect_intro_mattributes(view: ModelView): Set[MAttribute] do
                var res = new HashSet[MAttribute]
                for mproperty in collect_intro_mproperties(view) do
@@ -456,7 +734,7 @@ redef class MClass
                return res
        end
 
-       # Collect mattributes redefined in 'self' with `visibility >= min_visibility`.
+       # Collect all attributes redefined in `self`
        fun collect_redef_mattributes(view: ModelView): Set[MAttribute] do
                var res = new HashSet[MAttribute]
                for mproperty in collect_redef_mproperties(view) do
@@ -465,7 +743,7 @@ redef class MClass
                return res
        end
 
-       # Collect mattributes introduced and redefined in 'self' with `visibility >= min_visibility`.
+       # Collect all attributes introduced and redefined in `self`
        fun collect_local_mattributes(view: ModelView): Set[MAttribute] do
                var set = new HashSet[MAttribute]
                set.add_all collect_intro_mattributes(view)
@@ -473,7 +751,7 @@ redef class MClass
                return set
        end
 
-       # Collect mattributes inherited by 'self' with `visibility >= min_visibility`.
+       # Collect all attributes inherited by `self`
        fun collect_inherited_mattributes(view: ModelView): Set[MAttribute] do
                var res = new HashSet[MAttribute]
                for mproperty in collect_inherited_mproperties(view) do
@@ -482,7 +760,7 @@ redef class MClass
                return res
        end
 
-       # Collect all mattributes accessible by 'self' with `visibility >= min_visibility`.
+       # Collect all attributes accessible by `self`
        #
        # This include introduced, redefined, inherited mattributes.
        fun collect_accessible_mattributes(view: ModelView): Set[MAttribute] do
@@ -493,7 +771,7 @@ redef class MClass
                return set
        end
 
-       # Collect init mmethods introduced in 'self' if accepted by `view`.
+       # Collect all init methods introduced in `self`
        fun collect_intro_inits(view: ModelView): Set[MMethod] do
                var res = new HashSet[MMethod]
                for mproperty in collect_intro_mmethods(view) do
@@ -502,7 +780,7 @@ redef class MClass
                return res
        end
 
-       # Collect init mmethods redefined in 'self' if accepted by `view`.
+       # Collect all init methods redefined in `self`
        fun collect_redef_inits(view: ModelView): Set[MMethod] do
                var res = new HashSet[MMethod]
                for mproperty in collect_redef_mmethods(view) do
@@ -511,7 +789,7 @@ redef class MClass
                return res
        end
 
-       # Collect init mmethods introduced and redefined in 'self' if accepted by `view`.
+       # Collect all init methods introduced and redefined in `self`
        fun collect_local_inits(view: ModelView): Set[MMethod] do
                var set = new HashSet[MMethod]
                set.add_all collect_intro_inits(view)
@@ -519,7 +797,7 @@ redef class MClass
                return set
        end
 
-       # Collect init mmethods inherited by 'self'  if accepted by `view`.
+       # Collect all init methods inherited by `self`
        fun collect_inherited_inits(view: ModelView): Set[MMethod] do
                var res = new HashSet[MMethod]
                for mproperty in collect_inherited_mmethods(view) do
@@ -528,7 +806,7 @@ redef class MClass
                return res
        end
 
-       # Collect all init mmethods accessible by 'self'  if accepted by `view`.
+       # Collect all init methods accessible by `self`
        #
        # This include introduced, redefined, inherited inits.
        fun collect_accessible_inits(view: ModelView): Set[MMethod] do
@@ -539,7 +817,42 @@ redef class MClass
                return set
        end
 
-       # Collect all virtual types accessible by 'self'  if accepted by `view`.
+       # Collect all virtual types introduced in `self`
+       fun collect_intro_vts(view: ModelView): Set[MVirtualTypeProp] do
+               var res = new HashSet[MVirtualTypeProp]
+               for mproperty in collect_intro_mproperties(view) do
+                       if mproperty isa MVirtualTypeProp then res.add(mproperty)
+               end
+               return res
+       end
+
+       # Collect all virtual types redefined in `self`
+       fun collect_redef_vts(view: ModelView): Set[MVirtualTypeProp] do
+               var res = new HashSet[MVirtualTypeProp]
+               for mproperty in collect_intro_mproperties(view) do
+                       if mproperty isa MVirtualTypeProp then res.add(mproperty)
+               end
+               return res
+       end
+
+       # Collect all virtual types introduced or redefined in `self`
+       fun collect_local_vts(view: ModelView): Set[MVirtualTypeProp] do
+               var set = new HashSet[MVirtualTypeProp]
+               set.add_all collect_intro_vts(view)
+               set.add_all collect_redef_vts(view)
+               return set
+       end
+
+       # Collect all virtual types inherited by `self`
+       fun collect_inherited_vts(view: ModelView): Set[MVirtualTypeProp] do
+               var res = new HashSet[MVirtualTypeProp]
+               for mproperty in collect_inherited_mproperties(view) do
+                       if mproperty isa MVirtualTypeProp then res.add(mproperty)
+               end
+               return res
+       end
+
+       # Collect all virtual types accessible by `self`
        #
        # This include introduced, redefined, inherited virtual types.
        fun collect_accessible_vts(view: ModelView): Set[MVirtualTypeProp] do
@@ -553,6 +866,19 @@ end
 
 redef class MClassDef
 
+       redef fun collect_modifiers do
+               var res = super
+               if not is_intro then
+                       res.add "redef"
+               else
+                       if mclass.visibility != public_visibility then
+                               res.add mclass.visibility.to_s
+                       end
+               end
+               res.add mclass.kind.to_s
+               return res
+       end
+
        redef fun collect_linearization(mainmodule) do
                var mclassdefs = new Array[MClassDef]
                for mclassdef in in_hierarchy.as(not null).greaters do
@@ -562,19 +888,6 @@ redef class MClassDef
                return mclassdefs
        end
 
-       # `MClassDef` ancestors are its direct and transitive super classes.
-       redef fun collect_ancestors(view) do
-               var res = new HashSet[MENTITY]
-               var hierarchy = self.in_hierarchy
-               if hierarchy == null then return res
-               for parent in hierarchy.greaters do
-                       if parent == self or not view.accept_mentity(parent) then continue
-                       res.add parent
-               end
-               return res
-       end
-
-       # `MClassDef` parents are its direct super classes.
        redef fun collect_parents(view) do
                var res = new HashSet[MENTITY]
                var hierarchy = self.in_hierarchy
@@ -586,7 +899,6 @@ redef class MClassDef
                return res
        end
 
-       # `MClassDef` children are its direct subclasses.
        redef fun collect_children(view) do
                var res = new HashSet[MENTITY]
                var hierarchy = self.in_hierarchy
@@ -598,7 +910,7 @@ redef class MClassDef
                return res
        end
 
-       # Collect mpropdefs in 'self' with `visibility >= min_visibility`.
+       # Collect all property definitions in `self`
        fun collect_mpropdefs(view: ModelView): Set[MPropDef] do
                var res = new HashSet[MPropDef]
                for mpropdef in mpropdefs do
@@ -608,7 +920,37 @@ redef class MClassDef
                return res
        end
 
-       # Collect mpropdefs introduced in 'self' with `visibility >= min_visibility`.
+       # Collect all attribute definitions in `self`
+       fun collect_mattributedefs(view: ModelView): Set[MAttributeDef] do
+               var res = new HashSet[MAttributeDef]
+               for mpropdef in collect_mpropdefs(view) do
+                       if not mpropdef isa MAttributeDef then continue
+                       res.add mpropdef
+               end
+               return res
+       end
+
+       # Collect all methods definitions in `self`
+       fun collect_mmethoddefs(view: ModelView): Set[MMethodDef] do
+               var res = new HashSet[MMethodDef]
+               for mpropdef in collect_mpropdefs(view) do
+                       if not mpropdef isa MMethodDef then continue
+                       res.add mpropdef
+               end
+               return res
+       end
+
+       # Collect all virtual types definitions in `self`
+       fun collect_mtypedefs(view: ModelView): Set[MVirtualTypeDef] do
+               var res = new HashSet[MVirtualTypeDef]
+               for mpropdef in collect_mpropdefs(view) do
+                       if not mpropdef isa MVirtualTypeDef then continue
+                       res.add mpropdef
+               end
+               return res
+       end
+
+       # Collect all property definitions that are introduction in `self`
        fun collect_intro_mpropdefs(view: ModelView): Set[MPropDef] do
                var res = new HashSet[MPropDef]
                for mpropdef in mpropdefs do
@@ -619,7 +961,7 @@ redef class MClassDef
                return res
        end
 
-       # Collect mpropdefs redefined in 'self' with `visibility >= min_visibility`.
+       # Collect all property definitions that are redefinition in `self`
        fun collect_redef_mpropdefs(view: ModelView): Set[MPropDef] do
                var res = new HashSet[MPropDef]
                for mpropdef in mpropdefs do
@@ -629,17 +971,6 @@ redef class MClassDef
                end
                return res
        end
-
-       redef fun collect_modifiers do
-               var res = super
-               if not is_intro then
-                       res.add "redef"
-               else
-                       res.add mclass.visibility.to_s
-               end
-               res.add mclass.kind.to_s
-               return res
-       end
 end
 
 redef class MProperty
@@ -651,7 +982,7 @@ redef class MProperty
                return mpropdefs
        end
 
-       # Collect mpropdefs in 'self' with `visibility >= min_visibility`.
+       # Collect all property definitions of `self`
        fun collect_mpropdefs(view: ModelView): Set[MPropDef] do
                var res = new HashSet[MPropDef]
                for mpropdef in mpropdefs do
@@ -661,9 +992,7 @@ redef class MProperty
                return res
        end
 
-       # `MProperty` parents are all direct super definition of `self`.
-       #
-       # This method uses a flattened hierarchy containing all the mpropdefs.
+       # Collect all direct super definitions of `self`
        redef fun collect_parents(view) do
                var res = new HashSet[MENTITY]
                for mpropdef in mpropdefs do
@@ -675,9 +1004,7 @@ redef class MProperty
                return res
        end
 
-       # `MProperty` parents are all direct sub definition of `self`.
-       #
-       # This method uses a flattened hierarchy containing all the mpropdefs.
+       # Collection all definitions that have `self` as a direct super definition
        redef fun collect_children(view) do
                var res = new HashSet[MENTITY]
                for mpropdef in mpropdefs do
@@ -691,12 +1018,15 @@ redef class MProperty
 end
 
 redef class MPropDef
+
        redef fun collect_modifiers do
                var res = super
                if not is_intro then
                        res.add "redef"
                else
-                       res.add mproperty.visibility.to_s
+                       if mproperty.visibility != public_visibility then
+                               res.add mproperty.visibility.to_s
+                       end
                end
                var mprop = self
                if mprop isa MVirtualTypeDef then
@@ -730,7 +1060,7 @@ redef class MPropDef
                return mpropdefs
        end
 
-       # `MPropDef` parents include only the next definition of `self`.
+       # Collect only the next definition of `self`
        redef fun collect_parents(view) do
                var res = new HashSet[MENTITY]
                var mpropdef = self
@@ -741,7 +1071,7 @@ redef class MPropDef
                return res
        end
 
-       # `MPropdef` children are definitions that directly depends on `self`.
+       # Collect all children definitions that directly depend on `self`
        redef fun collect_children(view) do
                var res = new HashSet[MENTITY]
                for mpropdef in mproperty.collect_mpropdefs(view) do
diff --git a/src/model/model_examples.nit b/src/model/model_examples.nit
new file mode 100644 (file)
index 0000000..b0908ed
--- /dev/null
@@ -0,0 +1,117 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2012 Jean Privat <jean@pryen.org>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Examples for Model entities
+#
+# This module introduce flags in all mentities so they can be tagged as example.
+# Flagged classes will be treated differently by the documentation tools.
+#
+# See `MEntity::is_example` and `MEntity::examples`.
+module model_examples
+
+import model
+
+# An example from a MEntity flagged with `is example`.
+class MExample
+
+       redef init do
+               super
+               mentity.mexample = self
+       end
+
+       # MEntity containing this example
+       var mentity: MEntity
+
+       # MEntities this example is for
+       #
+       # For each entity we provide a weight so examples can be ranked.
+       var example_for = new ArrayMap[MEntity, Int]
+
+       redef fun to_s do return mentity.full_name
+end
+
+redef class MEntity
+
+       # Is `self` existing for an example purpose?
+       #
+       # All mentities annotated with `is example` or located inside a mentity that
+       # is an example are considered as examples.
+       fun is_example: Bool do return mexample != null
+
+       # Return this entity as a MExample
+       var mexample: nullable MExample = null
+
+       # Examples found for `self`
+       var examples = new Array[MExample]
+end
+
+redef class MPackage
+       redef fun examples do
+               var res = super
+               for mgroup in mgroups do
+                       for example in mgroup.examples do
+                               if not res.has(example) then res.add example
+                       end
+               end
+               return res
+       end
+end
+
+redef class MGroup
+       redef var is_example is lazy do
+               var parent = self.parent
+               if parent != null and parent.is_example then return true
+               return name == "examples"
+       end
+
+       redef fun examples do
+               var res = super
+               for mmodule in mmodules do
+                       for example in mmodule.examples do
+                               if not res.has(example) then res.add example
+                       end
+               end
+               return res
+       end
+end
+
+redef class MClass
+       redef var is_example is lazy do return intro.is_example
+
+       redef fun examples do
+               var res = super
+               for mclassdef in mclassdefs do
+                       for example in mclassdef.examples do
+                               if not res.has(example) then res.add example
+                       end
+               end
+               return res
+       end
+end
+
+redef class MProperty
+       redef var is_example is lazy do return intro.is_example
+
+       redef fun examples do
+               var res = super
+               for mpropdef in mpropdefs do
+                       for example in mpropdef.examples do
+                               if not res.has(example) then res.add example
+                       end
+               end
+               return res
+       end
+end
diff --git a/src/model/model_filters.nit b/src/model/model_filters.nit
new file mode 100644 (file)
index 0000000..740a17a
--- /dev/null
@@ -0,0 +1,210 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module model_filters
+
+import model_examples
+
+# A list of filters that can be applied on a MEntity
+#
+#
+# By default ModelFilter accepts all mentity.
+#
+# ~~~nitish
+# var filter = new ModelFilter
+# assert filter.accept_mentity(my_mentity) == true
+# ~~~
+#
+# To quickly configure the filters, options can be passed to the constructor:
+# ~~~
+# var filter = new ModelFilter(
+#      min_visibility = protected_visibility,
+#      accept_fictive = false,
+#      accept_test = false,
+#      accept_redef = false,
+#      accept_extern = false,
+#      accept_attribute = false,
+#      accept_empty_doc = false
+# )
+# ~~~
+class ModelFilter
+
+       # Accept `mentity` based on all the options from `self`?
+       #
+       # If one of the filter returns `false` then the `mentity` is not accepted.
+       fun accept_mentity(mentity: MEntity): Bool do
+               if not accept_mentity_visibility(mentity) then return false
+               if not accept_mentity_fictive(mentity) then return false
+               if not accept_mentity_test(mentity) then return false
+               if not accept_mentity_redef(mentity) then return false
+               if not accept_mentity_extern(mentity) then return false
+               if not accept_mentity_example(mentity) then return false
+               if not accept_mentity_attribute(mentity) then return false
+               if not accept_mentity_empty_doc(mentity) then return false
+               if not accept_mentity_inherited(mentity) then return false
+               if not accept_mentity_full_name(mentity) then return false
+               return true
+       end
+
+       # Minimum visibility an entity must have to be accepted
+       #
+       # Default is `private_visibility`.
+       var min_visibility: MVisibility = private_visibility is optional, writable
+
+       # Accept `mentity` if its visibility is above `min_visibility`
+       fun accept_mentity_visibility(mentity: MEntity): Bool do
+               return mentity.visibility >= min_visibility
+       end
+
+       # Accept fictive entities?
+       #
+       # Default is `true`.
+       var accept_fictive = true is optional, writable
+
+       # Accept only non-fictive entities
+       #
+       # See `MEntity::is_fictive`.
+       fun accept_mentity_fictive(mentity: MEntity): Bool do
+               if accept_fictive then return true
+               return not mentity.is_fictive
+       end
+
+       # Accept nitunit test suites?
+       #
+       # Default is `true`.
+       var accept_test = true is optional, writable
+
+       # Accept only entities that are not `nitunit` related
+       fun accept_mentity_test(mentity: MEntity): Bool do
+               if accept_test then return true
+               if mentity isa MProperty then return accept_mentity(mentity.intro)
+               if mentity isa MMethodDef then
+                       if mentity.is_before then return false
+                       if mentity.is_before_all then return false
+                       if mentity.is_after then return false
+                       if mentity.is_after_all then return false
+               end
+               return not mentity.is_test
+       end
+
+       # Accept redef classdefs and propdefs?
+       #
+       # Default is `true`.
+       var accept_redef = true is optional, writable
+
+       # Accept a MClassDefs and MPropeDefs onyl if they are an introduction
+       #
+       # See `MClassDef::is_intro` and `MPropDef::is_intro`.
+       fun accept_mentity_redef(mentity: MEntity): Bool do
+               if accept_redef then return true
+               if mentity isa MClassDef then
+                       return mentity.is_intro
+               else if mentity isa MPropDef then
+                       return mentity.is_intro
+               end
+               return true
+       end
+
+       # Accept extern entities?
+       #
+       # Default is `true`.
+       var accept_extern = true is optional, writable
+
+       # Accept only non- extern entities
+       #
+       # See `MEntity::is_extern`.
+       fun accept_mentity_extern(mentity: MEntity): Bool do
+               if accept_extern then return true
+               if mentity isa MMethodDef then
+                       return not mentity.is_extern
+               end
+               return true
+       end
+
+       # Accept `MAttribute` and `MAttributeDef` instances?
+       #
+       # Default is `true`.
+       var accept_attribute = true is optional, writable
+
+       # Accept only entities that are not a `MAttribute` or `MAttributeDef`
+       fun accept_mentity_attribute(mentity: MEntity): Bool do
+               if accept_attribute then return true
+               if mentity isa MAttribute then return false
+               if mentity isa MAttributeDef then return false
+               return true
+       end
+
+       # Accept entities with empty documentation?
+       #
+       # Default is `true`.
+       var accept_empty_doc = true is optional, writable
+
+       # Accept only entities with documentation
+       fun accept_mentity_empty_doc(mentity: MEntity): Bool do
+               if accept_empty_doc then return true
+               return mentity.mdoc_or_fallback != null
+       end
+
+       # Accept examples?
+       #
+       # Default is `true`.
+       var accept_example = true is optional
+
+       # Accept only entities that are not example related
+       fun accept_mentity_example(mentity: MEntity): Bool do
+               if accept_example then return true
+               return not mentity.is_example
+       end
+
+       # If set, accept only entities local to `accept_inherited`
+       var accept_inherited: nullable MEntity = null is optional
+
+       # Accept only entities local to `accept_inherited`
+       #
+       # This means no imported or inherited entities.
+       fun accept_mentity_inherited(mentity: MEntity): Bool do
+               var context = accept_inherited
+               if context == null then return true
+               if context isa MPackage then
+                       if mentity isa MGroup then return mentity.mpackage == context
+                       if mentity isa MModule then return mentity.mpackage == context
+               end
+               if context isa MGroup then
+                       if mentity isa MModule then return mentity.mgroup == context
+               end
+               if context isa MModule then
+                       if mentity isa MClass then return mentity.intro.mmodule == context
+                       if mentity isa MClassDef then return mentity.mmodule == context
+               end
+               if context isa MClass then
+                       if mentity isa MProperty then return mentity.intro_mclassdef.mclass == context
+                       if mentity isa MPropDef then return mentity.mclassdef.mclass == context
+               end
+               if context isa MClassDef then
+                       if mentity isa MProperty then return mentity.intro_mclassdef == context
+                       if mentity isa MPropDef then return mentity.mclassdef == context
+               end
+               return true
+       end
+
+       # If set, accept only entities where `MEntity::full_name` contains `string`
+       var accept_full_name: nullable String = null is optional, writable
+
+       # Accept only entities where `MEntity::full_name` contains `string`
+       fun accept_mentity_full_name(mentity: MEntity): Bool do
+               var string = accept_full_name
+               if string == null then return true
+               return mentity.full_name.has(string)
+       end
+end
index 4136243..f8cfb24 100644 (file)
@@ -29,8 +29,8 @@
 #
 # ~~~nitish
 # var index = new ModelIndex
-#
-# for mentity in model.private_view.mentities do
+# var view = new ModelView(model, mainmodule)
+# for mentity in view.mentities do
 #      index.index(mentity)
 # end
 # ~~~
@@ -55,8 +55,8 @@
 #
 # ~~~nitish
 # var index = new ModelIndex
-#
-# for mentity in model.private_view.mentities do
+# var view = new ModelView(model, mainmodule)
+# for mentity in view.mentities do
 #      # We don't really care about definitions
 #      if mentity isa MClassDef or mentity isa MPropDef then continue
 #      index.index(mentity)
@@ -135,7 +135,7 @@ redef class ModelView
        # Keep a direct link to mentities by full name to speed up `mentity_from_uri`
        var mentities_by_full_name: HashMap[String, MEntity] is lazy do
                var mentities_by_full_name = new HashMap[String, MEntity]
-               for mentity in model.private_view.mentities do
+               for mentity in mentities do
                        mentities_by_full_name[mentity.full_name] = mentity
                end
                return mentities_by_full_name
@@ -144,15 +144,14 @@ redef class ModelView
        # ModelIndex used to perform searches
        var index: ModelIndex is lazy do
                var index = new ModelIndex
-               for mentity in model.private_view.mentities do
+               for mentity in mentities do
                        if mentity isa MClassDef or mentity isa MPropDef then continue
                        index.index mentity
                end
                return index
        end
 
-       # Find mentities by their `name`
-       fun mentities_by_name(name: String): Array[MEntity] do
+       redef fun mentities_by_name(name) do
                if index.name_prefixes.has_key(name) then
                        return index.name_prefixes[name]
                end
@@ -229,7 +228,8 @@ end
 # ~~~nitish
 # # Build index
 # var index = new ModelIndex
-# for mentity in model.private_view.mentities do
+# var view = new ModelView(model, mainmodule)
+# for mentity in view.mentities do
 #      if mentity isa MClassDef or mentity isa MPropDef then continue
 #      index.index(mentity)
 # end
diff --git a/src/model/model_json.nit b/src/model/model_json.nit
deleted file mode 100644 (file)
index 7c43e51..0000000
+++ /dev/null
@@ -1,314 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Make model entities Serializable.
-#
-# To avoid cycles, every reference from a MEntity to another is replaced by a
-# MEntityRef.
-#
-# How subobjects are retrieved using the MEntityRef is the responsability of the
-# client. Json objects can be returned as this or inflated with concrete objet
-# rather than the refs.
-#
-# TODO consider serialization module?
-module model_json
-
-import model::model_collect
-import json::static
-import json::serialization_write
-import loader
-
-# A reference to another mentity.
-class MEntityRef
-       super MEntity
-
-       # MEntity to link to.
-       var mentity: MEntity
-
-       redef fun core_serialize_to(v) do
-               v.serialize_attribute("full_name", mentity.full_name)
-       end
-end
-
-redef class MEntity
-       serialize
-
-       redef fun core_serialize_to(v) do
-               v.serialize_attribute("name", name)
-               v.serialize_attribute("class_name", class_name)
-               v.serialize_attribute("full_name", full_name)
-               v.serialize_attribute("mdoc", mdoc_or_fallback)
-               v.serialize_attribute("visibility", visibility.to_s)
-               v.serialize_attribute("modifiers", collect_modifiers)
-               v.serialize_attribute("location", location)
-       end
-
-       # Serialize the full version of `self` to JSON
-       #
-       # See: `FullJsonSerializer`
-       fun serialize_to_full_json(plain, pretty: nullable Bool): String do
-               var stream = new StringWriter
-               var serializer = new FullJsonSerializer(stream)
-               serializer.plain_json = plain or else false
-               serializer.pretty_json = pretty or else false
-               serializer.serialize self
-               stream.close
-               return stream.to_s
-       end
-
-       # Return the full json representation of `self` with references.
-       #
-       # By default, every reference to another MEntity is replaced by a pointer
-       # to the MEntity::json_id.
-       # Use this method to obtain a full object with mentities instead of pointers.
-       fun to_full_json: String do return serialize_to_full_json(plain=true)
-
-       # Same as `to_full_json` but with pretty json.
-       fun to_pretty_full_json: String do return serialize_to_full_json(plain=true, pretty=true)
-
-       # Sort mentities by name
-       private fun sort_entities(mentities: Collection[MEntity]): Array[MEntity] do
-               var sorter = new MEntityNameSorter
-               var sorted = mentities.to_a
-               sorter.sort(sorted)
-               return sorted
-       end
-end
-
-redef class MDoc
-       serialize
-
-       redef fun core_serialize_to(v) do
-               super
-               v.serialize_attribute("content", content.join("\n"))
-               v.serialize_attribute("location", location)
-       end
-end
-
-redef class nitc::Location
-       serialize
-
-       redef fun core_serialize_to(v) do
-               v.serialize_attribute("column_end", column_end)
-               v.serialize_attribute("column_start", column_start)
-               v.serialize_attribute("line_end", line_end)
-               v.serialize_attribute("line_start", line_start)
-               var file = self.file
-               if file != null then
-                       v.serialize_attribute("file", file.filename)
-               end
-       end
-end
-
-redef class MPackage
-       redef fun core_serialize_to(v) do
-               super
-               if v isa FullJsonSerializer then
-                       v.serialize_attribute("root", to_mentity_ref(root))
-                       v.serialize_attribute("mgroups", to_mentity_refs(sort_entities(mgroups)))
-                       var ini = self.ini
-                       if ini != null then v.serialize_attribute("ini", ini.to_map)
-               end
-       end
-end
-
-redef class MGroup
-       redef fun core_serialize_to(v) do
-               super
-               if v isa FullJsonSerializer then
-                       v.serialize_attribute("is_root", is_root)
-                       v.serialize_attribute("mpackage", to_mentity_ref(mpackage))
-                       v.serialize_attribute("default_mmodule", to_mentity_ref(default_mmodule))
-                       v.serialize_attribute("parent", to_mentity_ref(parent))
-                       v.serialize_attribute("mmodules", to_mentity_refs(sort_entities(mmodules)))
-                       v.serialize_attribute("mgroups", to_mentity_refs(sort_entities(in_nesting.direct_smallers)))
-               end
-       end
-end
-
-redef class MModule
-       redef fun core_serialize_to(v) do
-               super
-               if v isa FullJsonSerializer then
-                       var view = private_view
-                       v.serialize_attribute("mpackage", to_mentity_ref(mpackage))
-                       v.serialize_attribute("mgroup", to_mentity_ref(mgroup))
-                       v.serialize_attribute("intro_mclasses", to_mentity_refs(sort_entities(intro_mclasses)))
-                       v.serialize_attribute("mclassdefs", to_mentity_refs(sort_entities(mclassdefs)))
-                       v.serialize_attribute("intro_mclassdefs", to_mentity_refs(sort_entities(collect_intro_mclassdefs(view))))
-                       v.serialize_attribute("redef_mclassdefs", to_mentity_refs(sort_entities(collect_redef_mclassdefs(view))))
-                       v.serialize_attribute("imports", to_mentity_refs(in_importation.direct_greaters))
-               end
-       end
-end
-
-redef class MClass
-       redef fun core_serialize_to(v) do
-               super
-               v.serialize_attribute("mparameters", mparameters)
-               if v isa FullJsonSerializer then
-                       var view = private_view
-                       v.serialize_attribute("intro", to_mentity_ref(intro))
-                       v.serialize_attribute("intro_mmodule", to_mentity_ref(intro_mmodule))
-                       v.serialize_attribute("mpackage", to_mentity_ref(intro_mmodule.mpackage))
-                       v.serialize_attribute("mclassdefs", to_mentity_refs(mclassdefs))
-                       v.serialize_attribute("all_mproperties", to_mentity_refs(sort_entities(collect_accessible_mproperties(view))))
-                       v.serialize_attribute("intro_mproperties", to_mentity_refs(sort_entities(collect_intro_mproperties(view))))
-                       v.serialize_attribute("redef_mproperties", to_mentity_refs(sort_entities(collect_redef_mproperties(view))))
-                       v.serialize_attribute("parents", to_mentity_refs(sort_entities(collect_parents(view))))
-               end
-       end
-end
-
-redef class MClassDef
-       redef fun core_serialize_to(v) do
-               super
-               v.serialize_attribute("is_intro", is_intro)
-               v.serialize_attribute("mparameters", mclass.mparameters)
-               if v isa FullJsonSerializer then
-                       var view = private_view
-                       v.serialize_attribute("mmodule", to_mentity_ref(mmodule))
-                       v.serialize_attribute("mclass", to_mentity_ref(mclass))
-                       v.serialize_attribute("mpropdefs", to_mentity_refs(sort_entities(mpropdefs)))
-                       v.serialize_attribute("intro_mproperties", to_mentity_refs(sort_entities(intro_mproperties)))
-                       v.serialize_attribute("intro", to_mentity_ref(mclass.intro))
-                       v.serialize_attribute("mpackage", to_mentity_ref(mmodule.mpackage))
-                       v.serialize_attribute("intro_mpropdefs", to_mentity_refs(sort_entities(collect_intro_mpropdefs(view))))
-                       v.serialize_attribute("redef_mpropdefs", to_mentity_refs(sort_entities(collect_redef_mpropdefs(view))))
-               end
-       end
-end
-
-redef class MProperty
-       redef fun core_serialize_to(v) do
-               super
-               if v isa FullJsonSerializer then
-                       v.serialize_attribute("intro", to_mentity_ref(intro))
-                       v.serialize_attribute("intro_mclassdef", to_mentity_ref(intro_mclassdef))
-                       v.serialize_attribute("mpropdefs", to_mentity_refs(sort_entities(mpropdefs)))
-                       v.serialize_attribute("intro_mclass", to_mentity_ref(intro_mclassdef.mclass))
-                       v.serialize_attribute("mpackage", to_mentity_ref(intro_mclassdef.mmodule.mpackage))
-               end
-       end
-end
-
-redef class MMethod
-       redef fun core_serialize_to(v) do
-               super
-               v.serialize_attribute("is_init", is_init)
-               v.serialize_attribute("msignature", intro.msignature)
-       end
-end
-
-redef class MAttribute
-       redef fun core_serialize_to(v) do
-               super
-               v.serialize_attribute("static_mtype", to_mentity_ref(intro.static_mtype))
-       end
-end
-
-redef class MVirtualTypeProp
-       redef fun core_serialize_to(v) do
-               super
-               v.serialize_attribute("mvirtualtype", to_mentity_ref(mvirtualtype))
-               v.serialize_attribute("bound", to_mentity_ref(intro.bound))
-       end
-end
-
-redef class MPropDef
-       redef fun core_serialize_to(v) do
-               super
-               v.serialize_attribute("is_intro", is_intro)
-               if v isa FullJsonSerializer then
-                       v.serialize_attribute("mclassdef", to_mentity_ref(mclassdef))
-                       v.serialize_attribute("mproperty", to_mentity_ref(mproperty))
-                       v.serialize_attribute("intro", to_mentity_ref(mproperty.intro))
-                       v.serialize_attribute("intro_mclassdef", to_mentity_ref(mproperty.intro.mclassdef))
-                       v.serialize_attribute("mmodule", to_mentity_ref(mclassdef.mmodule))
-                       v.serialize_attribute("mgroup", to_mentity_ref(mclassdef.mmodule.mgroup))
-                       v.serialize_attribute("mpackage", to_mentity_ref(mclassdef.mmodule.mpackage))
-               end
-       end
-end
-
-redef class MMethodDef
-       redef fun core_serialize_to(v) do
-               super
-               v.serialize_attribute("msignature", msignature)
-       end
-end
-
-redef class MAttributeDef
-       redef fun core_serialize_to(v) do
-               super
-               v.serialize_attribute("static_mtype", to_mentity_ref(static_mtype))
-       end
-end
-
-redef class MVirtualTypeDef
-       redef fun core_serialize_to(v) do
-               super
-               v.serialize_attribute("bound", to_mentity_ref(bound))
-               v.serialize_attribute("is_fixed", is_fixed)
-       end
-end
-
-redef class MSignature
-       redef fun core_serialize_to(v) do
-               v.serialize_attribute("arity", arity)
-               v.serialize_attribute("mparams", mparameters)
-               v.serialize_attribute("return_mtype", to_mentity_ref(return_mtype))
-               v.serialize_attribute("vararg_rank", vararg_rank)
-       end
-end
-
-redef class MParameterType
-       redef fun core_serialize_to(v) do
-               v.serialize_attribute("name", name)
-               v.serialize_attribute("rank", rank)
-               v.serialize_attribute("mtype", to_mentity_ref(mclass.intro.bound_mtype.arguments[rank]))
-       end
-end
-
-redef class MParameter
-       redef fun core_serialize_to(v) do
-               v.serialize_attribute("is_vararg", is_vararg)
-               v.serialize_attribute("name", name)
-               v.serialize_attribute("mtype", to_mentity_ref(mtype))
-       end
-end
-
-# Create a ref to a `mentity`.
-fun to_mentity_ref(mentity: nullable MEntity): nullable MEntityRef do
-       if mentity == null then return null
-       return new MEntityRef(mentity)
-end
-
-# Return a collection of `mentities` as a JsonArray of MEntityRefs.
-fun to_mentity_refs(mentities: Collection[MEntity]): Array[MEntityRef] do
-       var array = new Array[MEntityRef]
-       for mentity in mentities do
-               var ref = to_mentity_ref(mentity)
-               if ref == null then continue
-               array.add ref
-       end
-       return array
-end
-
-# Use the FullJsonSerializer to generate the full json representation of a MEntity.
-#
-# See MEntity::to_full_json.
-class FullJsonSerializer
-       super JsonSerializer
-end
index 8b0f122..cbf3fe2 100644 (file)
@@ -25,9 +25,14 @@ import model_visitor
 class ModelView
        super ModelVisitor
 
+       autoinit(model, mainmodule, filter)
+
        # The model to view through `self`.
        var model: Model
 
+       # MModule used to flatten mclass hierarchy
+       var mainmodule: MModule
+
        # MPackages visible through `self`.
        var mpackages: Set[MPackage] is lazy do
                var mpackages = new HashSet[MPackage]
@@ -117,14 +122,6 @@ class ModelView
                return res
        end
 
-       private fun init_visitor(v: ModelVisitor) do
-               v.min_visibility = self.min_visibility
-               v.include_fictive = self.include_fictive
-               v.include_empty_doc = self.include_empty_doc
-               v.include_attribute = self.include_attribute
-               v.include_test = self.include_test
-       end
-
        # Searches the MEntity that matches `full_name`.
        fun mentity_by_full_name(full_name: String): nullable MEntity do
                for mentity in mentities do
@@ -133,10 +130,19 @@ class ModelView
                return null
        end
 
+       # Searches the MEntities that matches `full_name`.
+       fun mentities_by_name(name: String): Array[MEntity] do
+               var res = new Array[MEntity]
+               for mentity in mentities do
+                       if mentity.name == name then res.add mentity
+               end
+               return res
+       end
+
        # Build an concerns tree with from `self`
        fun to_tree: MEntityTree do
                var v = new ModelTreeVisitor
-               init_visitor(v)
+               v.filter = self.filter
                for mpackage in mpackages do
                        v.enter_visit(mpackage)
                end
@@ -175,28 +181,6 @@ class ModelTreeVisitor
 end
 
 redef class MEntity
-
-       # Get a public view of the model
-       fun public_view: ModelView do
-               var view = new ModelView(self.model)
-               view.min_visibility = public_visibility
-               return view
-       end
-
-       # Get a public view of the model
-       fun protected_view: ModelView do
-               var view = new ModelView(self.model)
-               view.min_visibility = protected_visibility
-               return view
-       end
-
-       # Get a public view of the model
-       fun private_view: ModelView do
-               var view = new ModelView(self.model)
-               view.min_visibility = private_visibility
-               return view
-       end
-
        private fun accept_namespace_visitor(v: LookupNamespaceVisitor) do
                if v.parts.is_empty then return
                if name != v.parts.first then return
index a2807de..d733912 100644 (file)
 # ~~~
 module model_visitor
 
-import model
+import model_filters
 
 # The abstract model visitor template.
 #
 # Specific visitor must implement the `visit` method to perform the work.
 abstract class ModelVisitor
+
        # Visit the entity `e`.
        #
        # This method setups `current_entity` and call `visit`.
@@ -68,74 +69,31 @@ abstract class ModelVisitor
        # It should not be called directly but used by `enter_visit`
        protected fun visit(e: MEntity) is abstract
 
-       # Filter classes and method on the visibility.
-       #
-       # If set, only the classes and method with at least the given
-       # visibility level will be visited.
-       var min_visibility: nullable MVisibility = null is writable
-
-       # Can we accept this `mentity` in the view regarding its visibility?
-       fun accept_visibility(mentity: MEntity): Bool do
-               return mentity.accept_visibility(min_visibility)
-       end
-
-       # Include fictive entities?
-       #
-       # By default, fictive entities (see `MEntity::is_fictive`) are not visited.
-       var include_fictive = false is writable
-
-       # Can we accept this `mentity` in the view regarding its fictivity?
-       fun accept_fictive(mentity: MEntity): Bool do
-               if include_fictive then return true
-               return not mentity.is_fictive
-       end
-
-       # Should we accept mentities with empty documentation?
+       # Filters to apply when visiting the model.
        #
-       # Default is `true`.
-       var include_empty_doc = true is writable
-
-       # Can we accept this `mentity` regarding its documentation?
-       fun accept_empty_doc(mentity: MEntity): Bool do
-               if include_empty_doc then return true
-               return mentity.mdoc != null
-       end
-
-       # Should we accept nitunit test suites?
-       #
-       # Default is `false`.
-       var include_test = false is writable
-
-       # Can we accept this `mentity` regarding its test suite status?
-       fun accept_test(mentity: MEntity): Bool do
-               if include_test then return true
-               if not mentity isa MModule then return true
-               return not mentity.is_test
-       end
-
-       # Should we accept `MAttribute` instances?
-       #
-       # Default is `true`.
-       var include_attribute = true is writable
-
-       # Can we accept this `mentity` regarding its type?
-       fun accept_attribute(mentity: MEntity): Bool do
-               if include_attribute then return true
-               if mentity isa MAttribute then return false
-               if mentity isa MAttributeDef then return false
-               return true
+       # See ModelFilters for configuration.
+       var filter: ModelFilter is lazy, writable, optional do
+               return new ModelFilter(
+                       min_visibility = protected_visibility,
+                       accept_fictive = false,
+                       accept_test = false,
+                       accept_example = false,
+                       accept_redef = true,
+                       accept_extern = true,
+                       accept_attribute = true,
+                       accept_empty_doc = true
+               )
        end
 
        # Should we accept this `mentity` from the view?
-       fun accept_mentity(mentity: MEntity): Bool do
-               if not accept_visibility(mentity) then return false
-               if not accept_fictive(mentity) then return false
-               if not accept_empty_doc(mentity) then return false
-               if not accept_test(mentity) then return false
-               if not accept_attribute(mentity) then return false
-               return true
+       #
+       # If no `override_filter` is passed then use `self.filter`.
+       fun accept_mentity(mentity: MEntity, override_filter: nullable ModelFilter): Bool do
+               if override_filter != null then
+                       return override_filter.accept_mentity(mentity)
+               end
+               return filter.accept_mentity(mentity)
        end
-
 end
 
 redef class MEntity
@@ -143,11 +101,6 @@ redef class MEntity
        #
        # See the specific implementation in the subclasses.
        fun visit_all(v: ModelVisitor) do end
-
-       private fun accept_visibility(min_visibility: nullable MVisibility): Bool do
-               if min_visibility == null then return true
-               return visibility >= min_visibility
-       end
 end
 
 redef class Model
diff --git a/src/model/test_model_json.sav/test_classdefs_to_full_json.res b/src/model/test_model_json.sav/test_classdefs_to_full_json.res
deleted file mode 100644 (file)
index 404065b..0000000
+++ /dev/null
@@ -1,1376 +0,0 @@
-{
-       "name": "Object",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Object",
-       "mdoc": {
-               "content": "Root of everything.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 21,
-                       "line_start": 20,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "interface"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 30,
-               "line_start": 20,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mclass": {
-               "full_name": "test_prog::Object"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Object$!="
-       }, {
-               "full_name": "test_prog$Object$=="
-       }, {
-               "full_name": "test_prog$Object$OTHER"
-       }, {
-               "full_name": "test_prog$Object$init"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "intro": {
-               "full_name": "test_prog$Object"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [{
-               "full_name": "test_prog$Object$!="
-       }, {
-               "full_name": "test_prog$Object$=="
-       }, {
-               "full_name": "test_prog$Object$OTHER"
-       }, {
-               "full_name": "test_prog$Object$init"
-       }],
-       "redef_mpropdefs": []
-}
-{
-       "name": "Int",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Int",
-       "mdoc": {
-               "content": "Some services about Integers.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 33,
-                       "line_start": 32,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 41,
-               "line_start": 32,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mclass": {
-               "full_name": "test_prog::Int"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Int$*"
-       }, {
-               "full_name": "test_prog$Int$+"
-       }, {
-               "full_name": "test_prog$Int$-"
-       }, {
-               "full_name": "test_prog$Int$/"
-       }, {
-               "full_name": "test_prog$Int$>"
-       }, {
-               "full_name": "test_prog$Int$to_f"
-       }, {
-               "full_name": "test_prog$Int$unary -"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Int::*"
-       }, {
-               "full_name": "test_prog::Int::+"
-       }, {
-               "full_name": "test_prog::Int::-"
-       }, {
-               "full_name": "test_prog::Int::/"
-       }, {
-               "full_name": "test_prog::Int::>"
-       }, {
-               "full_name": "test_prog::Int::to_f"
-       }, {
-               "full_name": "test_prog::Int::unary -"
-       }],
-       "intro": {
-               "full_name": "test_prog$Int"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [{
-               "full_name": "test_prog$Int$*"
-       }, {
-               "full_name": "test_prog$Int$+"
-       }, {
-               "full_name": "test_prog$Int$-"
-       }, {
-               "full_name": "test_prog$Int$/"
-       }, {
-               "full_name": "test_prog$Int$>"
-       }, {
-               "full_name": "test_prog$Int$to_f"
-       }, {
-               "full_name": "test_prog$Int$unary -"
-       }],
-       "redef_mpropdefs": []
-}
-{
-       "name": "Float",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Float",
-       "mdoc": {
-               "content": "Some services about Floats.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 44,
-                       "line_start": 43,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 50,
-               "line_start": 43,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mclass": {
-               "full_name": "test_prog::Float"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Float$*"
-       }, {
-               "full_name": "test_prog$Float$+"
-       }, {
-               "full_name": "test_prog$Float$-"
-       }, {
-               "full_name": "test_prog$Float$/"
-       }, {
-               "full_name": "test_prog$Float$>"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Float::*"
-       }, {
-               "full_name": "test_prog::Float::+"
-       }, {
-               "full_name": "test_prog::Float::-"
-       }, {
-               "full_name": "test_prog::Float::/"
-       }, {
-               "full_name": "test_prog::Float::>"
-       }],
-       "intro": {
-               "full_name": "test_prog$Float"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [{
-               "full_name": "test_prog$Float$*"
-       }, {
-               "full_name": "test_prog$Float$+"
-       }, {
-               "full_name": "test_prog$Float$-"
-       }, {
-               "full_name": "test_prog$Float$/"
-       }, {
-               "full_name": "test_prog$Float$>"
-       }],
-       "redef_mpropdefs": []
-}
-{
-       "name": "Bool",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Bool",
-       "mdoc": {
-               "content": "Booleans, `true` or `false`.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 53,
-                       "line_start": 52,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 14,
-               "column_start": 1,
-               "line_end": 53,
-               "line_start": 52,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mclass": {
-               "full_name": "test_prog::Bool"
-       },
-       "mpropdefs": [],
-       "intro_mproperties": [],
-       "intro": {
-               "full_name": "test_prog$Bool"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [],
-       "redef_mpropdefs": []
-}
-{
-       "name": "String",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$String",
-       "mdoc": {
-               "content": "Strings (there is no chars...).",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 56,
-                       "line_start": 55,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 16,
-               "column_start": 1,
-               "line_end": 56,
-               "line_start": 55,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mclass": {
-               "full_name": "test_prog::String"
-       },
-       "mpropdefs": [],
-       "intro_mproperties": [],
-       "intro": {
-               "full_name": "test_prog$String"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [],
-       "redef_mpropdefs": []
-}
-{
-       "name": "List",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$List",
-       "mdoc": {
-               "content": "List of things.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 59,
-                       "line_start": 58,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 17,
-               "column_start": 1,
-               "line_end": 59,
-               "line_start": 58,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [{
-               "name": "E",
-               "rank": 0,
-               "mtype": {
-                       "full_name": "nullable test_prog::Object"
-               }
-       }],
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mclass": {
-               "full_name": "test_prog::List"
-       },
-       "mpropdefs": [],
-       "intro_mproperties": [],
-       "intro": {
-               "full_name": "test_prog$List"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [],
-       "redef_mpropdefs": []
-}
-{
-       "name": "Career",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Career",
-       "mdoc": {
-               "content": "A `Career` gives a characteristic bonus or malus to the character.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 30,
-                       "line_start": 29,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 36,
-               "line_start": 29,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mclass": {
-               "full_name": "test_prog::Career"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Career$_endurance_bonus"
-       }, {
-               "full_name": "test_prog$Career$_intelligence_bonus"
-       }, {
-               "full_name": "test_prog$Career$_strength_bonus"
-       }, {
-               "full_name": "test_prog$Career$endurance_bonus"
-       }, {
-               "full_name": "test_prog$Career$endurance_bonus="
-       }, {
-               "full_name": "test_prog$Career$Object::init"
-       }, {
-               "full_name": "test_prog$Career$intelligence_bonus"
-       }, {
-               "full_name": "test_prog$Career$intelligence_bonus="
-       }, {
-               "full_name": "test_prog$Career$strength_bonus"
-       }, {
-               "full_name": "test_prog$Career$strength_bonus="
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::careers::Career::_endurance_bonus"
-       }, {
-               "full_name": "test_prog::careers::Career::_intelligence_bonus"
-       }, {
-               "full_name": "test_prog::careers::Career::_strength_bonus"
-       }, {
-               "full_name": "test_prog::Career::endurance_bonus"
-       }, {
-               "full_name": "test_prog::Career::endurance_bonus="
-       }, {
-               "full_name": "test_prog::Career::intelligence_bonus"
-       }, {
-               "full_name": "test_prog::Career::intelligence_bonus="
-       }, {
-               "full_name": "test_prog::Career::strength_bonus"
-       }, {
-               "full_name": "test_prog::Career::strength_bonus="
-       }],
-       "intro": {
-               "full_name": "test_prog$Career"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [{
-               "full_name": "test_prog$Career$_endurance_bonus"
-       }, {
-               "full_name": "test_prog$Career$_intelligence_bonus"
-       }, {
-               "full_name": "test_prog$Career$_strength_bonus"
-       }, {
-               "full_name": "test_prog$Career$endurance_bonus"
-       }, {
-               "full_name": "test_prog$Career$endurance_bonus="
-       }, {
-               "full_name": "test_prog$Career$intelligence_bonus"
-       }, {
-               "full_name": "test_prog$Career$intelligence_bonus="
-       }, {
-               "full_name": "test_prog$Career$strength_bonus"
-       }, {
-               "full_name": "test_prog$Career$strength_bonus="
-       }],
-       "redef_mpropdefs": [{
-               "full_name": "test_prog$Career$Object::init"
-       }]
-}
-{
-       "name": "Warrior",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Warrior",
-       "mdoc": {
-               "content": "Warriors are good for fighting.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 39,
-                       "line_start": 38,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 47,
-               "line_start": 38,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mclass": {
-               "full_name": "test_prog::Warrior"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Warrior$Object::init"
-       }],
-       "intro_mproperties": [],
-       "intro": {
-               "full_name": "test_prog$Warrior"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [],
-       "redef_mpropdefs": [{
-               "full_name": "test_prog$Warrior$Object::init"
-       }]
-}
-{
-       "name": "Magician",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Magician",
-       "mdoc": {
-               "content": "Magicians know magic and how to use it.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 50,
-                       "line_start": 49,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 58,
-               "line_start": 49,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mclass": {
-               "full_name": "test_prog::Magician"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Magician$Object::init"
-       }],
-       "intro_mproperties": [],
-       "intro": {
-               "full_name": "test_prog$Magician"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [],
-       "redef_mpropdefs": [{
-               "full_name": "test_prog$Magician$Object::init"
-       }]
-}
-{
-       "name": "Alcoholic",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Alcoholic",
-       "mdoc": {
-               "content": "Alcoholics are good to nothing escept taking punches.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 61,
-                       "line_start": 60,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 69,
-               "line_start": 60,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mclass": {
-               "full_name": "test_prog::Alcoholic"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Alcoholic$Object::init"
-       }],
-       "intro_mproperties": [],
-       "intro": {
-               "full_name": "test_prog$Alcoholic"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [],
-       "redef_mpropdefs": [{
-               "full_name": "test_prog$Alcoholic$Object::init"
-       }]
-}
-{
-       "name": "Race",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Race",
-       "mdoc": {
-               "content": "Race determines basic characteristics and what the character will be able to do in life.\n\nThese are base characteristics, they cannot be changed\nbut you can add new ones if needed using refinement.\nObjects and spells cannot change those characteristics.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 33,
-                       "line_start": 28,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 45,
-               "line_start": 28,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mclass": {
-               "full_name": "test_prog::Race"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Race$_base_endurance"
-       }, {
-               "full_name": "test_prog$Race$_base_intelligence"
-       }, {
-               "full_name": "test_prog$Race$_base_strength"
-       }, {
-               "full_name": "test_prog$Race$base_endurance"
-       }, {
-               "full_name": "test_prog$Race$base_endurance="
-       }, {
-               "full_name": "test_prog$Race$base_intelligence"
-       }, {
-               "full_name": "test_prog$Race$base_intelligence="
-       }, {
-               "full_name": "test_prog$Race$base_strength"
-       }, {
-               "full_name": "test_prog$Race$base_strength="
-       }, {
-               "full_name": "test_prog$Race$Object::init"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::races::Race::_base_endurance"
-       }, {
-               "full_name": "test_prog::races::Race::_base_intelligence"
-       }, {
-               "full_name": "test_prog::races::Race::_base_strength"
-       }, {
-               "full_name": "test_prog::Race::base_endurance"
-       }, {
-               "full_name": "test_prog::Race::base_endurance="
-       }, {
-               "full_name": "test_prog::Race::base_intelligence"
-       }, {
-               "full_name": "test_prog::Race::base_intelligence="
-       }, {
-               "full_name": "test_prog::Race::base_strength"
-       }, {
-               "full_name": "test_prog::Race::base_strength="
-       }],
-       "intro": {
-               "full_name": "test_prog$Race"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [{
-               "full_name": "test_prog$Race$_base_endurance"
-       }, {
-               "full_name": "test_prog$Race$_base_intelligence"
-       }, {
-               "full_name": "test_prog$Race$_base_strength"
-       }, {
-               "full_name": "test_prog$Race$base_endurance"
-       }, {
-               "full_name": "test_prog$Race$base_endurance="
-       }, {
-               "full_name": "test_prog$Race$base_intelligence"
-       }, {
-               "full_name": "test_prog$Race$base_intelligence="
-       }, {
-               "full_name": "test_prog$Race$base_strength"
-       }, {
-               "full_name": "test_prog$Race$base_strength="
-       }],
-       "redef_mpropdefs": [{
-               "full_name": "test_prog$Race$Object::init"
-       }]
-}
-{
-       "name": "Human",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Human",
-       "mdoc": {
-               "content": "Humans are able to do everithing.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 48,
-                       "line_start": 47,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 56,
-               "line_start": 47,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mclass": {
-               "full_name": "test_prog::Human"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Human$Object::init"
-       }],
-       "intro_mproperties": [],
-       "intro": {
-               "full_name": "test_prog$Human"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [],
-       "redef_mpropdefs": [{
-               "full_name": "test_prog$Human$Object::init"
-       }]
-}
-{
-       "name": "Dwarf",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Dwarf",
-       "mdoc": {
-               "content": "Dwarves make strong warriors.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 59,
-                       "line_start": 58,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 67,
-               "line_start": 58,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mclass": {
-               "full_name": "test_prog::Dwarf"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Dwarf$Object::init"
-       }],
-       "intro_mproperties": [],
-       "intro": {
-               "full_name": "test_prog$Dwarf"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [],
-       "redef_mpropdefs": [{
-               "full_name": "test_prog$Dwarf$Object::init"
-       }]
-}
-{
-       "name": "Dwarf",
-       "class_name": "MClassDef",
-       "full_name": "test_prog::combat$Dwarf",
-       "mdoc": {
-               "content": "Dwarves can be used as weapons.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 62,
-                       "line_start": 61,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["redef", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 67,
-               "line_start": 61,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mclass": {
-               "full_name": "test_prog::Dwarf"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog::combat$Dwarf$Weapon::dps"
-       }],
-       "intro_mproperties": [],
-       "intro": {
-               "full_name": "test_prog$Dwarf"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [],
-       "redef_mpropdefs": [{
-               "full_name": "test_prog::combat$Dwarf$Weapon::dps"
-       }]
-}
-{
-       "name": "Elf",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Elf",
-       "mdoc": {
-               "content": "Elves make good magicians.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 70,
-                       "line_start": 69,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 78,
-               "line_start": 69,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mclass": {
-               "full_name": "test_prog::Elf"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Elf$Object::init"
-       }],
-       "intro_mproperties": [],
-       "intro": {
-               "full_name": "test_prog$Elf"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [],
-       "redef_mpropdefs": [{
-               "full_name": "test_prog$Elf$Object::init"
-       }]
-}
-{
-       "name": "Character",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Character",
-       "mdoc": {
-               "content": "Characters can be played by both the human or the machine.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 22,
-                       "line_start": 21,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 68,
-               "line_start": 21,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$_age"
-       }, {
-               "full_name": "test_prog$Character$_career"
-       }, {
-               "full_name": "test_prog$Character$_health"
-       }, {
-               "full_name": "test_prog$Character$_name"
-       }, {
-               "full_name": "test_prog$Character$_race"
-       }, {
-               "full_name": "test_prog$Character$_sex"
-       }, {
-               "full_name": "test_prog$Character$age"
-       }, {
-               "full_name": "test_prog$Character$age="
-       }, {
-               "full_name": "test_prog$Character$career"
-       }, {
-               "full_name": "test_prog$Character$career="
-       }, {
-               "full_name": "test_prog$Character$health"
-       }, {
-               "full_name": "test_prog$Character$health="
-       }, {
-               "full_name": "test_prog$Character$Object::init"
-       }, {
-               "full_name": "test_prog$Character$max_health"
-       }, {
-               "full_name": "test_prog$Character$name"
-       }, {
-               "full_name": "test_prog$Character$name="
-       }, {
-               "full_name": "test_prog$Character$quit"
-       }, {
-               "full_name": "test_prog$Character$race"
-       }, {
-               "full_name": "test_prog$Character$race="
-       }, {
-               "full_name": "test_prog$Character$sex"
-       }, {
-               "full_name": "test_prog$Character$sex="
-       }, {
-               "full_name": "test_prog$Character$total_endurance"
-       }, {
-               "full_name": "test_prog$Character$total_intelligence"
-       }, {
-               "full_name": "test_prog$Character$total_strengh"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::character::Character::_age"
-       }, {
-               "full_name": "test_prog::character::Character::_career"
-       }, {
-               "full_name": "test_prog::character::Character::_health"
-       }, {
-               "full_name": "test_prog::character::Character::_name"
-       }, {
-               "full_name": "test_prog::character::Character::_race"
-       }, {
-               "full_name": "test_prog::character::Character::_sex"
-       }, {
-               "full_name": "test_prog::Character::age"
-       }, {
-               "full_name": "test_prog::Character::age="
-       }, {
-               "full_name": "test_prog::Character::career"
-       }, {
-               "full_name": "test_prog::Character::career="
-       }, {
-               "full_name": "test_prog::Character::health"
-       }, {
-               "full_name": "test_prog::Character::health="
-       }, {
-               "full_name": "test_prog::Character::max_health"
-       }, {
-               "full_name": "test_prog::Character::name"
-       }, {
-               "full_name": "test_prog::Character::name="
-       }, {
-               "full_name": "test_prog::Character::quit"
-       }, {
-               "full_name": "test_prog::Character::race"
-       }, {
-               "full_name": "test_prog::Character::race="
-       }, {
-               "full_name": "test_prog::Character::sex"
-       }, {
-               "full_name": "test_prog::Character::sex="
-       }, {
-               "full_name": "test_prog::Character::total_endurance"
-       }, {
-               "full_name": "test_prog::Character::total_intelligence"
-       }, {
-               "full_name": "test_prog::Character::total_strengh"
-       }],
-       "intro": {
-               "full_name": "test_prog$Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [{
-               "full_name": "test_prog$Character$_age"
-       }, {
-               "full_name": "test_prog$Character$_career"
-       }, {
-               "full_name": "test_prog$Character$_health"
-       }, {
-               "full_name": "test_prog$Character$_name"
-       }, {
-               "full_name": "test_prog$Character$_race"
-       }, {
-               "full_name": "test_prog$Character$_sex"
-       }, {
-               "full_name": "test_prog$Character$age"
-       }, {
-               "full_name": "test_prog$Character$age="
-       }, {
-               "full_name": "test_prog$Character$career"
-       }, {
-               "full_name": "test_prog$Character$career="
-       }, {
-               "full_name": "test_prog$Character$health"
-       }, {
-               "full_name": "test_prog$Character$health="
-       }, {
-               "full_name": "test_prog$Character$max_health"
-       }, {
-               "full_name": "test_prog$Character$name"
-       }, {
-               "full_name": "test_prog$Character$name="
-       }, {
-               "full_name": "test_prog$Character$quit"
-       }, {
-               "full_name": "test_prog$Character$race"
-       }, {
-               "full_name": "test_prog$Character$race="
-       }, {
-               "full_name": "test_prog$Character$sex"
-       }, {
-               "full_name": "test_prog$Character$sex="
-       }, {
-               "full_name": "test_prog$Character$total_endurance"
-       }, {
-               "full_name": "test_prog$Character$total_intelligence"
-       }, {
-               "full_name": "test_prog$Character$total_strengh"
-       }],
-       "redef_mpropdefs": [{
-               "full_name": "test_prog$Character$Object::init"
-       }]
-}
-{
-       "name": "Character",
-       "class_name": "MClassDef",
-       "full_name": "test_prog::combat$Character",
-       "mdoc": {
-               "content": "Characters are now `Comabatable`",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 54,
-                       "line_start": 53,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["redef", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 59,
-               "line_start": 53,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog::combat$Character$Combatable::hit_points"
-       }],
-       "intro_mproperties": [],
-       "intro": {
-               "full_name": "test_prog$Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [],
-       "redef_mpropdefs": [{
-               "full_name": "test_prog::combat$Character$Combatable::hit_points"
-       }]
-}
-{
-       "name": "Weapon",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Weapon",
-       "mdoc": {
-               "content": "Something that can be used to attack someone and inflict damage.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 21,
-                       "line_start": 20,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "interface"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 24,
-               "line_start": 20,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mclass": {
-               "full_name": "test_prog::Weapon"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Weapon$dps"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Weapon::dps"
-       }],
-       "intro": {
-               "full_name": "test_prog$Weapon"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [{
-               "full_name": "test_prog$Weapon$dps"
-       }],
-       "redef_mpropdefs": []
-}
-{
-       "name": "Combatable",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Combatable",
-       "mdoc": {
-               "content": "Something that can be combatted, it can `attack` and `defend`.\n\nWorld items can also be `Combatable`.\n`defend` method is then used to determines how the object react to an attack\nSome magical items can even `attack`.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 31,
-                       "line_start": 26,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "interface"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 51,
-               "line_start": 26,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mclass": {
-               "full_name": "test_prog::Combatable"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Combatable$attack"
-       }, {
-               "full_name": "test_prog$Combatable$defend"
-       }, {
-               "full_name": "test_prog$Combatable$direct_attack"
-       }, {
-               "full_name": "test_prog$Combatable$hit_points"
-       }, {
-               "full_name": "test_prog$Combatable$is_dead"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Combatable::attack"
-       }, {
-               "full_name": "test_prog::Combatable::defend"
-       }, {
-               "full_name": "test_prog::Combatable::direct_attack"
-       }, {
-               "full_name": "test_prog::Combatable::hit_points"
-       }, {
-               "full_name": "test_prog::Combatable::is_dead"
-       }],
-       "intro": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [{
-               "full_name": "test_prog$Combatable$attack"
-       }, {
-               "full_name": "test_prog$Combatable$defend"
-       }, {
-               "full_name": "test_prog$Combatable$direct_attack"
-       }, {
-               "full_name": "test_prog$Combatable$hit_points"
-       }, {
-               "full_name": "test_prog$Combatable$is_dead"
-       }],
-       "redef_mpropdefs": []
-}
-{
-       "name": "Game",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Game",
-       "mdoc": {
-               "content": "This is the interface you have to implement to use ure gaming platform.\n\nsee http://our.platform.com",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 23,
-                       "line_start": 20,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "interface"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 45,
-               "line_start": 20,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::game"
-       },
-       "mclass": {
-               "full_name": "test_prog::Game"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Game$computer_characters"
-       }, {
-               "full_name": "test_prog$Game$pause_game"
-       }, {
-               "full_name": "test_prog$Game$player_characters"
-       }, {
-               "full_name": "test_prog$Game$start_game"
-       }, {
-               "full_name": "test_prog$Game$stop_game"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Game::computer_characters"
-       }, {
-               "full_name": "test_prog::Game::pause_game"
-       }, {
-               "full_name": "test_prog::Game::player_characters"
-       }, {
-               "full_name": "test_prog::Game::start_game"
-       }, {
-               "full_name": "test_prog::Game::stop_game"
-       }],
-       "intro": {
-               "full_name": "test_prog$Game"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [{
-               "full_name": "test_prog$Game$computer_characters"
-       }, {
-               "full_name": "test_prog$Game$pause_game"
-       }, {
-               "full_name": "test_prog$Game$player_characters"
-       }, {
-               "full_name": "test_prog$Game$start_game"
-       }, {
-               "full_name": "test_prog$Game$stop_game"
-       }],
-       "redef_mpropdefs": []
-}
-{
-       "name": "Starter",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Starter",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 23,
-               "line_start": 21,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::test_prog"
-       },
-       "mclass": {
-               "full_name": "test_prog::Starter"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Starter$start"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Starter::start"
-       }],
-       "intro": {
-               "full_name": "test_prog$Starter"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [{
-               "full_name": "test_prog$Starter$start"
-       }],
-       "redef_mpropdefs": []
-}
-{
-       "name": "Sys",
-       "class_name": "MClassDef",
-       "full_name": "test_prog$Sys",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 13,
-               "column_start": 1,
-               "line_end": 26,
-               "line_start": 25,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mparameters": [],
-       "mmodule": {
-               "full_name": "test_prog::test_prog"
-       },
-       "mclass": {
-               "full_name": "test_prog::Sys"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Sys$main"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Sys::main"
-       }],
-       "intro": {
-               "full_name": "test_prog$Sys"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "intro_mpropdefs": [{
-               "full_name": "test_prog$Sys$main"
-       }],
-       "redef_mpropdefs": []
-}
diff --git a/src/model/test_model_json.sav/test_classes_to_full_json.res b/src/model/test_model_json.sav/test_classes_to_full_json.res
deleted file mode 100644 (file)
index d5eb364..0000000
+++ /dev/null
@@ -1,1428 +0,0 @@
-{
-       "name": "Object",
-       "class_name": "MClass",
-       "full_name": "test_prog::Object",
-       "mdoc": {
-               "content": "Root of everything.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 21,
-                       "line_start": 20,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "interface"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 30,
-               "line_start": 20,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Object"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Object"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "redef_mproperties": [],
-       "parents": []
-}
-{
-       "name": "Int",
-       "class_name": "MClass",
-       "full_name": "test_prog::Int",
-       "mdoc": {
-               "content": "Some services about Integers.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 33,
-                       "line_start": 32,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 41,
-               "line_start": 32,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Int"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Int"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Int::*"
-       }, {
-               "full_name": "test_prog::Int::+"
-       }, {
-               "full_name": "test_prog::Int::-"
-       }, {
-               "full_name": "test_prog::Int::/"
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Int::>"
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }, {
-               "full_name": "test_prog::Int::to_f"
-       }, {
-               "full_name": "test_prog::Int::unary -"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Int::*"
-       }, {
-               "full_name": "test_prog::Int::+"
-       }, {
-               "full_name": "test_prog::Int::-"
-       }, {
-               "full_name": "test_prog::Int::/"
-       }, {
-               "full_name": "test_prog::Int::>"
-       }, {
-               "full_name": "test_prog::Int::to_f"
-       }, {
-               "full_name": "test_prog::Int::unary -"
-       }],
-       "redef_mproperties": [],
-       "parents": [{
-               "full_name": "test_prog::Object"
-       }]
-}
-{
-       "name": "Float",
-       "class_name": "MClass",
-       "full_name": "test_prog::Float",
-       "mdoc": {
-               "content": "Some services about Floats.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 44,
-                       "line_start": 43,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 50,
-               "line_start": 43,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Float"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Float"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Float::*"
-       }, {
-               "full_name": "test_prog::Float::+"
-       }, {
-               "full_name": "test_prog::Float::-"
-       }, {
-               "full_name": "test_prog::Float::/"
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Float::>"
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Float::*"
-       }, {
-               "full_name": "test_prog::Float::+"
-       }, {
-               "full_name": "test_prog::Float::-"
-       }, {
-               "full_name": "test_prog::Float::/"
-       }, {
-               "full_name": "test_prog::Float::>"
-       }],
-       "redef_mproperties": [],
-       "parents": [{
-               "full_name": "test_prog::Object"
-       }]
-}
-{
-       "name": "Bool",
-       "class_name": "MClass",
-       "full_name": "test_prog::Bool",
-       "mdoc": {
-               "content": "Booleans, `true` or `false`.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 53,
-                       "line_start": 52,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 14,
-               "column_start": 1,
-               "line_end": 53,
-               "line_start": 52,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Bool"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Bool"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "intro_mproperties": [],
-       "redef_mproperties": [],
-       "parents": [{
-               "full_name": "test_prog::Object"
-       }]
-}
-{
-       "name": "String",
-       "class_name": "MClass",
-       "full_name": "test_prog::String",
-       "mdoc": {
-               "content": "Strings (there is no chars...).",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 56,
-                       "line_start": 55,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 16,
-               "column_start": 1,
-               "line_end": 56,
-               "line_start": 55,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$String"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$String"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "intro_mproperties": [],
-       "redef_mproperties": [],
-       "parents": [{
-               "full_name": "test_prog::Object"
-       }]
-}
-{
-       "name": "List",
-       "class_name": "MClass",
-       "full_name": "test_prog::List",
-       "mdoc": {
-               "content": "List of things.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 59,
-                       "line_start": 58,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 17,
-               "column_start": 1,
-               "line_end": 59,
-               "line_start": 58,
-               "file": "test_location"
-       },
-       "mparameters": [{
-               "name": "E",
-               "rank": 0,
-               "mtype": {
-                       "full_name": "nullable test_prog::Object"
-               }
-       }],
-       "intro": {
-               "full_name": "test_prog$List"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$List"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "intro_mproperties": [],
-       "redef_mproperties": [],
-       "parents": [{
-               "full_name": "test_prog::Object"
-       }]
-}
-{
-       "name": "Career",
-       "class_name": "MClass",
-       "full_name": "test_prog::Career",
-       "mdoc": {
-               "content": "A `Career` gives a characteristic bonus or malus to the character.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 30,
-                       "line_start": 29,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 36,
-               "line_start": 29,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Career"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Career"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::careers::Career::_endurance_bonus"
-       }, {
-               "full_name": "test_prog::careers::Career::_intelligence_bonus"
-       }, {
-               "full_name": "test_prog::careers::Career::_strength_bonus"
-       }, {
-               "full_name": "test_prog::Career::endurance_bonus"
-       }, {
-               "full_name": "test_prog::Career::endurance_bonus="
-       }, {
-               "full_name": "test_prog::Object::init"
-       }, {
-               "full_name": "test_prog::Career::intelligence_bonus"
-       }, {
-               "full_name": "test_prog::Career::intelligence_bonus="
-       }, {
-               "full_name": "test_prog::Career::strength_bonus"
-       }, {
-               "full_name": "test_prog::Career::strength_bonus="
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::careers::Career::_endurance_bonus"
-       }, {
-               "full_name": "test_prog::careers::Career::_intelligence_bonus"
-       }, {
-               "full_name": "test_prog::careers::Career::_strength_bonus"
-       }, {
-               "full_name": "test_prog::Career::endurance_bonus"
-       }, {
-               "full_name": "test_prog::Career::endurance_bonus="
-       }, {
-               "full_name": "test_prog::Career::intelligence_bonus"
-       }, {
-               "full_name": "test_prog::Career::intelligence_bonus="
-       }, {
-               "full_name": "test_prog::Career::strength_bonus"
-       }, {
-               "full_name": "test_prog::Career::strength_bonus="
-       }],
-       "redef_mproperties": [{
-               "full_name": "test_prog::Object::init"
-       }],
-       "parents": [{
-               "full_name": "test_prog::Object"
-       }]
-}
-{
-       "name": "Warrior",
-       "class_name": "MClass",
-       "full_name": "test_prog::Warrior",
-       "mdoc": {
-               "content": "Warriors are good for fighting.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 39,
-                       "line_start": 38,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 47,
-               "line_start": 38,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Warrior"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Warrior"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::careers::Career::_endurance_bonus"
-       }, {
-               "full_name": "test_prog::careers::Career::_intelligence_bonus"
-       }, {
-               "full_name": "test_prog::careers::Career::_strength_bonus"
-       }, {
-               "full_name": "test_prog::Career::endurance_bonus"
-       }, {
-               "full_name": "test_prog::Career::endurance_bonus="
-       }, {
-               "full_name": "test_prog::Object::init"
-       }, {
-               "full_name": "test_prog::Career::intelligence_bonus"
-       }, {
-               "full_name": "test_prog::Career::intelligence_bonus="
-       }, {
-               "full_name": "test_prog::Career::strength_bonus"
-       }, {
-               "full_name": "test_prog::Career::strength_bonus="
-       }],
-       "intro_mproperties": [],
-       "redef_mproperties": [{
-               "full_name": "test_prog::Object::init"
-       }],
-       "parents": [{
-               "full_name": "test_prog::Career"
-       }]
-}
-{
-       "name": "Magician",
-       "class_name": "MClass",
-       "full_name": "test_prog::Magician",
-       "mdoc": {
-               "content": "Magicians know magic and how to use it.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 50,
-                       "line_start": 49,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 58,
-               "line_start": 49,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Magician"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Magician"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::careers::Career::_endurance_bonus"
-       }, {
-               "full_name": "test_prog::careers::Career::_intelligence_bonus"
-       }, {
-               "full_name": "test_prog::careers::Career::_strength_bonus"
-       }, {
-               "full_name": "test_prog::Career::endurance_bonus"
-       }, {
-               "full_name": "test_prog::Career::endurance_bonus="
-       }, {
-               "full_name": "test_prog::Object::init"
-       }, {
-               "full_name": "test_prog::Career::intelligence_bonus"
-       }, {
-               "full_name": "test_prog::Career::intelligence_bonus="
-       }, {
-               "full_name": "test_prog::Career::strength_bonus"
-       }, {
-               "full_name": "test_prog::Career::strength_bonus="
-       }],
-       "intro_mproperties": [],
-       "redef_mproperties": [{
-               "full_name": "test_prog::Object::init"
-       }],
-       "parents": [{
-               "full_name": "test_prog::Career"
-       }]
-}
-{
-       "name": "Alcoholic",
-       "class_name": "MClass",
-       "full_name": "test_prog::Alcoholic",
-       "mdoc": {
-               "content": "Alcoholics are good to nothing escept taking punches.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 61,
-                       "line_start": 60,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 69,
-               "line_start": 60,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Alcoholic"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Alcoholic"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::careers::Career::_endurance_bonus"
-       }, {
-               "full_name": "test_prog::careers::Career::_intelligence_bonus"
-       }, {
-               "full_name": "test_prog::careers::Career::_strength_bonus"
-       }, {
-               "full_name": "test_prog::Career::endurance_bonus"
-       }, {
-               "full_name": "test_prog::Career::endurance_bonus="
-       }, {
-               "full_name": "test_prog::Object::init"
-       }, {
-               "full_name": "test_prog::Career::intelligence_bonus"
-       }, {
-               "full_name": "test_prog::Career::intelligence_bonus="
-       }, {
-               "full_name": "test_prog::Career::strength_bonus"
-       }, {
-               "full_name": "test_prog::Career::strength_bonus="
-       }],
-       "intro_mproperties": [],
-       "redef_mproperties": [{
-               "full_name": "test_prog::Object::init"
-       }],
-       "parents": [{
-               "full_name": "test_prog::Career"
-       }]
-}
-{
-       "name": "Race",
-       "class_name": "MClass",
-       "full_name": "test_prog::Race",
-       "mdoc": {
-               "content": "Race determines basic characteristics and what the character will be able to do in life.\n\nThese are base characteristics, they cannot be changed\nbut you can add new ones if needed using refinement.\nObjects and spells cannot change those characteristics.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 33,
-                       "line_start": 28,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 45,
-               "line_start": 28,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Race"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Race"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::races::Race::_base_endurance"
-       }, {
-               "full_name": "test_prog::races::Race::_base_intelligence"
-       }, {
-               "full_name": "test_prog::races::Race::_base_strength"
-       }, {
-               "full_name": "test_prog::Race::base_endurance"
-       }, {
-               "full_name": "test_prog::Race::base_endurance="
-       }, {
-               "full_name": "test_prog::Race::base_intelligence"
-       }, {
-               "full_name": "test_prog::Race::base_intelligence="
-       }, {
-               "full_name": "test_prog::Race::base_strength"
-       }, {
-               "full_name": "test_prog::Race::base_strength="
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::races::Race::_base_endurance"
-       }, {
-               "full_name": "test_prog::races::Race::_base_intelligence"
-       }, {
-               "full_name": "test_prog::races::Race::_base_strength"
-       }, {
-               "full_name": "test_prog::Race::base_endurance"
-       }, {
-               "full_name": "test_prog::Race::base_endurance="
-       }, {
-               "full_name": "test_prog::Race::base_intelligence"
-       }, {
-               "full_name": "test_prog::Race::base_intelligence="
-       }, {
-               "full_name": "test_prog::Race::base_strength"
-       }, {
-               "full_name": "test_prog::Race::base_strength="
-       }],
-       "redef_mproperties": [{
-               "full_name": "test_prog::Object::init"
-       }],
-       "parents": [{
-               "full_name": "test_prog::Object"
-       }]
-}
-{
-       "name": "Human",
-       "class_name": "MClass",
-       "full_name": "test_prog::Human",
-       "mdoc": {
-               "content": "Humans are able to do everithing.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 48,
-                       "line_start": 47,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 56,
-               "line_start": 47,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Human"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Human"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::races::Race::_base_endurance"
-       }, {
-               "full_name": "test_prog::races::Race::_base_intelligence"
-       }, {
-               "full_name": "test_prog::races::Race::_base_strength"
-       }, {
-               "full_name": "test_prog::Race::base_endurance"
-       }, {
-               "full_name": "test_prog::Race::base_endurance="
-       }, {
-               "full_name": "test_prog::Race::base_intelligence"
-       }, {
-               "full_name": "test_prog::Race::base_intelligence="
-       }, {
-               "full_name": "test_prog::Race::base_strength"
-       }, {
-               "full_name": "test_prog::Race::base_strength="
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "intro_mproperties": [],
-       "redef_mproperties": [{
-               "full_name": "test_prog::Object::init"
-       }],
-       "parents": [{
-               "full_name": "test_prog::Race"
-       }]
-}
-{
-       "name": "Dwarf",
-       "class_name": "MClass",
-       "full_name": "test_prog::Dwarf",
-       "mdoc": {
-               "content": "Dwarves make strong warriors.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 59,
-                       "line_start": 58,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 67,
-               "line_start": 58,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Dwarf"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Dwarf"
-       }, {
-               "full_name": "test_prog::combat$Dwarf"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::races::Race::_base_endurance"
-       }, {
-               "full_name": "test_prog::races::Race::_base_intelligence"
-       }, {
-               "full_name": "test_prog::races::Race::_base_strength"
-       }, {
-               "full_name": "test_prog::Race::base_endurance"
-       }, {
-               "full_name": "test_prog::Race::base_endurance="
-       }, {
-               "full_name": "test_prog::Race::base_intelligence"
-       }, {
-               "full_name": "test_prog::Race::base_intelligence="
-       }, {
-               "full_name": "test_prog::Race::base_strength"
-       }, {
-               "full_name": "test_prog::Race::base_strength="
-       }, {
-               "full_name": "test_prog::Weapon::dps"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "intro_mproperties": [],
-       "redef_mproperties": [{
-               "full_name": "test_prog::Weapon::dps"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "parents": [{
-               "full_name": "test_prog::Race"
-       }, {
-               "full_name": "test_prog::Weapon"
-       }]
-}
-{
-       "name": "Elf",
-       "class_name": "MClass",
-       "full_name": "test_prog::Elf",
-       "mdoc": {
-               "content": "Elves make good magicians.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 70,
-                       "line_start": 69,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 78,
-               "line_start": 69,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Elf"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Elf"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::races::Race::_base_endurance"
-       }, {
-               "full_name": "test_prog::races::Race::_base_intelligence"
-       }, {
-               "full_name": "test_prog::races::Race::_base_strength"
-       }, {
-               "full_name": "test_prog::Race::base_endurance"
-       }, {
-               "full_name": "test_prog::Race::base_endurance="
-       }, {
-               "full_name": "test_prog::Race::base_intelligence"
-       }, {
-               "full_name": "test_prog::Race::base_intelligence="
-       }, {
-               "full_name": "test_prog::Race::base_strength"
-       }, {
-               "full_name": "test_prog::Race::base_strength="
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "intro_mproperties": [],
-       "redef_mproperties": [{
-               "full_name": "test_prog::Object::init"
-       }],
-       "parents": [{
-               "full_name": "test_prog::Race"
-       }]
-}
-{
-       "name": "Character",
-       "class_name": "MClass",
-       "full_name": "test_prog::Character",
-       "mdoc": {
-               "content": "Characters can be played by both the human or the machine.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 22,
-                       "line_start": 21,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 68,
-               "line_start": 21,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Character"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Character"
-       }, {
-               "full_name": "test_prog::combat$Character"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::character::Character::_age"
-       }, {
-               "full_name": "test_prog::character::Character::_career"
-       }, {
-               "full_name": "test_prog::character::Character::_health"
-       }, {
-               "full_name": "test_prog::character::Character::_name"
-       }, {
-               "full_name": "test_prog::character::Character::_race"
-       }, {
-               "full_name": "test_prog::character::Character::_sex"
-       }, {
-               "full_name": "test_prog::Character::age"
-       }, {
-               "full_name": "test_prog::Character::age="
-       }, {
-               "full_name": "test_prog::Combatable::attack"
-       }, {
-               "full_name": "test_prog::Character::career"
-       }, {
-               "full_name": "test_prog::Character::career="
-       }, {
-               "full_name": "test_prog::Combatable::defend"
-       }, {
-               "full_name": "test_prog::Combatable::direct_attack"
-       }, {
-               "full_name": "test_prog::Character::health"
-       }, {
-               "full_name": "test_prog::Character::health="
-       }, {
-               "full_name": "test_prog::Combatable::hit_points"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }, {
-               "full_name": "test_prog::Combatable::is_dead"
-       }, {
-               "full_name": "test_prog::Character::max_health"
-       }, {
-               "full_name": "test_prog::Character::name"
-       }, {
-               "full_name": "test_prog::Character::name="
-       }, {
-               "full_name": "test_prog::Character::quit"
-       }, {
-               "full_name": "test_prog::Character::race"
-       }, {
-               "full_name": "test_prog::Character::race="
-       }, {
-               "full_name": "test_prog::Character::sex"
-       }, {
-               "full_name": "test_prog::Character::sex="
-       }, {
-               "full_name": "test_prog::Character::total_endurance"
-       }, {
-               "full_name": "test_prog::Character::total_intelligence"
-       }, {
-               "full_name": "test_prog::Character::total_strengh"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::character::Character::_age"
-       }, {
-               "full_name": "test_prog::character::Character::_career"
-       }, {
-               "full_name": "test_prog::character::Character::_health"
-       }, {
-               "full_name": "test_prog::character::Character::_name"
-       }, {
-               "full_name": "test_prog::character::Character::_race"
-       }, {
-               "full_name": "test_prog::character::Character::_sex"
-       }, {
-               "full_name": "test_prog::Character::age"
-       }, {
-               "full_name": "test_prog::Character::age="
-       }, {
-               "full_name": "test_prog::Character::career"
-       }, {
-               "full_name": "test_prog::Character::career="
-       }, {
-               "full_name": "test_prog::Character::health"
-       }, {
-               "full_name": "test_prog::Character::health="
-       }, {
-               "full_name": "test_prog::Character::max_health"
-       }, {
-               "full_name": "test_prog::Character::name"
-       }, {
-               "full_name": "test_prog::Character::name="
-       }, {
-               "full_name": "test_prog::Character::quit"
-       }, {
-               "full_name": "test_prog::Character::race"
-       }, {
-               "full_name": "test_prog::Character::race="
-       }, {
-               "full_name": "test_prog::Character::sex"
-       }, {
-               "full_name": "test_prog::Character::sex="
-       }, {
-               "full_name": "test_prog::Character::total_endurance"
-       }, {
-               "full_name": "test_prog::Character::total_intelligence"
-       }, {
-               "full_name": "test_prog::Character::total_strengh"
-       }],
-       "redef_mproperties": [{
-               "full_name": "test_prog::Combatable::hit_points"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "parents": [{
-               "full_name": "test_prog::Combatable"
-       }, {
-               "full_name": "test_prog::Object"
-       }]
-}
-{
-       "name": "Weapon",
-       "class_name": "MClass",
-       "full_name": "test_prog::Weapon",
-       "mdoc": {
-               "content": "Something that can be used to attack someone and inflict damage.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 21,
-                       "line_start": 20,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "interface"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 24,
-               "line_start": 20,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Weapon"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Weapon"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Weapon::dps"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Weapon::dps"
-       }],
-       "redef_mproperties": [],
-       "parents": [{
-               "full_name": "test_prog::Object"
-       }]
-}
-{
-       "name": "Combatable",
-       "class_name": "MClass",
-       "full_name": "test_prog::Combatable",
-       "mdoc": {
-               "content": "Something that can be combatted, it can `attack` and `defend`.\n\nWorld items can also be `Combatable`.\n`defend` method is then used to determines how the object react to an attack\nSome magical items can even `attack`.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 31,
-                       "line_start": 26,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "interface"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 51,
-               "line_start": 26,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Combatable"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Combatable"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Combatable::attack"
-       }, {
-               "full_name": "test_prog::Combatable::defend"
-       }, {
-               "full_name": "test_prog::Combatable::direct_attack"
-       }, {
-               "full_name": "test_prog::Combatable::hit_points"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }, {
-               "full_name": "test_prog::Combatable::is_dead"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Combatable::attack"
-       }, {
-               "full_name": "test_prog::Combatable::defend"
-       }, {
-               "full_name": "test_prog::Combatable::direct_attack"
-       }, {
-               "full_name": "test_prog::Combatable::hit_points"
-       }, {
-               "full_name": "test_prog::Combatable::is_dead"
-       }],
-       "redef_mproperties": [],
-       "parents": [{
-               "full_name": "test_prog::Object"
-       }]
-}
-{
-       "name": "Game",
-       "class_name": "MClass",
-       "full_name": "test_prog::Game",
-       "mdoc": {
-               "content": "This is the interface you have to implement to use ure gaming platform.\n\nsee http://our.platform.com",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 23,
-                       "line_start": 20,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "interface"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 45,
-               "line_start": 20,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Game"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::game"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Game"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Game::computer_characters"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }, {
-               "full_name": "test_prog::Game::pause_game"
-       }, {
-               "full_name": "test_prog::Game::player_characters"
-       }, {
-               "full_name": "test_prog::Game::start_game"
-       }, {
-               "full_name": "test_prog::Game::stop_game"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Game::computer_characters"
-       }, {
-               "full_name": "test_prog::Game::pause_game"
-       }, {
-               "full_name": "test_prog::Game::player_characters"
-       }, {
-               "full_name": "test_prog::Game::start_game"
-       }, {
-               "full_name": "test_prog::Game::stop_game"
-       }],
-       "redef_mproperties": [],
-       "parents": [{
-               "full_name": "test_prog::Object"
-       }]
-}
-{
-       "name": "Starter",
-       "class_name": "MClass",
-       "full_name": "test_prog::Starter",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 23,
-               "line_start": 21,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Starter"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::test_prog"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Starter"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }, {
-               "full_name": "test_prog::Starter::start"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Starter::start"
-       }],
-       "redef_mproperties": [],
-       "parents": [{
-               "full_name": "test_prog::Object"
-       }]
-}
-{
-       "name": "Sys",
-       "class_name": "MClass",
-       "full_name": "test_prog::Sys",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "class"],
-       "location": {
-               "column_end": 13,
-               "column_start": 1,
-               "line_end": 26,
-               "line_start": 25,
-               "file": "test_location"
-       },
-       "mparameters": [],
-       "intro": {
-               "full_name": "test_prog$Sys"
-       },
-       "intro_mmodule": {
-               "full_name": "test_prog::test_prog"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mclassdefs": [{
-               "full_name": "test_prog$Sys"
-       }],
-       "all_mproperties": [{
-               "full_name": "test_prog::Object::!="
-       }, {
-               "full_name": "test_prog::Object::=="
-       }, {
-               "full_name": "test_prog::Object::OTHER"
-       }, {
-               "full_name": "test_prog::Object::init"
-       }, {
-               "full_name": "test_prog::Sys::main"
-       }],
-       "intro_mproperties": [{
-               "full_name": "test_prog::Sys::main"
-       }],
-       "redef_mproperties": [],
-       "parents": [{
-               "full_name": "test_prog::Object"
-       }]
-}
diff --git a/src/model/test_model_json.sav/test_groups_to_full_json.res b/src/model/test_model_json.sav/test_groups_to_full_json.res
deleted file mode 100644 (file)
index 3e9fd9f..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-{
-       "name": "test_prog",
-       "class_name": "MGroup",
-       "full_name": "test_prog>",
-       "mdoc": {
-               "content": "Test program for model tools.\n\nThis program creates a fake model that can be used to test tools like:\n\n* `nitdoc`\n* `nitmetrics`\n* `nitx`\n* or others `modelbuilder`.\n\nAn image:\n\n![Tinks3D](../../contrib/tinks/doc/tinks3d.png)",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 0,
-                       "line_end": 12,
-                       "line_start": 1,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["group"],
-       "location": {
-               "column_end": 0,
-               "column_start": 0,
-               "line_end": 0,
-               "line_start": 0,
-               "file": "test_location"
-       },
-       "is_root": true,
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "default_mmodule": {
-               "full_name": "test_prog::test_prog"
-       },
-       "parent": null,
-       "mmodules": [{
-               "full_name": "test_prog::test_prog"
-       }],
-       "mgroups": [{
-               "full_name": "test_prog>game>"
-       }, {
-               "full_name": "test_prog>platform>"
-       }, {
-               "full_name": "test_prog>rpg>"
-       }]
-}
-{
-       "name": "game",
-       "class_name": "MGroup",
-       "full_name": "test_prog>game>",
-       "mdoc": {
-               "content": "Gaming group",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 0,
-                       "line_end": 1,
-                       "line_start": 1,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["group"],
-       "location": {
-               "column_end": 0,
-               "column_start": 0,
-               "line_end": 0,
-               "line_start": 0,
-               "file": "test_location"
-       },
-       "is_root": false,
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "default_mmodule": {
-               "full_name": "test_prog::game"
-       },
-       "parent": {
-               "full_name": "test_prog>"
-       },
-       "mmodules": [{
-               "full_name": "test_prog::game"
-       }],
-       "mgroups": []
-}
-{
-       "name": "platform",
-       "class_name": "MGroup",
-       "full_name": "test_prog>platform>",
-       "mdoc": {
-               "content": "Fictive Crappy Platform.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 0,
-                       "line_end": 1,
-                       "line_start": 1,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["group"],
-       "location": {
-               "column_end": 0,
-               "column_start": 0,
-               "line_end": 0,
-               "line_start": 0,
-               "file": "test_location"
-       },
-       "is_root": false,
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "default_mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "parent": {
-               "full_name": "test_prog>"
-       },
-       "mmodules": [{
-               "full_name": "test_prog::platform"
-       }],
-       "mgroups": []
-}
-{
-       "name": "rpg",
-       "class_name": "MGroup",
-       "full_name": "test_prog>rpg>",
-       "mdoc": {
-               "content": "Role Playing Game group",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 0,
-                       "line_end": 1,
-                       "line_start": 1,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["group"],
-       "location": {
-               "column_end": 0,
-               "column_start": 0,
-               "line_end": 0,
-               "line_start": 0,
-               "file": "test_location"
-       },
-       "is_root": false,
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "default_mmodule": {
-               "full_name": "test_prog::rpg"
-       },
-       "parent": {
-               "full_name": "test_prog>"
-       },
-       "mmodules": [{
-               "full_name": "test_prog::careers"
-       }, {
-               "full_name": "test_prog::character"
-       }, {
-               "full_name": "test_prog::combat"
-       }, {
-               "full_name": "test_prog::races"
-       }, {
-               "full_name": "test_prog::rpg"
-       }],
-       "mgroups": []
-}
-{
-       "name": "excluded",
-       "class_name": "MGroup",
-       "full_name": "excluded>",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["group"],
-       "location": {
-               "column_end": 0,
-               "column_start": 0,
-               "line_end": 0,
-               "line_start": 0,
-               "file": "test_location"
-       },
-       "is_root": true,
-       "mpackage": {
-               "full_name": "excluded"
-       },
-       "default_mmodule": {
-               "full_name": "excluded::excluded"
-       },
-       "parent": null,
-       "mmodules": [{
-               "full_name": "excluded::excluded"
-       }],
-       "mgroups": []
-}
diff --git a/src/model/test_model_json.sav/test_modules_to_full_json.res b/src/model/test_model_json.sav/test_modules_to_full_json.res
deleted file mode 100644 (file)
index e0c653a..0000000
+++ /dev/null
@@ -1,474 +0,0 @@
-{
-       "name": "excluded",
-       "class_name": "MModule",
-       "full_name": "excluded::excluded",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["module"],
-       "location": {
-               "column_end": 0,
-               "column_start": 0,
-               "line_end": 0,
-               "line_start": 0,
-               "file": "test_location"
-       },
-       "mpackage": {
-               "full_name": "excluded"
-       },
-       "mgroup": {
-               "full_name": "excluded>"
-       },
-       "intro_mclasses": [],
-       "mclassdefs": [],
-       "intro_mclassdefs": [],
-       "redef_mclassdefs": [],
-       "imports": []
-}
-{
-       "name": "game",
-       "class_name": "MModule",
-       "full_name": "test_prog::game",
-       "mdoc": {
-               "content": "A game abstraction for RPG.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 16,
-                       "line_start": 15,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["module"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 45,
-               "line_start": 15,
-               "file": "test_location"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mgroup": {
-               "full_name": "test_prog>game>"
-       },
-       "intro_mclasses": [{
-               "full_name": "test_prog::Game"
-       }],
-       "mclassdefs": [{
-               "full_name": "test_prog$Game"
-       }],
-       "intro_mclassdefs": [{
-               "full_name": "test_prog$Game"
-       }],
-       "redef_mclassdefs": [],
-       "imports": [{
-               "full_name": "test_prog::rpg"
-       }]
-}
-{
-       "name": "platform",
-       "class_name": "MModule",
-       "full_name": "test_prog::platform",
-       "mdoc": {
-               "content": "Declares base types allowed on the platform.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 16,
-                       "line_start": 15,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["module"],
-       "location": {
-               "column_end": 17,
-               "column_start": 1,
-               "line_end": 59,
-               "line_start": 15,
-               "file": "test_location"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "intro_mclasses": [{
-               "full_name": "test_prog::Bool"
-       }, {
-               "full_name": "test_prog::Float"
-       }, {
-               "full_name": "test_prog::Int"
-       }, {
-               "full_name": "test_prog::List"
-       }, {
-               "full_name": "test_prog::Object"
-       }, {
-               "full_name": "test_prog::String"
-       }],
-       "mclassdefs": [{
-               "full_name": "test_prog$Bool"
-       }, {
-               "full_name": "test_prog$Float"
-       }, {
-               "full_name": "test_prog$Int"
-       }, {
-               "full_name": "test_prog$List"
-       }, {
-               "full_name": "test_prog$Object"
-       }, {
-               "full_name": "test_prog$String"
-       }],
-       "intro_mclassdefs": [{
-               "full_name": "test_prog$Bool"
-       }, {
-               "full_name": "test_prog$Float"
-       }, {
-               "full_name": "test_prog$Int"
-       }, {
-               "full_name": "test_prog$List"
-       }, {
-               "full_name": "test_prog$Object"
-       }, {
-               "full_name": "test_prog$String"
-       }],
-       "redef_mclassdefs": [],
-       "imports": []
-}
-{
-       "name": "careers",
-       "class_name": "MModule",
-       "full_name": "test_prog::careers",
-       "mdoc": {
-               "content": "Careers of the game.\n\nAll characters can have a `Career`.\nA character can also quit its current career and start a new one.\n\nAvailable careers:\n\n * `Warrior`\n * `Magician`\n * `Alcoholic`",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 25,
-                       "line_start": 15,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["module"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 69,
-               "line_start": 15,
-               "file": "test_location"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "intro_mclasses": [{
-               "full_name": "test_prog::Alcoholic"
-       }, {
-               "full_name": "test_prog::Career"
-       }, {
-               "full_name": "test_prog::Magician"
-       }, {
-               "full_name": "test_prog::Warrior"
-       }],
-       "mclassdefs": [{
-               "full_name": "test_prog$Alcoholic"
-       }, {
-               "full_name": "test_prog$Career"
-       }, {
-               "full_name": "test_prog$Magician"
-       }, {
-               "full_name": "test_prog$Warrior"
-       }],
-       "intro_mclassdefs": [{
-               "full_name": "test_prog$Alcoholic"
-       }, {
-               "full_name": "test_prog$Career"
-       }, {
-               "full_name": "test_prog$Magician"
-       }, {
-               "full_name": "test_prog$Warrior"
-       }],
-       "redef_mclassdefs": [],
-       "imports": [{
-               "full_name": "test_prog::platform"
-       }]
-}
-{
-       "name": "character",
-       "class_name": "MModule",
-       "full_name": "test_prog::character",
-       "mdoc": {
-               "content": "Characters are playable entity in the world.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 16,
-                       "line_start": 15,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["module"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 68,
-               "line_start": 15,
-               "file": "test_location"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "intro_mclasses": [{
-               "full_name": "test_prog::Character"
-       }],
-       "mclassdefs": [{
-               "full_name": "test_prog$Character"
-       }],
-       "intro_mclassdefs": [{
-               "full_name": "test_prog$Character"
-       }],
-       "redef_mclassdefs": [],
-       "imports": [{
-               "full_name": "test_prog::races"
-       }, {
-               "full_name": "test_prog::careers"
-       }]
-}
-{
-       "name": "combat",
-       "class_name": "MModule",
-       "full_name": "test_prog::combat",
-       "mdoc": {
-               "content": "COmbat interactions between characters.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 16,
-                       "line_start": 15,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["module"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 67,
-               "line_start": 15,
-               "file": "test_location"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "intro_mclasses": [{
-               "full_name": "test_prog::Combatable"
-       }, {
-               "full_name": "test_prog::Weapon"
-       }],
-       "mclassdefs": [{
-               "full_name": "test_prog::combat$Character"
-       }, {
-               "full_name": "test_prog$Combatable"
-       }, {
-               "full_name": "test_prog::combat$Dwarf"
-       }, {
-               "full_name": "test_prog$Weapon"
-       }],
-       "intro_mclassdefs": [{
-               "full_name": "test_prog$Combatable"
-       }, {
-               "full_name": "test_prog$Weapon"
-       }],
-       "redef_mclassdefs": [{
-               "full_name": "test_prog::combat$Character"
-       }, {
-               "full_name": "test_prog::combat$Dwarf"
-       }],
-       "imports": [{
-               "full_name": "test_prog::character"
-       }]
-}
-{
-       "name": "races",
-       "class_name": "MModule",
-       "full_name": "test_prog::races",
-       "mdoc": {
-               "content": "Races of the game.\n\nAll characters belong to a `Race`.\n\nAvailable races:\n\n * `Human`\n * `Dwarf`\n * `Elf`",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 24,
-                       "line_start": 15,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["module"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 78,
-               "line_start": 15,
-               "file": "test_location"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "intro_mclasses": [{
-               "full_name": "test_prog::Dwarf"
-       }, {
-               "full_name": "test_prog::Elf"
-       }, {
-               "full_name": "test_prog::Human"
-       }, {
-               "full_name": "test_prog::Race"
-       }],
-       "mclassdefs": [{
-               "full_name": "test_prog$Dwarf"
-       }, {
-               "full_name": "test_prog$Elf"
-       }, {
-               "full_name": "test_prog$Human"
-       }, {
-               "full_name": "test_prog$Race"
-       }],
-       "intro_mclassdefs": [{
-               "full_name": "test_prog$Dwarf"
-       }, {
-               "full_name": "test_prog$Elf"
-       }, {
-               "full_name": "test_prog$Human"
-       }, {
-               "full_name": "test_prog$Race"
-       }],
-       "redef_mclassdefs": [],
-       "imports": [{
-               "full_name": "test_prog::platform"
-       }]
-}
-{
-       "name": "rpg",
-       "class_name": "MModule",
-       "full_name": "test_prog::rpg",
-       "mdoc": {
-               "content": "A worlg RPG abstraction.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 16,
-                       "line_start": 15,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["module"],
-       "location": {
-               "column_end": 13,
-               "column_start": 1,
-               "line_end": 21,
-               "line_start": 15,
-               "file": "test_location"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "intro_mclasses": [],
-       "mclassdefs": [],
-       "intro_mclassdefs": [],
-       "redef_mclassdefs": [],
-       "imports": [{
-               "full_name": "test_prog::combat"
-       }]
-}
-{
-       "name": "test_prog",
-       "class_name": "MModule",
-       "full_name": "test_prog::test_prog",
-       "mdoc": {
-               "content": "A test program with a fake model to check model tools.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 1,
-                       "line_end": 16,
-                       "line_start": 15,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["module"],
-       "location": {
-               "column_end": 13,
-               "column_start": 1,
-               "line_end": 26,
-               "line_start": 15,
-               "file": "test_location"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mgroup": {
-               "full_name": "test_prog>"
-       },
-       "intro_mclasses": [{
-               "full_name": "test_prog::Starter"
-       }, {
-               "full_name": "test_prog::Sys"
-       }],
-       "mclassdefs": [{
-               "full_name": "test_prog$Starter"
-       }, {
-               "full_name": "test_prog$Sys"
-       }],
-       "intro_mclassdefs": [{
-               "full_name": "test_prog$Starter"
-       }, {
-               "full_name": "test_prog$Sys"
-       }],
-       "redef_mclassdefs": [],
-       "imports": [{
-               "full_name": "test_prog::game"
-       }]
-}
-{
-       "name": "test_prog-m",
-       "class_name": "MModule",
-       "full_name": "test_prog-m",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["module"],
-       "location": {
-               "column_end": 0,
-               "column_start": 0,
-               "line_end": 0,
-               "line_start": 0,
-               "file": "test_location"
-       },
-       "mpackage": null,
-       "mgroup": null,
-       "intro_mclasses": [],
-       "mclassdefs": [],
-       "intro_mclassdefs": [],
-       "redef_mclassdefs": [],
-       "imports": [{
-               "full_name": "test_prog::test_prog"
-       }]
-}
diff --git a/src/model/test_model_json.sav/test_packages_to_full_json.res b/src/model/test_model_json.sav/test_packages_to_full_json.res
deleted file mode 100644 (file)
index ef7ced3..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-{
-       "name": "test_prog",
-       "class_name": "MPackage",
-       "full_name": "test_prog",
-       "mdoc": {
-               "content": "Test program for model tools.\n\nThis program creates a fake model that can be used to test tools like:\n\n* `nitdoc`\n* `nitmetrics`\n* `nitx`\n* or others `modelbuilder`.\n\nAn image:\n\n![Tinks3D](../../contrib/tinks/doc/tinks3d.png)",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 0,
-                       "line_end": 12,
-                       "line_start": 1,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["package"],
-       "location": {
-               "column_end": 0,
-               "column_start": 0,
-               "line_end": 0,
-               "line_start": 0,
-               "file": "test_location"
-       },
-       "root": {
-               "full_name": "test_prog>"
-       },
-       "mgroups": [{
-               "full_name": "test_prog>game>"
-       }, {
-               "full_name": "test_prog>platform>"
-       }, {
-               "full_name": "test_prog>rpg>"
-       }, {
-               "full_name": "test_prog>"
-       }],
-       "ini": {
-               "upstream.issues": "https://github.com/nitlang/nit/issues",
-               "upstream.homepage": "http://nitlanguage.org",
-               "upstream.git.directory": "tests/test_prog",
-               "upstream.browse": "https://github.com/nitlang/nit/tree/master/tests/test_prog",
-               "source.exclude": "game/excluded.nit:game/excluded_dir",
-               "package.license": "Apache-2.0",
-               "package.more_contributors": "Riri <riri@example.com>, Fifi (http://www.example.com/~fifi), Loulou",
-               "package.maintainer": "John Doe <jdoe@example.com> (http://www.example.com/~jdoe), Spider-Man",
-               "package.tags": "test,game",
-               "package.version": "0.1",
-               "package.name": "test_prog"
-       }
-}
-{
-       "name": "excluded",
-       "class_name": "MPackage",
-       "full_name": "excluded",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["package"],
-       "location": {
-               "column_end": 0,
-               "column_start": 0,
-               "line_end": 0,
-               "line_start": 0,
-               "file": "test_location"
-       },
-       "root": {
-               "full_name": "excluded>"
-       },
-       "mgroups": [{
-               "full_name": "excluded>"
-       }]
-}
diff --git a/src/model/test_model_json.sav/test_propdefs_to_full_json.res b/src/model/test_model_json.sav/test_propdefs_to_full_json.res
deleted file mode 100644 (file)
index 167ec94..0000000
+++ /dev/null
@@ -1,4032 +0,0 @@
-{
-       "name": "OTHER",
-       "class_name": "MVirtualTypeDef",
-       "full_name": "test_prog$Object$OTHER",
-       "mdoc": {
-               "content": "Used for comparisons.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 23,
-                       "line_start": 22,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "type"],
-       "location": {
-               "column_end": 28,
-               "column_start": 2,
-               "line_end": 23,
-               "line_start": 22,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::OTHER"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$OTHER"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "bound": {
-               "full_name": "nullable test_prog::Object"
-       },
-       "is_fixed": false
-}
-{
-       "name": "==",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Object$==",
-       "mdoc": {
-               "content": "Is `other` equqls to `self`?",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 26,
-                       "line_start": 25,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 37,
-               "column_start": 2,
-               "line_end": 26,
-               "line_start": 25,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::=="
-       },
-       "intro": {
-               "full_name": "test_prog$Object$=="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "other",
-                       "mtype": {
-                               "full_name": "test_prog::Object::OTHER"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Bool"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "!=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Object$!=",
-       "mdoc": {
-               "content": "Is `other` different from `self`?",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 29,
-                       "line_start": 28,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 55,
-               "column_start": 2,
-               "line_end": 29,
-               "line_start": 28,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::!="
-       },
-       "intro": {
-               "full_name": "test_prog$Object$!="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "other",
-                       "mtype": {
-                               "full_name": "test_prog::Object::OTHER"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Bool"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "init",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Object$init",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "init"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 30,
-               "line_start": 20,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::init"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$init"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "init",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Career$Object::init",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["redef", "init"],
-       "location": {
-               "column_end": 12,
-               "column_start": 2,
-               "line_end": 35,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::init"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$init"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "init",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Warrior$Object::init",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["redef", "init"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 46,
-               "line_start": 42,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mclassdef": {
-               "full_name": "test_prog$Warrior"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::init"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$init"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "init",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Magician$Object::init",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["redef", "init"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 57,
-               "line_start": 53,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mclassdef": {
-               "full_name": "test_prog$Magician"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::init"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$init"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "init",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Alcoholic$Object::init",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["redef", "init"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 68,
-               "line_start": 64,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mclassdef": {
-               "full_name": "test_prog$Alcoholic"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::init"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$init"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "init",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Race$Object::init",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["redef", "init"],
-       "location": {
-               "column_end": 12,
-               "column_start": 2,
-               "line_end": 44,
-               "line_start": 44,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::init"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$init"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "init",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Human$Object::init",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["redef", "init"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 55,
-               "line_start": 51,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mclassdef": {
-               "full_name": "test_prog$Human"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::init"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$init"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "init",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Dwarf$Object::init",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["redef", "init"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 66,
-               "line_start": 62,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mclassdef": {
-               "full_name": "test_prog$Dwarf"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::init"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$init"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "init",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Elf$Object::init",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["redef", "init"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 77,
-               "line_start": 73,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mclassdef": {
-               "full_name": "test_prog$Elf"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::init"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$init"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "init",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$Object::init",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["redef", "init"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 68,
-               "line_start": 21,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Object::init"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$init"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "unary -",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Int$unary -",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 21,
-               "column_start": 2,
-               "line_end": 34,
-               "line_start": 34,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Int::unary -"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$unary -"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "+",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Int$+",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 35,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Int::+"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$+"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "i",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "-",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Int$-",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 36,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Int::-"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$-"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "i",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "*",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Int$*",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 37,
-               "line_start": 37,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Int::*"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$*"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "i",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "/",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Int$/",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 38,
-               "line_start": 38,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Int::/"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$/"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "i",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": ">",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Int$>",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 30,
-               "column_start": 2,
-               "line_end": 39,
-               "line_start": 39,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Int::>"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$>"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "i",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Bool"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "to_f",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Int$to_f",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 26,
-               "column_start": 2,
-               "line_end": 40,
-               "line_start": 40,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Int::to_f"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$to_f"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "+",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Float$+",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 33,
-               "column_start": 2,
-               "line_end": 45,
-               "line_start": 45,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Float::+"
-       },
-       "intro": {
-               "full_name": "test_prog$Float$+"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "f",
-                       "mtype": {
-                               "full_name": "test_prog::Float"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "-",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Float$-",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 33,
-               "column_start": 2,
-               "line_end": 46,
-               "line_start": 46,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Float::-"
-       },
-       "intro": {
-               "full_name": "test_prog$Float$-"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "f",
-                       "mtype": {
-                               "full_name": "test_prog::Float"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "*",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Float$*",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 33,
-               "column_start": 2,
-               "line_end": 47,
-               "line_start": 47,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Float::*"
-       },
-       "intro": {
-               "full_name": "test_prog$Float$*"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "f",
-                       "mtype": {
-                               "full_name": "test_prog::Float"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "/",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Float$/",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 33,
-               "column_start": 2,
-               "line_end": 48,
-               "line_start": 48,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Float::/"
-       },
-       "intro": {
-               "full_name": "test_prog$Float$/"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "f",
-                       "mtype": {
-                               "full_name": "test_prog::Float"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": ">",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Float$>",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 32,
-               "column_start": 2,
-               "line_end": 49,
-               "line_start": 49,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Float::>"
-       },
-       "intro": {
-               "full_name": "test_prog$Float$>"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mmodule": {
-               "full_name": "test_prog::platform"
-       },
-       "mgroup": {
-               "full_name": "test_prog>platform>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "f",
-                       "mtype": {
-                               "full_name": "test_prog::Float"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Bool"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_strength_bonus",
-       "class_name": "MAttributeDef",
-       "full_name": "test_prog$Career$_strength_bonus",
-       "mdoc": null,
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 24,
-               "column_start": 2,
-               "line_end": 31,
-               "line_start": 31,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mproperty": {
-               "full_name": "test_prog::careers::Career::_strength_bonus"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$_strength_bonus"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "strength_bonus",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Career$strength_bonus",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 24,
-               "column_start": 2,
-               "line_end": 31,
-               "line_start": 31,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Career::strength_bonus"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$strength_bonus"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "strength_bonus=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Career$strength_bonus=",
-       "mdoc": null,
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 24,
-               "column_start": 2,
-               "line_end": 31,
-               "line_start": 31,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Career::strength_bonus="
-       },
-       "intro": {
-               "full_name": "test_prog$Career$strength_bonus="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "strength_bonus",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_endurance_bonus",
-       "class_name": "MAttributeDef",
-       "full_name": "test_prog$Career$_endurance_bonus",
-       "mdoc": null,
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 25,
-               "column_start": 2,
-               "line_end": 32,
-               "line_start": 32,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mproperty": {
-               "full_name": "test_prog::careers::Career::_endurance_bonus"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$_endurance_bonus"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "endurance_bonus",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Career$endurance_bonus",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 25,
-               "column_start": 2,
-               "line_end": 32,
-               "line_start": 32,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Career::endurance_bonus"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$endurance_bonus"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "endurance_bonus=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Career$endurance_bonus=",
-       "mdoc": null,
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 25,
-               "column_start": 2,
-               "line_end": 32,
-               "line_start": 32,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Career::endurance_bonus="
-       },
-       "intro": {
-               "full_name": "test_prog$Career$endurance_bonus="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "endurance_bonus",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_intelligence_bonus",
-       "class_name": "MAttributeDef",
-       "full_name": "test_prog$Career$_intelligence_bonus",
-       "mdoc": null,
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 28,
-               "column_start": 2,
-               "line_end": 33,
-               "line_start": 33,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mproperty": {
-               "full_name": "test_prog::careers::Career::_intelligence_bonus"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$_intelligence_bonus"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "intelligence_bonus",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Career$intelligence_bonus",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 28,
-               "column_start": 2,
-               "line_end": 33,
-               "line_start": 33,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Career::intelligence_bonus"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$intelligence_bonus"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "intelligence_bonus=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Career$intelligence_bonus=",
-       "mdoc": null,
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 28,
-               "column_start": 2,
-               "line_end": 33,
-               "line_start": 33,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Career::intelligence_bonus="
-       },
-       "intro": {
-               "full_name": "test_prog$Career$intelligence_bonus="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mmodule": {
-               "full_name": "test_prog::careers"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "intelligence_bonus",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_base_strength",
-       "class_name": "MAttributeDef",
-       "full_name": "test_prog$Race$_base_strength",
-       "mdoc": {
-               "content": "Used to represents how strong the race is.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 36,
-                       "line_start": 35,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 23,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mproperty": {
-               "full_name": "test_prog::races::Race::_base_strength"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$_base_strength"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "base_strength",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Race$base_strength",
-       "mdoc": {
-               "content": "Used to represents how strong the race is.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 36,
-                       "line_start": 35,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 23,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Race::base_strength"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$base_strength"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "base_strength=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Race$base_strength=",
-       "mdoc": {
-               "content": "Used to represents how strong the race is.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 36,
-                       "line_start": 35,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 23,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Race::base_strength="
-       },
-       "intro": {
-               "full_name": "test_prog$Race$base_strength="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "base_strength",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_base_endurance",
-       "class_name": "MAttributeDef",
-       "full_name": "test_prog$Race$_base_endurance",
-       "mdoc": {
-               "content": "Used to represents how the race can absorb damage.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 39,
-                       "line_start": 38,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 24,
-               "column_start": 2,
-               "line_end": 39,
-               "line_start": 38,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mproperty": {
-               "full_name": "test_prog::races::Race::_base_endurance"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$_base_endurance"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "base_endurance",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Race$base_endurance",
-       "mdoc": {
-               "content": "Used to represents how the race can absorb damage.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 39,
-                       "line_start": 38,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 24,
-               "column_start": 2,
-               "line_end": 39,
-               "line_start": 38,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Race::base_endurance"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$base_endurance"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "base_endurance=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Race$base_endurance=",
-       "mdoc": {
-               "content": "Used to represents how the race can absorb damage.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 39,
-                       "line_start": 38,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 24,
-               "column_start": 2,
-               "line_end": 39,
-               "line_start": 38,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Race::base_endurance="
-       },
-       "intro": {
-               "full_name": "test_prog$Race$base_endurance="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "base_endurance",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_base_intelligence",
-       "class_name": "MAttributeDef",
-       "full_name": "test_prog$Race$_base_intelligence",
-       "mdoc": {
-               "content": "Is this race smart?",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 42,
-                       "line_start": 41,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 27,
-               "column_start": 2,
-               "line_end": 42,
-               "line_start": 41,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mproperty": {
-               "full_name": "test_prog::races::Race::_base_intelligence"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$_base_intelligence"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "base_intelligence",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Race$base_intelligence",
-       "mdoc": {
-               "content": "Is this race smart?",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 42,
-                       "line_start": 41,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 27,
-               "column_start": 2,
-               "line_end": 42,
-               "line_start": 41,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Race::base_intelligence"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$base_intelligence"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "base_intelligence=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Race$base_intelligence=",
-       "mdoc": {
-               "content": "Is this race smart?",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 42,
-                       "line_start": 41,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 27,
-               "column_start": 2,
-               "line_end": 42,
-               "line_start": 41,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Race::base_intelligence="
-       },
-       "intro": {
-               "full_name": "test_prog$Race$base_intelligence="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mmodule": {
-               "full_name": "test_prog::races"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "base_intelligence",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_race",
-       "class_name": "MAttributeDef",
-       "full_name": "test_prog$Character$_race",
-       "mdoc": {
-               "content": "The `Race` of the character.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 25,
-                       "line_start": 24,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 15,
-               "column_start": 2,
-               "line_end": 25,
-               "line_start": 24,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::character::Character::_race"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$_race"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Race"
-       }
-}
-{
-       "name": "race",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$race",
-       "mdoc": {
-               "content": "The `Race` of the character.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 25,
-                       "line_start": 24,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 15,
-               "column_start": 2,
-               "line_end": 25,
-               "line_start": 24,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::race"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$race"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Race"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "race=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$race=",
-       "mdoc": {
-               "content": "The `Race` of the character.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 25,
-                       "line_start": 24,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 15,
-               "column_start": 2,
-               "line_end": 25,
-               "line_start": 24,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::race="
-       },
-       "intro": {
-               "full_name": "test_prog$Character$race="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "race",
-                       "mtype": {
-                               "full_name": "test_prog::Race"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_career",
-       "class_name": "MAttributeDef",
-       "full_name": "test_prog$Character$_career",
-       "mdoc": {
-               "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 29,
-                       "line_start": 27,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 47,
-               "column_start": 2,
-               "line_end": 29,
-               "line_start": 27,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::character::Character::_career"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$_career"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "nullable test_prog::Career"
-       }
-}
-{
-       "name": "career",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$career",
-       "mdoc": {
-               "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 29,
-                       "line_start": 27,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 47,
-               "column_start": 2,
-               "line_end": 29,
-               "line_start": 27,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::career"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$career"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "nullable test_prog::Career"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "career=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$career=",
-       "mdoc": {
-               "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 29,
-                       "line_start": 27,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 47,
-               "column_start": 2,
-               "line_end": 29,
-               "line_start": 27,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::career="
-       },
-       "intro": {
-               "full_name": "test_prog$Character$career="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "career",
-                       "mtype": {
-                               "full_name": "nullable test_prog::Career"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "quit",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$quit",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 33,
-               "line_start": 31,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::quit"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$quit"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_name",
-       "class_name": "MAttributeDef",
-       "full_name": "test_prog$Character$_name",
-       "mdoc": null,
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 17,
-               "column_start": 2,
-               "line_end": 35,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::character::Character::_name"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$_name"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::String"
-       }
-}
-{
-       "name": "name",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$name",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 17,
-               "column_start": 2,
-               "line_end": 35,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::name"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$name"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::String"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "name=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$name=",
-       "mdoc": null,
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 17,
-               "column_start": 2,
-               "line_end": 35,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::name="
-       },
-       "intro": {
-               "full_name": "test_prog$Character$name="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "name",
-                       "mtype": {
-                               "full_name": "test_prog::String"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_age",
-       "class_name": "MAttributeDef",
-       "full_name": "test_prog$Character$_age",
-       "mdoc": null,
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 13,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 36,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::character::Character::_age"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$_age"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "age",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$age",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 13,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 36,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::age"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$age"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "age=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$age=",
-       "mdoc": null,
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 13,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 36,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::age="
-       },
-       "intro": {
-               "full_name": "test_prog$Character$age="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "age",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_sex",
-       "class_name": "MAttributeDef",
-       "full_name": "test_prog$Character$_sex",
-       "mdoc": null,
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 14,
-               "column_start": 2,
-               "line_end": 37,
-               "line_start": 37,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::character::Character::_sex"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$_sex"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Bool"
-       }
-}
-{
-       "name": "sex",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$sex",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 14,
-               "column_start": 2,
-               "line_end": 37,
-               "line_start": 37,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::sex"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$sex"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Bool"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "sex=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$sex=",
-       "mdoc": null,
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 14,
-               "column_start": 2,
-               "line_end": 37,
-               "line_start": 37,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::sex="
-       },
-       "intro": {
-               "full_name": "test_prog$Character$sex="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "sex",
-                       "mtype": {
-                               "full_name": "test_prog::Bool"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "total_strengh",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$total_strengh",
-       "mdoc": {
-               "content": "The actual strength of the character.\n\nReturns `race.base_strength + career.strength_bonus` or just `race.base_strength` is unemployed.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 42,
-                       "line_start": 39,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 45,
-               "line_start": 39,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::total_strengh"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$total_strengh"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "total_endurance",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$total_endurance",
-       "mdoc": {
-               "content": "The actual endurance of the character.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 48,
-                       "line_start": 47,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 51,
-               "line_start": 47,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::total_endurance"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$total_endurance"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "total_intelligence",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$total_intelligence",
-       "mdoc": {
-               "content": "The acutal intelligence of the character.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 54,
-                       "line_start": 53,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 57,
-               "line_start": 53,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::total_intelligence"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$total_intelligence"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "max_health",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$max_health",
-       "mdoc": {
-               "content": "Maximum health of the character.\n\nBased on `total endurance * 10`.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 62,
-                       "line_start": 59,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 51,
-               "column_start": 2,
-               "line_end": 62,
-               "line_start": 59,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::max_health"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$max_health"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_health",
-       "class_name": "MAttributeDef",
-       "full_name": "test_prog$Character$_health",
-       "mdoc": {
-               "content": "The current `health` of the character.\n\nStarts at `max_health`.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 67,
-                       "line_start": 64,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 67,
-               "line_start": 64,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::character::Character::_health"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$_health"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "health",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$health",
-       "mdoc": {
-               "content": "The current `health` of the character.\n\nStarts at `max_health`.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 67,
-                       "line_start": 64,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 67,
-               "line_start": 64,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::health"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$health"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "health=",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Character$health=",
-       "mdoc": {
-               "content": "The current `health` of the character.\n\nStarts at `max_health`.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 67,
-                       "line_start": 64,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 67,
-               "line_start": 64,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Character::health="
-       },
-       "intro": {
-               "full_name": "test_prog$Character$health="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mmodule": {
-               "full_name": "test_prog::character"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "health",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "dps",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Weapon$dps",
-       "mdoc": {
-               "content": "Damage per second inflicted by this weapon.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 23,
-                       "line_start": 22,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 27,
-               "column_start": 2,
-               "line_end": 23,
-               "line_start": 22,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Weapon"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Weapon::dps"
-       },
-       "intro": {
-               "full_name": "test_prog$Weapon$dps"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Weapon"
-       },
-       "mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "dps",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog::combat$Dwarf$Weapon::dps",
-       "mdoc": {
-               "content": "Dwarf `dps` are based on the dwarf `base_endurance` (represents weight here)",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 66,
-                       "line_start": 65,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["redef", "fun"],
-       "location": {
-               "column_end": 51,
-               "column_start": 2,
-               "line_end": 66,
-               "line_start": 65,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mclassdef": {
-               "full_name": "test_prog::combat$Dwarf"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Weapon::dps"
-       },
-       "intro": {
-               "full_name": "test_prog$Weapon$dps"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Weapon"
-       },
-       "mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "hit_points",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Combatable$hit_points",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 32,
-               "column_start": 2,
-               "line_end": 32,
-               "line_start": 32,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Combatable::hit_points"
-       },
-       "intro": {
-               "full_name": "test_prog$Combatable$hit_points"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "hit_points",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog::combat$Character$Combatable::hit_points",
-       "mdoc": {
-               "content": "Use character `health` to determines hit_points.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 58,
-                       "line_start": 57,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["redef", "fun"],
-       "location": {
-               "column_end": 38,
-               "column_start": 2,
-               "line_end": 58,
-               "line_start": 57,
-               "file": "test_location"
-       },
-       "is_intro": false,
-       "mclassdef": {
-               "full_name": "test_prog::combat$Character"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Combatable::hit_points"
-       },
-       "intro": {
-               "full_name": "test_prog$Combatable$hit_points"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "attack",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Combatable$attack",
-       "mdoc": {
-               "content": "A `Combatable` can attack a `target` that is also a `Combatable`.\n\nAttack the `target` using `wepaon` and returns the number of inflicted hit points.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 37,
-                       "line_start": 34,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 64,
-               "column_start": 2,
-               "line_end": 37,
-               "line_start": 34,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Combatable::attack"
-       },
-       "intro": {
-               "full_name": "test_prog$Combatable$attack"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 2,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "target",
-                       "mtype": {
-                               "full_name": "test_prog::Combatable"
-                       }
-               }, {
-                       "is_vararg": false,
-                       "name": "weapon",
-                       "mtype": {
-                               "full_name": "test_prog::Weapon"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "direct_attack",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Combatable$direct_attack",
-       "mdoc": {
-               "content": "Like `attack` but cannot be defended.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 40,
-                       "line_start": 39,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 71,
-               "column_start": 2,
-               "line_end": 40,
-               "line_start": 39,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Combatable::direct_attack"
-       },
-       "intro": {
-               "full_name": "test_prog$Combatable$direct_attack"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 2,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "target",
-                       "mtype": {
-                               "full_name": "test_prog::Combatable"
-                       }
-               }, {
-                       "is_vararg": false,
-                       "name": "weapon",
-                       "mtype": {
-                               "full_name": "test_prog::Weapon"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "defend",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Combatable$defend",
-       "mdoc": {
-               "content": "`Combatable` can defend against attacks.\n\nDefends against a number of received hit points and return the number of pared hit points.\n\n@param hit: damage received.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 47,
-                       "line_start": 42,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 38,
-               "column_start": 2,
-               "line_end": 47,
-               "line_start": 42,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Combatable::defend"
-       },
-       "intro": {
-               "full_name": "test_prog$Combatable$defend"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "hit",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "is_dead",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Combatable$is_dead",
-       "mdoc": {
-               "content": "Is the character still have hit_points?",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 50,
-                       "line_start": 49,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 43,
-               "column_start": 2,
-               "line_end": 50,
-               "line_start": 49,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Combatable::is_dead"
-       },
-       "intro": {
-               "full_name": "test_prog$Combatable$is_dead"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mmodule": {
-               "full_name": "test_prog::combat"
-       },
-       "mgroup": {
-               "full_name": "test_prog>rpg>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Bool"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "player_characters",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Game$player_characters",
-       "mdoc": {
-               "content": "Characters played by human players.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 26,
-                       "line_start": 25,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 51,
-               "column_start": 2,
-               "line_end": 26,
-               "line_start": 25,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Game::player_characters"
-       },
-       "intro": {
-               "full_name": "test_prog$Game$player_characters"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mmodule": {
-               "full_name": "test_prog::game"
-       },
-       "mgroup": {
-               "full_name": "test_prog>game>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::List[test_prog::Character]"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "computer_characters",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Game$computer_characters",
-       "mdoc": {
-               "content": "Characters players by computer.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 29,
-                       "line_start": 28,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 53,
-               "column_start": 2,
-               "line_end": 29,
-               "line_start": 28,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Game::computer_characters"
-       },
-       "intro": {
-               "full_name": "test_prog$Game$computer_characters"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mmodule": {
-               "full_name": "test_prog::game"
-       },
-       "mgroup": {
-               "full_name": "test_prog>game>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::List[test_prog::Character]"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "start_game",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Game$start_game",
-       "mdoc": {
-               "content": "Start the game.\n\nYou have to implement that method!",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 34,
-                       "line_start": 31,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 27,
-               "column_start": 2,
-               "line_end": 34,
-               "line_start": 31,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Game::start_game"
-       },
-       "intro": {
-               "full_name": "test_prog$Game$start_game"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mmodule": {
-               "full_name": "test_prog::game"
-       },
-       "mgroup": {
-               "full_name": "test_prog>game>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "pause_game",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Game$pause_game",
-       "mdoc": {
-               "content": "Pause the game.\n\nYou have to implement that method!",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 39,
-                       "line_start": 36,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 27,
-               "column_start": 2,
-               "line_end": 39,
-               "line_start": 36,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Game::pause_game"
-       },
-       "intro": {
-               "full_name": "test_prog$Game$pause_game"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mmodule": {
-               "full_name": "test_prog::game"
-       },
-       "mgroup": {
-               "full_name": "test_prog>game>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "stop_game",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Game$stop_game",
-       "mdoc": {
-               "content": "Stop the game.\n\nYou have to implement that method!",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 44,
-                       "line_start": 41,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 26,
-               "column_start": 2,
-               "line_end": 44,
-               "line_start": 41,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Game::stop_game"
-       },
-       "intro": {
-               "full_name": "test_prog$Game$stop_game"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mmodule": {
-               "full_name": "test_prog::game"
-       },
-       "mgroup": {
-               "full_name": "test_prog>game>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "start",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Starter$start",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 17,
-               "column_start": 2,
-               "line_end": 22,
-               "line_start": 22,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Starter"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Starter::start"
-       },
-       "intro": {
-               "full_name": "test_prog$Starter$start"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Starter"
-       },
-       "mmodule": {
-               "full_name": "test_prog::test_prog"
-       },
-       "mgroup": {
-               "full_name": "test_prog>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "main",
-       "class_name": "MMethodDef",
-       "full_name": "test_prog$Sys$main",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 13,
-               "column_start": 1,
-               "line_end": 26,
-               "line_start": 25,
-               "file": "test_location"
-       },
-       "is_intro": true,
-       "mclassdef": {
-               "full_name": "test_prog$Sys"
-       },
-       "mproperty": {
-               "full_name": "test_prog::Sys::main"
-       },
-       "intro": {
-               "full_name": "test_prog$Sys$main"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Sys"
-       },
-       "mmodule": {
-               "full_name": "test_prog::test_prog"
-       },
-       "mgroup": {
-               "full_name": "test_prog>"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
diff --git a/src/model/test_model_json.sav/test_props_to_full_json.res b/src/model/test_model_json.sav/test_props_to_full_json.res
deleted file mode 100644 (file)
index f3c8146..0000000
+++ /dev/null
@@ -1,3128 +0,0 @@
-{
-       "name": "OTHER",
-       "class_name": "MVirtualTypeProp",
-       "full_name": "test_prog::Object::OTHER",
-       "mdoc": {
-               "content": "Used for comparisons.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 23,
-                       "line_start": 22,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "type"],
-       "location": {
-               "column_end": 28,
-               "column_start": 2,
-               "line_end": 23,
-               "line_start": 22,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$OTHER"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Object$OTHER"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Object"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "mvirtualtype": {
-               "full_name": "test_prog::Object::OTHER"
-       },
-       "bound": {
-               "full_name": "nullable test_prog::Object"
-       }
-}
-{
-       "name": "==",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Object::==",
-       "mdoc": {
-               "content": "Is `other` equqls to `self`?",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 26,
-                       "line_start": 25,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 37,
-               "column_start": 2,
-               "line_end": 26,
-               "line_start": 25,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$=="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Object$=="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Object"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "other",
-                       "mtype": {
-                               "full_name": "test_prog::Object::OTHER"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Bool"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "!=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Object::!=",
-       "mdoc": {
-               "content": "Is `other` different from `self`?",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 29,
-                       "line_start": 28,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 55,
-               "column_start": 2,
-               "line_end": 29,
-               "line_start": 28,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$!="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Object$!="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Object"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "other",
-                       "mtype": {
-                               "full_name": "test_prog::Object::OTHER"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Bool"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "init",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Object::init",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "init"],
-       "location": {
-               "column_end": 3,
-               "column_start": 1,
-               "line_end": 30,
-               "line_start": 20,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Object$init"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Object"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Elf$Object::init"
-       }, {
-               "full_name": "test_prog$Career$Object::init"
-       }, {
-               "full_name": "test_prog$Warrior$Object::init"
-       }, {
-               "full_name": "test_prog$Magician$Object::init"
-       }, {
-               "full_name": "test_prog$Alcoholic$Object::init"
-       }, {
-               "full_name": "test_prog$Race$Object::init"
-       }, {
-               "full_name": "test_prog$Human$Object::init"
-       }, {
-               "full_name": "test_prog$Dwarf$Object::init"
-       }, {
-               "full_name": "test_prog$Character$Object::init"
-       }, {
-               "full_name": "test_prog$Object$init"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Object"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": true,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "unary -",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Int::unary -",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 21,
-               "column_start": 2,
-               "line_end": 34,
-               "line_start": 34,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$unary -"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Int$unary -"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Int"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "+",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Int::+",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 35,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$+"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Int$+"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Int"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "i",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "-",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Int::-",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 36,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$-"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Int$-"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Int"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "i",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "*",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Int::*",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 37,
-               "line_start": 37,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$*"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Int$*"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Int"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "i",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "/",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Int::/",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 38,
-               "line_start": 38,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$/"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Int$/"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Int"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "i",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": ">",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Int::>",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 30,
-               "column_start": 2,
-               "line_end": 39,
-               "line_start": 39,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$>"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Int$>"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Int"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "i",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Bool"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "to_f",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Int::to_f",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 26,
-               "column_start": 2,
-               "line_end": 40,
-               "line_start": 40,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Int$to_f"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Int"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Int$to_f"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Int"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "+",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Float::+",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 33,
-               "column_start": 2,
-               "line_end": 45,
-               "line_start": 45,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Float$+"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Float$+"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Float"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "f",
-                       "mtype": {
-                               "full_name": "test_prog::Float"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "-",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Float::-",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 33,
-               "column_start": 2,
-               "line_end": 46,
-               "line_start": 46,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Float$-"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Float$-"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Float"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "f",
-                       "mtype": {
-                               "full_name": "test_prog::Float"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "*",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Float::*",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 33,
-               "column_start": 2,
-               "line_end": 47,
-               "line_start": 47,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Float$*"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Float$*"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Float"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "f",
-                       "mtype": {
-                               "full_name": "test_prog::Float"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "/",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Float::/",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 33,
-               "column_start": 2,
-               "line_end": 48,
-               "line_start": 48,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Float$/"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Float$/"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Float"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "f",
-                       "mtype": {
-                               "full_name": "test_prog::Float"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": ">",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Float::>",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "intern", "fun"],
-       "location": {
-               "column_end": 32,
-               "column_start": 2,
-               "line_end": 49,
-               "line_start": 49,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Float$>"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Float"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Float$>"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Float"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "f",
-                       "mtype": {
-                               "full_name": "test_prog::Float"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Bool"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_strength_bonus",
-       "class_name": "MAttribute",
-       "full_name": "test_prog::careers::Career::_strength_bonus",
-       "mdoc": null,
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 24,
-               "column_start": 2,
-               "line_end": 31,
-               "line_start": 31,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$_strength_bonus"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Career$_strength_bonus"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Career"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "strength_bonus",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Career::strength_bonus",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 24,
-               "column_start": 2,
-               "line_end": 31,
-               "line_start": 31,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$strength_bonus"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Career$strength_bonus"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Career"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "strength_bonus=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Career::strength_bonus=",
-       "mdoc": null,
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 24,
-               "column_start": 2,
-               "line_end": 31,
-               "line_start": 31,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$strength_bonus="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Career$strength_bonus="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Career"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "strength_bonus",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_endurance_bonus",
-       "class_name": "MAttribute",
-       "full_name": "test_prog::careers::Career::_endurance_bonus",
-       "mdoc": null,
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 25,
-               "column_start": 2,
-               "line_end": 32,
-               "line_start": 32,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$_endurance_bonus"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Career$_endurance_bonus"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Career"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "endurance_bonus",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Career::endurance_bonus",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 25,
-               "column_start": 2,
-               "line_end": 32,
-               "line_start": 32,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$endurance_bonus"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Career$endurance_bonus"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Career"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "endurance_bonus=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Career::endurance_bonus=",
-       "mdoc": null,
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 25,
-               "column_start": 2,
-               "line_end": 32,
-               "line_start": 32,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$endurance_bonus="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Career$endurance_bonus="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Career"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "endurance_bonus",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_intelligence_bonus",
-       "class_name": "MAttribute",
-       "full_name": "test_prog::careers::Career::_intelligence_bonus",
-       "mdoc": null,
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 28,
-               "column_start": 2,
-               "line_end": 33,
-               "line_start": 33,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$_intelligence_bonus"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Career$_intelligence_bonus"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Career"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "intelligence_bonus",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Career::intelligence_bonus",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 28,
-               "column_start": 2,
-               "line_end": 33,
-               "line_start": 33,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$intelligence_bonus"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Career$intelligence_bonus"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Career"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "intelligence_bonus=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Career::intelligence_bonus=",
-       "mdoc": null,
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 28,
-               "column_start": 2,
-               "line_end": 33,
-               "line_start": 33,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Career$intelligence_bonus="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Career"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Career$intelligence_bonus="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Career"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "intelligence_bonus",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_base_strength",
-       "class_name": "MAttribute",
-       "full_name": "test_prog::races::Race::_base_strength",
-       "mdoc": {
-               "content": "Used to represents how strong the race is.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 36,
-                       "line_start": 35,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 23,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$_base_strength"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Race$_base_strength"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Race"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "base_strength",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Race::base_strength",
-       "mdoc": {
-               "content": "Used to represents how strong the race is.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 36,
-                       "line_start": 35,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 23,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$base_strength"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Race$base_strength"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Race"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "base_strength=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Race::base_strength=",
-       "mdoc": {
-               "content": "Used to represents how strong the race is.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 36,
-                       "line_start": 35,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 23,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$base_strength="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Race$base_strength="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Race"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "base_strength",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_base_endurance",
-       "class_name": "MAttribute",
-       "full_name": "test_prog::races::Race::_base_endurance",
-       "mdoc": {
-               "content": "Used to represents how the race can absorb damage.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 39,
-                       "line_start": 38,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 24,
-               "column_start": 2,
-               "line_end": 39,
-               "line_start": 38,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$_base_endurance"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Race$_base_endurance"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Race"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "base_endurance",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Race::base_endurance",
-       "mdoc": {
-               "content": "Used to represents how the race can absorb damage.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 39,
-                       "line_start": 38,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 24,
-               "column_start": 2,
-               "line_end": 39,
-               "line_start": 38,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$base_endurance"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Race$base_endurance"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Race"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "base_endurance=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Race::base_endurance=",
-       "mdoc": {
-               "content": "Used to represents how the race can absorb damage.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 39,
-                       "line_start": 38,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 24,
-               "column_start": 2,
-               "line_end": 39,
-               "line_start": 38,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$base_endurance="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Race$base_endurance="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Race"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "base_endurance",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_base_intelligence",
-       "class_name": "MAttribute",
-       "full_name": "test_prog::races::Race::_base_intelligence",
-       "mdoc": {
-               "content": "Is this race smart?",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 42,
-                       "line_start": 41,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 27,
-               "column_start": 2,
-               "line_end": 42,
-               "line_start": 41,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$_base_intelligence"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Race$_base_intelligence"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Race"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "base_intelligence",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Race::base_intelligence",
-       "mdoc": {
-               "content": "Is this race smart?",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 42,
-                       "line_start": 41,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 27,
-               "column_start": 2,
-               "line_end": 42,
-               "line_start": 41,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$base_intelligence"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Race$base_intelligence"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Race"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "base_intelligence=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Race::base_intelligence=",
-       "mdoc": {
-               "content": "Is this race smart?",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 42,
-                       "line_start": 41,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 27,
-               "column_start": 2,
-               "line_end": 42,
-               "line_start": 41,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Race$base_intelligence="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Race"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Race$base_intelligence="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Race"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "base_intelligence",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_race",
-       "class_name": "MAttribute",
-       "full_name": "test_prog::character::Character::_race",
-       "mdoc": {
-               "content": "The `Race` of the character.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 25,
-                       "line_start": 24,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 15,
-               "column_start": 2,
-               "line_end": 25,
-               "line_start": 24,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$_race"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$_race"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Race"
-       }
-}
-{
-       "name": "race",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::race",
-       "mdoc": {
-               "content": "The `Race` of the character.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 25,
-                       "line_start": 24,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 15,
-               "column_start": 2,
-               "line_end": 25,
-               "line_start": 24,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$race"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$race"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Race"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "race=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::race=",
-       "mdoc": {
-               "content": "The `Race` of the character.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 25,
-                       "line_start": 24,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 15,
-               "column_start": 2,
-               "line_end": 25,
-               "line_start": 24,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$race="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$race="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "race",
-                       "mtype": {
-                               "full_name": "test_prog::Race"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_career",
-       "class_name": "MAttribute",
-       "full_name": "test_prog::character::Character::_career",
-       "mdoc": {
-               "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 29,
-                       "line_start": 27,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 47,
-               "column_start": 2,
-               "line_end": 29,
-               "line_start": 27,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$_career"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$_career"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "nullable test_prog::Career"
-       }
-}
-{
-       "name": "career",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::career",
-       "mdoc": {
-               "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 29,
-                       "line_start": 27,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 47,
-               "column_start": 2,
-               "line_end": 29,
-               "line_start": 27,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$career"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$career"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "nullable test_prog::Career"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "career=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::career=",
-       "mdoc": {
-               "content": "The current `Career` of the character.\nReturns `null` if character is unemployed.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 29,
-                       "line_start": 27,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 47,
-               "column_start": 2,
-               "line_end": 29,
-               "line_start": 27,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$career="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$career="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "career",
-                       "mtype": {
-                               "full_name": "nullable test_prog::Career"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "quit",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::quit",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 33,
-               "line_start": 31,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$quit"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$quit"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_name",
-       "class_name": "MAttribute",
-       "full_name": "test_prog::character::Character::_name",
-       "mdoc": null,
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 17,
-               "column_start": 2,
-               "line_end": 35,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$_name"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$_name"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::String"
-       }
-}
-{
-       "name": "name",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::name",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 17,
-               "column_start": 2,
-               "line_end": 35,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$name"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$name"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::String"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "name=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::name=",
-       "mdoc": null,
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 17,
-               "column_start": 2,
-               "line_end": 35,
-               "line_start": 35,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$name="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$name="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "name",
-                       "mtype": {
-                               "full_name": "test_prog::String"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_age",
-       "class_name": "MAttribute",
-       "full_name": "test_prog::character::Character::_age",
-       "mdoc": null,
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 13,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 36,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$_age"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$_age"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "age",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::age",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 13,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 36,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$age"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$age"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "age=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::age=",
-       "mdoc": null,
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 13,
-               "column_start": 2,
-               "line_end": 36,
-               "line_start": 36,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$age="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$age="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "age",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_sex",
-       "class_name": "MAttribute",
-       "full_name": "test_prog::character::Character::_sex",
-       "mdoc": null,
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 14,
-               "column_start": 2,
-               "line_end": 37,
-               "line_start": 37,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$_sex"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$_sex"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Bool"
-       }
-}
-{
-       "name": "sex",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::sex",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 14,
-               "column_start": 2,
-               "line_end": 37,
-               "line_start": 37,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$sex"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$sex"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Bool"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "sex=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::sex=",
-       "mdoc": null,
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 14,
-               "column_start": 2,
-               "line_end": 37,
-               "line_start": 37,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$sex="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$sex="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "sex",
-                       "mtype": {
-                               "full_name": "test_prog::Bool"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "total_strengh",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::total_strengh",
-       "mdoc": {
-               "content": "The actual strength of the character.\n\nReturns `race.base_strength + career.strength_bonus` or just `race.base_strength` is unemployed.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 42,
-                       "line_start": 39,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 45,
-               "line_start": 39,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$total_strengh"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$total_strengh"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "total_endurance",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::total_endurance",
-       "mdoc": {
-               "content": "The actual endurance of the character.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 48,
-                       "line_start": 47,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 51,
-               "line_start": 47,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$total_endurance"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$total_endurance"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "total_intelligence",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::total_intelligence",
-       "mdoc": {
-               "content": "The acutal intelligence of the character.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 54,
-                       "line_start": 53,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 4,
-               "column_start": 2,
-               "line_end": 57,
-               "line_start": 53,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$total_intelligence"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$total_intelligence"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "max_health",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::max_health",
-       "mdoc": {
-               "content": "Maximum health of the character.\n\nBased on `total endurance * 10`.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 62,
-                       "line_start": 59,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 51,
-               "column_start": 2,
-               "line_end": 62,
-               "line_start": 59,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$max_health"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$max_health"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "_health",
-       "class_name": "MAttribute",
-       "full_name": "test_prog::character::Character::_health",
-       "mdoc": {
-               "content": "The current `health` of the character.\n\nStarts at `max_health`.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 67,
-                       "line_start": 64,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "private",
-       "modifiers": ["private", "var"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 67,
-               "line_start": 64,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$_health"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$_health"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "static_mtype": {
-               "full_name": "test_prog::Int"
-       }
-}
-{
-       "name": "health",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::health",
-       "mdoc": {
-               "content": "The current `health` of the character.\n\nStarts at `max_health`.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 67,
-                       "line_start": 64,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 67,
-               "line_start": 64,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$health"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$health"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "health=",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Character::health=",
-       "mdoc": {
-               "content": "The current `health` of the character.\n\nStarts at `max_health`.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 67,
-                       "line_start": 64,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "protected",
-       "modifiers": ["protected", "fun"],
-       "location": {
-               "column_end": 29,
-               "column_start": 2,
-               "line_end": 67,
-               "line_start": 64,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Character$health="
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Character"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Character$health="
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Character"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "health",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "dps",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Weapon::dps",
-       "mdoc": {
-               "content": "Damage per second inflicted by this weapon.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 23,
-                       "line_start": 22,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 27,
-               "column_start": 2,
-               "line_end": 23,
-               "line_start": 22,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Weapon$dps"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Weapon"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Weapon$dps"
-       }, {
-               "full_name": "test_prog::combat$Dwarf$Weapon::dps"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Weapon"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Float"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "hit_points",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Combatable::hit_points",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 32,
-               "column_start": 2,
-               "line_end": 32,
-               "line_start": 32,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Combatable$hit_points"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Combatable$hit_points"
-       }, {
-               "full_name": "test_prog::combat$Character$Combatable::hit_points"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Combatable"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "attack",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Combatable::attack",
-       "mdoc": {
-               "content": "A `Combatable` can attack a `target` that is also a `Combatable`.\n\nAttack the `target` using `wepaon` and returns the number of inflicted hit points.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 37,
-                       "line_start": 34,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 64,
-               "column_start": 2,
-               "line_end": 37,
-               "line_start": 34,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Combatable$attack"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Combatable$attack"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Combatable"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 2,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "target",
-                       "mtype": {
-                               "full_name": "test_prog::Combatable"
-                       }
-               }, {
-                       "is_vararg": false,
-                       "name": "weapon",
-                       "mtype": {
-                               "full_name": "test_prog::Weapon"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "direct_attack",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Combatable::direct_attack",
-       "mdoc": {
-               "content": "Like `attack` but cannot be defended.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 40,
-                       "line_start": 39,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 71,
-               "column_start": 2,
-               "line_end": 40,
-               "line_start": 39,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Combatable$direct_attack"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Combatable$direct_attack"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Combatable"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 2,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "target",
-                       "mtype": {
-                               "full_name": "test_prog::Combatable"
-                       }
-               }, {
-                       "is_vararg": false,
-                       "name": "weapon",
-                       "mtype": {
-                               "full_name": "test_prog::Weapon"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "defend",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Combatable::defend",
-       "mdoc": {
-               "content": "`Combatable` can defend against attacks.\n\nDefends against a number of received hit points and return the number of pared hit points.\n\n@param hit: damage received.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 47,
-                       "line_start": 42,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 38,
-               "column_start": 2,
-               "line_end": 47,
-               "line_start": 42,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Combatable$defend"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Combatable$defend"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Combatable"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 1,
-               "mparams": [{
-                       "is_vararg": false,
-                       "name": "hit",
-                       "mtype": {
-                               "full_name": "test_prog::Int"
-                       }
-               }],
-               "return_mtype": {
-                       "full_name": "test_prog::Int"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "is_dead",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Combatable::is_dead",
-       "mdoc": {
-               "content": "Is the character still have hit_points?",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 50,
-                       "line_start": 49,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 43,
-               "column_start": 2,
-               "line_end": 50,
-               "line_start": 49,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Combatable$is_dead"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Combatable"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Combatable$is_dead"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Combatable"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::Bool"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "player_characters",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Game::player_characters",
-       "mdoc": {
-               "content": "Characters played by human players.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 26,
-                       "line_start": 25,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 51,
-               "column_start": 2,
-               "line_end": 26,
-               "line_start": 25,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Game$player_characters"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Game$player_characters"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Game"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::List[test_prog::Character]"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "computer_characters",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Game::computer_characters",
-       "mdoc": {
-               "content": "Characters players by computer.",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 29,
-                       "line_start": 28,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 53,
-               "column_start": 2,
-               "line_end": 29,
-               "line_start": 28,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Game$computer_characters"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Game$computer_characters"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Game"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": {
-                       "full_name": "test_prog::List[test_prog::Character]"
-               },
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "start_game",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Game::start_game",
-       "mdoc": {
-               "content": "Start the game.\n\nYou have to implement that method!",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 34,
-                       "line_start": 31,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 27,
-               "column_start": 2,
-               "line_end": 34,
-               "line_start": 31,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Game$start_game"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Game$start_game"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Game"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "pause_game",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Game::pause_game",
-       "mdoc": {
-               "content": "Pause the game.\n\nYou have to implement that method!",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 39,
-                       "line_start": 36,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 27,
-               "column_start": 2,
-               "line_end": 39,
-               "line_start": 36,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Game$pause_game"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Game$pause_game"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Game"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "stop_game",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Game::stop_game",
-       "mdoc": {
-               "content": "Stop the game.\n\nYou have to implement that method!",
-               "location": {
-                       "column_end": 0,
-                       "column_start": 2,
-                       "line_end": 44,
-                       "line_start": 41,
-                       "file": "test_location"
-               }
-       },
-       "visibility": "public",
-       "modifiers": ["public", "abstract", "fun"],
-       "location": {
-               "column_end": 26,
-               "column_start": 2,
-               "line_end": 44,
-               "line_start": 41,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Game$stop_game"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Game"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Game$stop_game"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Game"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "start",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Starter::start",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 17,
-               "column_start": 2,
-               "line_end": 22,
-               "line_start": 22,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Starter$start"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Starter"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Starter$start"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Starter"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
-{
-       "name": "main",
-       "class_name": "MMethod",
-       "full_name": "test_prog::Sys::main",
-       "mdoc": null,
-       "visibility": "public",
-       "modifiers": ["public", "fun"],
-       "location": {
-               "column_end": 13,
-               "column_start": 1,
-               "line_end": 26,
-               "line_start": 25,
-               "file": "test_location"
-       },
-       "intro": {
-               "full_name": "test_prog$Sys$main"
-       },
-       "intro_mclassdef": {
-               "full_name": "test_prog$Sys"
-       },
-       "mpropdefs": [{
-               "full_name": "test_prog$Sys$main"
-       }],
-       "intro_mclass": {
-               "full_name": "test_prog::Sys"
-       },
-       "mpackage": {
-               "full_name": "test_prog"
-       },
-       "is_init": false,
-       "msignature": {
-               "arity": 0,
-               "mparams": [],
-               "return_mtype": null,
-               "vararg_rank": -1
-       }
-}
diff --git a/src/model/test_model_json.sav/test_refs_to_full_json.res b/src/model/test_model_json.sav/test_refs_to_full_json.res
deleted file mode 100644 (file)
index 60e70df..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-       "full_name": "test_prog"
-}
-{
-       "full_name": "excluded::excluded"
-}
-{
-       "full_name": "test_prog::Object"
-}
index 8880ef7..de23d04 100644 (file)
@@ -1206,6 +1206,12 @@ redef class AAttrPropdef
                end
                mclassdef.mprop2npropdef[mreadprop] = self
 
+               var attr_mpropdef = mpropdef
+               if attr_mpropdef != null then
+                       mreadprop.getter_for = attr_mpropdef.mproperty
+                       attr_mpropdef.mproperty.getter = mreadprop
+               end
+
                var mreadpropdef = new MMethodDef(mclassdef, mreadprop, self.location)
                self.mreadpropdef = mreadpropdef
                modelbuilder.mpropdef2npropdef[mreadpropdef] = self
@@ -1312,6 +1318,11 @@ redef class AAttrPropdef
                end
                mclassdef.mprop2npropdef[mwriteprop] = self
 
+               if attr_mpropdef != null then
+                       mwriteprop.setter_for = attr_mpropdef.mproperty
+                       attr_mpropdef.mproperty.setter = mwriteprop
+               end
+
                var mwritepropdef = new MMethodDef(mclassdef, mwriteprop, self.location)
                self.mwritepropdef = mwritepropdef
                modelbuilder.mpropdef2npropdef[mwritepropdef] = self
index 982e206..629222a 100644 (file)
@@ -187,7 +187,7 @@ redef class Catalog
        do
                # Register `self` to the global NitdocDecorator
                # FIXME this is ugly. But no better idea at the moment.
-               modelbuilder.model.nitdoc_md_processor.emitter.decorator.as(NitdocDecorator).catalog = self
+               modelbuilder.model.nitdoc_md_processor.decorator.as(NitdocDecorator).catalog = self
        end
 
        # The output directory where to generate pages
@@ -267,12 +267,12 @@ redef class Catalog
 <div class="sidebar">
 <ul class="box">
 """
-               var tryit = mpackage.metadata("upstream.tryit")
+               var tryit = mpackage.metadata.metadata("upstream.tryit")
                if tryit != null then
                        var e = tryit.html_escape
                        res.add "<li><a href=\"{e}\">Try<span style=\"color:white\">n</span>it!</a></li>\n"
                end
-               var apk = mpackage.metadata("upstream.apk")
+               var apk = mpackage.metadata.metadata("upstream.apk")
                if apk != null then
                        var e = apk.html_escape
                        res.add "<li><a href=\"{e}\">Android apk</a></li>\n"
@@ -280,15 +280,15 @@ redef class Catalog
 
                res.add """</ul>\n<ul class="box">\n"""
 
-               var homepage = mpackage.metadata("upstream.homepage")
+               var homepage = mpackage.metadata.metadata("upstream.homepage")
                if homepage != null then
                        var e = homepage.html_escape
                        res.add "<li><a href=\"{e}\">{e}</a></li>\n"
                end
-               for maintainer in mpackage.maintainers do
+               for maintainer in mpackage.metadata.maintainers do
                        res.add "<li>{maintainer.to_html}</li>"
                end
-               var license = mpackage.metadata("package.license")
+               var license = mpackage.metadata.metadata("package.license")
                if license != null then
                        var e = license.html_escape
                        res.add "<li><a href=\"http://opensource.org/licenses/{e}\">{e}</a> license</li>\n"
@@ -296,22 +296,22 @@ redef class Catalog
                res.add "</ul>\n"
 
                res.add "<h3>Source Code</h3>\n<ul class=\"box\">\n"
-               var browse = mpackage.metadata("upstream.browse")
+               var browse = mpackage.metadata.metadata("upstream.browse")
                if browse != null then
                        var e = browse.html_escape
                        res.add "<li><a href=\"{e}\">{e}</a></li>\n"
                end
-               var git = mpackage.metadata("upstream.git")
+               var git = mpackage.metadata.metadata("upstream.git")
                if git != null then
                        var e = git.html_escape
                        res.add "<li><tt>{e}</tt></li>\n"
                end
-               var last_date = mpackage.last_date
+               var last_date = mpackage.metadata.last_date
                if last_date != null then
                        var e = last_date.html_escape
                        res.add "<li>most recent commit: {e}</li>\n"
                end
-               var first_date = mpackage.first_date
+               var first_date = mpackage.metadata.first_date
                if first_date != null then
                        var e = first_date.html_escape
                        res.add "<li>oldest commit: {e}</li>\n"
@@ -333,7 +333,7 @@ redef class Catalog
 
                res.add "<h3>Tags</h3>\n"
                var ts2 = new Array[String]
-               for t in mpackage.tags do
+               for t in mpackage.metadata.tags do
                        t = t.html_escape
                        ts2.add "<a href=\"../index.html#tag_{t}\">{t}</a>"
                end
@@ -381,7 +381,7 @@ redef class Catalog
                        end
                end
 
-               var contributors = mpackage.contributors
+               var contributors = mpackage.metadata.contributors
                if not contributors.is_empty then
                        res.add "<h3>Contributors</h3>\n<ul class=\"box\">"
                        for c in contributors do
@@ -499,9 +499,9 @@ redef class Catalog
                        res.add "<tr>"
                        res.add "<td><a href=\"p/{p.name}.html\">{p.name}</a></td>"
                        var maint = "?"
-                       if p.maintainers.not_empty then maint = p.maintainers.first.name.html_escape
+                       if p.metadata.maintainers.not_empty then maint = p.metadata.maintainers.first.name.html_escape
                        res.add "<td>{maint}</td>"
-                       res.add "<td>{p.contributors.length}</td>"
+                       res.add "<td>{p.metadata.contributors.length}</td>"
                        if deps.not_empty then
                                res.add "<td>{deps[p].greaters.length-1}</td>"
                                res.add "<td>{deps[p].direct_greaters.length}</td>"
index 801e715..159c771 100644 (file)
@@ -41,9 +41,16 @@ private class Nitdoc
        super Phase
        redef fun process_mainmodule(mainmodule, mmodules)
        do
-               var doc = new DocModel(mainmodule.model, mainmodule)
-               if not toolcontext.opt_private.value then doc.min_visibility = protected_visibility
-               if not toolcontext.opt_no_attributes.value then doc.include_attribute = false
+               var min_visibility = private_visibility
+               if not toolcontext.opt_private.value then min_visibility = protected_visibility
+               var accept_attribute = true
+               if toolcontext.opt_no_attributes.value then accept_attribute = false
+
+               var filters = new ModelFilter(
+                       min_visibility,
+                       accept_attribute = accept_attribute,
+                       accept_fictive = false)
+               var doc = new DocModel(mainmodule.model, mainmodule, filters)
 
                var phases = [
                        new IndexingPhase(toolcontext, doc),
index 2c66ce7..c76665e 100644 (file)
 # Tool that produces highlighting for Nit programs
 module nitlight
 
-import highlight
+import htmlight
 
 class NitlightVisitor
-       super HighlightVisitor
+       super HtmlightVisitor
 
        # The current highlight module
        #
@@ -94,7 +94,8 @@ var opt_last_line = new OptionInt("End the source file at this line (default: to
 var opt_dir = new OptionString("Output html files in a specific directory (required if more than one module)", "-d", "--dir")
 var opt_full = new OptionBool("Process also imported modules", "--full")
 var opt_ast = new OptionBool("Generate specific HTML elements for each Node of the AST", "--ast")
-toolcontext.option_context.add_option(opt_fragment, opt_line_id_prefix, opt_first_line, opt_last_line, opt_dir, opt_full)
+var opt_txt = new OptionBool("Generate text with ANSI coloring escape sequences", "--txt")
+toolcontext.option_context.add_option(opt_fragment, opt_line_id_prefix, opt_first_line, opt_last_line, opt_dir, opt_full, opt_ast, opt_txt)
 toolcontext.tooldescription = "Usage: nitlight [OPTION]... <file.nit>...\nGenerates HTML of highlited code from Nit source files."
 toolcontext.process_options(args)
 
@@ -116,6 +117,29 @@ else if mmodules.length > 1 then
        return
 end
 
+if opt_txt.value then
+       for mm in mmodules do
+               var v = new AnsiHighlightVisitor
+               v.include_loose_tokens = true
+               v.include_whole_lines = true
+
+               if opt_first_line.value != 0 then v.first_line = opt_first_line.value
+               if opt_last_line.value != 0 then v.last_line = opt_last_line.value
+               var m = modelbuilder.mmodule2node(mm)
+               assert m != null
+
+               v.highlight_node(m)
+               var page = v.result
+
+               if dir != null then
+                       page.write_to_file("{dir}/{mm.c_name}.txt")
+               else
+                       page.write_to(stdout)
+               end
+       end
+       return
+end
+
 for mm in mmodules do
        if dir != null then toolcontext.info("write {dir}/{mm.c_name}.html", 1)
 
@@ -150,7 +174,7 @@ for mm in mmodules do
                page.add_raw_html v.head_content
                page.add_raw_html "</head><body><pre class='nit_code'>"
        end
-       v.enter_visit(m)
+       v.highlight_node(m)
        if not opt_fragment.value then
                page.add(v.html)
                page.add_raw_html "</pre>"
@@ -186,7 +210,7 @@ if dir != null then
        page.add_raw_html "</li></body>"
        page.write_to_file("{dir}/index.html")
 
-       var v = new HighlightVisitor
+       var v = new HtmlightVisitor
        toolcontext.info("write {dir}/style.css", 1)
        var f = new FileWriter.open("{dir}/style.css")
        f.write v.css_content
index 330370f..0b9bf72 100644 (file)
@@ -41,11 +41,12 @@ private class UMLPhase
        super Phase
        redef fun process_mainmodule(mainmodule, mmodules)
        do
-               var view = new ModelView(mainmodule.model)
+               var filters = new ModelFilter
                if not toolcontext.opt_privacy.value then
-                       view.min_visibility = protected_visibility
+                       filters.min_visibility = protected_visibility
                end
 
+               var view = new ModelView(mainmodule.model, mainmodule, filters)
                var d = new UMLModel(view, mainmodule)
                if toolcontext.opt_gen.value == 0 then
                        print d.generate_class_uml.write_to_string
index 370e2a2..3617df4 100644 (file)
@@ -16,7 +16,7 @@
 module nitweb
 
 import frontend
-import web
+import doc::api
 import doc::doc_down
 
 redef class ToolContext
@@ -30,12 +30,28 @@ redef class ToolContext
        # Port number to bind on (will overwrite the config one).
        var opt_port = new OptionInt("Port number to use", -1, "--port")
 
+       # --no-private
+       var opt_no_private = new OptionBool("Do not show private entities", "--no-private")
+
+       # --no-fictive
+       var opt_no_fictive = new OptionBool("Do not show fictive entities", "--no-fictive")
+
+       # --no-test
+       var opt_no_test = new OptionBool("Do not show test related entities", "--no-test")
+
+       # --no-attribute
+       var opt_no_attribute = new OptionBool("Do not show attributes", "--no-attribute")
+
+       # --no-empty-doc
+       var opt_no_empty_doc = new OptionBool("Do not undocumented entities", "--no-empty-doc")
+
        # Web rendering phase.
        var webphase: Phase = new NitwebPhase(self, null)
 
        init do
                super
-               option_context.add_option(opt_config, opt_host, opt_port)
+               option_context.add_option(opt_config, opt_host, opt_port, opt_no_private,
+                       opt_no_fictive, opt_no_test, opt_no_attribute, opt_no_empty_doc)
        end
 end
 
@@ -45,10 +61,20 @@ private class NitwebPhase
 
        # Build the nitweb config from `toolcontext` options.
        fun build_config(toolcontext: ToolContext, mainmodule: MModule): NitwebConfig do
-               var config = new NitwebConfig(
-                       toolcontext.modelbuilder.model,
-                       mainmodule,
-                       toolcontext.modelbuilder)
+
+               var model = toolcontext.modelbuilder.model
+
+               var filter = new ModelFilter(
+                       if toolcontext.opt_no_private.value then protected_visibility else private_visibility,
+                       accept_fictive = not toolcontext.opt_no_fictive.value,
+                       accept_empty_doc = not toolcontext.opt_no_empty_doc.value,
+                       accept_test = not toolcontext.opt_no_test.value,
+                       accept_attribute = not toolcontext.opt_no_attribute.value
+               )
+
+               var view = new ModelView(model, mainmodule, filter)
+
+               var config = new NitwebConfig(model, mainmodule, toolcontext.modelbuilder, view)
                var config_file = toolcontext.opt_config.value
                if config_file == null then config.default_config_file = "nitweb.ini"
                config.parse_options(args)
index ff97784..061b44e 100644 (file)
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# `nitx`, is a command tool that displays useful informations about the code.
+# `nitx`, a command tool that displays useful data about Nit code
 #
 # Features:
 #
-# * Display comment from name/namespace
-# * Display documentation page from Nitdoc in console
+# * Display documentation from name/namespace
 # * Find type usage in parameters, returns and news.
-# * Find usage of a specific property.
+# * Find usage (calls) of a specific property.
 # * Find source code related to class/property by its name.
+# * Display inheritance lists
 module nitx
 
-import modelbuilder
-import doc::doc_phases::doc_console
+import frontend
+import doc::term
+import readline
 
 redef class ToolContext
 
-       # Nittx generation phase.
-       var docx: Phase = new NitxPhase(self, null)
-
        # Used to shortcut the prompt and display directly the result in console.
        var opt_command = new OptionString("Nitx command to perform", "-c", "--command")
 
-       init do option_context.add_option opt_command
+       # Compute and use the catalog
+       var opt_catalog = new OptionBool("Use catalog", "--catalog")
+
+       init do option_context.add_option(opt_command, opt_catalog)
 end
 
-# Nitx phase explores the model and prepares the console rendering.
-private class NitxPhase
-       super Phase
-       redef fun process_mainmodule(mainmodule, mmodules)
-       do
-               var doc = new DocModel(mainmodule.model, mainmodule)
-
-               var phases = [
-                       new MakePagePhase(toolcontext, doc),
-                       new ConcernsPhase(toolcontext, doc),
-                       new StructurePhase(toolcontext, doc),
-                       new POSetPhase(toolcontext, doc): DocPhase]
-
-               for phase in phases do
-                       toolcontext.info("# {phase.class_name}", 1)
-                       phase.apply
+# Nitx handles console queries
+#
+# Using `prompt`, the command line can be turned on an interactive tool.
+class Nitx
+
+       # ModelView that contains the informations to display
+       var view: ModelView
+
+       # ModelBuilder to access AST nodes
+       var modelbuilder: ModelBuilder
+
+       # Catalog if any
+       var catalog: nullable Catalog = null is optional
+
+       # Do not use colors in the output
+       var no_color = false is optional
+
+       # Displays the welcome message and start prompt.
+       fun start do
+               welcome
+               prompt
+       end
+
+       # Displays the welcome message and the list of loaded modules.
+       fun welcome do
+               print "Welcome in the Nit Index!"
+               print ""
+               print "Loaded packages:\n"
+               var cmd = new CmdModelEntities(view, kind = "packages")
+               cmd.init_command
+               for mpackage in cmd.results.as(not null) do
+                       print " * {mpackage.full_name}"
+               end
+               help
+       end
+
+       # Displays the list of available queries.
+       fun help do
+               # TODO automatize that
+               print "\nCommands:\n"
+               for usage, doc in parser.commands_usage do
+                       var l = usage.length / 8
+                       print "\t{usage}{"\t" * (3 - l)}{doc}"
+               end
+               print "\n"
+               print "\t:h\t\t\tdisplay this help message"
+               print "\t:q\t\t\tquit interactive mode"
+               print ""
+       end
+
+       # Prompts the user for a query.
+       fun prompt do
+               var line = readline(">> ", true)
+               if line != null then
+                       do_command(line)
                end
+               prompt
+       end
+
+       # Parser used to process doc commands
+       var parser = new CommandParser(view, modelbuilder, catalog) is lazy
 
-               # start nitx
-               var nitx = new Nitx(toolcontext, doc)
-               var q = toolcontext.opt_command.value
-               if q != null then # shortcut prompt
-                       print ""
-                       nitx.do_query(q)
+       # Processes the query string and performs it.
+       fun do_command(str: String) do
+               if str == ":q" then
+                       exit 0
+               else if str == ":h" then
+                       help
                        return
                end
-               nitx.start
+               parser.execute(str, no_color)
+       end
+end
+
+redef class Catalog
+       # Build the catalog for Nitx
+       private fun build_catalog(view: ModelView) do
+               # Compute the poset
+               for p in view.mpackages do
+                       var g = p.root
+                       assert g != null
+                       modelbuilder.scan_group(g)
+
+                       deps.add_node(p)
+                       for gg in p.mgroups do for m in gg.mmodules do
+                               for im in m.in_importation.direct_greaters do
+                                       var ip = im.mpackage
+                                       if ip == null or ip == p then continue
+                                       deps.add_edge(p, ip)
+                               end
+                       end
+               end
+               # Build the catalog
+               for mpackage in view.mpackages do
+                       package_page(mpackage)
+                       git_info(mpackage)
+                       mpackage_stats(mpackage)
+               end
        end
 end
 
@@ -71,7 +143,7 @@ end
 var toolcontext = new ToolContext
 var tpl = new Template
 tpl.add "Usage: nitx [OPTION]... <file.nit>... [query]\n"
-tpl.add "Displays specific pieces of API information from Nit source files."
+tpl.add "Displays pieces of API information from Nit source files."
 toolcontext.tooldescription = tpl.write_to_string
 
 # process options
@@ -87,3 +159,22 @@ var mmodules = mbuilder.parse_full(arguments)
 if mmodules.is_empty then return
 mbuilder.run_phases
 toolcontext.run_global_phases(mmodules)
+var mainmodule = toolcontext.make_main_module(mmodules)
+
+# build views
+var view = new ModelView(model, mainmodule)
+var catalog = null
+if toolcontext.opt_catalog.value then
+       catalog = new Catalog(mbuilder)
+       catalog.build_catalog(view)
+end
+
+# start nitx
+var nitx = new Nitx(view, mbuilder, catalog, toolcontext.opt_no_color.value)
+var q = toolcontext.opt_command.value
+if q != null then # shortcut prompt
+       print ""
+       nitx.do_command(q)
+       return
+end
+nitx.start
index dc10ac9..f8431a0 100644 (file)
@@ -1326,7 +1326,7 @@ redef class TBadString
     end
 end
 
-redef class TBadChar
+redef class TBadTString
     redef fun parser_index: Int
     do
        return 110
@@ -1338,7 +1338,7 @@ redef class TBadChar
     end
 end
 
-redef class TExternCodeSegment
+redef class TBadChar
     redef fun parser_index: Int
     do
        return 111
@@ -1350,11 +1350,35 @@ redef class TExternCodeSegment
     end
 end
 
+redef class TExternCodeSegment
+    redef fun parser_index: Int
+    do
+       return 112
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
+redef class TBadExtern
+    redef fun parser_index: Int
+    do
+       return 113
+    end
+
+    init init_tk(loc: Location)
+    do
+               _location = loc
+    end
+end
+
 
 redef class EOF
     redef fun parser_index: Int
     do
-       return 112
+       return 114
     end
 end
 
@@ -1692,11 +1716,17 @@ redef class Lexer
                        return new TBadString.init_tk(location)
                end
                if accept_token == 111 then
-                       return new TBadChar.init_tk(location)
+                       return new TBadTString.init_tk(location)
                end
                if accept_token == 112 then
+                       return new TBadChar.init_tk(location)
+               end
+               if accept_token == 113 then
                        return new TExternCodeSegment.init_tk(location)
                end
+               if accept_token == 114 then
+                       return new TBadExtern.init_tk(location)
+               end
                abort # unknown token index `accept_token`
        end
 end
index f626841..1931792 100644 (file)
@@ -218,10 +218,12 @@ start_string = id? '"' str_body '{' | id? '"' '"' '"' long_str_body lsend2;
 mid_string = '}' str_body '{' | '}' '}' '}' long_str_body lsend2;
 end_string = '}' str_body '"' id? | '}' '}' '}' long_str_body lsend1 id? ;
 char = id? ((''' [[any - '''] - '\'] ''') | (''' '\' any ''')) id?;
-bad_string = ('"'|'}') str_body | '"' '"' '"' long_str_body | ''' ''' ''' long_sstr_body;
+bad_string = ('"'|'}') str_body ;
+bad_t_string = '"' '"' '"' long_str_body | ''' ''' ''' long_sstr_body;
 bad_char = ''' '\'? any;
 
 extern_code_segment = '`' '{' extern_code_body '`' '}';
+bad_extern = '`' '{' extern_code_body;
 
 /*****************************************************************************/
 Ignored Tokens
index b6d7676..2f42bfc 100644 (file)
@@ -334,12 +334,18 @@ end
 class TBadString
        super Token
 end
+class TBadTString
+       super Token
+end
 class TBadChar
        super Token
 end
 class TExternCodeSegment
        super Token
 end
+class TBadExtern
+       super Token
+end
 class EOF
        super Token
 end
index 9726c3d..0c535c2 100644 (file)
@@ -1078,6 +1078,11 @@ class TBadString
        end
 end
 
+# A malformed triple quoted string
+class TBadTString
+       super TBadString
+end
+
 # A malformed char
 class TBadChar
        super Token
@@ -1092,6 +1097,15 @@ class TExternCodeSegment
        super Token
 end
 
+# A malformed extern code block
+class TBadExtern
+       super Token
+       redef fun to_s
+       do
+               do return "malformed extern segment {text}"
+       end
+end
+
 # A end of file
 class EOF
        super Token
index fe36ace..e424dc6 100644 (file)
@@ -3025,7 +3025,7 @@ const int* const lexer_goto_table[] = {
 };
 
 const int lexer_accept_table[] = {
-       -1,0,1,1,0,97,110,2,83,86,-1,56,57,80,78,60,79,77,82,103,103,61,99,90,63,93,98,100,58,59,85,-1,-1,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,84,110,87,1,89,110,105,-1,106,2,2,2,68,72,111,111,111,81,66,64,65,76,104,67,-1,103,-1,-1,-1,-1,103,-1,-1,-1,-1,-1,-1,62,92,91,88,94,95,100,100,100,100,71,-1,102,-1,-1,-1,101,101,101,101,101,101,48,101,101,101,101,17,101,101,101,101,101,101,24,101,30,16,101,101,101,101,101,101,101,32,101,101,101,101,101,101,101,101,101,101,101,101,101,101,70,110,108,-1,107,110,105,110,105,110,2,109,110,111,69,75,103,103,103,-1,-1,104,103,103,103,103,103,103,103,-1,-1,103,-1,-1,103,73,96,74,-1,102,102,102,102,-1,-1,-1,-1,105,-1,-1,-1,-1,101,101,31,101,101,101,101,101,101,11,101,101,101,29,12,101,101,101,41,101,101,101,101,40,33,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,18,101,101,101,108,110,110,110,110,110,-1,-1,-1,105,105,105,105,109,110,110,110,-1,-1,109,103,103,103,103,-1,-1,-1,112,-1,-1,-1,-1,101,101,101,101,101,101,101,26,9,101,101,101,101,14,101,101,101,101,28,101,47,42,101,101,101,101,101,101,44,101,101,25,45,13,101,101,52,101,108,108,108,108,110,-1,-1,108,-1,107,-1,-1,110,-1,-1,109,109,109,109,110,110,110,-1,-1,110,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,38,101,101,37,55,6,101,101,46,101,101,101,101,50,51,101,101,101,101,101,101,15,101,101,43,101,27,54,-1,-1,-1,-1,-1,108,-1,110,-1,-1,105,-1,-1,106,110,110,110,105,-1,110,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,101,39,101,19,101,5,101,101,4,101,101,101,101,20,35,10,101,-1,108,108,108,108,108,-1,-1,107,105,106,105,110,-1,-1,-1,-1,-1,-1,-1,-1,101,101,34,101,23,101,3,22,101,101,108,108,107,105,105,105,105,-1,-1,7,36,101,49,101,101,108,108,108,108,53,8,21,9
+       -1,0,1,1,0,97,110,2,83,86,-1,56,57,80,78,60,79,77,82,103,103,61,99,90,63,93,98,100,58,59,85,-1,-1,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,84,110,87,1,89,110,105,-1,106,2,2,2,68,72,112,112,112,81,66,64,65,76,104,67,-1,103,-1,-1,-1,-1,103,-1,-1,-1,-1,-1,-1,62,92,91,88,94,95,100,100,100,100,71,-1,102,114,-1,-1,101,101,101,101,101,101,48,101,101,101,101,17,101,101,101,101,101,101,24,101,30,16,101,101,101,101,101,101,101,32,101,101,101,101,101,101,101,101,101,101,101,101,101,101,70,110,108,-1,107,110,105,111,105,110,2,109,111,112,69,75,103,103,103,-1,-1,104,103,103,103,103,103,103,103,-1,-1,103,-1,-1,103,73,96,74,-1,102,102,102,102,114,-1,-1,-1,105,-1,-1,-1,-1,101,101,31,101,101,101,101,101,101,11,101,101,101,29,12,101,101,101,41,101,101,101,101,40,33,101,101,101,101,101,101,101,101,101,101,101,101,101,101,101,18,101,101,101,108,110,110,111,111,111,-1,-1,-1,105,105,105,105,109,111,111,111,-1,-1,109,103,103,103,103,-1,114,114,113,-1,-1,-1,-1,101,101,101,101,101,101,101,26,9,101,101,101,101,14,101,101,101,101,28,101,47,42,101,101,101,101,101,101,44,101,101,25,45,13,101,101,52,101,108,108,108,108,110,-1,-1,108,-1,107,-1,-1,111,-1,-1,109,109,109,109,111,111,111,-1,-1,111,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,38,101,101,37,55,6,101,101,46,101,101,101,101,50,51,101,101,101,101,101,101,15,101,101,43,101,27,54,-1,-1,-1,-1,-1,108,-1,110,-1,-1,105,-1,-1,106,111,111,111,105,-1,111,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,101,39,101,19,101,5,101,101,4,101,101,101,101,20,35,10,101,-1,108,108,108,108,108,-1,-1,107,105,106,105,111,-1,-1,-1,-1,-1,-1,-1,-1,101,101,34,101,23,101,3,22,101,101,108,108,107,105,105,105,105,-1,-1,7,36,101,49,101,101,108,108,108,108,53,8,21,9
 };
 
 static int parser_action_row1[] = {
@@ -3035,8 +3035,8 @@ static int parser_action_row1[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row2[] = {
        1,
@@ -3056,7 +3056,7 @@ static int parser_action_row4[] = {
 static int parser_action_row5[] = {
        2,
        -1, 3, 4,
-       112, 2, -1
+       114, 2, -1
 };
 static int parser_action_row6[] = {
        7,
@@ -3065,8 +3065,8 @@ static int parser_action_row6[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row7[] = {
        1,
@@ -3095,7 +3095,7 @@ static int parser_action_row12[] = {
 static int parser_action_row13[] = {
        2,
        -1, 1, 496,
-       112, 1, 23
+       114, 1, 23
 };
 static int parser_action_row14[] = {
        33,
@@ -3137,7 +3137,7 @@ static int parser_action_row15[] = {
        3,
        -1, 3, 14,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row16[] = {
        1,
@@ -3161,8 +3161,8 @@ static int parser_action_row19[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row20[] = {
        7,
@@ -3171,8 +3171,8 @@ static int parser_action_row20[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row21[] = {
        5,
@@ -3180,7 +3180,7 @@ static int parser_action_row21[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row22[] = {
        7,
@@ -3190,7 +3190,7 @@ static int parser_action_row22[] = {
        10, 1, 1075,
        29, 1, 1075,
        98, 0, 104,
-       111, 1, 1075
+       112, 1, 1075
 };
 static int parser_action_row23[] = {
        7,
@@ -3200,7 +3200,7 @@ static int parser_action_row23[] = {
        10, 1, 1077,
        29, 1, 1077,
        98, 0, 105,
-       111, 1, 1077
+       112, 1, 1077
 };
 static int parser_action_row24[] = {
        1,
@@ -3267,8 +3267,8 @@ static int parser_action_row29[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row30[] = {
        7,
@@ -3277,8 +3277,8 @@ static int parser_action_row30[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row31[] = {
        5,
@@ -3286,7 +3286,7 @@ static int parser_action_row31[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row32[] = {
        26,
@@ -3757,7 +3757,7 @@ static int parser_action_row86[] = {
 static int parser_action_row87[] = {
        2,
        -1, 3, 86,
-       111, 0, 263
+       112, 0, 263
 };
 static int parser_action_row88[] = {
        1,
@@ -3794,8 +3794,8 @@ static int parser_action_row95[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row96[] = {
        5,
@@ -3803,7 +3803,7 @@ static int parser_action_row96[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row97[] = {
        1,
@@ -3855,7 +3855,7 @@ static int parser_action_row100[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row101[] = {
        1,
@@ -3899,7 +3899,7 @@ static int parser_action_row108[] = {
        10, 1, 1076,
        29, 1, 1076,
        98, 0, 271,
-       111, 1, 1076
+       112, 1, 1076
 };
 static int parser_action_row109[] = {
        4,
@@ -3927,8 +3927,8 @@ static int parser_action_row112[] = {
        1, 0, 2,
        29, 1, 497,
        98, 0, 3,
-       111, 1, 497,
-       112, 1, 22
+       112, 1, 497,
+       114, 1, 22
 };
 static int parser_action_row113[] = {
        5,
@@ -3936,7 +3936,7 @@ static int parser_action_row113[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row114[] = {
        1,
@@ -3948,7 +3948,7 @@ static int parser_action_row115[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row116[] = {
        1,
@@ -5359,7 +5359,7 @@ static int parser_action_row266[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row267[] = {
        1,
@@ -5414,7 +5414,7 @@ static int parser_action_row275[] = {
        0, 0, 1,
        1, 0, 2,
        98, 0, 3,
-       112, 1, 22
+       114, 1, 22
 };
 static int parser_action_row276[] = {
        1,
@@ -7425,7 +7425,7 @@ static int parser_action_row522[] = {
        56, 1, 451,
        59, 1, 451,
        98, 1, 451,
-       112, 1, 451
+       114, 1, 451
 };
 static int parser_action_row523[] = {
        4,
@@ -9729,7 +9729,7 @@ static int parser_action_row726[] = {
        56, 1, 449,
        59, 1, 449,
        98, 1, 449,
-       112, 1, 449
+       114, 1, 449
 };
 static int parser_action_row727[] = {
        1,
@@ -10896,7 +10896,7 @@ static int parser_action_row866[] = {
        29, 0, 84,
        57, 0, 1015,
        98, 0, 3,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row867[] = {
        1,
@@ -12318,7 +12318,7 @@ static int parser_action_row1012[] = {
        3,
        -1, 3, 1011,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1013[] = {
        1,
@@ -14167,7 +14167,7 @@ static int parser_action_row1188[] = {
        3,
        -1, 3, 1187,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1189[] = {
        1,
@@ -15489,7 +15489,7 @@ static int parser_action_row1350[] = {
        16, 1, 83,
        29, 1, 83,
        98, 0, 3,
-       111, 1, 83
+       112, 1, 83
 };
 static int parser_action_row1351[] = {
        1,
@@ -17077,7 +17077,7 @@ static int parser_action_row1500[] = {
        1, 0, 2,
        29, 0, 84,
        98, 0, 3,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1501[] = {
        3,
@@ -19168,7 +19168,7 @@ static int parser_action_row1694[] = {
        3,
        -1, 3, 1693,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1695[] = {
        1,
@@ -19821,7 +19821,7 @@ static int parser_action_row1759[] = {
        3,
        -1, 3, 1758,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1760[] = {
        1,
@@ -20021,7 +20021,7 @@ static int parser_action_row1773[] = {
        3,
        -1, 3, 1772,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1774[] = {
        1,
@@ -20074,7 +20074,7 @@ static int parser_action_row1777[] = {
        3,
        -1, 3, 1776,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1778[] = {
        1,
@@ -20514,7 +20514,7 @@ static int parser_action_row1819[] = {
        3,
        -1, 3, 1818,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1820[] = {
        1,
@@ -20710,7 +20710,7 @@ static int parser_action_row1835[] = {
        3,
        -1, 3, 1834,
        29, 0, 84,
-       111, 0, 85
+       112, 0, 85
 };
 static int parser_action_row1836[] = {
        1,
index adb9543..e6bdae5 100644 (file)
@@ -36,7 +36,7 @@ class AndroidPlatform
 
        redef fun name do return "android"
 
-       redef fun supports_libgc do return false
+       redef fun supports_libgc do return true
 
        redef fun supports_libunwind do return false
 
@@ -54,25 +54,44 @@ class AndroidToolchain
        do
                var android_project_root = "{root_compile_dir}/android/"
                self.android_project_root = android_project_root
-               return "{android_project_root}/jni/nit_compile/"
+               return "{android_project_root}/app/src/main/cpp/"
        end
 
        redef fun default_outname do return "{super}.apk"
 
+       private fun share_dir: Text
+       do
+               var nit_dir = toolcontext.nit_dir or else "."
+               return (nit_dir/"share").realpath
+       end
+
+       private fun gradlew_dir: Text do return share_dir / "android-gradlew"
+
        redef fun write_files(compile_dir, cfiles)
        do
                var android_project_root = android_project_root.as(not null)
+               var android_app_root = android_project_root/"app"
                var project = new AndroidProject(toolcontext.modelbuilder, compiler.mainmodule)
                var release = toolcontext.opt_release.value
 
-               var app_name = project.name
-               if not release then app_name += " Debug"
+               # Compute the root of the project where could be assets and resources
+               var project_root = "."
+               var mpackage = compiler.mainmodule.first_real_mmodule.mpackage
+               if mpackage != null then
+                       var root = mpackage.root
+                       if root != null then
+                               var filepath = root.filepath
+                               if filepath != null then
+                                       project_root = filepath
+                               end
+                       end
+               end
 
-               var short_project_name = project.short_name
+               # Gather app configs
+               # ---
 
+               var app_name = project.name
                var app_package = project.namespace
-               if not release then app_package += "_debug"
-
                var app_version = project.version
 
                var app_min_api = project.min_api
@@ -82,27 +101,144 @@ class AndroidToolchain
                if app_target_api == null then app_target_api = app_min_api
 
                var app_max_api = ""
-               if project.max_api != null then app_max_api = "android:maxSdkVersion=\"{project.max_api.as(not null)}\""
-
-               # Clear the previous android project, so there is no "existing project warning"
-               # or conflict between Java files of different projects
-               if android_project_root.file_exists then android_project_root.rmdir
-
-               var args = ["android", "-s",
-                       "create", "project",
-                       "--name", short_project_name,
-                       "--target", "android-{app_target_api}",
-                       "--path", android_project_root,
-                       "--package", app_package,
-                       "--activity", short_project_name]
-               toolcontext.exec_and_check(args, "Android project error")
+               if project.max_api != null then app_max_api = "maxSdkVersion  {project.max_api.as(not null)}"
+
+               # Create basic directory structure
+               # ---
 
-               # create compile_dir
-               var dir = "{android_project_root}/jni/"
-               if not dir.file_exists then dir.mkdir
+               android_project_root.mkdir
+               android_app_root.mkdir
+               (android_app_root/"libs").mkdir
 
-               dir = compile_dir
-               if not dir.file_exists then dir.mkdir
+               var android_app_main = android_app_root / "src/main"
+               android_app_main.mkdir
+               (android_app_main / "java").mkdir
+
+               # /app/build.gradle
+               # ---
+
+               # Use the most recent build_tools_version
+               var android_home = "ANDROID_HOME".environ
+               if android_home.is_empty then android_home = "HOME".environ / "Android/Sdk"
+               var build_tools_dir = android_home / "build-tools"
+               var available_versions = build_tools_dir.files
+
+               var build_tools_version
+               if available_versions.is_empty then
+                       print_error "Error: found no Android build-tools, install one or set ANDROID_HOME."
+                       return
+               else
+                       alpha_comparator.sort available_versions
+                       build_tools_version = available_versions.last
+               end
+
+               # Gather ldflags for Android
+               var ldflags = new Array[String]
+               var platform_name = "android"
+               for mmodule in compiler.mainmodule.in_importation.greaters do
+                       if mmodule.ldflags.keys.has(platform_name) then
+                               ldflags.add_all mmodule.ldflags[platform_name]
+                       end
+               end
+
+               # Platform version for OpenGL ES
+               var platform_version = ""
+               if ldflags.has("-lGLESv3") then
+                       platform_version = "def platformVersion = 18"
+               else if ldflags.has("-lGLESv2") then
+                       platform_version = "def platformVersion = 12"
+               end
+
+               # TODO make configurable client-side
+               var compile_sdk_version = app_target_api
+
+               var local_build_gradle = """
+apply plugin: 'com.android.application'
+
+{{{platform_version}}}
+
+android {
+    compileSdkVersion {{{compile_sdk_version}}}
+    buildToolsVersion "{{{build_tools_version}}}"
+
+    defaultConfig {
+        applicationId "{{{app_package}}}"
+        minSdkVersion {{{app_min_api}}}
+        {{{app_max_api}}}
+        targetSdkVersion {{{app_target_api}}}
+        versionCode {{{project.version_code}}}
+        versionName "{{{app_version}}}"
+        ndk {
+            abiFilters 'armeabi', 'armeabi-v7a', 'x86'
+        }
+        externalNativeBuild {
+            cmake {
+                arguments "-DANDROID_TOOLCHAIN=gcc"
+            }
+        }
+    }
+
+    buildTypes {
+        release {
+            minifyEnabled false
+            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+        }
+    }
+
+    externalNativeBuild {
+        cmake {
+            path "src/main/cpp/CMakeLists.txt"
+        }
+    }
+
+    lintOptions {
+       abortOnError false
+    }
+}
+
+dependencies {
+    implementation fileTree(dir: 'libs', include: ['*.jar'])
+}
+"""
+               local_build_gradle.write_to_file "{android_project_root}/app/build.gradle"
+
+               # TODO add 'arm64-v8a' and 'x86_64' to `abiFilters` when the min API is available
+
+               # ---
+               # Other, smaller files
+
+               # /build.gradle
+               var global_build_gradle = """
+buildscript {
+    repositories {
+        google()
+        jcenter()
+    }
+    dependencies {
+        classpath 'com.android.tools.build:gradle:3.0.0'
+    }
+}
+
+allprojects {
+    repositories {
+        google()
+        jcenter()
+    }
+}
+"""
+               global_build_gradle.write_to_file "{android_project_root}/build.gradle"
+
+               # /settings.gradle
+               var settings_gradle = """
+include ':app'
+"""
+               settings_gradle.write_to_file "{android_project_root}/settings.gradle"
+
+               # /gradle.properties
+               var gradle_properties = """
+org.gradle.jvmargs=-Xmx1536m
+"""
+               gradle_properties.write_to_file "{android_project_root}/gradle.properties"
 
                # Insert an importation of the generated R class to all Java files from the FFI
                for mod in compiler.mainmodule.in_importation.greaters do
@@ -113,30 +249,104 @@ class AndroidToolchain
                # compile normal C files
                super
 
+               # ---
+               # /app/src/main/cpp/CMakeLists.txt
+
                # Gather extra C files generated elsewhere than in super
                for f in compiler.extern_bodies do
                        if f isa ExternCFile then cfiles.add(f.filename.basename)
                end
 
-               var project_root = "."
-               var mpackage = compiler.mainmodule.first_real_mmodule.mpackage
-               if mpackage != null then
-                       var root = mpackage.root
-                       if root != null then
-                               var filepath = root.filepath
-                               if filepath != null then
-                                       project_root = filepath
-                               end
+               # Prepare for the CMakeLists format
+               var target_link_libraries = new Array[String]
+               for flag in ldflags do
+                       if flag.has_prefix("-l") then
+                               target_link_libraries.add flag.substring_from(2)
                        end
                end
 
+               # Download the libgc/bdwgc sources
+               var share_dir = share_dir
+               if not share_dir.file_exists then
+                       print "Android project error: Nit share directory not found, please use the environment variable NIT_DIR"
+                       exit 1
+               end
+
+               var bdwgc_dir = "{share_dir}/android-bdwgc/bdwgc"
+               if not bdwgc_dir.file_exists then
+                       toolcontext.exec_and_check(["{share_dir}/android-bdwgc/setup.sh"], "Android project error")
+               end
+
+               # Compile the native app glue lib if used
+               var add_native_app_glue = ""
+               if target_link_libraries.has("native_app_glue") then
+                       add_native_app_glue = """
+add_library(native_app_glue STATIC ${ANDROID_NDK}/sources/android/native_app_glue/android_native_app_glue.c)
+"""
+               end
+
+               var cmakelists = """
+cmake_minimum_required(VERSION 3.4.1)
+
+{{{add_native_app_glue}}}
+
+
+# libgc/bdwgc
+
+## The source is in the Nit repo
+set(lib_src_DIR {{{bdwgc_dir}}})
+set(lib_build_DIR ../libgc/outputs)
+file(MAKE_DIRECTORY ${lib_build_DIR})
+
+## Config
+add_definitions("-DALL_INTERIOR_POINTERS -DGC_THREADS -DUSE_MMAP -DUSE_MUNMAP -DJAVA_FINALIZATION -DNO_EXECUTE_PERMISSION -DGC_DONT_REGISTER_MAIN_STATIC_DATA")
+set(enable_threads TRUE)
+set(CMAKE_USE_PTHREADS_INIT TRUE)
+
+## link_map is already defined in Android
+add_definitions("-DGC_DONT_DEFINE_LINK_MAP")
+
+## Silence warning
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c99")
+
+add_subdirectory(${lib_src_DIR} ${lib_build_DIR} )
+include_directories(${lib_src_DIR}/include)
+
+
+# Nit generated code
+
+set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DANDROID -DWITH_LIBGC")
+
+# Export ANativeActivity_onCreate(),
+# Refer to: https://github.com/android-ndk/ndk/issues/381.
+set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -u ANativeActivity_onCreate")
+
+#           name      so       source
+add_library(nit_app   SHARED   {{{cfiles.join("\n\t")}}} )
+
+target_include_directories(nit_app PRIVATE ${ANDROID_NDK}/sources/android/native_app_glue)
+
+
+# Link!
+
+target_link_libraries(nit_app gc-lib
+       {{{target_link_libraries.join("\n\t")}}})
+"""
+               cmakelists.write_to_file "{android_app_main}/cpp/CMakeLists.txt"
+
+               # ---
+               # /app/src/main/res/values/strings.xml for app name
+
                # Set the default pretty application name
+               var res_values_dir = "{android_app_main}/res/values/"
+               res_values_dir.mkdir
 """<?xml version="1.0" encoding="utf-8"?>
 <resources>
     <string name="app_name">{{{app_name}}}</string>
-</resources>""".write_to_file "{android_project_root}/res/values/strings.xml"
+</resources>""".write_to_file res_values_dir/"strings.xml"
 
-               # Copy assets, resources and libs where expected by the SDK
+               # ---
+               # Copy assets, resources in the Android project
 
                ## Collect path to all possible folder where we can find the `android` folder
                var app_files = [project_root]
@@ -147,111 +357,97 @@ class AndroidToolchain
                        var assets_dir = path / "assets"
                        if assets_dir.file_exists then
                                assets_dir = assets_dir.realpath
-                               toolcontext.exec_and_check(["cp", "-r", assets_dir, android_project_root], "Android project error")
+                               toolcontext.exec_and_check(["cp", "-r", assets_dir, android_app_main], "Android project error")
                        end
 
                        # Copy the whole `android` folder
                        var android_dir = path / "android"
                        if android_dir.file_exists then
                                android_dir = android_dir.realpath
-                               toolcontext.exec_and_check(["cp", "-r", android_dir, root_compile_dir], "Android project error")
+                               for f in android_dir.files do
+                                       toolcontext.exec_and_check(["cp", "-r", android_dir / f, android_app_main], "Android project error")
+                               end
                        end
                end
 
+               # ---
+               # Generate AndroidManifest.xml
+
                # Is there an icon?
-               var resolutions = ["ldpi", "mdpi", "hdpi", "xhdpi", "xxhdpi", "xxxhdpi"]
-               var icon_available = false
+               var resolutions = ["ldpi", "mdpi", "hdpi", "xhdpi", "xxhdpi", "xxxhdpi", "anydpi", "anydpi-v26"]
+               var icon_name = null
+               var has_round = false
+
                for res in resolutions do
-                       var path = project_root / "android/res/drawable-{res}/icon.png"
-                       if path.file_exists then
-                               icon_available = true
+                       # New style mipmap
+                       if "{project_root}/android/res/mipmap-{res}/ic_launcher_round.png".file_exists then
+                               has_round = true
+                       end
+                       if "{project_root}/android/res/mipmap-{res}/ic_launcher.png".file_exists then
+                               icon_name = "@mipmap/ic_launcher"
                                break
                        end
+                       if "{project_root}/android/res/mipmap-{res}/ic_launcher.xml".file_exists then
+                               icon_name = "@mipmap/ic_launcher"
+                               break
+                       end
+               end
+               if icon_name == null then
+                       # Old style drawable-hdpi/icon.png
+                       for res in resolutions do
+                               var path = project_root / "android/res/drawable-{res}/icon.png"
+                               if path.file_exists then
+                                       icon_name = "@drawable/icon"
+                                       break
+                               end
+                       end
                end
 
                var icon_declaration
-               if icon_available then
-                       icon_declaration = "android:icon=\"@drawable/icon\""
+               if icon_name != null then
+                       icon_declaration = "android:icon=\"{icon_name}\""
+                       if app_target_api >= 25 and has_round then
+                               icon_declaration += "\n\t\tandroid:roundIcon=\"@mipmap/ic_launcher_round\""
+                       end
                else icon_declaration = ""
 
-               # Also copy over the java files
-               dir = "{android_project_root}/src/"
+               # TODO android:roundIcon
+
+               # Copy the Java sources files
+               var java_dir = android_app_main / "java/"
+               java_dir.mkdir
                for mmodule in compiler.mainmodule.in_importation.greaters do
                        var extra_java_files = mmodule.extra_java_files
                        if extra_java_files != null then for file in extra_java_files do
                                var path = file.filename
-                               path.file_copy_to(dir/path.basename)
+                               path.file_copy_to(java_dir/path.basename)
                        end
                end
 
-               ## Generate Application.mk
-               dir = "{android_project_root}/jni/"
-               """
-APP_ABI := armeabi armeabi-v7a x86
-APP_PLATFORM := android-{{{app_target_api}}}
-""".write_to_file "{dir}/Application.mk"
-
-               ## Generate delegating makefile
-               """
-include $(call all-subdir-makefiles)
-""".write_to_file "{dir}/Android.mk"
+               # ---
+               # /app/src/main/AndroidManifest.xml
 
-               # Gather ldflags for Android
-               var ldflags = new Array[String]
-               var platform_name = "android"
-               for mmodule in compiler.mainmodule.in_importation.greaters do
-                       if mmodule.ldflags.keys.has(platform_name) then
-                               ldflags.add_all mmodule.ldflags[platform_name]
-                       end
-               end
-
-               ### generate makefile into "{compile_dir}/Android.mk"
-               dir = compile_dir
-               """
-LOCAL_PATH := $(call my-dir)
-include $(CLEAR_VARS)
-
-LOCAL_CFLAGS   := -D ANDROID -D WITH_LIBGC
-LOCAL_MODULE    := main
-LOCAL_SRC_FILES := \\
-{{{cfiles.join(" \\\n")}}}
-LOCAL_LDLIBS    := {{{ldflags.join(" ")}}} $(TARGET_ARCH)/libgc.a
-LOCAL_STATIC_LIBRARIES := android_native_app_glue
-
-include $(BUILD_SHARED_LIBRARY)
-
-$(call import-module,android/native_app_glue)
-               """.write_to_file("{dir}/Android.mk")
-
-               ### generate AndroidManifest.xml
-               dir = android_project_root
-               var manifest_file = new FileWriter.open("{dir}/AndroidManifest.xml")
+               var manifest_file = new FileWriter.open(android_app_main / "AndroidManifest.xml")
                manifest_file.write """
 <?xml version="1.0" encoding="utf-8"?>
-<!-- BEGIN_INCLUDE(manifest) -->
 <manifest xmlns:android="http://schemas.android.com/apk/res/android"
-        package="{{{app_package}}}"
-        android:versionCode="{{{project.version_code}}}"
-        android:versionName="{{{app_version}}}">
-
-    <uses-sdk
-        android:minSdkVersion="{{{app_min_api}}}"
-        android:targetSdkVersion="{{{app_target_api}}}"
-        {{{app_max_api}}} />
+        package="{{{app_package}}}">
 
     <application
-               android:label="@string/app_name"
                android:hasCode="true"
-               android:debuggable="{{{not release}}}"
+               android:allowBackup="true"
+               android:label="@string/app_name"
                {{{icon_declaration}}}>
 """
 
                for activity in project.activities do
                        manifest_file.write """
         <activity android:name="{{{activity}}}"
-                android:label="@string/app_name"
                 {{{project.manifest_activity_attributes.join("\n")}}}
                 {{{icon_declaration}}}>
+
+            <meta-data android:name="android.app.lib_name" android:value="nit_app" />
+
             <intent-filter>
                 <action android:name="android.intent.action.MAIN" />
                 <category android:name="android.intent.category.LAUNCHER" />
@@ -268,36 +464,8 @@ $(call import-module,android/native_app_glue)
 {{{project.manifest_lines.join("\n")}}}
 
 </manifest>
-<!-- END_INCLUDE(manifest) -->
 """
                manifest_file.close
-
-               ### Link to png sources
-               # libpng is not available on Android NDK
-               # FIXME make optional when we have alternatives to mnit
-               var nit_dir = toolcontext.nit_dir
-               var share_dir =  nit_dir/"share/"
-               if not share_dir.file_exists then
-                       print "Android project error: Nit share directory not found, please use the environment variable NIT_DIR"
-                       exit 1
-               end
-               share_dir = share_dir.realpath
-
-               # Ensure that android-setup-libgc.sh has been executed
-               if not "{share_dir}/libgc/arm/lib".file_exists then
-                       toolcontext.exec_and_check(["{share_dir}/libgc/android-setup-libgc.sh"], "Android project error")
-               end
-
-               # Copy GC files
-               for arch in ["arm", "x86", "mips"] do
-                       dir = android_project_root/arch
-                       dir.mkdir
-                       toolcontext.exec_and_check(["cp", "{share_dir}/libgc/{arch}/lib/libgc.a",
-                               dir/"libgc.a"], "Android project error")
-               end
-
-               toolcontext.exec_and_check(["ln", "-s", "{share_dir}/libgc/arm/include/gc/",
-                       "{compile_dir}/gc"], "Android project error")
        end
 
        redef fun write_makefile(compile_dir, cfiles)
@@ -308,24 +476,18 @@ $(call import-module,android/native_app_glue)
        redef fun compile_c_code(compile_dir)
        do
                var android_project_root = android_project_root.as(not null)
-               var short_project_name = compiler.mainmodule.name.replace("-", "_")
                var release = toolcontext.opt_release.value
 
-               # Compile C code (and thus Nit)
-               toolcontext.exec_and_check(["ndk-build", "-s", "-j", "-C", android_project_root], "Android project error")
-
-               # Generate the apk
-               var args = ["ant", "-f", android_project_root+"/build.xml"]
-               if release then
-                       args.add "release"
-               else args.add "debug"
+               # Compile C and Java code into an APK file
+               var verb = if release then "assembleRelease" else "assembleDebug"
+               var args = [gradlew_dir/"gradlew", verb, "-p", android_project_root]
+               if toolcontext.opt_verbose.value <= 1 then args.add "-q"
                toolcontext.exec_and_check(args, "Android project error")
 
-               # Move the apk to the target
+               # Move the APK to the target
                var outname = outfile(compiler.mainmodule)
-
                if release then
-                       var apk_path = "{android_project_root}/bin/{short_project_name}-release-unsigned.apk"
+                       var apk_path = "{android_project_root}/app/build/outputs/apk/release/app-release-unsigned.apk"
 
                        # Sign APK
                        var keystore_path= "KEYSTORE".environ
@@ -361,7 +523,7 @@ $(call import-module,android/native_app_glue)
                        toolcontext.exec_and_check(args, "Android project error")
                else
                        # Move to the expected output path
-                       args = ["mv", "{android_project_root}/bin/{short_project_name}-debug.apk", outname]
+                       args = ["mv", "{android_project_root}/app/build/outputs/apk/debug/app-debug.apk", outname]
                        toolcontext.exec_and_check(args, "Android project error")
                end
        end
@@ -370,9 +532,9 @@ end
 redef class JavaClassTemplate
        redef fun write_to_files(compdir)
        do
-               var jni_path = "jni/nit_compile/"
+               var jni_path = "cpp/"
                if compdir.has_suffix(jni_path) then
-                       var path = "{compdir.substring(0, compdir.length-jni_path.length)}/src/"
+                       var path = "{compdir.substring(0, compdir.length-jni_path.length)}/java/"
                        return super(path)
                else return super
        end
index 9cfdec9..6f09790 100644 (file)
@@ -39,8 +39,8 @@ class AppProject
        var version_code: Int is lazy do
 
                # Get the date and time (down to the minute) as string
-               var local_time = new Tm.localtime
-               var local_time_s = local_time.strftime("%y%m%d%H%M")
+               var gmtime = new Tm.gmtime
+               var local_time_s = gmtime.strftime("%y%m%d%H%M")
                return local_time_s.to_i
        end
 
index 0cb1ce0..27979b0 100644 (file)
@@ -32,7 +32,7 @@ private class IOSPlatform
        super Platform
 
        redef fun supports_libunwind do return false
-       redef fun supports_libgc do return false
+       redef fun supports_libgc do return true
        redef fun toolchain(toolcontext, compiler) do return new IOSToolchain(toolcontext, compiler)
 end
 
@@ -53,6 +53,8 @@ private class IOSToolchain
 
        redef fun default_outname do return "{super}.app"
 
+       private var bdwgc_dir: nullable String = null
+
        # Compile C files in `ios_project_root/app_project.name`
        redef fun compile_dir
        do
@@ -66,6 +68,20 @@ private class IOSToolchain
                if ios_project_root.file_exists then ios_project_root.rmdir
                compile_dir.mkdir
 
+               # Download the libgc/bdwgc sources
+               var nit_dir = toolcontext.nit_dir or else "."
+               var share_dir = (nit_dir/"share").realpath
+               if not share_dir.file_exists then
+                       print "iOS project error: Nit share directory not found, please use the environment variable NIT_DIR"
+                       exit 1
+               end
+
+               var bdwgc_dir = "{share_dir}/android-bdwgc/bdwgc"
+               self.bdwgc_dir = bdwgc_dir
+               if not bdwgc_dir.file_exists then
+                       toolcontext.exec_and_check(["{share_dir}/android-bdwgc/setup.sh"], "iOS project error")
+               end
+
                super
        end
 
@@ -101,16 +117,10 @@ private class IOSToolchain
 
                var icons_found = false
 
-               for path in app_files do
-                       var icon_dir = path / "ios" / "AppIcon.appiconset"
-                       if icon_dir.file_exists then
-                               icons_found = true
-
-                               # Prepare the `Assets.xcassets` folder
-                               var target_assets_dir = compile_dir / "Assets.xcassets"
-                               if not target_assets_dir.file_exists then target_assets_dir.mkdir
-
-                               """
+               # Prepare the `Assets.xcassets` folder
+               var target_assets_dir = compile_dir / "Assets.xcassets"
+               if not target_assets_dir.file_exists then target_assets_dir.mkdir
+               """
 {
   "info" : {
        "version" : 1,
@@ -118,13 +128,28 @@ private class IOSToolchain
   }
 }""".write_to_file target_assets_dir / "Contents.json"
 
+               (compile_dir / "assets").mkdir
+
+               for path in app_files do
+
+                       # Icon
+                       var icon_dir = path / "ios" / "AppIcon.appiconset"
+                       if icon_dir.file_exists then
+                               icons_found = true
+
+
                                # copy the res folder to the compile dir
                                icon_dir = icon_dir.realpath
                                toolcontext.exec_and_check(["cp", "-R", icon_dir, target_assets_dir], "iOS project error")
                        end
-               end
 
-               # TODO Register asset files
+                       # Assets
+                       var assets_dir = path / "assets"
+                       if assets_dir.file_exists then
+                               assets_dir = assets_dir.realpath
+                               toolcontext.exec_and_check(["cp", "-r", assets_dir, compile_dir], "iOS project error")
+                       end
+               end
 
                # ---
                # project_folder.xcodeproj (projet meta data)
@@ -142,6 +167,20 @@ private class IOSToolchain
                        pbx.add_file new PbxFile(file.filename.basename)
                end
 
+               # GC
+               if compiler.target_platform.supports_libgc then
+                       var bdwgc_dir = bdwgc_dir
+                       assert bdwgc_dir != null
+
+                       pbx.cflags = "-I '{bdwgc_dir}/include/' -I '{bdwgc_dir}/libatomic_ops/src' -fno-strict-aliasing " +
+                       "-DWITH_LIBGC -DNO_EXECUTE_PERMISSION -DALL_INTERIOR_POINTERS -DGC_NO_THREADS_DISCOVERY -DNO_DYLD_BIND_FULLY_IMAGE " +
+                       "-DGC_DISABLE_INCREMENTAL -DGC_THREADS -DUSE_MMAP -DUSE_MUNMAP -DGC_GCJ_SUPPORT -DJAVA_FINALIZATION "
+
+                       var gc_file = new PbxFile("{bdwgc_dir}/extra/gc.c")
+                       gc_file.cflags = "-Wno-tautological-pointer-compare"
+                       pbx.add_file gc_file
+               end
+
                # Basic storyboard, mainly to have the right screen size
                var launch_screen_storyboard = new LaunchScreenStoryboardTemplate
                launch_screen_storyboard.title = app_project.name
index 8fafcd1..3aec2f5 100644 (file)
@@ -23,8 +23,10 @@ private import parser_util
 private import annotation
 
 redef class ToolContext
+       # Detects the `platform` annotation to set a mobile target platform
        var platform_phase: Phase = new PlatformPhase(self, [modelize_property_phase])
 
+       # Get platform compilation settings from its `name`
        protected fun platform_from_name(name: String): nullable Platform
        do
                return null
index 776b656..62768a2 100644 (file)
@@ -85,6 +85,9 @@ class PbxFile
        # Path to `self`
        var path: String
 
+       # Compiler flags for this source file
+       var cflags: String = "" is writable
+
        # UUID for build elements
        private var build_uuid: String = sys.pbx_uuid_generator.next_uuid is lazy
 
@@ -104,15 +107,22 @@ class PbxFile
        end
 
        # PBX description of this file
-       private fun description: Writable do return """
+       private fun description: Writable
+       do
+               var extra = ""
+               var cflags = cflags
+               if not cflags.is_empty then extra = "\nsettings = \{COMPILER_FLAGS = \"{cflags}\"; \};"
+
+               return """
                {{{ref_uuid}}} /* {{{doc}}} */ = {
                        isa = PBXFileReference;
                        fileEncoding = 4;
                        lastKnownFileType = {{{file_type}}};
-                       path = {{{path}}};
-                       sourceTree = "<group>";
+                       path = '{{{path}}}';
+                       sourceTree = "<group>";{{{extra}}}
                        };
 """
+       end
 
        private fun add_to_project(project: PbxprojectTemplate)
        do
@@ -139,6 +149,9 @@ class PbxprojectTemplate
        # Name of the project
        var name: String
 
+       # OTHER_CFLAGS
+       var cflags = "" is writable
+
        # All body/implementation source files to be compiled
        private var source_files = new Array[PbxFile]
 
@@ -174,6 +187,7 @@ class PbxprojectTemplate
 """
 
                add """
+               0F4688411FDF8748004F34D4 /* assets in Resources */ = {isa = PBXBuildFile; fileRef = 0F4688401FDF8748004F34D4 /* assets */; };
                0FDD07A21C6F8E0E006FF70E /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0FDD07A11C6F8E0E006FF70E /* LaunchScreen.storyboard */; };
 /* End PBXBuildFile section */
 
@@ -219,6 +233,7 @@ class PbxprojectTemplate
                for file in files do add file.description
 
                add """
+               0F4688401FDF8748004F34D4 /* assets */ = {isa = PBXFileReference; lastKnownFileType = folder; name = assets; path = {{{name}}}/assets; sourceTree = SOURCE_ROOT; };
                0FDD07A11C6F8E0E006FF70E /* LaunchScreen.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; path = LaunchScreen.storyboard; sourceTree = "<group>"; };
 /* End PBXFileReference section */
 
@@ -253,6 +268,7 @@ class PbxprojectTemplate
                AF9F83CE1A5F0D21004B62C0 /* {{{name}}} */ = {
                        isa = PBXGroup;
                        children = (
+                               0F4688401FDF8748004F34D4 /* assets */,
 """
                        # Reference all known files
                        for file in files do add """
@@ -328,6 +344,7 @@ class PbxprojectTemplate
 
                add """
                                0FDD07A21C6F8E0E006FF70E /* LaunchScreen.storyboard in Resources */,
+                               0F4688411FDF8748004F34D4 /* assets in Resources */,
                        );
                        runOnlyForDeploymentPostprocessing = 0;
                };
@@ -414,6 +431,7 @@ class PbxprojectTemplate
                                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                                INFOPLIST_FILE = {{{name}}}/Info.plist;
                                LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+                               OTHER_CFLAGS = "{{{cflags.escape_to_c}}}";
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Debug;
@@ -424,6 +442,7 @@ class PbxprojectTemplate
                                ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
                                INFOPLIST_FILE = {{{name}}}/Info.plist;
                                LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
+                               OTHER_CFLAGS = "{{{cflags.escape_to_c}}}";
                                PRODUCT_NAME = "$(TARGET_NAME)";
                        };
                        name = Release;
index 13384f6..399691b 100644 (file)
 # Program used to test the Nit highlighter
 module test_highlight
 
-import highlight
+import htmlight
 import test_phase
 
 class TestHighlightVisitor
-       super HighlightVisitor
+       super HtmlightVisitor
        redef fun hrefto(e) do
                return "#" + e.c_name
        end
@@ -41,7 +41,7 @@ do
                var n = mb.mpropdef2node(pd)
                if not n isa APropdef then continue
                var hl = new TestHighlightVisitor
-               hl.enter_visit(n)
+               hl.highlight_node(n)
                print "<h1 id=\"{pd.c_name}\">{pd.full_name}</h1>"
                printn "<pre><code>"
                hl.html.write_to(stdout)
@@ -69,7 +69,7 @@ class THLVisitor
                        seen.add cn
 
                        var hl = new TestHighlightVisitor
-                       hl.enter_visit(n)
+                       hl.highlight_node(n)
                        print "<h2>AST node: {cn} at {n.location}</h2>"
                        printn "<pre><code>"
                        hl.html.write_to(stdout)
index 38f72c8..74e0b4c 100644 (file)
@@ -62,10 +62,16 @@ var mmodules = mbuilder.parse_full([args.first])
 if mmodules.is_empty then return
 mbuilder.run_phases
 toolcontext.run_global_phases(mmodules)
+var mainmodule = toolcontext.make_main_module(mmodules)
 
 # Build index
+var filters = new ModelFilter(
+       private_visibility,
+       accept_fictive = false,
+       accept_test = false)
+var view = new ModelView(model, mainmodule, filters)
 var index = new ModelIndex
-for mentity in model.private_view.mentities do
+for mentity in view.mentities do
        if mentity isa MClassDef or mentity isa MPropDef then continue
        index.index(mentity)
 end
index d7cc947..9596132 100644 (file)
@@ -55,42 +55,39 @@ do
        var model = modelbuilder.model
 
        print "All entities, including fictive ones:"
-       var v = new TestModelVisitor
-       v.min_visibility = private_visibility
-       v.include_fictive = true
+       var filters = new ModelFilter(private_visibility, accept_fictive = true)
+       var v = new TestModelVisitor(filters)
        v.enter_visit(model)
        v.cpt.print_elements(10)
        var names = v.names
 
        print "All entities:"
-       v = new TestModelVisitor
-       v.min_visibility = private_visibility
+       filters = new ModelFilter(private_visibility)
+       v = new TestModelVisitor(filters)
        v.enter_visit(model)
        v.cpt.print_elements(10)
 
        print "\nAll non-private entities:"
-       v = new TestModelVisitor
-       v.min_visibility = protected_visibility
+       filters = new ModelFilter(protected_visibility)
+       v = new TestModelVisitor(filters)
        v.enter_visit(model)
        v.cpt.print_elements(10)
 
        print "\nAll documented non-private entities:"
-       v = new TestModelVisitor
-       v.min_visibility = protected_visibility
-       v.include_empty_doc = false
+       filters = new ModelFilter(protected_visibility, accept_empty_doc = false)
+       v = new TestModelVisitor(filters)
        v.enter_visit(model)
        v.cpt.print_elements(10)
 
        print "\nAll public entities:"
-       v = new TestModelVisitor
-       v.min_visibility = public_visibility
+       filters = new ModelFilter(public_visibility)
+       v = new TestModelVisitor(filters)
        v.enter_visit(model)
        v.cpt.print_elements(10)
 
        print "\nAll documented public entities:"
-       v = new TestModelVisitor
-       v.min_visibility = public_visibility
-       v.include_empty_doc = false
+       filters = new ModelFilter(public_visibility, accept_empty_doc = false)
+       v = new TestModelVisitor(filters)
        v.enter_visit(model)
        v.cpt.print_elements(10)
 
index a0addf1..20935c2 100644 (file)
@@ -38,12 +38,14 @@ To test a method you have to instanciate its class:
        class Foo
                #    var foo = new Foo
                #    assert foo.baz(1, 2) == 3
-               fun baz(a, b: Int) do return a + b
+               fun baz(a, b: Int): Int do return a + b
        end
 
 `nitunit` is used to test Nit files:
 
+~~~sh
        $ nitunit foo.nit
+~~~
 
 ## Working with `TestSuites`
 
@@ -52,104 +54,175 @@ TestSuites are Nit files that define a set of TestCase for a particular module.
 The test suite module must be declared using the `test` annotation.
 The structure of a test suite is the following:
 
-       # test suite for module `foo`
-       module test_foo is test
+~~~nitish
+# test suite for module `foo`
+module test_foo is test
 
-       import foo # can be intrude to test private things
+import foo # can be intrude to test private things
 
-       class TestFoo
-               test
+class TestFoo
+       test
 
-               # test case for `foo::Foo::baz`
-               fun baz is test do
-                       var subject = new Foo
-                       assert subject.baz(1, 2) == 3
-               end
+       # test case for `foo::Foo::baz`
+       fun baz is test do
+               var subject = new Foo
+               assert subject.baz(1, 2) == 3
        end
+end
+~~~
 
 Test suite can be executed using the same `nitunit` command:
 
+~~~sh
        $ nitunit foo.nit
+~~~
 
 To be started automatically with nitunit, the module must be called `test_`
 followed by the name of the module to test.
 So for the module `foo.nit` the test suite will be called `test_foo.nit`.
 Otherwise, you can use the `-t` option to specify the test suite module name:
 
+~~~sh
        $ nitunit foo.nit -t my_test_suite.nit
+~~~
 
 `nitunit` will execute a test for each method annotated with `test` in a class also annotated with `test`
 so multiple tests can be executed for a single method:
 
-       class TestFoo
-               test
+~~~nitish
+class TestFoo
+       test
 
-               fun baz_1 is test do
-                       var subject = new Foo
-                       assert subject.baz(1, 2) == 3
-               end
+       fun baz_1 is test do
+               var subject = new Foo
+               assert subject.baz(1, 2) == 3
+       end
 
-               fun baz_2 is test do
-                       var subject = new Foo
-                       assert subject.baz(1, -2) == -1
-               end
+       fun baz_2 is test do
+               var subject = new Foo
+               assert subject.baz(1, -2) == -1
        end
+end
+~~~
 
 `TestSuites` also provide methods to configure the test run:
 
 `before` and `after` annotations can be added to methods that must be called before/after each test case.
 They can be used to factorize repetitive tasks:
 
-       class TestFoo
-               test
+~~~nitish
+class TestFoo
+       test
 
-               var subject: Foo is noinit
+       var subject: Foo is noinit
 
-               # Method executed before each test
-               redef fun set_up is before do
-                       subject = new Foo
-               end
+       # Method executed before each test
+       fun set_up is before do
+               subject = new Foo
+       end
 
-               fun baz_1 is test do
-                       assert subject.baz(1, 2) == 3
-               end
+       fun baz_1 is test do
+               assert subject.baz(1, 2) == 3
+       end
 
-               fun baz_2 is test do
-                       assert subject.baz(1, -2) == -1
-               end
+       fun baz_2 is test do
+               assert subject.baz(1, -2) == -1
        end
+end
+~~~
 
 When using custom test attributes, a empty init must be declared to allow automatic test running.
 
-`before_all` and `after_all` annotations can be set on methods that must be called before/after each test suite.
-They have to be declared at top level:
+At class level, `before_all` and `after_all` annotations can be set on methods that must be called before/after all the test cases in the class:
 
-       module test_bdd_connector
+~~~nitish
+class TestFoo
+       test
 
-       import bdd_connector
+       var subject: Foo is noinit
 
-       # Testing the bdd_connector
-       class TestConnector
-               test
-               # test cases using a server
+       # Method executed before all tests in the class
+       fun set_up is before_all do
+               subject = new Foo
        end
 
-       # Method executed before testing the module
-       fun before_module is before_all do
-               # start server before all test cases
+       fun baz_1 is test do
+               assert subject.baz(1, 2) == 3
        end
 
-       # Method executed after testing the module
-       fun after_module is after_all do
-               # stop server after all test cases
+       fun baz_2 is test do
+               assert subject.baz(1, -2) == -1
        end
+end
+~~~
+
+`before_all` and `after_all` annotations can also be set on methods that must be called before/after each test suite when declared at top level:
+
+~~~nitish
+module test_bdd_connector
+
+import bdd_connector
+
+# Testing the bdd_connector
+class TestConnector
+       test
+       # test cases using a server
+end
+
+# Method executed before testing the module
+fun setup_db is before_all do
+       # start server before all test cases
+end
+
+# Method executed after testing the module
+fun teardown_db is after_all do
+       # stop server after all test cases
+end
+~~~
+
+When dealing with multiple test suites, niunit allows you to import other test suites to factorize your tests:
+
+~~~nitish
+module test_bdd_users
+
+import test_bdd_connector
+
+# Testing the user table
+class TestUsersTable
+       test
+       # test cases using the db server from `test_bdd_connector`
+end
+
+fun setup_table is before_all do
+       # create user table
+end
+
+fun teardown_table is after_all do
+       # drop user table
+end
+~~~
+
+Methods with `before*` and `after*` annotations are linearized and called in different ways.
+
+* `before*` methods are called from the least specific to the most specific
+* `after*` methods are called from the most specific to the least specific
+
+In the previous example, the execution order would be:
+
+1. `test_bdd_connector::setup_db`
+2. `test_bdd_users::setup_table`
+3. `all test cases from test_bdd_users`
+4. `test_bdd_users::teardown_table`
+5. `test_bdd_connector::teardown_db`
 
 ## Generating test suites
 
 Write test suites for big modules can be a pepetitive and boring task...
 To make it easier, `nitunit` can generate test skeletons for Nit modules:
 
+~~~sh
        $ nitunit --gen-suite foo.nit
+~~~
 
 This will generate the test suite `test_foo` containing test case stubs for all public
 methods found in `foo.nit`.
index a17c8ab..0121162 100644 (file)
@@ -44,7 +44,7 @@ class NitUnitExecutor
        var mdproc = new MarkdownProcessor
 
        init do
-               mdproc.emitter.decorator = new NitunitDecorator(self)
+               mdproc.decorator = new NitunitDecorator(self)
        end
 
        # The associated documentation object
index 43ac8f5..13cf20f 100644 (file)
@@ -48,6 +48,14 @@ class NitUnitTester
                        if not suite_match_pattern(mclassdef) then continue
                        toolcontext.modelbuilder.total_classes += 1
 
+                       var test_class = new TestClass
+
+                       # method to execute before all tests in the class
+                       for mmethod in mclassdef.before_all do
+                               toolcontext.modelbuilder.total_tests += 1
+                               test_class.before_all.add new TestCase(suite, mmethod, toolcontext)
+                       end
+
                        var before = mclassdef.before
                        var after = mclassdef.after
 
@@ -58,8 +66,16 @@ class NitUnitTester
                                var test = new TestCase(suite, mpropdef, toolcontext)
                                test.before = before
                                test.after = after
-                               suite.test_cases.add test
+                               test_class.test_cases.add test
                        end
+
+                       # method to execute after all tests in the class
+                       for mmethod in mclassdef.after_all do
+                               toolcontext.modelbuilder.total_tests += 1
+                               test_class.after_all.add new TestCase(suite, mmethod, toolcontext)
+                       end
+
+                       suite.test_classes.add test_class
                end
                # method to execute after all tests in the module
                for mmethod in mmodule.after_all do
@@ -115,7 +131,7 @@ class TestSuite
        var toolcontext: ToolContext
 
        # List of `TestCase` to be executed in this suite.
-       var test_cases = new Array[TestCase]
+       var test_classes = new Array[TestClass]
 
        # Tests to be executed before the whole test suite.
        var before_all = new Array[TestCase]
@@ -125,7 +141,12 @@ class TestSuite
 
        # Display test suite status in std-out.
        fun show_status do
-               var test_cases = self.test_cases.to_a
+               var test_cases = new Array[TestCase]
+               for test_class in test_classes do
+                       test_cases.add_all test_class.before_all
+                       test_cases.add_all test_class.test_cases
+                       test_cases.add_all test_class.after_all
+               end
                test_cases.add_all before_all
                test_cases.add_all after_all
                toolcontext.show_unit_status("Test-suite of module " + mmodule.full_name, test_cases)
@@ -141,11 +162,13 @@ class TestSuite
                write_to_nit
                compile
                if failure != null then
-                       for case in test_cases do
-                               case.fail "Compilation Error"
-                               case.raw_output = failure
-                               toolcontext.clear_progress_bar
-                               toolcontext.show_unit(case)
+                       for test_class in test_classes do
+                               for case in test_class.test_cases do
+                                       case.fail "Compilation Error"
+                                       case.raw_output = failure
+                                       toolcontext.clear_progress_bar
+                                       toolcontext.show_unit(case)
+                               end
                        end
                        show_status
                        print ""
@@ -158,13 +181,25 @@ class TestSuite
                        toolcontext.clear_progress_bar
                        toolcontext.show_unit(before_module)
                        if before_module.error != null then
-                               for case in test_cases do
-                                       case.fail "Nitunit Error: before_module test failed"
-                                       toolcontext.clear_progress_bar
-                                       toolcontext.show_unit(case)
+                               for test_class in test_classes do
+                                       for case in test_class.before_all do
+                                               case.fail "Nitunit Error: before module test failed"
+                                               toolcontext.clear_progress_bar
+                                               toolcontext.show_unit(case)
+                                       end
+                                       for case in test_class.test_cases do
+                                               case.fail "Nitunit Error: before module test failed"
+                                               toolcontext.clear_progress_bar
+                                               toolcontext.show_unit(case)
+                                       end
+                                       for case in test_class.after_all do
+                                               case.fail "Nitunit Error: before module test failed"
+                                               toolcontext.clear_progress_bar
+                                               toolcontext.show_unit(case)
+                                       end
                                end
                                for after_module in after_all do
-                                       after_module.fail "Nitunit Error: before_module test failed"
+                                       after_module.fail "Nitunit Error: before module test failed"
                                        toolcontext.clear_progress_bar
                                        toolcontext.show_unit(after_module)
                                end
@@ -174,11 +209,39 @@ class TestSuite
                        end
                end
 
-               for case in test_cases do
-                       case.run
-                       toolcontext.clear_progress_bar
-                       toolcontext.show_unit(case)
-                       show_status
+               for test_class in test_classes do
+                       for case in test_class.before_all do
+                               case.run
+                               toolcontext.clear_progress_bar
+                               toolcontext.show_unit(case)
+                               if case.error != null then
+                                       for scase in test_class.test_cases do
+                                               scase.fail "Nitunit Error: before class test failed"
+                                               toolcontext.clear_progress_bar
+                                               toolcontext.show_unit(scase)
+                                       end
+                                       for scase in test_class.after_all do
+                                               scase.fail "Nitunit Error: before class test failed"
+                                               toolcontext.clear_progress_bar
+                                               toolcontext.show_unit(scase)
+                                       end
+                                       show_status
+                                       print ""
+                                       return
+                               end
+                       end
+                       for case in test_class.test_cases do
+                               case.run
+                               toolcontext.clear_progress_bar
+                               toolcontext.show_unit(case)
+                               show_status
+                       end
+                       for after_class in test_class.after_all do
+                               after_class.run
+                               toolcontext.clear_progress_bar
+                               toolcontext.show_unit(after_class)
+                               show_status
+                       end
                end
 
                for after_module in after_all do
@@ -201,8 +264,16 @@ class TestSuite
                for before_module in before_all do
                        before_module.write_to_nit(file)
                end
-               for case in test_cases do
-                       case.write_to_nit(file)
+               for test_class in test_classes do
+                       for case in test_class.before_all do
+                               case.write_to_nit(file)
+                       end
+                       for case in test_class.test_cases do
+                               case.write_to_nit(file)
+                       end
+                       for case in test_class.after_all do
+                               case.write_to_nit(file)
+                       end
                end
                for after_module in after_all do
                        after_module.write_to_nit(file)
@@ -215,7 +286,9 @@ class TestSuite
        fun to_xml: HTMLTag do
                var n = new HTMLTag("testsuite")
                n.attr("package", mmodule.name)
-               for test in test_cases do n.add test.to_xml
+               for test_class in test_classes do
+                       for test in test_class.test_cases do n.add test.to_xml
+               end
                return n
        end
 
@@ -258,6 +331,20 @@ class TestSuite
        var failure: nullable String = null
 end
 
+# A test class contains multiple test cases
+#
+# For each test class, methods can be executed before and after all cases.
+class TestClass
+       # List of `TestCase` to be executed in this suite.
+       var test_cases = new Array[TestCase]
+
+       # Tests to be executed before the whole test suite.
+       var before_all = new Array[TestCase]
+
+       # Tests to be executed after the whole test suite.
+       var after_all = new Array[TestCase]
+end
+
 # A test case is a unit test considering only a `MMethodDef`.
 class TestCase
        super UnitTest
@@ -383,84 +470,110 @@ end
 redef class MClassDef
        # Methods tagged with `before` in this class definition
        private fun before: Array[MMethodDef] do
-               var res = new Array[MMethodDef]
+               var res = new ArraySet[MMethodDef]
                for mpropdef in mpropdefs do
                        if mpropdef isa MMethodDef and mpropdef.is_before then
                                res.add mpropdef
                        end
                end
                var in_hierarchy = self.in_hierarchy
-               if in_hierarchy == null then return res
+               if in_hierarchy == null then return res.to_a
                for mclassdef in in_hierarchy.direct_greaters do
                        res.add_all mclassdef.before
                end
-               return res
+               var lin = res.to_a
+               mmodule.linearize_mpropdefs(lin)
+               return lin
        end
 
        # Methods tagged with `before_all` in this class definition
        private fun before_all: Array[MMethodDef] do
-               var res = new Array[MMethodDef]
+               var res = new ArraySet[MMethodDef]
                for mpropdef in mpropdefs do
                        if mpropdef isa MMethodDef and mpropdef.is_before_all then
                                res.add mpropdef
                        end
                end
                var in_hierarchy = self.in_hierarchy
-               if in_hierarchy == null then return res
+               if in_hierarchy == null then return res.to_a
                for mclassdef in in_hierarchy.direct_greaters do
                        res.add_all mclassdef.before_all
                end
-               return res
+               var lin = res.to_a
+               mmodule.linearize_mpropdefs(lin)
+               return lin
        end
 
        # Methods tagged with `after` in this class definition
        private fun after: Array[MMethodDef] do
-               var res = new Array[MMethodDef]
+               var res = new ArraySet[MMethodDef]
                for mpropdef in mpropdefs do
                        if mpropdef isa MMethodDef and mpropdef.is_after then
                                res.add mpropdef
                        end
                end
                var in_hierarchy = self.in_hierarchy
-               if in_hierarchy == null then return res
+               if in_hierarchy == null then return res.to_a
                for mclassdef in in_hierarchy.direct_greaters do
                        res.add_all mclassdef.after
                end
-               return res
+               var lin = res.to_a
+               mmodule.linearize_mpropdefs(lin)
+               return lin.reversed
        end
 
        # Methods tagged with `after_all` in this class definition
        private fun after_all: Array[MMethodDef] do
-               var res = new Array[MMethodDef]
+               var res = new ArraySet[MMethodDef]
                for mpropdef in mpropdefs do
                        if mpropdef isa MMethodDef and mpropdef.is_after_all then
                                res.add mpropdef
                        end
                end
                var in_hierarchy = self.in_hierarchy
-               if in_hierarchy == null then return res
+               if in_hierarchy == null then return res.to_a
                for mclassdef in in_hierarchy.direct_greaters do
                        res.add_all mclassdef.after_all
                end
-               return res
+               var lin = res.to_a
+               mmodule.linearize_mpropdefs(lin)
+               return lin.reversed
        end
 end
 
 redef class MModule
        # Methods tagged with `before_all` at the module level (in `Sys`)
        private fun before_all: Array[MMethodDef] do
-               for mclassdef in mclassdefs do
-                       if mclassdef.name == "Sys" then return mclassdef.before_all
+               var res = new Array[MMethodDef]
+               for mmodule in in_importation.greaters do
+                       for mclassdef in mmodule.mclassdefs do
+                               if mclassdef.name != "Sys" then continue
+                               for mpropdef in mclassdef.mpropdefs do
+                                       if not mpropdef isa MMethodDef or not mpropdef.is_before_all then continue
+                                       res.add mpropdef
+                               end
+                       end
                end
-               return new Array[MMethodDef]
+               var lin = res.to_a
+               linearize_mpropdefs(lin)
+               return lin
        end
 
        # Methods tagged with `after_all` at the module level (in `Sys`)
        private fun after_all: Array[MMethodDef] do
-               for mclassdef in mclassdefs do
-                       if mclassdef.name == "Sys" then return mclassdef.after_all
+               var res = new Array[MMethodDef]
+               for mmodule in in_importation.greaters do
+                       for mclassdef in mmodule.mclassdefs do
+                               if mclassdef.name != "Sys" then continue
+                               for mpropdef in mclassdef.mpropdefs do
+                                       if not mpropdef isa MMethodDef or not mpropdef.is_after_all then continue
+                                       res.add mpropdef
+                               end
+                       end
                end
-               return new Array[MMethodDef]
+               var lin = res.to_a
+               linearize_mpropdefs(lin)
+               return lin.reversed
        end
 end
 
diff --git a/src/web/api_catalog.nit b/src/web/api_catalog.nit
deleted file mode 100644 (file)
index 678f514..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-module api_catalog
-
-import web_base
-import catalog
-
-redef class NitwebConfig
-
-       # Catalog to pass to handlers.
-       var catalog: Catalog is noinit
-
-       # Build the catalog
-       #
-       # This method should be called at nitweb startup.
-       fun build_catalog do
-               var catalog = new Catalog(modelbuilder)
-               for mpackage in model.mpackages do
-                       catalog.deps.add_node(mpackage)
-                       for mgroup in mpackage.mgroups do
-                               for mmodule in mgroup.mmodules do
-                                       for imported in mmodule.in_importation.direct_greaters do
-                                               var ip = imported.mpackage
-                                               if ip == null or ip == mpackage then continue
-                                               catalog.deps.add_edge(mpackage, ip)
-                                       end
-                               end
-                       end
-                       catalog.git_info(mpackage)
-                       catalog.package_page(mpackage)
-               end
-               self.catalog = catalog
-       end
-end
-
-redef class APIRouter
-       redef init do
-               super
-               use("/catalog/highlighted", new APICatalogHighLighted(config))
-               use("/catalog/required", new APICatalogMostRequired(config))
-               use("/catalog/bytags", new APICatalogByTags(config))
-               use("/catalog/contributors", new APICatalogContributors(config))
-               use("/catalog/stats", new APICatalogStats(config))
-       end
-end
-
-abstract class APICatalogHandler
-       super APIHandler
-
-       # List the 10 best packages from `cpt`
-       fun list_best(cpt: Counter[MPackage]): JsonArray do
-               var res = new JsonArray
-               var best = cpt.sort
-               for i in [1..10] do
-                       if i > best.length then break
-                       res.add best[best.length-i]
-               end
-               return res
-       end
-
-       # List packages by group.
-       fun list_by(map: MultiHashMap[Object, MPackage]): JsonObject do
-               var res = new JsonObject
-               var keys = map.keys.to_a
-               alpha_comparator.sort(keys)
-               for k in keys do
-                       var projs = map[k].to_a
-                       alpha_comparator.sort(projs)
-                       res[k.to_s.html_escape] = new JsonArray.from(projs)
-               end
-               return res
-       end
-end
-
-class APICatalogStats
-       super APICatalogHandler
-
-       redef fun get(req, res) do
-               var obj = new JsonObject
-               obj["packages"] = config.model.mpackages.length
-               obj["maintainers"] = config.catalog.maint2proj.length
-               obj["contributors"] = config.catalog.contrib2proj.length
-               obj["modules"] = config.catalog.mmodules.sum
-               obj["classes"] = config.catalog.mclasses.sum
-               obj["methods"] = config.catalog.mmethods.sum
-               obj["loc"] = config.catalog.loc.sum
-               res.json obj
-       end
-end
-
-class APICatalogHighLighted
-       super APICatalogHandler
-
-       redef fun get(req, res) do res.json list_best(config.catalog.score)
-end
-
-class APICatalogMostRequired
-       super APICatalogHandler
-
-       redef fun get(req, res) do
-               if config.catalog.deps.not_empty then
-                       var reqs = new Counter[MPackage]
-                       for p in config.model.mpackages do
-                               reqs[p] = config.catalog.deps[p].smallers.length - 1
-                       end
-                       res.json list_best(reqs)
-                       return
-               end
-               res.json new JsonArray
-       end
-end
-
-class APICatalogByTags
-       super APICatalogHandler
-
-       redef fun get(req, res) do res.json list_by(config.catalog.tag2proj)
-end
-
-class APICatalogContributors
-       super APICatalogHandler
-
-       redef fun get(req, res) do
-               var obj = new JsonObject
-               obj["maintainers"] = new JsonArray.from(config.catalog.maint2proj.keys)
-               obj["contributors"] = new JsonArray.from(config.catalog.contrib2proj.keys)
-               res.json obj
-       end
-end
-
-redef class Person
-       super Serializable
-
-       redef fun core_serialize_to(v) do
-               v.serialize_attribute("name", name)
-               v.serialize_attribute("email", email)
-               v.serialize_attribute("page", page)
-               v.serialize_attribute("hash", (email or else "").md5.to_lower)
-       end
-end
diff --git a/src/web/api_docdown.nit b/src/web/api_docdown.nit
deleted file mode 100644 (file)
index bbdc9db..0000000
+++ /dev/null
@@ -1,347 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Nitdoc specific Markdown format handling for Nitweb
-module api_docdown
-
-import api_graph
-intrude import doc_down
-intrude import markdown::wikilinks
-import doc_commands
-import model::model_index
-
-redef class NitwebConfig
-       # Specific Markdown processor to use within Nitweb
-       var md_processor: MarkdownProcessor is lazy do
-               var proc = new MarkdownProcessor
-               proc.emitter.decorator = new NitwebDecorator(view, modelbuilder)
-               return proc
-       end
-end
-
-redef class APIRouter
-       redef init do
-               super
-               use("/docdown/", new APIDocdown(config))
-       end
-end
-
-# Docdown handler accept docdown as POST data and render it as HTML
-class APIDocdown
-       super APIHandler
-
-       redef fun post(req, res) do
-               res.html config.md_processor.process(req.body)
-       end
-end
-
-# Specific Markdown decorator for Nitweb
-#
-# We reuse all the implementation of the NitdocDecorator and add the wikilinks handling.
-class NitwebDecorator
-       super NitdocDecorator
-
-       # View used by wikilink commands to find model entities
-       var view: ModelView
-
-       # Modelbuilder used to access code
-       var modelbuilder: ModelBuilder
-
-       redef fun add_span_code(v, buffer, from, to) do
-               var text = new FlatBuffer
-               buffer.read(text, from, to)
-               var name = text.write_to_string
-               name = name.replace("nullable ", "")
-               var mentity = try_find_mentity(view, name)
-               if mentity == null then
-                       super
-               else
-                       v.add "<code>"
-                       v.write_mentity_link(mentity, text.write_to_string)
-                       v.add "</code>"
-               end
-       end
-
-       private fun try_find_mentity(view: ModelView, text: String): nullable MEntity do
-               var mentity = view.mentity_by_full_name(text)
-               if mentity != null then return mentity
-
-               var mentities = view.mentities_by_name(text)
-               if mentities.is_empty then
-                       return null
-               else if mentities.length > 1 then
-                       # TODO smart resolve conflicts
-               end
-               return mentities.first
-       end
-
-       redef fun add_wikilink(v, token) do
-               var link = token.link
-               if link == null then return
-               var cmd = new DocCommand(link.write_to_string)
-               cmd.render(v, token, view)
-       end
-end
-
-# Same as `InlineDecorator` but with wikilink commands handling
-class NitwebInlineDecorator
-       super InlineDecorator
-
-       # View used by wikilink commands to find model entities
-       var view: ModelView
-
-       # Modelbuilder used to access code
-       var modelbuilder: ModelBuilder
-
-       redef fun add_wikilink(v, token) do
-               var link = token.link
-               if link == null then return
-               var cmd = new DocCommand(link.write_to_string)
-               cmd.render(v, token, view)
-       end
-end
-
-redef class MarkdownEmitter
-       # Find the MEntity that matches `name`.
-       #
-       # Write an error if the entity is not found
-       fun find_mentity(model: ModelView, name: nullable String): nullable MEntity do
-               if name == null then
-                       write_error("No MEntity found")
-                       return null
-               end
-               # Lookup by full name
-               var mentity = model.mentity_by_full_name(name)
-               if mentity != null then return mentity
-
-               var mentities = model.mentities_by_name(name)
-               if mentities.is_empty then
-                       var suggest = model.find(name, 3)
-                       var msg = new Buffer
-                       msg.append "No MEntity found for name `{name}`"
-                       if suggest.not_empty then
-                               msg.append " (suggestions: "
-                               var i = 0
-                               for s in suggest do
-                                       msg.append "`{s.full_name}`"
-                                       if i < suggest.length - 1 then msg.append ", "
-                                       i += 1
-                               end
-                               msg.append ")"
-                       end
-                       write_error(msg.write_to_string)
-                       return null
-               else if mentities.length > 1 then
-                       var msg = new Buffer
-                       msg.append "Conflicts for name `{name}`"
-                       msg.append " (conflicts: "
-                       var i = 0
-                       for s in mentities do
-                               msg.append "`{s.full_name}`"
-                               if i < mentities.length - 1 then msg.append ", "
-                               i += 1
-                       end
-                       msg.append ")"
-                       write_warning(msg.write_to_string)
-               end
-               return mentities.first
-       end
-
-       # Write a warning in the output
-       fun write_warning(text: String) do
-               emit_text "<p class='text-warning'>Warning: {text}</p>"
-       end
-
-       # Write an error in the output
-       fun write_error(text: String) do
-               emit_text "<p class='text-danger'>Error: {text}</p>"
-       end
-
-       # Write a link to a mentity in the output
-       fun write_mentity_link(mentity: MEntity, text: nullable String) do
-               var link = mentity.web_url
-               var name = text or else mentity.name
-               var mdoc = mentity.mdoc_or_fallback
-               var comment = null
-               if mdoc != null then comment = mdoc.synopsis
-               decorator.add_link(self, link, name, comment)
-       end
-
-       # Write a mentity list in the output
-       fun write_mentity_list(mentities: Collection[MEntity]) do
-               add "<ul>"
-               for mentity in mentities do
-                       var mdoc = mentity.mdoc_or_fallback
-                       add "<li>"
-                       write_mentity_link(mentity)
-                       if mdoc != null then
-                               add " - "
-                               emit_text mdoc.synopsis
-                       end
-                       add "</li>"
-               end
-               add "</ul>"
-       end
-end
-
-redef interface DocCommand
-
-       # Emit the HTML related to the execution of this doc command
-       fun render(v: MarkdownEmitter, token: TokenWikiLink, model: ModelView) do
-               v.write_error("Not yet implemented command `{token.link or else "null"}`")
-       end
-end
-
-redef class UnknownCommand
-       redef fun render(v, token, model) do
-               var link = token.link
-               if link == null then
-                       v.write_error("Empty command")
-                       return
-               end
-               var full_name = link.write_to_string
-               var mentity = v.find_mentity(model, full_name)
-               if mentity == null then return
-               v.write_mentity_link(mentity)
-       end
-end
-
-redef class ArticleCommand
-       redef fun render(v, token, model) do
-               if args.is_empty then
-                       v.write_error("Expected one arg: the MEntity name")
-                       return
-               end
-               var name = args.first
-               var mentity = v.find_mentity(model, name)
-               if mentity == null then return
-               var mdoc = mentity.mdoc_or_fallback
-               if mdoc == null then
-                       v.write_warning("No MDoc for mentity `{name}`")
-                       return
-               end
-               v.add "<h3>"
-               v.write_mentity_link(mentity)
-               v.add " - "
-               v.emit_text mdoc.synopsis
-               v.add "</h3>"
-               v.add v.processor.process(mdoc.comment).write_to_string
-       end
-end
-
-redef class CommentCommand
-       redef fun render(v, token, model) do
-               if args.is_empty then
-                       v.write_error("Expected one arg: the MEntity name")
-                       return
-               end
-               var name = args.first
-               var mentity = v.find_mentity(model, name)
-               if mentity == null then return
-               var mdoc = mentity.mdoc_or_fallback
-               if mdoc == null then
-                       v.write_warning("No MDoc for mentity `{name}`")
-                       return
-               end
-               v.add v.processor.process(mdoc.comment).write_to_string
-       end
-end
-
-redef class ListCommand
-       redef fun render(v, token, model) do
-               if args.is_empty then
-                       v.write_error("Expected one arg: the MEntity name")
-                       return
-               end
-               var name = args.first
-               var mentity = v.find_mentity(model, name)
-               if mentity == null then return
-               if mentity isa MPackage then
-                       v.write_mentity_list(mentity.mgroups)
-               else if mentity isa MGroup then
-                       var res = new Array[MEntity]
-                       res.add_all mentity.in_nesting.smallers
-                       res.add_all mentity.mmodules
-                       v.write_mentity_list(res)
-               else if mentity isa MModule then
-                       v.write_mentity_list(mentity.mclassdefs)
-               else if mentity isa MClass then
-                       v.write_mentity_list(mentity.collect_intro_mproperties(model))
-               else if mentity isa MClassDef then
-                       v.write_mentity_list(mentity.mpropdefs)
-               else if mentity isa MProperty then
-                       v.write_mentity_list(mentity.mpropdefs)
-               else
-                       v.write_error("No list found for name `{name}`")
-               end
-       end
-end
-
-redef class CodeCommand
-       redef fun render(v, token, model) do
-               if args.is_empty then
-                       v.write_error("Expected one arg: the MEntity name")
-                       return
-               end
-               var name = args.first
-               var mentity = v.find_mentity(model, name)
-               if mentity == null then return
-               if mentity isa MClass then mentity = mentity.intro
-               if mentity isa MProperty then mentity = mentity.intro
-               var source = render_source(mentity, v.decorator.as(NitwebDecorator).modelbuilder)
-               if source == null then
-                       v.write_error("No source for MEntity `{name}`")
-                       return
-               end
-               v.add "<pre>"
-               v.add source
-               v.add "</pre>"
-       end
-
-       # Highlight `mentity` source code.
-       private fun render_source(mentity: MEntity, modelbuilder: ModelBuilder): nullable HTMLTag do
-               var node = modelbuilder.mentity2node(mentity)
-               if node == null then return null
-               var hl = new HighlightVisitor
-               hl.enter_visit node
-               return hl.html
-       end
-end
-
-redef class GraphCommand
-       redef fun render(v, token, model) do
-               if args.is_empty then
-                       v.write_error("Expected one arg: the MEntity name")
-                       return
-               end
-               var name = args.first
-               var mentity = v.find_mentity(model, name)
-               if mentity == null then return
-               var g = new InheritanceGraph(mentity, model)
-               v.add g.draw(3, 3).to_svg
-       end
-end
-
-redef class Text
-       # Read `self` between `nstart` and `nend` (excluded) and writte chars to `out`.
-       private fun read(out: FlatBuffer, nstart, nend: Int): Int do
-               var pos = nstart
-               while pos < length and pos < nend do
-                       out.add self[pos]
-                       pos += 1
-               end
-               if pos == length then return -1
-               return pos
-       end
-end
diff --git a/src/web/api_model.nit b/src/web/api_model.nit
deleted file mode 100644 (file)
index 4f1a148..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-module api_model
-
-import web_base
-import highlight
-import uml
-import model::model_index
-
-redef class APIRouter
-       redef init do
-               super
-               use("/list", new APIList(config))
-               use("/search", new APISearch(config))
-               use("/random", new APIRandom(config))
-               use("/entity/:id", new APIEntity(config))
-               use("/entity/:id/doc", new APIEntityDoc(config))
-               use("/code/:id", new APIEntityCode(config))
-               use("/uml/:id", new APIEntityUML(config))
-               use("/linearization/:id", new APIEntityLinearization(config))
-               use("/defs/:id", new APIEntityDefs(config))
-               use("/inheritance/:id", new APIEntityInheritance(config))
-       end
-end
-
-# List all mentities.
-#
-# MEntities can be filtered on their kind using the `k` parameter.
-# Allowed kinds are `package`, `group`, `module`, `class`, `classdef`, `property`, `propdef`.
-#
-# List size can be limited with the `n` parameter.
-#
-# Example: `GET /list?k=module?n=10`
-class APIList
-       super APIHandler
-
-       # List mentities depending on the `k` kind parameter.
-       fun list_mentities(req: HttpRequest): Array[MEntity] do
-               var k = req.string_arg("k")
-               var mentities = new Array[MEntity]
-               if k == "package" then
-                       for mentity in config.view.mpackages do mentities.add mentity
-               else if k == "group" then
-                       for mentity in config.view.mgroups do mentities.add mentity
-               else if k == "module" then
-                       for mentity in config.view.mmodules do mentities.add mentity
-               else if k == "class" then
-                       for mentity in config.view.mclasses do mentities.add mentity
-               else if k == "classdef" then
-                       for mentity in config.view.mclassdefs do mentities.add mentity
-               else if k == "property" then
-                       for mentity in config.view.mproperties do mentities.add mentity
-               else if k == "propdef" then
-                       for mentity in config.view.mpropdefs do mentities.add mentity
-               else
-                       for mentity in config.view.mentities do mentities.add mentity
-               end
-               return mentities
-       end
-
-       # Sort mentities by lexicographic order
-       #
-       # TODO choose order from request
-       fun sort_mentities(req: HttpRequest, mentities: Array[MEntity]) : Array[MEntity] do
-               var sorted = mentities.to_a
-               var sorter = new MEntityNameSorter
-               sorter.sort(sorted)
-               return sorted
-       end
-
-       # Limit mentities depending on the `n` parameter.
-       fun limit_mentities(req: HttpRequest, mentities: Array[MEntity]): Array[MEntity] do
-               var n = req.int_arg("n")
-               if n != null then
-                       return mentities.sub(0, n)
-               end
-               return mentities
-       end
-
-       redef fun get(req, res) do
-               var mentities = list_mentities(req)
-               mentities = sort_mentities(req, mentities)
-               mentities = limit_mentities(req, mentities)
-               res.json new JsonArray.from(mentities)
-       end
-end
-
-# Search mentities from a query string.
-#
-# Example: `GET /search?q=Arr`
-class APISearch
-       super APIList
-
-       redef fun get(req, res) do
-               var q = req.string_arg("q")
-               if q == null then
-                       res.json new JsonArray
-                       return
-               end
-               var n = req.int_arg("n")
-               res.json new JsonArray.from(config.view.find(q, n))
-       end
-end
-
-# Return a random list of MEntities.
-#
-# Example: `GET /random?n=10&k=module`
-class APIRandom
-       super APIList
-
-       # Randomize mentities order.
-       fun randomize_mentities(req: HttpRequest, mentities: Array[MEntity]): Array[MEntity] do
-               var res = mentities.to_a
-               res.shuffle
-               return res
-       end
-
-       redef fun get(req, res) do
-               var mentities = list_mentities(req)
-               mentities = randomize_mentities(req, mentities)
-               mentities = limit_mentities(req, mentities)
-               res.json new JsonArray.from(mentities)
-       end
-end
-
-# Return the JSON representation of a MEntity.
-#
-# Example: `GET /entity/core::Array`
-class APIEntity
-       super APIHandler
-
-       redef fun get(req, res) do
-               var mentity = mentity_from_uri(req, res)
-               if mentity == null then return
-               res.raw_json mentity.to_full_json
-       end
-end
-
-# Return the full MDoc of a MEntity.
-#
-# Example: `GET /entity/core::Array/doc`
-class APIEntityDoc
-       super APIHandler
-
-       redef fun get(req, res) do
-               var mentity = mentity_from_uri(req, res)
-               if mentity == null then return
-
-               var obj = new JsonObject
-               var mdoc = mentity.mdoc_or_fallback
-               if mdoc != null then
-                       obj["documentation"] = mdoc.html_documentation.write_to_string
-                       obj["location"] = mdoc.location
-               end
-               res.json obj
-       end
-end
-
-# List ancestors, parents, child and descendants of MEntity
-#
-# Example: `GET /entity/core::Array/inheritance`
-class APIEntityInheritance
-       super APIHandler
-
-       redef fun get(req, res) do
-               var mentity = mentity_from_uri(req, res)
-               if mentity == null then return
-               res.json mentity.hierarchy_poset(config.view)[mentity]
-       end
-end
-
-# Linearize super definitions of a MClassDef or a MPropDef if any.
-#
-# Example: `GET /entity/core::Array/linearization`
-class APIEntityLinearization
-       super APIHandler
-
-       redef fun get(req, res) do
-               var mentity = mentity_from_uri(req, res)
-               if mentity == null then return
-               var lin = mentity.collect_linearization(config.mainmodule)
-               if lin == null then
-                       res.api_error(404, "No linearization for mentity `{mentity.full_name}`")
-                       return
-               end
-               var mentities = new JsonArray
-               for e in lin do mentities.add e
-               res.json mentities
-       end
-end
-
-# List definitions of a MEntity.
-#
-# Example: `GET /defs/core::Array`
-class APIEntityDefs
-       super APIList
-
-       redef fun get(req, res) do
-               var mentity = mentity_from_uri(req, res)
-               if mentity == null then return
-               var mentities: Array[MEntity]
-               if mentity isa MPackage then
-                       mentities = mentity.mgroups.to_a
-               else if mentity isa MGroup then
-                       mentities = new Array[MEntity]
-                       mentities.add_all mentity.in_nesting.direct_smallers
-                       mentities.add_all mentity.mmodules
-               else if mentity isa MModule then
-                       mentities = mentity.mclassdefs
-               else if mentity isa MClass then
-                       mentities = mentity.mclassdefs
-               else if mentity isa MClassDef then
-                       mentities = mentity.mpropdefs
-               else if mentity isa MProperty then
-                       mentities = mentity.mpropdefs
-               else
-                       res.api_error(404, "No definition list for mentity `{mentity.full_name}`")
-                       return
-               end
-               mentities = sort_mentities(req, mentities)
-               mentities = limit_mentities(req, mentities)
-               res.json new JsonArray.from(mentities)
-       end
-end
-
-abstract class SVGHandler
-       super APIHandler
-
-       # Render a `dot` string as a svg image.
-       fun render_dot(dot: Text): String do
-               var proc = new ProcessDuplex("dot", "-Tsvg")
-               var svg = proc.write_and_read(dot)
-               proc.close
-               proc.wait
-               return svg
-       end
-end
-
-# Return a UML representation of MEntity.
-#
-# Example: `GET /entity/core::Array/uml`
-class APIEntityUML
-       super SVGHandler
-
-       redef fun get(req, res) do
-               var mentity = mentity_from_uri(req, res)
-               if mentity == null then return
-               var dot
-               if mentity isa MClassDef then mentity = mentity.mclass
-               if mentity isa MClass then
-                       var uml = new UMLModel(config.view, config.mainmodule)
-                       dot = uml.generate_class_uml.write_to_string
-               else if mentity isa MModule then
-                       var uml = new UMLModel(config.view, mentity)
-                       dot = uml.generate_package_uml.write_to_string
-               else
-                       res.api_error(404, "No UML for mentity `{mentity.full_name}`")
-                       return
-               end
-               res.send render_dot(dot)
-       end
-end
-
-# Return the source code of MEntity.
-#
-# Example: `GET /entity/core::Array/code`
-class APIEntityCode
-       super APIHandler
-
-       redef fun get(req, res) do
-               var mentity = mentity_from_uri(req, res)
-               if mentity == null then return
-               var source = render_source(mentity)
-               if source == null then
-                       res.api_error(404, "No code for mentity `{mentity.full_name}`")
-                       return
-               end
-               res.send source
-       end
-
-       # Highlight `mentity` source code.
-       private fun render_source(mentity: MEntity): nullable HTMLTag do
-               var node = config.modelbuilder.mentity2node(mentity)
-               if node == null then return null
-               var hl = new HighlightVisitor
-               hl.enter_visit node
-               return hl.html
-       end
-end
diff --git a/src/web/web_base.nit b/src/web/web_base.nit
deleted file mode 100644 (file)
index d50cc2a..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-# This file is part of NIT ( http://www.nitlanguage.org ).
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# Base classes used by `nitweb`.
-module web_base
-
-import model::model_views
-import model::model_json
-import doc_down
-import popcorn
-import popcorn::pop_config
-import popcorn::pop_repos
-import popcorn::pop_json
-
-# Nitweb config file.
-class NitwebConfig
-       super AppConfig
-
-       redef fun default_db_name do return "nitweb"
-
-       # Model to use.
-       var model: Model
-
-       # MModule used to flatten model.
-       var mainmodule: MModule
-
-       # Modelbuilder used to access sources.
-       var modelbuilder: ModelBuilder
-
-       # The JSON API does not filter anything by default.
-       #
-       # So we can cache the model view.
-       var view: ModelView is lazy do
-               var view = new ModelView(model)
-               view.min_visibility = private_visibility
-               view.include_fictive = true
-               view.include_empty_doc = true
-               view.include_attribute = true
-               view.include_test = true
-               return view
-       end
-end
-
-# Specific handler for the nitweb API.
-abstract class APIHandler
-       super Handler
-
-       # App config.
-       var config: NitwebConfig
-
-       # Find the MEntity ` with `full_name`.
-       fun find_mentity(model: ModelView, full_name: nullable String): nullable MEntity do
-               if full_name == null then return null
-               return model.mentity_by_full_name(full_name.from_percent_encoding)
-       end
-
-       # Try to load the mentity from uri with `/:id`.
-       #
-       # Send 400 if `:id` is null.
-       # Send 404 if no entity is found.
-       # Return null in both cases.
-       fun mentity_from_uri(req: HttpRequest, res: HttpResponse): nullable MEntity do
-               var id = req.param("id")
-               if id == null then
-                       res.api_error(400, "Expected mentity full name")
-                       return null
-               end
-               var mentity = find_mentity(config.view, id)
-               if mentity == null then
-                       res.api_error(404, "MEntity `{id}` not found")
-               end
-               return mentity
-       end
-end
-
-# A Rooter dedicated to APIHandlers.
-class APIRouter
-       super Router
-
-       # App config
-       var config: NitwebConfig
-end
-
-redef class HttpResponse
-
-       # Return an HTTP error response with `status`
-       #
-       # Like the rest of the API, errors are formated as JSON:
-       # ~~~json
-       # { "status": 404, "message": "Not found" }
-       # ~~~
-       fun api_error(status: Int, message: String) do
-               json(new APIError(status, message), status)
-       end
-
-       # Write data as JSON and set the right content type header.
-       fun raw_json(json: nullable String, status: nullable Int) do
-               header["Content-Type"] = media_types["json"].as(not null)
-               if json == null then
-                       send(null, status)
-               else
-                       send(json, status)
-               end
-       end
-end
-
-# An error returned by the API.
-#
-# Can be serialized to json.
-class APIError
-       serialize
-
-       # Reponse status
-       var status: Int
-
-       # Response error message
-       var message: String
-end
-
-# Fullname representation that can be used to build decorated links
-#
-# * MPackage: `mpackage_name`
-# * MGroup: `(mpackage_name::)mgroup_name`
-class Namespace
-       super Array[nullable NSEntity]
-       super NSEntity
-       serialize
-
-       redef fun to_s do return self.join("")
-       redef fun serialize_to(v) do to_a.serialize_to(v)
-end
-
-# Something that goes in a Namespace
-#
-# Can be either:
-# * a `NSToken` for tokens like `::`, `>` and `$`
-# * a `MSRef` for references to mentities
-interface NSEntity
-       super Serializable
-end
-
-# A reference to a MEntity that can be rendered as a link.
-#
-# We do not reuse `MEntityRef` ref since NSRef can be found in a ref and create
-# an infinite loop.
-class NSRef
-       super NSEntity
-       serialize
-
-       # The mentity to link to/
-       var mentity: MEntity
-
-       redef fun core_serialize_to(v) do
-               v.serialize_attribute("web_url", mentity.web_url)
-               v.serialize_attribute("api_url", mentity.api_url)
-               v.serialize_attribute("name", mentity.name)
-       end
-end
-
-# A namespace token representation
-#
-# Used for namespace tokens like `::`, `>` and `$`
-redef class String
-       super NSEntity
-end
-
-redef class MEntity
-
-       # URL to `self` within the web interface.
-       fun web_url: String do return "/doc/" / full_name
-
-       # URL to `self` within the JSON api.
-       fun api_url: String do return "/api/entity/" / full_name
-
-       redef fun core_serialize_to(v) do
-               super
-               v.serialize_attribute("namespace", namespace)
-               v.serialize_attribute("web_url", web_url)
-               v.serialize_attribute("api_url", api_url)
-       end
-
-       # Return `self.full_name` as an object that can be serialized to json.
-       fun namespace: nullable Namespace do return null
-
-       # Return a new NSRef to `self`.
-       fun to_ns_ref: NSRef do return new NSRef(self)
-end
-
-redef class MEntityRef
-       redef fun core_serialize_to(v) do
-               super
-               v.serialize_attribute("namespace", mentity.namespace)
-               v.serialize_attribute("web_url", mentity.web_url)
-               v.serialize_attribute("api_url", mentity.api_url)
-               v.serialize_attribute("name", mentity.name)
-               v.serialize_attribute("mdoc", mentity.mdoc_or_fallback)
-               v.serialize_attribute("visibility", mentity.visibility.to_s)
-               v.serialize_attribute("modifiers", mentity.collect_modifiers)
-               v.serialize_attribute("class_name", mentity.class_name)
-               var mentity = self.mentity
-               if mentity isa MMethod then
-                       v.serialize_attribute("msignature", mentity.intro.msignature)
-               else if mentity isa MMethodDef then
-                       v.serialize_attribute("msignature", mentity.msignature)
-               else if mentity isa MVirtualTypeProp then
-                       v.serialize_attribute("bound", to_mentity_ref(mentity.intro.bound))
-               else if mentity isa MVirtualTypeDef then
-                       v.serialize_attribute("bound", to_mentity_ref(mentity.bound))
-               end
-               v.serialize_attribute("location", mentity.location)
-       end
-end
-
-redef class MDoc
-
-       # Add doc down processing
-       redef fun core_serialize_to(v) do
-               v.serialize_attribute("html_synopsis", html_synopsis.write_to_string)
-       end
-end
-
-redef class MPackage
-       redef fun namespace do return new Namespace.from([to_ns_ref])
-end
-
-redef class MGroup
-       redef fun namespace do
-               var p = parent
-               if p == null then
-                       return new Namespace.from([to_ns_ref, ">": nullable NSEntity])
-               end
-               return new Namespace.from([p.namespace, to_ns_ref, ">": nullable NSEntity])
-       end
-end
-
-redef class MModule
-       redef fun namespace do
-               var mgroup = self.mgroup
-               if mgroup == null then
-                       return new Namespace.from([to_ns_ref])
-               end
-               return new Namespace.from([mgroup.mpackage.to_ns_ref, "::", to_ns_ref: nullable NSEntity])
-       end
-
-       private fun ns_for(visibility: MVisibility): nullable Namespace do
-               if visibility <= private_visibility then return namespace
-               var mgroup = self.mgroup
-               if mgroup == null then return namespace
-               return mgroup.mpackage.namespace
-       end
-end
-
-redef class MClass
-       redef fun namespace do
-               return new Namespace.from([intro_mmodule.ns_for(visibility), "::", to_ns_ref: nullable NSEntity])
-       end
-end
-
-redef class MClassDef
-       redef fun namespace do
-               if is_intro then
-                       return new Namespace.from([mmodule.ns_for(mclass.visibility), "$", to_ns_ref: nullable NSEntity])
-               else if mclass.intro_mmodule.mpackage != mmodule.mpackage then
-                       return new Namespace.from([mmodule.namespace, "$", mclass.namespace: nullable NSEntity])
-               else if mclass.visibility > private_visibility then
-                       return new Namespace.from([mmodule.namespace, "$", mclass.to_ns_ref: nullable NSEntity])
-               end
-               return new Namespace.from([mmodule.full_name, "$::", mclass.intro_mmodule.to_ns_ref: nullable NSEntity])
-       end
-
-       redef fun web_url do return "{mclass.web_url}/lin#{full_name}"
-end
-
-redef class MProperty
-       redef fun namespace do
-               if intro_mclassdef.is_intro then
-                       return new Namespace.from([intro_mclassdef.mmodule.ns_for(visibility), "::", intro_mclassdef.mclass.to_ns_ref, "::", to_ns_ref: nullable NSEntity])
-               else
-                       return new Namespace.from([intro_mclassdef.mmodule.namespace, "::", intro_mclassdef.mclass.to_ns_ref, "::", to_ns_ref: nullable NSEntity])
-               end
-       end
-end
-
-redef class MPropDef
-       redef fun namespace do
-               var res = new Namespace
-               res.add mclassdef.namespace
-               res.add "$"
-
-               if mclassdef.mclass == mproperty.intro_mclassdef.mclass then
-                       res.add to_ns_ref
-               else
-                       if mclassdef.mmodule.mpackage != mproperty.intro_mclassdef.mmodule.mpackage then
-                               res.add mproperty.intro_mclassdef.mmodule.ns_for(mproperty.visibility)
-                               res.add "::"
-                       else if mproperty.visibility <= private_visibility then
-                               if mclassdef.mmodule.namespace_for(mclassdef.mclass.visibility) != mproperty.intro_mclassdef.mmodule.mpackage then
-                                       res.add "::"
-                                       res.add mproperty.intro_mclassdef.mmodule.to_ns_ref
-                                       res.add "::"
-                               end
-                       end
-                       if mclassdef.mclass != mproperty.intro_mclassdef.mclass then
-                               res.add mproperty.intro_mclassdef.to_ns_ref
-                               res.add "::"
-                       end
-                       res.add to_ns_ref
-               end
-               return res
-       end
-
-       redef fun web_url do return "{mproperty.web_url}/lin#{full_name}"
-end
-
-redef class MClassType
-       redef var web_url = mclass.web_url is lazy
-end
-
-redef class MNullableType
-       redef var web_url = mtype.web_url is lazy
-end
-
-redef class MParameterType
-       redef var web_url = mclass.web_url is lazy
-end
-
-redef class MVirtualType
-       redef var web_url = mproperty.web_url is lazy
-end
-
-redef class POSetElement[E]
-       super Serializable
-
-       redef fun core_serialize_to(v) do
-               assert self isa POSetElement[MEntity]
-               v.serialize_attribute("direct_greaters", to_mentity_refs(direct_greaters))
-               v.serialize_attribute("direct_smallers", to_mentity_refs(direct_smallers))
-       end
-end
index 10bcfb7..00f601e 100644 (file)
@@ -1,4 +1,3 @@
-mnit
 android
 java
 jvm
@@ -8,3 +7,6 @@ emscripten
 ui_test
 readline
 postgres
+test_nitcorn
+test_annot_pkgconfig
+test_glsl_validation
index 619b61b..e08c0ad 100644 (file)
@@ -3,10 +3,6 @@ cocoa_message_box
 hello_cocoa
 hello_ios
 test_platform_ios
-mnit
-shoot_linux
-dino_linux
-ballz_linux
 mpi
 emscripten
 neo_doxygen
similarity index 86%
rename from contrib/inkscape_tools/tests/app/src/s2pn_linux.nit
rename to tests/base_init_ret.nit
index 7cc5cee..cdfb88e 100644 (file)
@@ -1,7 +1,5 @@
 # This file is part of NIT ( http://www.nitlanguage.org ).
 #
-# Copyright 2014 Alexis Laferrière <alexis.laf@xymus.net>
-#
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-import s2pn
-import mnit::linux
+import core::kernel
+
+class A
+       init
+       do
+               return
+       end
+end
+(new A).output_class_name
index e69de29..a95d440 100644 (file)
@@ -0,0 +1 @@
+test_platform_ios
index ee5fd03..c643d3d 100644 (file)
@@ -1,4 +1,4 @@
 module_1.nit -d $WRITE
 base_attr_nullable.nit -d $WRITE
---private base_attr_nullable.nit -d $WRITE
+--private base_attr_nullable.nit --no-attributes -d $WRITE
 --no-render --test test_prog -d $WRITE
index 0e7de6a..4f02479 100644 (file)
@@ -1,3 +1,4 @@
 -f base_simple3.nit
 base_simple3.nit
 -f --line-id-prefix XYZ --first-line 38 --last-line 46 base_simple3.nit
+--txt base_simple3.nit
index f11b0b1..74ce65f 100644 (file)
@@ -10,3 +10,5 @@ test_nitunit4 --no-color -o $WRITE
 test_nitunit5.nit --no-color -o $WRITE
 test_nitunit6.nit --no-color -o $WRITE
 test_nitunit7.nit --no-color -o $WRITE
+test_nitunit8.nit --no-color -o $WRITE
+test_nitunit11.nit --no-color -o $WRITE
index 79da3ab..3bc599d 100644 (file)
@@ -1,3 +1,3 @@
-base_simple3.nit -c A
-base_simple3.nit -c foo
-base_simple3.nit -c base_simple3
+base_simple3.nit -c A --no-color
+base_simple3.nit -c foo --no-color
+base_simple3.nit -c "defs: base_simple3::base_simple3" --no-color
index c900600..2649ee7 100644 (file)
@@ -1,5 +1,4 @@
 fatal error: 'endian.h' file not found
-Error: dev package for `glesv1_cm` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.
 Error: dev package for `glesv2` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.
 Error: dev package for `egl` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.
 Error: dev package for `ncurses` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.
diff --git a/tests/sav/base_init_ret.res b/tests/sav/base_init_ret.res
new file mode 100644 (file)
index 0000000..f70f10e
--- /dev/null
@@ -0,0 +1 @@
+A
index c8148e7..27eaad6 100644 (file)
@@ -1 +1 @@
-alt/error_annot_pkgconfig_alt0.nit:17,38--46: Error: dev package for `error_annot_pkgconfig_alt0` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.
+Error: dev package for `error_annot_pkgconfig_alt0` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.
index 4fb9358..2f724ff 100644 (file)
@@ -1,2 +1,2 @@
-alt/error_annot_pkgconfig_alt1.nit:18,38--82: Error: dev package for `missing-lib` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.
-alt/error_annot_pkgconfig_alt1.nit:18,38--82: Error: dev package for `other missing lib` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.
+Error: dev package for `missing-lib` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.
+Error: dev package for `other missing lib` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.
diff --git a/tests/sav/example_vsm.res b/tests/sav/example_vsm.res
new file mode 100644 (file)
index 0000000..0e44311
--- /dev/null
@@ -0,0 +1,4 @@
+usage: example_vsm <files>
+  -h, --help             Show this help message
+  -w, --whitelist-exts   Allowed file extensions (default is [])
+  -b, --blacklist-exts   Allowed file extensions (default is [])
index 38a9498..dfb2522 100644 (file)
@@ -1,37 +1,37 @@
 1      1       0.0000000000000000      1
 2      1       0.0000000000000000      0
 3      2       1.0000000000000000      01
-4      3       0.9182958340544894      010
+4      3       0.9182958340544896      010
 5      5       0.9709505944546686      01001
-6      8       0.9544340029249650      01001010
+6      8       0.9544340029249649      01001010
 7      13      0.9612366047228760      0100101001001
-8      21      0.9587118829771316      010010100100101001010
-9      34      0.9596868937742170      0100101001001010010100100101001001
-10     55      0.9593160320543778      ...
+8      21      0.9587118829771318      010010100100101001010
+9      34      0.9596868937742169      0100101001001010010100100101001001
+10     55      0.9593160320543777      ...
 11     89      0.9594579158386696      ...
-12     144     0.9594037542210228      ...
-13     233     0.9594244469559864      ...
-14     377     0.9594165437404406      ...
-15     610     0.9594195626031440      ...
-16     987     0.9594184095152248      ...
-17     1597    0.9594188499578102      ...
-18     2584    0.9594186817240320      ...
+12     144     0.9594037542210230      ...
+13     233     0.9594244469559867      ...
+14     377     0.9594165437404407      ...
+15     610     0.9594195626031441      ...
+16     987     0.9594184095152245      ...
+17     1597    0.9594188499578099      ...
+18     2584    0.9594186817240321      ...
 19     4181    0.9594187459836638      ...
-20     6765    0.9594187214386752      ...
-21     10946   0.9594187308140276      ...
-22     17711   0.9594187272329618      ...
-23     28657   0.9594187286008076      ...
-24     46368   0.9594187280783368      ...
-25     75025   0.9594187282779028      ...
-26     121393  0.9594187282016752      ...
-27     196418  0.9594187282307916      ...
+20     6765    0.9594187214386756      ...
+21     10946   0.9594187308140278      ...
+22     17711   0.9594187272329620      ...
+23     28657   0.9594187286008073      ...
+24     46368   0.9594187280783371      ...
+25     75025   0.9594187282779029      ...
+26     121393  0.9594187282016755      ...
+27     196418  0.9594187282307918      ...
 28     317811  0.9594187282196702      ...
-29     514229  0.9594187282239182      ...
-30     832040  0.9594187282222962      ...
+29     514229  0.9594187282239184      ...
+30     832040  0.9594187282222959      ...
 31     1346269 0.9594187282229156      ...
-32     2178309 0.9594187282226794      ...
-33     3524578 0.9594187282227690      ...
-34     5702887 0.9594187282227344      ...
-35     9227465 0.9594187282227478      ...
-36     14930352        0.9594187282227430      ...
+32     2178309 0.9594187282226789      ...
+33     3524578 0.9594187282227691      ...
+34     5702887 0.9594187282227347      ...
+35     9227465 0.9594187282227479      ...
+36     14930352        0.9594187282227429      ...
 37     24157817        0.9594187282227448      ...
index 58ad327..82286d6 100644 (file)
@@ -7,5 +7,5 @@ i=32 h=19 p=2.375000
 i=64 h=45 p=2.812500
 i=128 h=95 p=2.968750
 i=256 h=197 p=3.078125
-i=512 h=385 p=3.007813
+i=512 h=385 p=3.007812
 i=1000 h=765 p=3.060000
index dfc03c1..8524fc6 100644 (file)
 <p><img src="../res/c94d8a73ccfe143ebde7599e88f5f5ce.png" alt="Tinks3D"/></p>
 </div><h2>Content</h2><ul>
 <li><strong>test_prog</strong>: <span class="synopsys nitdoc">Test program for model tools.</span> (test_prog)<ul>
+<li><strong>examples</strong> (test_prog/examples)<ul>
+<li><strong>game_examples</strong> (test_prog/examples/game_examples.nit)</li>
+</ul>
+</li>
 <li><strong>game</strong>: <span class="synopsys nitdoc">Gaming group</span> (test_prog/game)<ul>
 <li><strong>game</strong>: <span class="synopsys nitdoc">A game abstraction for RPG.</span> (test_prog/game/game.nit)</li>
 </ul>
@@ -76,8 +80,8 @@
 </ul>
 <h3>Quality</h3>
 <ul class="box">
-<li>28 warnings (63/kloc)</li>
-<li>95% documented</li>
+<li>28 warnings (59/kloc)</li>
+<li>82% documented</li>
 </ul>
 <h3>Tags</h3>
 <a href="../index.html#tag_test">test</a>, <a href="../index.html#tag_game">game</a><h3>Requirements</h3>
@@ -85,10 +89,10 @@ none<h3>Clients</h3>
 none<h3>Contributors</h3>
 <ul class="box"><li><a href="http:&#47;&#47;www.example.com&#47;~jdoe"><img src="https://secure.gravatar.com/avatar/694ea0904ceaf766c6738166ed89bafb?size=20&amp;default=retro">&nbsp;John Doe</a></li><li><img src="https://secure.gravatar.com/avatar/db3f2909768694ad2bb6409b44627182?size=20&amp;default=retro">&nbsp;Riri</li><li>Fifi (http:&#47;&#47;www.example.com&#47;~fifi)</li><li>Loulou</li></ul><h3>Stats</h3>
 <ul class="box">
-<li>8 modules</li>
-<li>22 classes</li>
-<li>68 methods</li>
-<li>439 lines of code</li>
+<li>9 modules</li>
+<li>23 classes</li>
+<li>75 methods</li>
+<li>471 lines of code</li>
 </ul>
 </div>
 </div> <!-- container-fluid -->
index 9238b51..9fdb265 100644 (file)
@@ -1,5 +1,6 @@
+Empty README for group `examples` (readme-warning)
 Empty README for group `excluded` (readme-warning)
-Errors: 0. Warnings: 1.
+Errors: 0. Warnings: 2.
 MGroupPage excluded
        # excluded.section
                ## excluded.intro
@@ -33,6 +34,8 @@ ReadmePage excluded
 ReadmePage test_prog
        # mdarticle-0
 
+ReadmePage examples
+
 ReadmePage game
        # mdarticle-0
 
@@ -126,6 +129,78 @@ MPropertyPage main
        # main.section
                ## test_prog-__Sys__main.intro
 
+MGroupPage examples
+       # examples.section
+               ## test_prog__examples.intro
+               ## test_prog__examples.concerns
+               ## test_prog.concern
+               ## test_prog.concern
+               ## test_prog__examples.concern
+               ## test_prog__examples-.concern
+                       ### test_prog__examples-.definition
+                               #### test_prog__examples-.intros_redefs
+                                       ##### list.group
+                                               ###### test_prog__examples-.intros
+                                               ###### test_prog__examples-.redefs
+
+MModulePage game_examples
+       # game_examples.section
+               ## test_prog__examples-.intro
+               ## test_prog__examples-.importation
+                       ### test_prog__examples-.graph
+                       ### list.group
+                               #### test_prog__examples-.imports
+                               #### test_prog__examples-.clients
+               ## test_prog__examples-.concerns
+               ## test_prog.concern
+               ## test_prog.concern
+               ## test_prog__examples.concern
+               ## test_prog__examples-.concern
+                       ### test_prog__examples-__MyGame.definition-list
+                               #### test_prog__examples-__MyGame.definition
+                                       ##### test_prog__examples-__MyGame.intros_redefs
+                                               ###### list.group
+                                                       ####### test_prog__examples-__MyGame.intros
+                                                       ####### test_prog__examples-__MyGame.redefs
+
+MClassPage MyGame
+       # MyGame.section
+               ## test_prog__examples-__MyGame.intro
+               ## test_prog__examples-__MyGame.inheritance
+                       ### test_prog__examples-__MyGame.graph
+                       ### list.group
+                               #### test_prog__examples-__MyGame.parents
+                               #### test_prog__examples-__MyGame.ancestors
+                               #### test_prog__examples-__MyGame.children
+                               #### test_prog__examples-__MyGame.descendants
+               ## test_prog__examples-__MyGame.constructors
+                       ### test_prog__platform-__Object__init.definition
+               ## test_prog__examples-__MyGame.concerns
+               ## test_prog.concern
+               ## test_prog.concern
+               ## test_prog__examples.concern
+               ## test_prog__examples-.concern
+                       ### test_prog__examples-__MyGame__computer_characters.definition
+                               #### test_prog__examples-__MyGame__computer_characters.lin
+                       ### test_prog__examples-__MyGame__computer_characters_61d.definition
+                       ### test_prog__examples-__MyGame__pause_game.definition
+                               #### test_prog__examples-__MyGame__pause_game.lin
+                       ### test_prog__examples-__MyGame__player_characters.definition
+                               #### test_prog__examples-__MyGame__player_characters.lin
+                       ### test_prog__examples-__MyGame__player_characters_61d.definition
+                       ### test_prog__examples-__MyGame__start_game.definition
+                               #### test_prog__examples-__MyGame__start_game.lin
+                       ### test_prog__examples-__MyGame__stop_game.definition
+                               #### test_prog__examples-__MyGame__stop_game.lin
+
+MPropertyPage computer_characters=
+       # computer_characters=.section
+               ## test_prog__examples-__MyGame__computer_characters_61d.intro
+
+MPropertyPage player_characters=
+       # player_characters=.section
+               ## test_prog__examples-__MyGame__player_characters_61d.intro
+
 MGroupPage game
        # game.section
                ## test_prog__game.intro
@@ -186,22 +261,52 @@ MClassPage Game
 MPropertyPage computer_characters
        # computer_characters.section
                ## test_prog__game-__Game__computer_characters.intro
+               ## test_prog__game-__Game__computer_characters.concerns
+               ## test_prog.concern
+               ## test_prog.concern
+               ## test_prog__examples.concern
+               ## test_prog__examples-.concern
+                       ### test_prog__examples-__MyGame__computer_characters.definition
 
 MPropertyPage pause_game
        # pause_game.section
                ## test_prog__game-__Game__pause_game.intro
+               ## test_prog__game-__Game__pause_game.concerns
+               ## test_prog.concern
+               ## test_prog.concern
+               ## test_prog__examples.concern
+               ## test_prog__examples-.concern
+                       ### test_prog__examples-__MyGame__pause_game.definition
 
 MPropertyPage player_characters
        # player_characters.section
                ## test_prog__game-__Game__player_characters.intro
+               ## test_prog__game-__Game__player_characters.concerns
+               ## test_prog.concern
+               ## test_prog.concern
+               ## test_prog__examples.concern
+               ## test_prog__examples-.concern
+                       ### test_prog__examples-__MyGame__player_characters.definition
 
 MPropertyPage start_game
        # start_game.section
                ## test_prog__game-__Game__start_game.intro
+               ## test_prog__game-__Game__start_game.concerns
+               ## test_prog.concern
+               ## test_prog.concern
+               ## test_prog__examples.concern
+               ## test_prog__examples-.concern
+                       ### test_prog__examples-__MyGame__start_game.definition
 
 MPropertyPage stop_game
        # stop_game.section
                ## test_prog__game-__Game__stop_game.intro
+               ## test_prog__game-__Game__stop_game.concerns
+               ## test_prog.concern
+               ## test_prog.concern
+               ## test_prog__examples.concern
+               ## test_prog__examples-.concern
+                       ### test_prog__examples-__MyGame__stop_game.definition
 
 MGroupPage platform
        # platform.section
@@ -1034,24 +1139,24 @@ MModulePage rpg
                                #### test_prog__rpg__rpg.imports
                                #### test_prog__rpg__rpg.clients
 
-Generated 99 pages
+Generated 105 pages
  list:
-  MPropertyPage: 58 (58.58%)
-  MClassPage: 20 (20.20%)
-  MModulePage: 9 (9.09%)
-  ReadmePage: 5 (5.05%)
-  MGroupPage: 5 (5.05%)
-  SearchPage: 1 (1.01%)
-  OverviewPage: 1 (1.01%)
-Found 185 mentities
+  MPropertyPage: 60 (57.14%)
+  MClassPage: 21 (20.00%)
+  MModulePage: 10 (9.52%)
+  ReadmePage: 6 (5.71%)
+  MGroupPage: 6 (5.71%)
+  SearchPage: 1 (0.95%)
+  OverviewPage: 1 (0.95%)
+Found 198 mentities
  list:
-  MMethodDef: 68 (36.75%)
-  MMethod: 57 (30.81%)
-  MClassDef: 22 (11.89%)
-  MClass: 20 (10.81%)
-  MModule: 9 (4.86%)
-  MGroup: 5 (2.70%)
-  MPackage: 2 (1.08%)
-  MVirtualTypeDef: 1 (0.54%)
-  MVirtualTypeProp: 1 (0.54%)
+  MMethodDef: 75 (37.87%)
+  MMethod: 59 (29.79%)
+  MClassDef: 23 (11.61%)
+  MClass: 21 (10.60%)
+  MModule: 10 (5.05%)
+  MGroup: 6 (3.03%)
+  MPackage: 2 (1.01%)
+  MVirtualTypeDef: 1 (0.50%)
+  MVirtualTypeProp: 1 (0.50%)
 quicksearch-list.js
diff --git a/tests/sav/niti/fixme/test_json_deserialization_alt2.res b/tests/sav/niti/fixme/test_json_deserialization_alt2.res
deleted file mode 100644 (file)
index 49c3e35..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-# Nit:
-<A: true a 0.123 1234 asdf false p4ssw0rd>
-
-# Json:
-{"b":true,"c":"a","f":0.123,"i":1234,"serialization_specific_name":"asdf","n":null}
-
-# Back in Nit:
-<A: true a 0.123 1234 asdf false p4ssw0rd>
-
-# Nit:
-<B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
-
-# Json:
-{"b":false,"c":"b","f":123.123,"i":2345,"serialization_specific_name":"hjkl","n":12,"ii":1111,"ss":"qwer"}
-
-# Back in Nit:
-<B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
-
-# Nit:
-<C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
-
-# Json:
-{"a":{"b":true,"c":"a","f":0.123,"i":1234,"serialization_specific_name":"asdf","n":null},"b":{"b":false,"c":"b","f":123.123,"i":2345,"serialization_specific_name":"hjkl","n":12,"ii":1111,"ss":"qwer"},"aa":{"b":true,"c":"a","f":0.123,"i":1234,"serialization_specific_name":"asdf","n":null}}
-
-# Back in Nit:
-<C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
-
-Serialization warning: Cycle detected in serialized object, replacing reference with 'null'.
-# Nit:
-<D: <B: <A: false b 123.123 2345 new line ->
-<- false p4ssw0rd> 1111        f"\r\/> true>
-
-# Json:
-{"b":false,"c":"b","f":123.123,"i":2345,"serialization_specific_name":"new line ->\n<-","n":null,"ii":1111,"ss":"\tf\"\r\\/","d":null}
-
-# Back in Nit:
-<D: <B: <A: false b 123.123 2345 new line ->
-<- false p4ssw0rd> 1111        f"\r\/> false>
-
-# Nit:
-<E: a: hello, 1234, 123.4; b: hella, 2345, 234.5>
-
-# Json:
-{"a":["hello",1234,123.4],"b":["hella",2345,234.5]}
-
-# Back in Nit:
-<E: a: hello, 1234, 123.4; b: hella, 2345, 234.5>
-
-# Nit:
-<F: 2222>
-
-# Json:
-{"n":2222}
-
-# Back in Nit:
-<F: 2222>
-
-# Nit:
-<F: 33.33>
-
-# Json:
-{"n":33.33}
-
-# Back in Nit:
-<F: 33.33>
-
-# Nit:
-<G: hs: -1, 0; s: one, two; hm: one. 1, two. 2; am: three. 3, four. 4>
-
-# Json:
-{"hs":[-1,0],"s":["one","two"],"hm":{"one":1,"two":2},"am":{"three":"3","four":"4"}}
-
-# Back in Nit:
-<G: hs: -1, 0; s: ; hm: ; am: >
-
-Deserialization Error: Doesn't know how to deserialize class "Set[String]"
-Deserialization Error: Wrong type on `G::s` expected `Set[String]`, got `null`
-Deserialization Error: Wrong type on `G::hm` expected `HashMap[String, Int]`, got `Bool`
-Deserialization Error: Wrong type on `G::am` expected `ArrayMap[String, String]`, got `Bool`
diff --git a/tests/sav/niti/fixme/test_json_deserialization_alt4.res b/tests/sav/niti/fixme/test_json_deserialization_alt4.res
deleted file mode 100644 (file)
index d7156b6..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-# Nit:
-<A: true a 0.123 1234 asdf false p4ssw0rd>
-
-# Json:
-{
-       "b": true,
-       "c": "a",
-       "f": 0.123,
-       "i": 1234,
-       "serialization_specific_name": "asdf",
-       "n": null
-}
-
-# Back in Nit:
-<A: true a 0.123 1234 asdf false p4ssw0rd>
-
-# Nit:
-<B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
-
-# Json:
-{
-       "b": false,
-       "c": "b",
-       "f": 123.123,
-       "i": 2345,
-       "serialization_specific_name": "hjkl",
-       "n": 12,
-       "ii": 1111,
-       "ss": "qwer"
-}
-
-# Back in Nit:
-<B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
-
-# Nit:
-<C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
-
-# Json:
-{
-       "a": {
-               "b": true,
-               "c": "a",
-               "f": 0.123,
-               "i": 1234,
-               "serialization_specific_name": "asdf",
-               "n": null
-       },
-       "b": {
-               "b": false,
-               "c": "b",
-               "f": 123.123,
-               "i": 2345,
-               "serialization_specific_name": "hjkl",
-               "n": 12,
-               "ii": 1111,
-               "ss": "qwer"
-       },
-       "aa": {
-               "b": true,
-               "c": "a",
-               "f": 0.123,
-               "i": 1234,
-               "serialization_specific_name": "asdf",
-               "n": null
-       }
-}
-
-# Back in Nit:
-<C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
-
-Serialization warning: Cycle detected in serialized object, replacing reference with 'null'.
-# Nit:
-<D: <B: <A: false b 123.123 2345 new line ->
-<- false p4ssw0rd> 1111        f"\r\/> true>
-
-# Json:
-{
-       "b": false,
-       "c": "b",
-       "f": 123.123,
-       "i": 2345,
-       "serialization_specific_name": "new line ->\n<-",
-       "n": null,
-       "ii": 1111,
-       "ss": "\tf\"\r\\/",
-       "d": null
-}
-
-# Back in Nit:
-<D: <B: <A: false b 123.123 2345 new line ->
-<- false p4ssw0rd> 1111        f"\r\/> false>
-
-# Nit:
-<E: a: hello, 1234, 123.4; b: hella, 2345, 234.5>
-
-# Json:
-{
-       "a": ["hello", 1234, 123.4],
-       "b": ["hella", 2345, 234.5]
-}
-
-# Back in Nit:
-<E: a: hello, 1234, 123.4; b: hella, 2345, 234.5>
-
-# Nit:
-<F: 2222>
-
-# Json:
-{
-       "n": 2222
-}
-
-# Back in Nit:
-<F: 2222>
-
-# Nit:
-<F: 33.33>
-
-# Json:
-{
-       "n": 33.33
-}
-
-# Back in Nit:
-<F: 33.33>
-
-# Nit:
-<G: hs: -1, 0; s: one, two; hm: one. 1, two. 2; am: three. 3, four. 4>
-
-# Json:
-{
-       "hs": [-1, 0],
-       "s": ["one", "two"],
-       "hm": {
-               "one": 1,
-               "two": 2
-       },
-       "am": {
-               "three": "3",
-               "four": "4"
-       }
-}
-
-# Back in Nit:
-<G: hs: -1, 0; s: ; hm: ; am: >
-
-Deserialization Error: Doesn't know how to deserialize class "Set[String]"
-Deserialization Error: Wrong type on `G::s` expected `Set[String]`, got `null`
-Deserialization Error: Wrong type on `G::hm` expected `HashMap[String, Int]`, got `Bool`
-Deserialization Error: Wrong type on `G::am` expected `ArrayMap[String, String]`, got `Bool`
diff --git a/tests/sav/niti/fixme/test_msgpack_deserialization_alt2.res b/tests/sav/niti/fixme/test_msgpack_deserialization_alt2.res
deleted file mode 100644 (file)
index a1c58f3..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-# 1. Nit source:
-<A: true a 0.123 1234 asdf false p4ssw0rd>
-
-# 2. MsgPack:
-\x86\xA1\x62\xC3\xA1\x63\xA1\x61\xA1\x66\xCB\x3F\xBF\x97\x24\x74\x53\x8E\xF3\xA1\x69\xCD\x04\xD2\xBB\x73\x65\x72\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x5F\x73\x70\x65\x63\x69\x66\x69\x63\x5F\x6E\x61\x6D\x65\xA4\x61\x73\x64\x66\xA1\x6E\xC0
-
-# 3. JSON:
-{
-       "b": true,
-       "c": "a",
-       "f": 0.123,
-       "i": 1234,
-       "serialization_specific_name": "asdf",
-       "n": null
-}
-
-# 4. Back in Nit (no metadata):
-<A: true a 0.123 1234 asdf false p4ssw0rd>
-
-# 1. Nit source:
-<B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
-
-# 2. MsgPack:
-\x88\xA1\x62\xC2\xA1\x63\xA1\x62\xA1\x66\xCB\x40\x5E\xC7\xDF\x3B\x64\x5A\x1D\xA1\x69\xCD\x09\x29\xBB\x73\x65\x72\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x5F\x73\x70\x65\x63\x69\x66\x69\x63\x5F\x6E\x61\x6D\x65\xA4\x68\x6A\x6B\x6C\xA1\x6E\x0C\xA2\x69\x69\xCD\x04\x57\xA2\x73\x73\xA4\x71\x77\x65\x72
-
-# 3. JSON:
-{
-       "b": false,
-       "c": "b",
-       "f": 123.123,
-       "i": 2345,
-       "serialization_specific_name": "hjkl",
-       "n": 12,
-       "ii": 1111,
-       "ss": "qwer"
-}
-
-# 4. Back in Nit (no metadata):
-<B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>
-
-# 1. Nit source:
-<C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
-
-# 2. MsgPack:
-\x83\xA1\x61\x86\xA1\x62\xC3\xA1\x63\xA1\x61\xA1\x66\xCB\x3F\xBF\x97\x24\x74\x53\x8E\xF3\xA1\x69\xCD\x04\xD2\xBB\x73\x65\x72\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x5F\x73\x70\x65\x63\x69\x66\x69\x63\x5F\x6E\x61\x6D\x65\xA4\x61\x73\x64\x66\xA1\x6E\xC0\xA1\x62\x88\xA1\x62\xC2\xA1\x63\xA1\x62\xA1\x66\xCB\x40\x5E\xC7\xDF\x3B\x64\x5A\x1D\xA1\x69\xCD\x09\x29\xBB\x73\x65\x72\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x5F\x73\x70\x65\x63\x69\x66\x69\x63\x5F\x6E\x61\x6D\x65\xA4\x68\x6A\x6B\x6C\xA1\x6E\x0C\xA2\x69\x69\xCD\x04\x57\xA2\x73\x73\xA4\x71\x77\x65\x72\xA2\x61\x61\x86\xA1\x62\xC3\xA1\x63\xA1\x61\xA1\x66\xCB\x3F\xBF\x97\x24\x74\x53\x8E\xF3\xA1\x69\xCD\x04\xD2\xBB\x73\x65\x72\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x5F\x73\x70\x65\x63\x69\x66\x69\x63\x5F\x6E\x61\x6D\x65\xA4\x61\x73\x64\x66\xA1\x6E\xC0
-
-# 3. JSON:
-{
-       "a": {
-               "b": true,
-               "c": "a",
-               "f": 0.123,
-               "i": 1234,
-               "serialization_specific_name": "asdf",
-               "n": null
-       },
-       "b": {
-               "b": false,
-               "c": "b",
-               "f": 123.123,
-               "i": 2345,
-               "serialization_specific_name": "hjkl",
-               "n": 12,
-               "ii": 1111,
-               "ss": "qwer"
-       },
-       "aa": {
-               "b": true,
-               "c": "a",
-               "f": 0.123,
-               "i": 1234,
-               "serialization_specific_name": "asdf",
-               "n": null
-       }
-}
-
-# 4. Back in Nit (no metadata):
-<C: <A: true a 0.123 1234 asdf false p4ssw0rd> <B: <A: false b 123.123 2345 hjkl true p4ssw0rd> 1111 qwer>>
-
-Serialization warning: Cycle detected in serialized object, replacing reference with 'null'.
-# 1. Nit source:
-<D: <B: <A: false b 123.123 2345 new line ->
-<- false p4ssw0rd> 1111        f"\r\/> true>
-
-# 2. MsgPack:
-\x89\xA1\x62\xC2\xA1\x63\xA1\x62\xA1\x66\xCB\x40\x5E\xC7\xDF\x3B\x64\x5A\x1D\xA1\x69\xCD\x09\x29\xBB\x73\x65\x72\x69\x61\x6C\x69\x7A\x61\x74\x69\x6F\x6E\x5F\x73\x70\x65\x63\x69\x66\x69\x63\x5F\x6E\x61\x6D\x65\xAE\x6E\x65\x77\x20\x6C\x69\x6E\x65\x20\x2D\x3E\x0A\x3C\x2D\xA1\x6E\xC0\xA2\x69\x69\xCD\x04\x57\xA2\x73\x73\xA6\x09\x66\x22\x0D\x5C\x2F\xA1\x64\xC0
-
-# 3. JSON:
-{
-       "b": false,
-       "c": "b",
-       "f": 123.123,
-       "i": 2345,
-       "serialization_specific_name": "new line ->\n<-",
-       "n": null,
-       "ii": 1111,
-       "ss": "\tf\"\r\\/",
-       "d": null
-}
-
-# 4. Back in Nit (no metadata):
-<D: <B: <A: false b 123.123 2345 new line ->
-<- false p4ssw0rd> 1111        f"\r\/> false>
-
-# 1. Nit source:
-<E: a: hello, 1234, 123.4; b: hella, 2345, 234.5>
-
-# 2. MsgPack:
-\x82\xA1\x61\x93\xA5\x68\x65\x6C\x6C\x6F\xCD\x04\xD2\xCB\x40\x5E\xD9\x99\x99\x99\x99\x9A\xA1\x62\x93\xA5\x68\x65\x6C\x6C\x61\xCD\x09\x29\xCB\x40\x6D\x50\x00\x00\x00\x00\x00
-
-# 3. JSON:
-{
-       "a": ["hello", 1234, 123.4],
-       "b": ["hella", 2345, 234.5]
-}
-
-# 4. Back in Nit (no metadata):
-<E: a: hello, 1234, 123.4; b: hella, 2345, 234.5>
-
-# 1. Nit source:
-<F: 2222>
-
-# 2. MsgPack:
-\x81\xA1\x6E\xCD\x08\xAE
-
-# 3. JSON:
-{
-       "n": 2222
-}
-
-# 4. Back in Nit (no metadata):
-<F: 2222>
-
-# 1. Nit source:
-<F: 33.33>
-
-# 2. MsgPack:
-\x81\xA1\x6E\xCB\x40\x40\xAA\x3D\x70\xA3\xD7\x0A
-
-# 3. JSON:
-{
-       "n": 33.33
-}
-
-# 4. Back in Nit (no metadata):
-<F: 33.33>
-
-# 1. Nit source:
-<G: hs: -1, 0; s: one, two; hm: one. 1, two. 2; am: three. 3, four. 4>
-
-# 2. MsgPack:
-\x84\xA2\x68\x73\x92\xFF\x00\xA1\x73\x92\xA3\x6F\x6E\x65\xA3\x74\x77\x6F\xA2\x68\x6D\x82\xA3\x6F\x6E\x65\x01\xA3\x74\x77\x6F\x02\xA2\x61\x6D\x82\xA5\x74\x68\x72\x65\x65\xA1\x33\xA4\x66\x6F\x75\x72\xA1\x34
-
-# 3. JSON:
-{
-       "hs": [-1, 0],
-       "s": ["one", "two"],
-       "hm": {
-               "one": 1,
-               "two": 2
-       },
-       "am": {
-               "three": "3",
-               "four": "4"
-       }
-}
-
-# 4. Back in Nit (no metadata):
-<G: hs: ; s: ; hm: one. 1, two. 2; am: three. 3, four. 4>
-
diff --git a/tests/sav/nitlight_args4.res b/tests/sav/nitlight_args4.res
new file mode 100644 (file)
index 0000000..9104b4b
--- /dev/null
@@ -0,0 +1,66 @@
+\e[34m# This file is part of NIT ( http://www.nitlanguage.org ).
+\e[m\e[34m#
+\e[m\e[34m# Copyright 2006-2008 Jean Privat <jean@pryen.org>
+\e[m\e[34m#
+\e[m\e[34m# Licensed under the Apache License, Version 2.0 (the "License");
+\e[m\e[34m# you may not use this file except in compliance with the License.
+\e[m\e[34m# You may obtain a copy of the License at
+\e[m\e[34m#
+\e[m\e[34m#     http://www.apache.org/licenses/LICENSE-2.0
+\e[m\e[34m#
+\e[m\e[34m# Unless required by applicable law or agreed to in writing, software
+\e[m\e[34m# distributed under the License is distributed on an "AS IS" BASIS,
+\e[m\e[34m# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+\e[m\e[34m# See the License for the specific language governing permissions and
+\e[m\e[34m# limitations under the License.
+\e[m
+\e[33mimport\e[m \e[33mend\e[m
+
+\e[33minterface\e[m \e[32mObject\e[m
+\e[33mend\e[m
+
+\e[33menum\e[m \e[32mBool\e[m
+\e[33mend\e[m
+
+\e[33menum\e[m \e[32mInt\e[m
+       \e[33mfun\e[m output \e[33mis\e[m intern
+\e[33mend\e[m
+
+\e[33mclass\e[m \e[32mA\e[m
+       \e[33minit\e[m \e[33mdo\e[m \e[31m5\e[m.output
+       \e[33mfun\e[m run \e[33mdo\e[m \e[31m6\e[m.output
+\e[33mend\e[m
+
+\e[33mclass\e[m \e[32mB\e[m
+       \e[33mvar\e[m val: \e[32mInt\e[m
+       \e[33minit\e[m(v: \e[32mInt\e[m)
+       \e[33mdo\e[m
+               \e[31m7\e[m.output
+               \e[33mself\e[m.val = v
+       \e[33mend\e[m
+       \e[33mfun\e[m run \e[33mdo\e[m val.output
+\e[33mend\e[m
+
+\e[33mclass\e[m \e[32mC\e[m
+       \e[33mvar\e[m val1: \e[32mInt\e[m
+       \e[33mvar\e[m val2: \e[32mInt\e[m = \e[31m10\e[m
+\e[33mend\e[m
+
+\e[33mfun\e[m foo \e[33mdo\e[m \e[31m2\e[m.output
+\e[33mfun\e[m bar(i: \e[32mInt\e[m) \e[33mdo\e[m i.output
+\e[33mfun\e[m baz: \e[32mInt\e[m \e[33mdo\e[m \e[33mreturn\e[m \e[31m4\e[m
+
+\e[31m1\e[m.output
+foo
+bar(\e[31m3\e[m)
+baz.output
+
+\e[33mvar\e[m a = \e[33mnew\e[m \e[32mA\e[m
+a.run
+
+\e[33mvar\e[m b = \e[33mnew\e[m \e[32mB\e[m(\e[31m8\e[m)
+b.run
+
+\e[33mvar\e[m c = \e[33mnew\e[m \e[32mC\e[m(\e[31m9\e[m)
+c.val1.output
+c.val2.output
index a0a686e..9a0889d 100644 (file)
@@ -1,4 +1,6 @@
 test_prog: Test program for model tools. (test_prog)
+|--examples (test_prog/examples)
+|  `--\e[1mgame_examples\e[m (test_prog/examples/game_examples.nit)
 |--game: Gaming group (test_prog/game)
 |  `--\e[1mgame\e[m: A game abstraction for RPG. (test_prog/game/game.nit)
 |--platform: Fictive Crappy Platform. (test_prog/platform)
index 439a213..109e74a 100644 (file)
@@ -7,4 +7,4 @@ Long method:  Average 1 lines
                -total_strengh has 2 lines
                -total_endurance has 2 lines
                -total_intelligence has 2 lines
-Large class: 6 attributes and 18 methods (5.414A 7.161M Average)
+Large class: 6 attributes and 18 methods (4.581A 7.153M Average)
index 42ee33e..0d1829d 100644 (file)
@@ -5,12 +5,12 @@
        Runtime error: Assert failed (test_nitunit6.nit:26)
 
 [KO] test_nitunit6$TestNitunit6$test_foo
-     test_nitunit6.nit:20,2--22,4: Nitunit Error: before_module test failed
+     test_nitunit6.nit:20,2--22,4: Nitunit Error: before module test failed
 [KO] test_nitunit6::test_nitunit6$core::Sys$after_module
-     test_nitunit6.nit:29,1--31,3: Nitunit Error: before_module test failed
+     test_nitunit6.nit:29,1--31,3: Nitunit Error: before module test failed
 
 Docunits: Entities: 5; Documented ones: 0; With nitunits: 0
 Test suites: Classes: 1; Test Cases: 3; Failures: 3
 [FAILURE] 3/3 tests failed.
 `nitunit.out` is not removed for investigation.
-<testsuites><testsuite package="test_nitunit6::test_nitunit6"></testsuite><testsuite package="test_nitunit6"><testcase classname="nitunit.test_nitunit6.TestNitunit6" name="test_foo" time="0.0"><failure message="Nitunit Error: before_module test failed"></failure></testcase></testsuite></testsuites>
\ No newline at end of file
+<testsuites><testsuite package="test_nitunit6::test_nitunit6"></testsuite><testsuite package="test_nitunit6"><testcase classname="nitunit.test_nitunit6.TestNitunit6" name="test_foo" time="0.0"><failure message="Nitunit Error: before module test failed"></failure></testcase></testsuite></testsuites>
\ No newline at end of file
diff --git a/tests/sav/nitunit_args13.res b/tests/sav/nitunit_args13.res
new file mode 100644 (file)
index 0000000..8c8d3f9
--- /dev/null
@@ -0,0 +1,14 @@
+==== Test-suite of module test_nitunit8::test_nitunit8 | tests: 3
+[OK] test_nitunit7::test_nitunit7$core::Sys$before_module
+[OK] test_nitunit8$TestNitunit8$test_foo
+[KO] test_nitunit7::test_nitunit7$core::Sys$after_module
+     test_nitunit7.nit:29,1--31,3: Runtime Error in file nitunit.out/gen_test_nitunit8.nit
+     Output
+       Runtime error: Assert failed (test_nitunit7.nit:30)
+
+
+Docunits: Entities: 3; Documented ones: 0; With nitunits: 0
+Test suites: Classes: 1; Test Cases: 3; Failures: 1
+[FAILURE] 1/3 tests failed.
+`nitunit.out` is not removed for investigation.
+<testsuites><testsuite package="test_nitunit8::test_nitunit8"></testsuite><testsuite package="test_nitunit8"><testcase classname="nitunit.test_nitunit8.TestNitunit8" name="test_foo" time="0.0"><system-err></system-err></testcase></testsuite></testsuites>
\ No newline at end of file
diff --git a/tests/sav/nitunit_args14.res b/tests/sav/nitunit_args14.res
new file mode 100644 (file)
index 0000000..c0f1e23
--- /dev/null
@@ -0,0 +1,18 @@
+==== Test-suite of module test_nitunit11::test_nitunit11 | tests: 7
+[OK] test_nitunit9$TestNitunit9$before_class
+[OK] test_nitunit10$TestNitunit10$before_class2
+[OK] test_nitunit11$TestNitunit11$before_class3
+[OK] test_nitunit11$TestNitunit11$test_baz
+[OK] test_nitunit11$TestNitunit11$after_class3
+[OK] test_nitunit10$TestNitunit10$after_class2
+[KO] test_nitunit9$TestNitunit9$after_class
+     test_nitunit9.nit:36,2--38,4: Runtime Error in file nitunit.out/gen_test_nitunit11.nit
+     Output
+       Runtime error: Assert failed (test_nitunit9.nit:37)
+
+
+Docunits: Entities: 7; Documented ones: 0; With nitunits: 0
+Test suites: Classes: 1; Test Cases: 7; Failures: 1
+[FAILURE] 1/7 tests failed.
+`nitunit.out` is not removed for investigation.
+<testsuites><testsuite package="test_nitunit11::test_nitunit11"></testsuite><testsuite package="test_nitunit11"><testcase classname="nitunit.test_nitunit11.TestNitunit11" name="test_baz" time="0.0"><system-err></system-err></testcase></testsuite></testsuites>
\ No newline at end of file
index ec462a0..4a0ef7e 100644 (file)
@@ -1,3 +1,3 @@
 Usage: nitx [OPTION]... <file.nit>... [query]
-Displays specific pieces of API information from Nit source files.
+Displays pieces of API information from Nit source files.
 Use --help for help
index d9ab058..040663e 100644 (file)
@@ -1,9 +1,9 @@
 
-\e[1m\e[34m# \e[m\e[m\e[1m\e[34mA\e[m\e[m
-\e[1m\e[30mclass A\e[m\e[m
-
-    \e[1m\e[32mclass A\e[m\e[m
-    \e[1m\e[30mbase_simple3.nit:29,1--32,3\e[m\e[m
+Warning: No documentation for `base_simple3::A`.
 
+Documentation for `base_simple3::A`:
 
+ + base_simple3::A
+   class A
+   base_simple3.nit:29,1--32,3
 
index 3f6b1f1..48c2f5f 100644 (file)
@@ -1,9 +1,9 @@
 
-\e[1m\e[34m# \e[m\e[m\e[1m\e[34mfoo\e[m\e[m
-\e[1m\e[30mfun foo\e[m\e[m
-
-    \e[1m\e[32mfun foo\e[m\e[m
-    \e[1m\e[30mbase_simple3.nit:49,1--19\e[m\e[m
+Warning: No documentation for `base_simple3::Sys::foo`.
 
+Documentation for `base_simple3::Sys::foo`:
 
+ + base_simple3::Sys::foo
+   fun foo
+   base_simple3.nit:49,1--19
 
index 9d71d91..e191640 100644 (file)
@@ -1,9 +1,31 @@
 
-\e[1m\e[34m# \e[m\e[m\e[1m\e[34mbase_simple3\e[m\e[m
-\e[1m\e[30mpackage base_simple3\e[m\e[m
+Features for `base_simple3::base_simple3`:
 
-    \e[1m\e[32mpackage base_simple3\e[m\e[m
-    \e[1m\e[30mbase_simple3.nit:17,1--66,13\e[m\e[m
+ + base_simple3$A
+   class A
+   base_simple3.nit:29,1--32,3
 
+ + base_simple3$B
+   class B
+   base_simple3.nit:34,1--42,3
 
+ + base_simple3$Bool
+   enum Bool
+   base_simple3.nit:22,1--23,3
+
+ + base_simple3$C
+   class C
+   base_simple3.nit:44,1--47,3
+
+ + base_simple3$Int
+   enum Int
+   base_simple3.nit:25,1--27,3
+
+ + base_simple3$Object
+   interface Object
+   base_simple3.nit:19,1--20,3
+
+ + base_simple3$Sys
+   class Sys
+   base_simple3.nit:49,1--19
 
diff --git a/tests/sav/nlp_index.res b/tests/sav/nlp_index.res
new file mode 100644 (file)
index 0000000..b041485
--- /dev/null
@@ -0,0 +1,6 @@
+usage: example_index <files>
+  -h, --help             Show this help message
+  -s, --server           StanfordNLP server URI (default is https://localhost:9000)
+  -l, --lang             Language to use (default is fr)
+  -w, --whitelist-exts   Allowed file extensions (default is [])
+  -b, --blacklist-exts   Allowed file extensions (default is [])
index 58a5cf2..75ca824 100644 (file)
@@ -1 +1 @@
-0.13691995878400010
+0.13691995878400012
diff --git a/tests/sav/shoot_null.res b/tests/sav/shoot_null.res
deleted file mode 100644 (file)
index 0738479..0000000
+++ /dev/null
@@ -1,2451 +0,0 @@
-GET injected_input_stream shoot_null.inputs
-LOAD hitbox.png
-LOAD splash.png
-LOAD splash_play.png
-LOAD player.png
-LOAD player_shoot.png
-LOAD player_missile.png
-LOAD enemy0.png
-LOAD enemy1.png
-LOAD enemy2.png
-LOAD enemy3.png
-LOAD enemy4.png
-LOAD enemy4_turret.png
-LOAD enemy_kamikaze.png
-LOAD enemy_shoot.png
-LOAD enemy_missile.png
-LOAD money.png
-LOAD up_missile.png
-LOAD explosion.png
-LOAD star0.png
-LOAD star1.png
-LOAD star2.png
-LOAD boss.png
-LOAD boss_left.png
-LOAD boss_right.png
-read 84 click 492.0 356.0
-WAIT 84 for click 492.0 356.0
-INPUT click 492.0 356.0
-read 179 click 472.0 428.0
-WAIT 179 for click 472.0 428.0
-BLIT splash.png (0.0,0.0) -- (0.0,480.0) -- (640.0,480.0) -- (640.0,0.0)
-BLIT star2.png CENTERED (0,413)
-BLIT star1.png CENTERED (68,390)
-BLIT star1.png CENTERED (561,-74)
-BLIT star1.png CENTERED (213,142)
-BLIT star1.png CENTERED (155,182)
-BLIT star1.png CENTERED (177,393)
-BLIT star0.png CENTERED (314,-98)
-BLIT star1.png CENTERED (96,408)
-BLIT star1.png CENTERED (616,472)
-BLIT star2.png CENTERED (626,476)
-BLIT star1.png CENTERED (583,436)
-BLIT star0.png CENTERED (622,37)
-BLIT star1.png CENTERED (572,267)
-BLIT star1.png CENTERED (86,456)
-BLIT star1.png CENTERED (402,321)
-BLIT star1.png CENTERED (629,312)
-BLIT star2.png CENTERED (478,392)
-BLIT star1.png CENTERED (575,388)
-BLIT star1.png CENTERED (306,344)
-BLIT star1.png CENTERED (605,197)
-BLIT star1.png CENTERED (626,244)
-BLIT star1.png CENTERED (47,181)
-BLIT star2.png CENTERED (30,-48)
-BLIT star1.png CENTERED (320,214)
-BLIT star1.png CENTERED (6,350)
-BLIT star1.png CENTERED (409,295)
-BLIT star1.png CENTERED (386,247)
-BLIT star2.png CENTERED (181,324)
-BLIT star1.png CENTERED (282,439)
-BLIT star0.png CENTERED (551,246)
-BLIT star2.png CENTERED (199,415)
-BLIT star0.png CENTERED (261,345)
-BLIT star1.png CENTERED (457,219)
-BLIT star1.png CENTERED (324,448)
-BLIT star1.png CENTERED (152,273)
-BLIT star1.png CENTERED (501,388)
-BLIT star2.png CENTERED (482,78)
-BLIT star1.png CENTERED (411,372)
-BLIT star1.png CENTERED (250,272)
-BLIT star2.png CENTERED (494,90)
-BLIT star1.png CENTERED (47,286)
-BLIT star1.png CENTERED (341,209)
-BLIT star1.png CENTERED (163,387)
-BLIT star2.png CENTERED (450,473)
-BLIT star2.png CENTERED (546,83)
-BLIT star1.png CENTERED (84,168)
-BLIT star1.png CENTERED (425,234)
-BLIT star0.png CENTERED (457,421)
-BLIT star0.png CENTERED (310,144)
-BLIT star1.png CENTERED (425,415)
-BLIT star1.png CENTERED (570,335)
-BLIT star2.png CENTERED (287,372)
-BLIT star1.png CENTERED (54,477)
-BLIT star0.png CENTERED (513,129)
-BLIT star0.png CENTERED (293,440)
-BLIT star1.png CENTERED (61,57)
-BLIT star2.png CENTERED (302,34)
-BLIT star1.png CENTERED (603,32)
-BLIT star0.png CENTERED (109,302)
-BLIT star2.png CENTERED (166,369)
-BLIT star2.png CENTERED (83,330)
-BLIT star1.png CENTERED (42,189)
-BLIT star1.png CENTERED (549,218)
-BLIT star2.png CENTERED (130,185)
-BLIT star2.png CENTERED (393,106)
-BLIT star2.png CENTERED (449,382)
-BLIT star1.png CENTERED (225,87)
-BLIT star2.png CENTERED (574,434)
-BLIT star1.png CENTERED (610,310)
-BLIT star1.png CENTERED (301,50)
-BLIT star1.png CENTERED (100,473)
-BLIT star2.png CENTERED (283,60)
-BLIT star1.png CENTERED (316,372)
-BLIT star0.png CENTERED (477,308)
-BLIT star0.png CENTERED (233,471)
-BLIT star0.png CENTERED (210,443)
-BLIT star1.png CENTERED (471,335)
-BLIT star1.png CENTERED (562,269)
-BLIT star2.png CENTERED (178,65)
-BLIT star1.png CENTERED (13,25)
-BLIT star1.png CENTERED (400,106)
-BLIT star1.png CENTERED (347,132)
-BLIT star0.png CENTERED (158,140)
-BLIT star1.png CENTERED (269,472)
-BLIT star1.png CENTERED (521,259)
-BLIT star2.png CENTERED (420,218)
-BLIT star1.png CENTERED (147,79)
-BLIT star2.png CENTERED (406,334)
-BLIT star2.png CENTERED (254,434)
-BLIT star1.png CENTERED (262,415)
-BLIT star1.png CENTERED (370,429)
-BLIT star1.png CENTERED (398,343)
-BLIT star0.png CENTERED (392,184)
-BLIT star0.png CENTERED (557,389)
-BLIT star0.png CENTERED (338,219)
-BLIT star2.png CENTERED (101,306)
-BLIT star1.png CENTERED (6,425)
-BLIT star2.png CENTERED (449,223)
-BLIT star1.png CENTERED (591,193)
-BLIT star1.png CENTERED (219,-61)
-BLIT splash_play.png (0.0,0.0) -- (0.0,480.0) -- (640.0,480.0) -- (640.0,0.0)
-INPUT click 472.0 428.0
-read 31 click 94.0 412.0
-WAIT 31 for click 94.0 412.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,78)
-BLIT star1.png CENTERED (286,204)
-BLIT star0.png CENTERED (145,28)
-BLIT star2.png CENTERED (188,440)
-BLIT star1.png CENTERED (287,450)
-BLIT star1.png CENTERED (377,157)
-BLIT star0.png CENTERED (426,442)
-BLIT star2.png CENTERED (55,71)
-BLIT star1.png CENTERED (372,353)
-BLIT star1.png CENTERED (25,157)
-BLIT star1.png CENTERED (461,95)
-BLIT star1.png CENTERED (112,380)
-BLIT star0.png CENTERED (388,450)
-BLIT star1.png CENTERED (304,306)
-BLIT star1.png CENTERED (168,159)
-BLIT star1.png CENTERED (61,48)
-BLIT star1.png CENTERED (24,161)
-BLIT star1.png CENTERED (363,250)
-BLIT star0.png CENTERED (452,427)
-BLIT star1.png CENTERED (13,289)
-BLIT star0.png CENTERED (388,165)
-BLIT star1.png CENTERED (347,112)
-BLIT star2.png CENTERED (579,272)
-BLIT star1.png CENTERED (523,332)
-BLIT star1.png CENTERED (285,471)
-BLIT star1.png CENTERED (63,-97)
-BLIT star0.png CENTERED (319,108)
-BLIT star1.png CENTERED (491,-132)
-BLIT star0.png CENTERED (313,304)
-BLIT star2.png CENTERED (118,100)
-BLIT star1.png CENTERED (163,458)
-BLIT star2.png CENTERED (262,362)
-BLIT star1.png CENTERED (382,375)
-BLIT star0.png CENTERED (23,336)
-BLIT star0.png CENTERED (542,455)
-BLIT star2.png CENTERED (117,61)
-BLIT star2.png CENTERED (575,184)
-BLIT star1.png CENTERED (120,202)
-BLIT star1.png CENTERED (405,226)
-BLIT star2.png CENTERED (25,86)
-BLIT star2.png CENTERED (547,69)
-BLIT star1.png CENTERED (464,329)
-BLIT star1.png CENTERED (560,216)
-BLIT star1.png CENTERED (561,476)
-BLIT star2.png CENTERED (482,-28)
-BLIT star0.png CENTERED (271,31)
-BLIT star2.png CENTERED (608,49)
-BLIT star2.png CENTERED (43,398)
-BLIT star1.png CENTERED (382,407)
-BLIT star2.png CENTERED (141,294)
-BLIT star1.png CENTERED (10,67)
-BLIT star2.png CENTERED (428,168)
-BLIT star0.png CENTERED (353,262)
-BLIT star1.png CENTERED (343,407)
-BLIT star2.png CENTERED (414,237)
-BLIT star1.png CENTERED (148,252)
-BLIT star2.png CENTERED (415,277)
-BLIT star1.png CENTERED (597,167)
-BLIT star2.png CENTERED (608,251)
-BLIT star0.png CENTERED (440,294)
-BLIT star2.png CENTERED (37,252)
-BLIT star2.png CENTERED (401,300)
-BLIT star0.png CENTERED (404,445)
-BLIT star1.png CENTERED (93,-113)
-BLIT star2.png CENTERED (468,286)
-BLIT star0.png CENTERED (211,133)
-BLIT star1.png CENTERED (349,273)
-BLIT star2.png CENTERED (620,367)
-BLIT star0.png CENTERED (321,407)
-BLIT star1.png CENTERED (605,279)
-BLIT star1.png CENTERED (136,462)
-BLIT star1.png CENTERED (619,384)
-BLIT star2.png CENTERED (568,167)
-BLIT star0.png CENTERED (391,402)
-BLIT star2.png CENTERED (508,299)
-BLIT star1.png CENTERED (417,159)
-BLIT star2.png CENTERED (81,371)
-BLIT star0.png CENTERED (367,66)
-BLIT star2.png CENTERED (30,396)
-BLIT star1.png CENTERED (390,61)
-BLIT star1.png CENTERED (590,226)
-BLIT star2.png CENTERED (265,424)
-BLIT star1.png CENTERED (476,417)
-BLIT star1.png CENTERED (102,110)
-BLIT star1.png CENTERED (263,66)
-BLIT star1.png CENTERED (74,457)
-BLIT star1.png CENTERED (41,139)
-BLIT star2.png CENTERED (582,478)
-BLIT star0.png CENTERED (541,473)
-BLIT star1.png CENTERED (309,425)
-BLIT star1.png CENTERED (285,103)
-BLIT star1.png CENTERED (252,479)
-BLIT star0.png CENTERED (322,196)
-BLIT star1.png CENTERED (247,225)
-BLIT star1.png CENTERED (265,281)
-BLIT star2.png CENTERED (207,420)
-BLIT star2.png CENTERED (194,345)
-BLIT star1.png CENTERED (237,435)
-BLIT star0.png CENTERED (564,414)
-BLIT star2.png CENTERED (586,108)
-BLIT player_shoot.png CENTERED (320,2)
-BLIT player_shoot.png CENTERED (320,126)
-BLIT player_shoot.png CENTERED (320,250)
-BLIT player_shoot.png CENTERED (320,374)
-BLIT enemy0.png CENTERED (510,169)
-BLIT enemy4.png CENTERED (295,25)
-BLIT enemy4_turret.png CENTERED (295.888,25.056) ROTATED 3.077
-BLIT player.png CENTERED (323,400)
-BLIT player_shoot.png (30,460)
-INPUT click 94.0 412.0
-read 31 click 261.0 512.0
-WAIT 31 for click 261.0 512.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,84)
-BLIT star1.png CENTERED (286,212)
-BLIT star0.png CENTERED (145,33)
-BLIT star2.png CENTERED (188,450)
-BLIT star1.png CENTERED (287,457)
-BLIT star1.png CENTERED (377,167)
-BLIT star0.png CENTERED (426,447)
-BLIT star2.png CENTERED (55,81)
-BLIT star1.png CENTERED (372,360)
-BLIT star1.png CENTERED (25,164)
-BLIT star1.png CENTERED (461,103)
-BLIT star1.png CENTERED (112,390)
-BLIT star0.png CENTERED (388,453)
-BLIT star1.png CENTERED (304,313)
-BLIT star1.png CENTERED (168,167)
-BLIT star1.png CENTERED (61,57)
-BLIT star1.png CENTERED (24,168)
-BLIT star1.png CENTERED (363,257)
-BLIT star0.png CENTERED (452,430)
-BLIT star1.png CENTERED (13,296)
-BLIT star0.png CENTERED (388,169)
-BLIT star1.png CENTERED (347,122)
-BLIT star2.png CENTERED (579,284)
-BLIT star1.png CENTERED (523,340)
-BLIT star1.png CENTERED (285,478)
-BLIT star1.png CENTERED (63,-91)
-BLIT star0.png CENTERED (319,111)
-BLIT star1.png CENTERED (491,-126)
-BLIT star0.png CENTERED (313,308)
-BLIT star2.png CENTERED (118,110)
-BLIT star1.png CENTERED (163,464)
-BLIT star2.png CENTERED (262,371)
-BLIT star1.png CENTERED (382,384)
-BLIT star0.png CENTERED (23,339)
-BLIT star0.png CENTERED (542,458)
-BLIT star2.png CENTERED (117,73)
-BLIT star2.png CENTERED (575,195)
-BLIT star1.png CENTERED (120,207)
-BLIT star1.png CENTERED (405,232)
-BLIT star2.png CENTERED (25,99)
-BLIT star2.png CENTERED (547,81)
-BLIT star1.png CENTERED (464,339)
-BLIT star1.png CENTERED (560,226)
-BLIT star1.png CENTERED (578,-16)
-BLIT star2.png CENTERED (482,-18)
-BLIT star0.png CENTERED (271,36)
-BLIT star2.png CENTERED (608,61)
-BLIT star2.png CENTERED (43,410)
-BLIT star1.png CENTERED (382,413)
-BLIT star2.png CENTERED (141,304)
-BLIT star1.png CENTERED (10,76)
-BLIT star2.png CENTERED (428,180)
-BLIT star0.png CENTERED (353,265)
-BLIT star1.png CENTERED (343,412)
-BLIT star2.png CENTERED (414,247)
-BLIT star1.png CENTERED (148,260)
-BLIT star2.png CENTERED (415,288)
-BLIT star1.png CENTERED (597,176)
-BLIT star2.png CENTERED (608,261)
-BLIT star0.png CENTERED (440,299)
-BLIT star2.png CENTERED (37,263)
-BLIT star2.png CENTERED (401,311)
-BLIT star0.png CENTERED (404,450)
-BLIT star1.png CENTERED (93,-105)
-BLIT star2.png CENTERED (468,297)
-BLIT star0.png CENTERED (211,138)
-BLIT star1.png CENTERED (349,282)
-BLIT star2.png CENTERED (620,379)
-BLIT star0.png CENTERED (321,410)
-BLIT star1.png CENTERED (605,284)
-BLIT star1.png CENTERED (136,469)
-BLIT star1.png CENTERED (619,391)
-BLIT star2.png CENTERED (568,178)
-BLIT star0.png CENTERED (391,405)
-BLIT star2.png CENTERED (508,310)
-BLIT star1.png CENTERED (417,165)
-BLIT star2.png CENTERED (81,382)
-BLIT star0.png CENTERED (367,70)
-BLIT star2.png CENTERED (30,407)
-BLIT star1.png CENTERED (390,68)
-BLIT star1.png CENTERED (590,235)
-BLIT star2.png CENTERED (265,436)
-BLIT star1.png CENTERED (476,427)
-BLIT star1.png CENTERED (102,117)
-BLIT star1.png CENTERED (263,72)
-BLIT star1.png CENTERED (74,463)
-BLIT star1.png CENTERED (41,144)
-BLIT star2.png CENTERED (4,-18)
-BLIT star0.png CENTERED (541,475)
-BLIT star1.png CENTERED (309,435)
-BLIT star1.png CENTERED (285,111)
-BLIT star2.png CENTERED (246,-43)
-BLIT star0.png CENTERED (322,200)
-BLIT star1.png CENTERED (247,231)
-BLIT star1.png CENTERED (265,287)
-BLIT star2.png CENTERED (207,430)
-BLIT star2.png CENTERED (194,357)
-BLIT star1.png CENTERED (237,445)
-BLIT star0.png CENTERED (564,417)
-BLIT star2.png CENTERED (586,119)
-BLIT player_shoot.png CENTERED (320,2)
-BLIT player_shoot.png CENTERED (320,126)
-BLIT player_shoot.png CENTERED (320,250)
-BLIT player_shoot.png CENTERED (408,390)
-BLIT enemy0.png CENTERED (532,224)
-BLIT enemy4.png CENTERED (295,68)
-BLIT enemy4_turret.png CENTERED (295.888,68.208) ROTATED 2.807
-BLIT player.png CENTERED (414,417)
-BLIT player_shoot.png (30,460)
-INPUT click 261.0 512.0
-read 22 click 274.0 530.0
-WAIT 22 for click 274.0 530.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,90)
-BLIT star1.png CENTERED (286,220)
-BLIT star0.png CENTERED (145,38)
-BLIT star2.png CENTERED (188,460)
-BLIT star1.png CENTERED (287,465)
-BLIT star1.png CENTERED (377,176)
-BLIT star0.png CENTERED (426,451)
-BLIT star2.png CENTERED (55,92)
-BLIT star1.png CENTERED (372,367)
-BLIT star1.png CENTERED (25,171)
-BLIT star1.png CENTERED (461,111)
-BLIT star1.png CENTERED (112,399)
-BLIT star0.png CENTERED (388,457)
-BLIT star1.png CENTERED (304,319)
-BLIT star1.png CENTERED (168,175)
-BLIT star1.png CENTERED (61,66)
-BLIT star1.png CENTERED (24,176)
-BLIT star1.png CENTERED (363,264)
-BLIT star0.png CENTERED (452,433)
-BLIT star1.png CENTERED (13,304)
-BLIT star0.png CENTERED (388,173)
-BLIT star1.png CENTERED (347,131)
-BLIT star2.png CENTERED (579,296)
-BLIT star1.png CENTERED (523,349)
-BLIT star1.png CENTERED (531,-151)
-BLIT star1.png CENTERED (63,-85)
-BLIT star0.png CENTERED (319,115)
-BLIT star1.png CENTERED (491,-120)
-BLIT star0.png CENTERED (313,311)
-BLIT star2.png CENTERED (118,119)
-BLIT star1.png CENTERED (163,471)
-BLIT star2.png CENTERED (262,381)
-BLIT star1.png CENTERED (382,392)
-BLIT star0.png CENTERED (23,342)
-BLIT star0.png CENTERED (542,461)
-BLIT star2.png CENTERED (117,85)
-BLIT star2.png CENTERED (575,207)
-BLIT star1.png CENTERED (120,212)
-BLIT star1.png CENTERED (405,238)
-BLIT star2.png CENTERED (25,111)
-BLIT star2.png CENTERED (547,92)
-BLIT star1.png CENTERED (464,348)
-BLIT star1.png CENTERED (560,236)
-BLIT star1.png CENTERED (578,-6)
-BLIT star2.png CENTERED (482,-8)
-BLIT star0.png CENTERED (271,41)
-BLIT star2.png CENTERED (608,73)
-BLIT star2.png CENTERED (43,422)
-BLIT star1.png CENTERED (382,419)
-BLIT star2.png CENTERED (141,315)
-BLIT star1.png CENTERED (10,85)
-BLIT star2.png CENTERED (428,192)
-BLIT star0.png CENTERED (353,269)
-BLIT star1.png CENTERED (343,418)
-BLIT star2.png CENTERED (414,258)
-BLIT star1.png CENTERED (148,269)
-BLIT star2.png CENTERED (415,299)
-BLIT star1.png CENTERED (597,186)
-BLIT star2.png CENTERED (608,271)
-BLIT star0.png CENTERED (440,303)
-BLIT star2.png CENTERED (37,273)
-BLIT star2.png CENTERED (401,322)
-BLIT star0.png CENTERED (404,454)
-BLIT star1.png CENTERED (93,-97)
-BLIT star2.png CENTERED (468,309)
-BLIT star0.png CENTERED (211,143)
-BLIT star1.png CENTERED (349,291)
-BLIT star2.png CENTERED (620,391)
-BLIT star0.png CENTERED (321,413)
-BLIT star1.png CENTERED (605,289)
-BLIT star1.png CENTERED (136,476)
-BLIT star1.png CENTERED (619,398)
-BLIT star2.png CENTERED (568,189)
-BLIT star0.png CENTERED (391,408)
-BLIT star2.png CENTERED (508,321)
-BLIT star1.png CENTERED (417,171)
-BLIT star2.png CENTERED (81,393)
-BLIT star0.png CENTERED (367,73)
-BLIT star2.png CENTERED (30,418)
-BLIT star1.png CENTERED (390,74)
-BLIT star1.png CENTERED (590,245)
-BLIT star2.png CENTERED (265,448)
-BLIT star1.png CENTERED (476,437)
-BLIT star1.png CENTERED (102,125)
-BLIT star1.png CENTERED (263,78)
-BLIT star1.png CENTERED (74,469)
-BLIT star1.png CENTERED (41,148)
-BLIT star2.png CENTERED (4,-6)
-BLIT star0.png CENTERED (541,478)
-BLIT star1.png CENTERED (309,445)
-BLIT star1.png CENTERED (285,119)
-BLIT star2.png CENTERED (246,-31)
-BLIT star0.png CENTERED (322,205)
-BLIT star1.png CENTERED (247,236)
-BLIT star1.png CENTERED (265,293)
-BLIT star2.png CENTERED (207,440)
-BLIT star2.png CENTERED (194,368)
-BLIT star1.png CENTERED (237,454)
-BLIT star0.png CENTERED (564,420)
-BLIT star2.png CENTERED (586,130)
-BLIT player_shoot.png CENTERED (320,2)
-BLIT player_shoot.png CENTERED (320,126)
-BLIT player_shoot.png CENTERED (408,266)
-BLIT player_shoot.png CENTERED (328,390)
-BLIT enemy_shoot.png CENTERED (333,180)
-BLIT enemy_shoot.png CENTERED (321,167)
-BLIT enemy_shoot.png CENTERED (311,153)
-BLIT enemy_shoot.png CENTERED (303,139)
-BLIT enemy_shoot.png CENTERED (298,124)
-BLIT enemy0.png CENTERED (555,279)
-BLIT enemy4.png CENTERED (295,111)
-BLIT enemy4_turret.png CENTERED (295.888,111.36) ROTATED 3.067
-BLIT player.png CENTERED (316,418)
-BLIT player_shoot.png (30,460)
-INPUT click 274.0 530.0
-read 27 click 501.0 556.0
-WAIT 27 for click 501.0 556.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,95)
-BLIT star1.png CENTERED (286,225)
-BLIT star0.png CENTERED (145,41)
-BLIT star2.png CENTERED (188,467)
-BLIT star1.png CENTERED (287,470)
-BLIT star1.png CENTERED (377,182)
-BLIT star0.png CENTERED (426,455)
-BLIT star2.png CENTERED (55,99)
-BLIT star1.png CENTERED (372,371)
-BLIT star1.png CENTERED (25,176)
-BLIT star1.png CENTERED (461,116)
-BLIT star1.png CENTERED (112,406)
-BLIT star0.png CENTERED (388,460)
-BLIT star1.png CENTERED (304,324)
-BLIT star1.png CENTERED (168,181)
-BLIT star1.png CENTERED (61,73)
-BLIT star1.png CENTERED (24,181)
-BLIT star1.png CENTERED (363,269)
-BLIT star0.png CENTERED (452,435)
-BLIT star1.png CENTERED (13,309)
-BLIT star0.png CENTERED (388,177)
-BLIT star1.png CENTERED (347,137)
-BLIT star2.png CENTERED (579,305)
-BLIT star1.png CENTERED (523,355)
-BLIT star1.png CENTERED (531,-147)
-BLIT star1.png CENTERED (63,-81)
-BLIT star0.png CENTERED (319,117)
-BLIT star1.png CENTERED (491,-116)
-BLIT star0.png CENTERED (313,314)
-BLIT star2.png CENTERED (118,127)
-BLIT star1.png CENTERED (163,476)
-BLIT star2.png CENTERED (262,388)
-BLIT star1.png CENTERED (382,398)
-BLIT star0.png CENTERED (23,345)
-BLIT star0.png CENTERED (542,463)
-BLIT star2.png CENTERED (117,94)
-BLIT star2.png CENTERED (575,215)
-BLIT star1.png CENTERED (120,215)
-BLIT star1.png CENTERED (405,242)
-BLIT star2.png CENTERED (25,120)
-BLIT star2.png CENTERED (547,100)
-BLIT star1.png CENTERED (464,355)
-BLIT star1.png CENTERED (560,243)
-BLIT star1.png CENTERED (578,0)
-BLIT star2.png CENTERED (482,-1)
-BLIT star0.png CENTERED (271,44)
-BLIT star2.png CENTERED (608,81)
-BLIT star2.png CENTERED (43,431)
-BLIT star1.png CENTERED (382,424)
-BLIT star2.png CENTERED (141,323)
-BLIT star1.png CENTERED (10,92)
-BLIT star2.png CENTERED (428,200)
-BLIT star0.png CENTERED (353,271)
-BLIT star1.png CENTERED (343,421)
-BLIT star2.png CENTERED (414,265)
-BLIT star1.png CENTERED (148,275)
-BLIT star2.png CENTERED (415,306)
-BLIT star1.png CENTERED (597,192)
-BLIT star2.png CENTERED (608,279)
-BLIT star0.png CENTERED (440,307)
-BLIT star2.png CENTERED (37,280)
-BLIT star2.png CENTERED (401,329)
-BLIT star0.png CENTERED (404,457)
-BLIT star1.png CENTERED (93,-91)
-BLIT star2.png CENTERED (468,316)
-BLIT star0.png CENTERED (211,146)
-BLIT star1.png CENTERED (349,297)
-BLIT star2.png CENTERED (620,400)
-BLIT star0.png CENTERED (321,416)
-BLIT star1.png CENTERED (605,293)
-BLIT star0.png CENTERED (517,-46)
-BLIT star1.png CENTERED (619,403)
-BLIT star2.png CENTERED (568,197)
-BLIT star0.png CENTERED (391,411)
-BLIT star2.png CENTERED (508,328)
-BLIT star1.png CENTERED (417,175)
-BLIT star2.png CENTERED (81,401)
-BLIT star0.png CENTERED (367,76)
-BLIT star2.png CENTERED (30,425)
-BLIT star1.png CENTERED (390,79)
-BLIT star1.png CENTERED (590,252)
-BLIT star2.png CENTERED (265,456)
-BLIT star1.png CENTERED (476,443)
-BLIT star1.png CENTERED (102,130)
-BLIT star1.png CENTERED (263,82)
-BLIT star1.png CENTERED (74,473)
-BLIT star1.png CENTERED (41,152)
-BLIT star2.png CENTERED (4,1)
-BLIT star0.png CENTERED (18,-109)
-BLIT star1.png CENTERED (309,452)
-BLIT star1.png CENTERED (285,125)
-BLIT star2.png CENTERED (246,-23)
-BLIT star0.png CENTERED (322,208)
-BLIT star1.png CENTERED (247,240)
-BLIT star1.png CENTERED (265,298)
-BLIT star2.png CENTERED (207,447)
-BLIT star2.png CENTERED (194,376)
-BLIT star1.png CENTERED (237,461)
-BLIT star0.png CENTERED (564,422)
-BLIT star2.png CENTERED (586,139)
-BLIT player_shoot.png CENTERED (320,38)
-BLIT player_shoot.png CENTERED (408,178)
-BLIT player_shoot.png CENTERED (328,302)
-BLIT enemy_shoot.png CENTERED (361,263)
-BLIT enemy_shoot.png CENTERED (346,251)
-BLIT enemy_shoot.png CENTERED (332,239)
-BLIT enemy_shoot.png CENTERED (320,225)
-BLIT enemy_shoot.png CENTERED (310,211)
-BLIT enemy_shoot.png CENTERED (302,196)
-BLIT enemy_shoot.png CENTERED (298,180)
-BLIT enemy_shoot.png CENTERED (296,165)
-BLIT enemy_shoot.png CENTERED (295,149)
-BLIT enemy0.png CENTERED (570,318)
-BLIT enemy4.png CENTERED (295,141)
-BLIT enemy4_turret.png CENTERED (295.888,141.984) ROTATED -3.101
-BLIT player.png CENTERED (281,479)
-BLIT player_shoot.png (30,460)
-INPUT click 501.0 556.0
-read 34 click 465.0 517.0
-WAIT 34 for click 465.0 517.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,100)
-BLIT star1.png CENTERED (286,232)
-BLIT star0.png CENTERED (145,45)
-BLIT star2.png CENTERED (188,476)
-BLIT star1.png CENTERED (287,477)
-BLIT star1.png CENTERED (377,190)
-BLIT star0.png CENTERED (426,459)
-BLIT star2.png CENTERED (55,108)
-BLIT star1.png CENTERED (372,378)
-BLIT star1.png CENTERED (25,183)
-BLIT star1.png CENTERED (461,123)
-BLIT star1.png CENTERED (112,415)
-BLIT star0.png CENTERED (388,463)
-BLIT star1.png CENTERED (304,330)
-BLIT star1.png CENTERED (168,188)
-BLIT star1.png CENTERED (61,80)
-BLIT star1.png CENTERED (24,187)
-BLIT star1.png CENTERED (363,275)
-BLIT star0.png CENTERED (452,437)
-BLIT star1.png CENTERED (13,316)
-BLIT star0.png CENTERED (388,180)
-BLIT star1.png CENTERED (347,145)
-BLIT star2.png CENTERED (579,315)
-BLIT star1.png CENTERED (523,363)
-BLIT star1.png CENTERED (531,-141)
-BLIT star1.png CENTERED (63,-76)
-BLIT star0.png CENTERED (319,120)
-BLIT star1.png CENTERED (491,-111)
-BLIT star0.png CENTERED (313,317)
-BLIT star2.png CENTERED (118,135)
-BLIT star2.png CENTERED (179,-144)
-BLIT star2.png CENTERED (262,397)
-BLIT star1.png CENTERED (382,406)
-BLIT star0.png CENTERED (23,347)
-BLIT star0.png CENTERED (542,466)
-BLIT star2.png CENTERED (117,104)
-BLIT star2.png CENTERED (575,226)
-BLIT star1.png CENTERED (120,220)
-BLIT star1.png CENTERED (405,247)
-BLIT star2.png CENTERED (25,131)
-BLIT star2.png CENTERED (547,110)
-BLIT star1.png CENTERED (464,363)
-BLIT star1.png CENTERED (560,251)
-BLIT star1.png CENTERED (578,8)
-BLIT star2.png CENTERED (482,6)
-BLIT star0.png CENTERED (271,48)
-BLIT star2.png CENTERED (608,92)
-BLIT star2.png CENTERED (43,441)
-BLIT star1.png CENTERED (382,429)
-BLIT star2.png CENTERED (141,332)
-BLIT star1.png CENTERED (10,100)
-BLIT star2.png CENTERED (428,210)
-BLIT star0.png CENTERED (353,274)
-BLIT star1.png CENTERED (343,426)
-BLIT star2.png CENTERED (414,274)
-BLIT star1.png CENTERED (148,283)
-BLIT star2.png CENTERED (415,316)
-BLIT star1.png CENTERED (597,200)
-BLIT star2.png CENTERED (608,288)
-BLIT star0.png CENTERED (440,310)
-BLIT star2.png CENTERED (37,289)
-BLIT star2.png CENTERED (401,339)
-BLIT star0.png CENTERED (404,461)
-BLIT star1.png CENTERED (93,-84)
-BLIT star2.png CENTERED (468,326)
-BLIT star0.png CENTERED (211,150)
-BLIT star1.png CENTERED (349,305)
-BLIT star2.png CENTERED (620,410)
-BLIT star0.png CENTERED (321,418)
-BLIT star1.png CENTERED (605,298)
-BLIT star0.png CENTERED (517,-43)
-BLIT star1.png CENTERED (619,410)
-BLIT star2.png CENTERED (568,206)
-BLIT star0.png CENTERED (391,413)
-BLIT star2.png CENTERED (508,338)
-BLIT star1.png CENTERED (417,180)
-BLIT star2.png CENTERED (81,410)
-BLIT star0.png CENTERED (367,80)
-BLIT star2.png CENTERED (30,435)
-BLIT star1.png CENTERED (390,84)
-BLIT star1.png CENTERED (590,260)
-BLIT star2.png CENTERED (265,467)
-BLIT star1.png CENTERED (476,452)
-BLIT star1.png CENTERED (102,137)
-BLIT star1.png CENTERED (263,87)
-BLIT star1.png CENTERED (74,478)
-BLIT star1.png CENTERED (41,156)
-BLIT star2.png CENTERED (4,11)
-BLIT star0.png CENTERED (18,-106)
-BLIT star1.png CENTERED (309,460)
-BLIT star1.png CENTERED (285,132)
-BLIT star2.png CENTERED (246,-12)
-BLIT star0.png CENTERED (322,211)
-BLIT star1.png CENTERED (247,244)
-BLIT star1.png CENTERED (265,303)
-BLIT star2.png CENTERED (207,456)
-BLIT star2.png CENTERED (194,386)
-BLIT star1.png CENTERED (237,469)
-BLIT star0.png CENTERED (564,425)
-BLIT star2.png CENTERED (586,148)
-BLIT player_shoot.png CENTERED (320,-69)
-BLIT player_shoot.png CENTERED (408,70)
-BLIT player_shoot.png CENTERED (328,194)
-BLIT player_shoot.png CENTERED (279,382)
-BLIT enemy_shoot.png CENTERED (395,366)
-BLIT enemy_shoot.png CENTERED (376,355)
-BLIT enemy_shoot.png CENTERED (357,343)
-BLIT enemy_shoot.png CENTERED (340,331)
-BLIT enemy_shoot.png CENTERED (324,318)
-BLIT enemy_shoot.png CENTERED (310,303)
-BLIT enemy_shoot.png CENTERED (302,288)
-BLIT enemy_shoot.png CENTERED (297,273)
-BLIT enemy_shoot.png CENTERED (293,257)
-BLIT enemy_shoot.png CENTERED (291,241)
-BLIT enemy_shoot.png CENTERED (292,226)
-BLIT enemy0.png CENTERED (589,365)
-BLIT enemy4.png CENTERED (295,179)
-BLIT enemy4_turret.png CENTERED (295.888,179.568) ROTATED -3.052
-BLIT enemy2.png CENTERED (217,15)
-BLIT player.png CENTERED (272,480)
-BLIT player_shoot.png (30,460)
-INPUT click 465.0 517.0
-read 23 click 262.0 401.0
-WAIT 23 for click 262.0 401.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,106)
-BLIT star1.png CENTERED (286,241)
-BLIT star0.png CENTERED (145,50)
-BLIT star1.png CENTERED (125,-140)
-BLIT star1.png CENTERED (184,-28)
-BLIT star1.png CENTERED (377,200)
-BLIT star0.png CENTERED (426,464)
-BLIT star2.png CENTERED (55,120)
-BLIT star1.png CENTERED (372,385)
-BLIT star1.png CENTERED (25,190)
-BLIT star1.png CENTERED (461,132)
-BLIT star1.png CENTERED (112,425)
-BLIT star0.png CENTERED (388,467)
-BLIT star1.png CENTERED (304,338)
-BLIT star1.png CENTERED (168,197)
-BLIT star1.png CENTERED (61,90)
-BLIT star1.png CENTERED (24,195)
-BLIT star1.png CENTERED (363,283)
-BLIT star0.png CENTERED (452,440)
-BLIT star1.png CENTERED (13,324)
-BLIT star0.png CENTERED (388,185)
-BLIT star1.png CENTERED (347,155)
-BLIT star2.png CENTERED (579,329)
-BLIT star1.png CENTERED (523,372)
-BLIT star1.png CENTERED (531,-134)
-BLIT star1.png CENTERED (63,-69)
-BLIT star0.png CENTERED (319,123)
-BLIT star1.png CENTERED (491,-105)
-BLIT star0.png CENTERED (313,321)
-BLIT star2.png CENTERED (118,146)
-BLIT star2.png CENTERED (179,-131)
-BLIT star2.png CENTERED (262,408)
-BLIT star1.png CENTERED (382,415)
-BLIT star0.png CENTERED (23,351)
-BLIT star0.png CENTERED (542,469)
-BLIT star2.png CENTERED (117,117)
-BLIT star2.png CENTERED (575,238)
-BLIT star1.png CENTERED (120,225)
-BLIT star1.png CENTERED (405,254)
-BLIT star2.png CENTERED (25,144)
-BLIT star2.png CENTERED (547,122)
-BLIT star1.png CENTERED (464,374)
-BLIT star1.png CENTERED (560,262)
-BLIT star1.png CENTERED (578,19)
-BLIT star2.png CENTERED (482,17)
-BLIT star0.png CENTERED (271,53)
-BLIT star2.png CENTERED (608,105)
-BLIT star2.png CENTERED (43,455)
-BLIT star1.png CENTERED (382,436)
-BLIT star2.png CENTERED (141,344)
-BLIT star1.png CENTERED (10,110)
-BLIT star2.png CENTERED (428,223)
-BLIT star0.png CENTERED (353,277)
-BLIT star1.png CENTERED (343,432)
-BLIT star2.png CENTERED (414,285)
-BLIT star1.png CENTERED (148,292)
-BLIT star2.png CENTERED (415,327)
-BLIT star1.png CENTERED (597,211)
-BLIT star2.png CENTERED (608,299)
-BLIT star0.png CENTERED (440,315)
-BLIT star2.png CENTERED (37,301)
-BLIT star2.png CENTERED (401,351)
-BLIT star0.png CENTERED (404,465)
-BLIT star1.png CENTERED (93,-75)
-BLIT star2.png CENTERED (468,338)
-BLIT star0.png CENTERED (211,155)
-BLIT star1.png CENTERED (349,314)
-BLIT star2.png CENTERED (620,423)
-BLIT star0.png CENTERED (321,422)
-BLIT star1.png CENTERED (605,303)
-BLIT star0.png CENTERED (517,-40)
-BLIT star1.png CENTERED (619,418)
-BLIT star2.png CENTERED (568,218)
-BLIT star0.png CENTERED (391,417)
-BLIT star2.png CENTERED (508,349)
-BLIT star1.png CENTERED (417,187)
-BLIT star2.png CENTERED (81,422)
-BLIT star0.png CENTERED (367,84)
-BLIT star2.png CENTERED (30,446)
-BLIT star1.png CENTERED (390,91)
-BLIT star1.png CENTERED (590,270)
-BLIT star1.png CENTERED (322,-116)
-BLIT star1.png CENTERED (476,463)
-BLIT star1.png CENTERED (102,146)
-BLIT star1.png CENTERED (263,94)
-BLIT star1.png CENTERED (381,-8)
-BLIT star1.png CENTERED (41,162)
-BLIT star2.png CENTERED (4,24)
-BLIT star0.png CENTERED (18,-102)
-BLIT star1.png CENTERED (309,471)
-BLIT star1.png CENTERED (285,141)
-BLIT star2.png CENTERED (246,0)
-BLIT star0.png CENTERED (322,216)
-BLIT star1.png CENTERED (247,250)
-BLIT star1.png CENTERED (265,310)
-BLIT star2.png CENTERED (207,467)
-BLIT star2.png CENTERED (194,399)
-BLIT star1.png CENTERED (429,-140)
-BLIT star0.png CENTERED (564,428)
-BLIT star2.png CENTERED (586,161)
-BLIT explosion.png CENTERED (295,226)
-BLIT explosion.png CENTERED (295,226)
-BLIT explosion.png CENTERED (295,226)
-BLIT explosion.png CENTERED (295,226)
-BLIT explosion.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT money.png CENTERED (295,226)
-BLIT player_shoot.png CENTERED (408,-65)
-BLIT player_shoot.png CENTERED (328,58)
-BLIT player_shoot.png CENTERED (299,370)
-BLIT enemy_shoot.png CENTERED (439,494)
-BLIT enemy_shoot.png CENTERED (414,485)
-BLIT enemy_shoot.png CENTERED (389,475)
-BLIT enemy_shoot.png CENTERED (365,465)
-BLIT enemy_shoot.png CENTERED (342,452)
-BLIT enemy_shoot.png CENTERED (320,439)
-BLIT enemy_shoot.png CENTERED (308,424)
-BLIT enemy_shoot.png CENTERED (298,408)
-BLIT enemy_shoot.png CENTERED (290,393)
-BLIT enemy_shoot.png CENTERED (286,377)
-BLIT enemy_shoot.png CENTERED (285,362)
-BLIT enemy0.png CENTERED (614,426)
-BLIT enemy2.png CENTERED (232,66)
-BLIT enemy0.png CENTERED (290,21)
-BLIT player.png CENTERED (375,480)
-BLIT player_shoot.png (30,460)
-INPUT click 262.0 401.0
-read 44 click 204.0 273.0
-WAIT 44 for click 204.0 273.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,111)
-BLIT star1.png CENTERED (286,247)
-BLIT star0.png CENTERED (145,54)
-BLIT star1.png CENTERED (125,-134)
-BLIT star1.png CENTERED (184,-22)
-BLIT star1.png CENTERED (377,207)
-BLIT star0.png CENTERED (426,468)
-BLIT star2.png CENTERED (55,127)
-BLIT star1.png CENTERED (372,390)
-BLIT star1.png CENTERED (25,196)
-BLIT star1.png CENTERED (461,138)
-BLIT star1.png CENTERED (112,432)
-BLIT star0.png CENTERED (388,470)
-BLIT star1.png CENTERED (304,343)
-BLIT star1.png CENTERED (168,202)
-BLIT star1.png CENTERED (61,97)
-BLIT star1.png CENTERED (24,200)
-BLIT star1.png CENTERED (363,289)
-BLIT star0.png CENTERED (452,442)
-BLIT star1.png CENTERED (13,329)
-BLIT star0.png CENTERED (388,189)
-BLIT star1.png CENTERED (347,162)
-BLIT star2.png CENTERED (579,338)
-BLIT star1.png CENTERED (523,379)
-BLIT star1.png CENTERED (531,-129)
-BLIT star1.png CENTERED (63,-65)
-BLIT star0.png CENTERED (319,126)
-BLIT star1.png CENTERED (491,-101)
-BLIT star0.png CENTERED (313,323)
-BLIT star2.png CENTERED (118,153)
-BLIT star2.png CENTERED (179,-122)
-BLIT star2.png CENTERED (262,415)
-BLIT star1.png CENTERED (382,421)
-BLIT star0.png CENTERED (23,353)
-BLIT star0.png CENTERED (542,472)
-BLIT star2.png CENTERED (117,126)
-BLIT star2.png CENTERED (575,247)
-BLIT star1.png CENTERED (120,229)
-BLIT star1.png CENTERED (405,258)
-BLIT star2.png CENTERED (25,153)
-BLIT star2.png CENTERED (547,131)
-BLIT star1.png CENTERED (464,381)
-BLIT star1.png CENTERED (560,269)
-BLIT star1.png CENTERED (578,26)
-BLIT star2.png CENTERED (482,25)
-BLIT star0.png CENTERED (271,57)
-BLIT star2.png CENTERED (608,114)
-BLIT star2.png CENTERED (43,464)
-BLIT star1.png CENTERED (382,441)
-BLIT star2.png CENTERED (141,351)
-BLIT star1.png CENTERED (10,117)
-BLIT star2.png CENTERED (428,232)
-BLIT star0.png CENTERED (353,280)
-BLIT star1.png CENTERED (343,435)
-BLIT star2.png CENTERED (414,293)
-BLIT star1.png CENTERED (148,299)
-BLIT star2.png CENTERED (415,335)
-BLIT star1.png CENTERED (597,218)
-BLIT star2.png CENTERED (608,307)
-BLIT star0.png CENTERED (440,319)
-BLIT star2.png CENTERED (37,309)
-BLIT star2.png CENTERED (401,359)
-BLIT star0.png CENTERED (404,468)
-BLIT star1.png CENTERED (93,-69)
-BLIT star2.png CENTERED (468,347)
-BLIT star0.png CENTERED (211,159)
-BLIT star1.png CENTERED (349,321)
-BLIT star2.png CENTERED (620,432)
-BLIT star0.png CENTERED (321,424)
-BLIT star1.png CENTERED (605,307)
-BLIT star0.png CENTERED (517,-38)
-BLIT star1.png CENTERED (619,423)
-BLIT star2.png CENTERED (568,226)
-BLIT star0.png CENTERED (391,419)
-BLIT star2.png CENTERED (508,357)
-BLIT star1.png CENTERED (417,191)
-BLIT star2.png CENTERED (81,430)
-BLIT star0.png CENTERED (367,87)
-BLIT star2.png CENTERED (30,454)
-BLIT star1.png CENTERED (390,96)
-BLIT star1.png CENTERED (590,277)
-BLIT star1.png CENTERED (322,-110)
-BLIT star1.png CENTERED (476,470)
-BLIT star1.png CENTERED (102,151)
-BLIT star1.png CENTERED (263,98)
-BLIT star1.png CENTERED (381,-4)
-BLIT star1.png CENTERED (41,165)
-BLIT star2.png CENTERED (4,33)
-BLIT star0.png CENTERED (18,-100)
-BLIT star1.png CENTERED (309,478)
-BLIT star1.png CENTERED (285,146)
-BLIT star2.png CENTERED (246,9)
-BLIT star0.png CENTERED (322,219)
-BLIT star1.png CENTERED (247,254)
-BLIT star1.png CENTERED (265,315)
-BLIT star2.png CENTERED (207,475)
-BLIT star2.png CENTERED (194,407)
-BLIT star1.png CENTERED (429,-135)
-BLIT star0.png CENTERED (564,430)
-BLIT star2.png CENTERED (586,169)
-BLIT money.png CENTERED (296,255)
-BLIT money.png CENTERED (296,237)
-BLIT money.png CENTERED (289,239)
-BLIT money.png CENTERED (300,234)
-BLIT money.png CENTERED (311,232)
-BLIT money.png CENTERED (302,244)
-BLIT money.png CENTERED (272,248)
-BLIT money.png CENTERED (278,220)
-BLIT money.png CENTERED (272,255)
-BLIT money.png CENTERED (306,246)
-BLIT money.png CENTERED (302,240)
-BLIT money.png CENTERED (292,255)
-BLIT money.png CENTERED (296,232)
-BLIT money.png CENTERED (292,226)
-BLIT money.png CENTERED (291,235)
-BLIT money.png CENTERED (288,238)
-BLIT money.png CENTERED (310,222)
-BLIT money.png CENTERED (321,222)
-BLIT money.png CENTERED (287,218)
-BLIT money.png CENTERED (317,251)
-BLIT player_shoot.png CENTERED (328,-33)
-BLIT player_shoot.png CENTERED (299,278)
-BLIT enemy_shoot.png CENTERED (382,555)
-BLIT enemy_shoot.png CENTERED (354,543)
-BLIT enemy_shoot.png CENTERED (326,531)
-BLIT enemy_shoot.png CENTERED (311,516)
-BLIT enemy_shoot.png CENTERED (298,500)
-BLIT enemy_shoot.png CENTERED (288,485)
-BLIT enemy_shoot.png CENTERED (282,469)
-BLIT enemy_shoot.png CENTERED (280,453)
-BLIT enemy_missile.png CENTERED (235.952,165.52) ROTATED 3.142
-BLIT enemy0.png CENTERED (630,466)
-BLIT enemy2.png CENTERED (243,101)
-BLIT enemy0.png CENTERED (289,58)
-BLIT player_shoot.png (30,460)
-INPUT click 204.0 273.0
-read 27 click 522.0 447.0
-WAIT 27 for click 522.0 447.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,119)
-BLIT star1.png CENTERED (286,258)
-BLIT star0.png CENTERED (145,61)
-BLIT star1.png CENTERED (125,-124)
-BLIT star1.png CENTERED (184,-11)
-BLIT star1.png CENTERED (377,220)
-BLIT star0.png CENTERED (426,474)
-BLIT star2.png CENTERED (55,142)
-BLIT star1.png CENTERED (372,400)
-BLIT star1.png CENTERED (25,206)
-BLIT star1.png CENTERED (461,149)
-BLIT star1.png CENTERED (112,446)
-BLIT star0.png CENTERED (388,475)
-BLIT star1.png CENTERED (304,353)
-BLIT star1.png CENTERED (168,214)
-BLIT star1.png CENTERED (61,109)
-BLIT star1.png CENTERED (24,210)
-BLIT star1.png CENTERED (363,299)
-BLIT star0.png CENTERED (452,446)
-BLIT star1.png CENTERED (13,340)
-BLIT star0.png CENTERED (388,195)
-BLIT star1.png CENTERED (347,175)
-BLIT star2.png CENTERED (579,355)
-BLIT star1.png CENTERED (523,391)
-BLIT star1.png CENTERED (531,-120)
-BLIT star1.png CENTERED (63,-56)
-BLIT star0.png CENTERED (319,130)
-BLIT star1.png CENTERED (491,-93)
-BLIT star0.png CENTERED (313,328)
-BLIT star2.png CENTERED (118,167)
-BLIT star2.png CENTERED (179,-106)
-BLIT star2.png CENTERED (262,429)
-BLIT star1.png CENTERED (382,433)
-BLIT star0.png CENTERED (23,358)
-BLIT star0.png CENTERED (542,476)
-BLIT star2.png CENTERED (117,144)
-BLIT star2.png CENTERED (575,264)
-BLIT star1.png CENTERED (120,236)
-BLIT star1.png CENTERED (405,267)
-BLIT star2.png CENTERED (25,171)
-BLIT star2.png CENTERED (547,147)
-BLIT star1.png CENTERED (464,394)
-BLIT star1.png CENTERED (560,283)
-BLIT star1.png CENTERED (578,39)
-BLIT star2.png CENTERED (482,39)
-BLIT star0.png CENTERED (271,64)
-BLIT star2.png CENTERED (608,131)
-BLIT star0.png CENTERED (137,-73)
-BLIT star1.png CENTERED (382,449)
-BLIT star2.png CENTERED (141,367)
-BLIT star1.png CENTERED (10,130)
-BLIT star2.png CENTERED (428,248)
-BLIT star0.png CENTERED (353,284)
-BLIT star1.png CENTERED (343,443)
-BLIT star2.png CENTERED (414,308)
-BLIT star1.png CENTERED (148,311)
-BLIT star2.png CENTERED (415,350)
-BLIT star1.png CENTERED (597,231)
-BLIT star2.png CENTERED (608,322)
-BLIT star0.png CENTERED (440,325)
-BLIT star2.png CENTERED (37,323)
-BLIT star2.png CENTERED (401,374)
-BLIT star0.png CENTERED (404,474)
-BLIT star1.png CENTERED (93,-57)
-BLIT star2.png CENTERED (468,363)
-BLIT star0.png CENTERED (211,165)
-BLIT star1.png CENTERED (349,333)
-BLIT star2.png CENTERED (620,449)
-BLIT star0.png CENTERED (321,429)
-BLIT star1.png CENTERED (605,315)
-BLIT star0.png CENTERED (517,-34)
-BLIT star1.png CENTERED (619,433)
-BLIT star2.png CENTERED (568,242)
-BLIT star0.png CENTERED (391,424)
-BLIT star2.png CENTERED (508,372)
-BLIT star1.png CENTERED (417,199)
-BLIT star2.png CENTERED (81,446)
-BLIT star0.png CENTERED (367,93)
-BLIT star2.png CENTERED (30,469)
-BLIT star1.png CENTERED (390,105)
-BLIT star1.png CENTERED (590,290)
-BLIT star1.png CENTERED (322,-99)
-BLIT star0.png CENTERED (195,-151)
-BLIT star1.png CENTERED (102,162)
-BLIT star1.png CENTERED (263,107)
-BLIT star1.png CENTERED (381,3)
-BLIT star1.png CENTERED (41,172)
-BLIT star2.png CENTERED (4,49)
-BLIT star0.png CENTERED (18,-95)
-BLIT star1.png CENTERED (193,-11)
-BLIT star1.png CENTERED (285,158)
-BLIT star2.png CENTERED (246,27)
-BLIT star0.png CENTERED (322,225)
-BLIT star1.png CENTERED (247,261)
-BLIT star1.png CENTERED (265,323)
-BLIT star2.png CENTERED (628,-101)
-BLIT star2.png CENTERED (194,423)
-BLIT star1.png CENTERED (429,-125)
-BLIT star0.png CENTERED (564,435)
-BLIT star2.png CENTERED (586,186)
-BLIT explosion.png CENTERED (286,126)
-BLIT explosion.png CENTERED (281,125)
-BLIT explosion.png CENTERED (288,129)
-BLIT explosion.png CENTERED (292,126)
-BLIT explosion.png CENTERED (282,126)
-BLIT money.png CENTERED (296,274)
-BLIT money.png CENTERED (296,255)
-BLIT money.png CENTERED (289,257)
-BLIT money.png CENTERED (300,252)
-BLIT money.png CENTERED (312,249)
-BLIT money.png CENTERED (302,262)
-BLIT money.png CENTERED (272,266)
-BLIT money.png CENTERED (278,237)
-BLIT money.png CENTERED (271,273)
-BLIT money.png CENTERED (306,263)
-BLIT money.png CENTERED (302,257)
-BLIT money.png CENTERED (292,273)
-BLIT money.png CENTERED (296,250)
-BLIT money.png CENTERED (292,243)
-BLIT money.png CENTERED (291,252)
-BLIT money.png CENTERED (288,256)
-BLIT money.png CENTERED (311,239)
-BLIT money.png CENTERED (322,239)
-BLIT money.png CENTERED (287,235)
-BLIT money.png CENTERED (317,269)
-BLIT money.png CENTERED (284,140)
-BLIT money.png CENTERED (287,119)
-BLIT money.png CENTERED (287,120)
-BLIT player_shoot.png CENTERED (304,346)
-BLIT enemy_missile.png CENTERED (251.704,313.56) ROTATED 2.913
-BLIT enemy0.png CENTERED (661,544)
-BLIT enemy2.png CENTERED (263,168)
-BLIT player.png CENTERED (270,397)
-BLIT player_shoot.png (30,460)
-INPUT click 522.0 447.0
-read 24 click 32.0 459.0
-WAIT 24 for click 32.0 459.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,124)
-BLIT star1.png CENTERED (286,265)
-BLIT star0.png CENTERED (145,65)
-BLIT star1.png CENTERED (125,-118)
-BLIT star1.png CENTERED (184,-4)
-BLIT star1.png CENTERED (377,228)
-BLIT star0.png CENTERED (426,478)
-BLIT star2.png CENTERED (55,151)
-BLIT star1.png CENTERED (372,406)
-BLIT star1.png CENTERED (25,212)
-BLIT star1.png CENTERED (461,156)
-BLIT star1.png CENTERED (112,454)
-BLIT star0.png CENTERED (388,478)
-BLIT star1.png CENTERED (304,359)
-BLIT star1.png CENTERED (168,221)
-BLIT star1.png CENTERED (61,117)
-BLIT star1.png CENTERED (24,217)
-BLIT star1.png CENTERED (363,305)
-BLIT star0.png CENTERED (452,448)
-BLIT star1.png CENTERED (13,346)
-BLIT star0.png CENTERED (388,199)
-BLIT star1.png CENTERED (347,183)
-BLIT star2.png CENTERED (579,365)
-BLIT star1.png CENTERED (523,399)
-BLIT star1.png CENTERED (531,-114)
-BLIT star1.png CENTERED (63,-51)
-BLIT star0.png CENTERED (319,133)
-BLIT star1.png CENTERED (491,-88)
-BLIT star0.png CENTERED (313,331)
-BLIT star2.png CENTERED (118,176)
-BLIT star2.png CENTERED (179,-96)
-BLIT star2.png CENTERED (262,438)
-BLIT star1.png CENTERED (382,440)
-BLIT star0.png CENTERED (23,361)
-BLIT star0.png CENTERED (542,478)
-BLIT star2.png CENTERED (117,154)
-BLIT star2.png CENTERED (575,274)
-BLIT star1.png CENTERED (120,240)
-BLIT star1.png CENTERED (405,272)
-BLIT star2.png CENTERED (25,182)
-BLIT star2.png CENTERED (547,157)
-BLIT star1.png CENTERED (464,402)
-BLIT star1.png CENTERED (560,291)
-BLIT star1.png CENTERED (578,48)
-BLIT star2.png CENTERED (482,47)
-BLIT star0.png CENTERED (271,68)
-BLIT star2.png CENTERED (608,141)
-BLIT star0.png CENTERED (137,-69)
-BLIT star1.png CENTERED (382,455)
-BLIT star2.png CENTERED (141,376)
-BLIT star1.png CENTERED (10,138)
-BLIT star2.png CENTERED (428,258)
-BLIT star0.png CENTERED (353,287)
-BLIT star1.png CENTERED (343,447)
-BLIT star2.png CENTERED (414,317)
-BLIT star1.png CENTERED (148,318)
-BLIT star2.png CENTERED (415,360)
-BLIT star1.png CENTERED (597,239)
-BLIT star2.png CENTERED (608,331)
-BLIT star0.png CENTERED (440,329)
-BLIT star2.png CENTERED (37,332)
-BLIT star2.png CENTERED (401,384)
-BLIT star0.png CENTERED (404,478)
-BLIT star1.png CENTERED (93,-50)
-BLIT star2.png CENTERED (468,372)
-BLIT star0.png CENTERED (211,169)
-BLIT star1.png CENTERED (349,340)
-BLIT star2.png CENTERED (620,459)
-BLIT star0.png CENTERED (321,432)
-BLIT star1.png CENTERED (605,319)
-BLIT star0.png CENTERED (517,-31)
-BLIT star1.png CENTERED (619,439)
-BLIT star2.png CENTERED (568,251)
-BLIT star0.png CENTERED (391,427)
-BLIT star2.png CENTERED (508,382)
-BLIT star1.png CENTERED (417,205)
-BLIT star2.png CENTERED (81,455)
-BLIT star0.png CENTERED (367,96)
-BLIT star2.png CENTERED (30,479)
-BLIT star1.png CENTERED (390,111)
-BLIT star1.png CENTERED (590,299)
-BLIT star1.png CENTERED (322,-92)
-BLIT star0.png CENTERED (195,-147)
-BLIT star1.png CENTERED (102,169)
-BLIT star1.png CENTERED (263,112)
-BLIT star1.png CENTERED (381,8)
-BLIT star1.png CENTERED (41,177)
-BLIT star2.png CENTERED (4,59)
-BLIT star0.png CENTERED (18,-92)
-BLIT star1.png CENTERED (193,-5)
-BLIT star1.png CENTERED (285,165)
-BLIT star2.png CENTERED (246,37)
-BLIT star0.png CENTERED (322,229)
-BLIT star1.png CENTERED (247,266)
-BLIT star1.png CENTERED (265,329)
-BLIT star2.png CENTERED (628,-90)
-BLIT star2.png CENTERED (194,433)
-BLIT star1.png CENTERED (429,-119)
-BLIT star0.png CENTERED (564,437)
-BLIT star2.png CENTERED (586,196)
-BLIT money.png CENTERED (296,284)
-BLIT money.png CENTERED (296,266)
-BLIT money.png CENTERED (289,267)
-BLIT money.png CENTERED (300,263)
-BLIT money.png CENTERED (312,260)
-BLIT money.png CENTERED (302,273)
-BLIT money.png CENTERED (272,277)
-BLIT money.png CENTERED (278,248)
-BLIT money.png CENTERED (271,284)
-BLIT money.png CENTERED (306,274)
-BLIT money.png CENTERED (302,268)
-BLIT money.png CENTERED (292,284)
-BLIT money.png CENTERED (296,260)
-BLIT money.png CENTERED (292,254)
-BLIT money.png CENTERED (291,263)
-BLIT money.png CENTERED (288,267)
-BLIT money.png CENTERED (311,250)
-BLIT money.png CENTERED (322,250)
-BLIT money.png CENTERED (287,246)
-BLIT money.png CENTERED (317,279)
-BLIT money.png CENTERED (284,160)
-BLIT money.png CENTERED (287,129)
-BLIT money.png CENTERED (287,131)
-BLIT player_shoot.png CENTERED (304,238)
-BLIT player_shoot.png CENTERED (240,303)
-BLIT enemy2.png CENTERED (275,209)
-BLIT player_shoot.png (30,460)
-INPUT click 32.0 459.0
-read 19 click 325.0 515.0
-WAIT 19 for click 325.0 515.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,129)
-BLIT star1.png CENTERED (286,271)
-BLIT star0.png CENTERED (145,68)
-BLIT star1.png CENTERED (125,-112)
-BLIT star1.png CENTERED (184,2)
-BLIT star1.png CENTERED (377,235)
-BLIT star0.png CENTERED (199,-157)
-BLIT star2.png CENTERED (55,159)
-BLIT star1.png CENTERED (372,412)
-BLIT star1.png CENTERED (25,218)
-BLIT star1.png CENTERED (461,162)
-BLIT star1.png CENTERED (112,462)
-BLIT star1.png CENTERED (140,-148)
-BLIT star1.png CENTERED (304,364)
-BLIT star1.png CENTERED (168,227)
-BLIT star1.png CENTERED (61,124)
-BLIT star1.png CENTERED (24,222)
-BLIT star1.png CENTERED (363,311)
-BLIT star0.png CENTERED (452,450)
-BLIT star1.png CENTERED (13,352)
-BLIT star0.png CENTERED (388,202)
-BLIT star1.png CENTERED (347,190)
-BLIT star2.png CENTERED (579,375)
-BLIT star1.png CENTERED (523,405)
-BLIT star1.png CENTERED (531,-109)
-BLIT star1.png CENTERED (63,-47)
-BLIT star0.png CENTERED (319,136)
-BLIT star1.png CENTERED (491,-83)
-BLIT star0.png CENTERED (313,334)
-BLIT star2.png CENTERED (118,184)
-BLIT star2.png CENTERED (179,-87)
-BLIT star2.png CENTERED (262,446)
-BLIT star1.png CENTERED (382,447)
-BLIT star0.png CENTERED (23,363)
-BLIT star1.png CENTERED (302,-70)
-BLIT star2.png CENTERED (117,164)
-BLIT star2.png CENTERED (575,283)
-BLIT star1.png CENTERED (120,244)
-BLIT star1.png CENTERED (405,277)
-BLIT star2.png CENTERED (25,191)
-BLIT star2.png CENTERED (547,166)
-BLIT star1.png CENTERED (464,409)
-BLIT star1.png CENTERED (560,298)
-BLIT star1.png CENTERED (578,55)
-BLIT star2.png CENTERED (482,55)
-BLIT star0.png CENTERED (271,71)
-BLIT star2.png CENTERED (608,150)
-BLIT star0.png CENTERED (137,-65)
-BLIT star1.png CENTERED (382,460)
-BLIT star2.png CENTERED (141,384)
-BLIT star1.png CENTERED (10,145)
-BLIT star2.png CENTERED (428,267)
-BLIT star0.png CENTERED (353,290)
-BLIT star1.png CENTERED (343,451)
-BLIT star2.png CENTERED (414,325)
-BLIT star1.png CENTERED (148,325)
-BLIT star2.png CENTERED (415,368)
-BLIT star1.png CENTERED (597,247)
-BLIT star2.png CENTERED (608,339)
-BLIT star0.png CENTERED (440,332)
-BLIT star2.png CENTERED (37,340)
-BLIT star2.png CENTERED (401,392)
-BLIT star0.png CENTERED (463,-98)
-BLIT star1.png CENTERED (93,-44)
-BLIT star2.png CENTERED (468,381)
-BLIT star0.png CENTERED (211,173)
-BLIT star1.png CENTERED (349,347)
-BLIT star2.png CENTERED (620,468)
-BLIT star0.png CENTERED (321,434)
-BLIT star1.png CENTERED (605,323)
-BLIT star0.png CENTERED (517,-29)
-BLIT star1.png CENTERED (619,445)
-BLIT star2.png CENTERED (568,260)
-BLIT star0.png CENTERED (391,429)
-BLIT star2.png CENTERED (508,390)
-BLIT star1.png CENTERED (417,209)
-BLIT star2.png CENTERED (81,464)
-BLIT star0.png CENTERED (367,99)
-BLIT star1.png CENTERED (280,-126)
-BLIT star1.png CENTERED (390,116)
-BLIT star1.png CENTERED (590,306)
-BLIT star1.png CENTERED (322,-86)
-BLIT star0.png CENTERED (195,-144)
-BLIT star1.png CENTERED (102,175)
-BLIT star1.png CENTERED (263,116)
-BLIT star1.png CENTERED (381,12)
-BLIT star1.png CENTERED (41,181)
-BLIT star2.png CENTERED (4,69)
-BLIT star0.png CENTERED (18,-90)
-BLIT star1.png CENTERED (193,0)
-BLIT star1.png CENTERED (285,171)
-BLIT star2.png CENTERED (246,47)
-BLIT star0.png CENTERED (322,232)
-BLIT star1.png CENTERED (247,270)
-BLIT star1.png CENTERED (265,334)
-BLIT star2.png CENTERED (628,-81)
-BLIT star2.png CENTERED (194,442)
-BLIT star1.png CENTERED (429,-114)
-BLIT star0.png CENTERED (564,440)
-BLIT star2.png CENTERED (586,204)
-BLIT money.png CENTERED (296,294)
-BLIT money.png CENTERED (296,275)
-BLIT money.png CENTERED (289,277)
-BLIT money.png CENTERED (300,272)
-BLIT money.png CENTERED (312,270)
-BLIT money.png CENTERED (302,282)
-BLIT money.png CENTERED (272,286)
-BLIT money.png CENTERED (278,257)
-BLIT money.png CENTERED (271,294)
-BLIT money.png CENTERED (306,284)
-BLIT money.png CENTERED (302,278)
-BLIT money.png CENTERED (292,294)
-BLIT money.png CENTERED (296,270)
-BLIT money.png CENTERED (292,263)
-BLIT money.png CENTERED (291,273)
-BLIT money.png CENTERED (288,276)
-BLIT money.png CENTERED (311,259)
-BLIT money.png CENTERED (322,259)
-BLIT money.png CENTERED (287,256)
-BLIT money.png CENTERED (317,289)
-BLIT money.png CENTERED (284,169)
-BLIT money.png CENTERED (287,139)
-BLIT money.png CENTERED (287,141)
-BLIT money.png CENTERED (286,244)
-BLIT money.png CENTERED (283,209)
-BLIT money.png CENTERED (278,225)
-BLIT money.png CENTERED (287,221)
-BLIT money.png CENTERED (281,237)
-BLIT money.png CENTERED (296,243)
-BLIT money.png CENTERED (286,215)
-BLIT money.png CENTERED (276,229)
-BLIT money.png CENTERED (276,224)
-BLIT money.png CENTERED (276,205)
-BLIT player_shoot.png CENTERED (240,207)
-BLIT player_shoot.png CENTERED (299,346)
-BLIT player.png CENTERED (299,355)
-BLIT player_shoot.png (30,460)
-INPUT click 325.0 515.0
-read 15 click 333.0 554.0
-WAIT 15 for click 333.0 554.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,133)
-BLIT star1.png CENTERED (286,276)
-BLIT star0.png CENTERED (145,71)
-BLIT star1.png CENTERED (125,-108)
-BLIT star1.png CENTERED (184,7)
-BLIT star1.png CENTERED (377,241)
-BLIT star0.png CENTERED (199,-154)
-BLIT star2.png CENTERED (55,166)
-BLIT star1.png CENTERED (372,416)
-BLIT star1.png CENTERED (25,222)
-BLIT star1.png CENTERED (461,167)
-BLIT star1.png CENTERED (112,468)
-BLIT star1.png CENTERED (140,-143)
-BLIT star1.png CENTERED (304,369)
-BLIT star1.png CENTERED (168,232)
-BLIT star1.png CENTERED (61,130)
-BLIT star1.png CENTERED (24,227)
-BLIT star1.png CENTERED (363,315)
-BLIT star0.png CENTERED (452,452)
-BLIT star1.png CENTERED (13,357)
-BLIT star0.png CENTERED (388,205)
-BLIT star1.png CENTERED (347,196)
-BLIT star2.png CENTERED (579,382)
-BLIT star1.png CENTERED (523,411)
-BLIT star1.png CENTERED (531,-105)
-BLIT star1.png CENTERED (63,-43)
-BLIT star0.png CENTERED (319,138)
-BLIT star1.png CENTERED (491,-80)
-BLIT star0.png CENTERED (313,336)
-BLIT star2.png CENTERED (118,190)
-BLIT star2.png CENTERED (179,-79)
-BLIT star2.png CENTERED (262,452)
-BLIT star1.png CENTERED (382,452)
-BLIT star0.png CENTERED (23,365)
-BLIT star1.png CENTERED (302,-64)
-BLIT star2.png CENTERED (117,171)
-BLIT star2.png CENTERED (575,290)
-BLIT star1.png CENTERED (120,247)
-BLIT star1.png CENTERED (405,280)
-BLIT star2.png CENTERED (25,199)
-BLIT star2.png CENTERED (547,173)
-BLIT star1.png CENTERED (464,415)
-BLIT star1.png CENTERED (560,304)
-BLIT star1.png CENTERED (578,61)
-BLIT star2.png CENTERED (482,61)
-BLIT star0.png CENTERED (271,74)
-BLIT star2.png CENTERED (608,157)
-BLIT star0.png CENTERED (137,-62)
-BLIT star1.png CENTERED (382,463)
-BLIT star2.png CENTERED (141,391)
-BLIT star1.png CENTERED (10,151)
-BLIT star2.png CENTERED (428,274)
-BLIT star0.png CENTERED (353,292)
-BLIT star1.png CENTERED (343,455)
-BLIT star2.png CENTERED (414,331)
-BLIT star1.png CENTERED (148,330)
-BLIT star2.png CENTERED (415,374)
-BLIT star1.png CENTERED (597,252)
-BLIT star2.png CENTERED (608,345)
-BLIT star0.png CENTERED (440,335)
-BLIT star2.png CENTERED (37,347)
-BLIT star2.png CENTERED (401,399)
-BLIT star0.png CENTERED (463,-96)
-BLIT star1.png CENTERED (93,-39)
-BLIT star2.png CENTERED (468,388)
-BLIT star0.png CENTERED (211,176)
-BLIT star1.png CENTERED (349,352)
-BLIT star2.png CENTERED (620,476)
-BLIT star0.png CENTERED (321,436)
-BLIT star1.png CENTERED (605,326)
-BLIT star0.png CENTERED (517,-27)
-BLIT star1.png CENTERED (619,449)
-BLIT star2.png CENTERED (568,266)
-BLIT star0.png CENTERED (391,431)
-BLIT star2.png CENTERED (508,396)
-BLIT star1.png CENTERED (417,213)
-BLIT star2.png CENTERED (81,470)
-BLIT star0.png CENTERED (367,102)
-BLIT star1.png CENTERED (280,-122)
-BLIT star1.png CENTERED (390,120)
-BLIT star1.png CENTERED (590,312)
-BLIT star1.png CENTERED (322,-81)
-BLIT star0.png CENTERED (195,-142)
-BLIT star1.png CENTERED (102,180)
-BLIT star1.png CENTERED (263,120)
-BLIT star1.png CENTERED (381,15)
-BLIT star1.png CENTERED (41,184)
-BLIT star2.png CENTERED (4,76)
-BLIT star0.png CENTERED (18,-88)
-BLIT star1.png CENTERED (193,3)
-BLIT star1.png CENTERED (285,176)
-BLIT star2.png CENTERED (246,54)
-BLIT star0.png CENTERED (322,235)
-BLIT star1.png CENTERED (247,273)
-BLIT star1.png CENTERED (265,337)
-BLIT star2.png CENTERED (628,-73)
-BLIT star2.png CENTERED (194,449)
-BLIT star1.png CENTERED (429,-110)
-BLIT star0.png CENTERED (564,441)
-BLIT star2.png CENTERED (586,211)
-BLIT money.png CENTERED (296,302)
-BLIT money.png CENTERED (296,283)
-BLIT money.png CENTERED (289,285)
-BLIT money.png CENTERED (300,280)
-BLIT money.png CENTERED (312,277)
-BLIT money.png CENTERED (302,290)
-BLIT money.png CENTERED (272,294)
-BLIT money.png CENTERED (278,265)
-BLIT money.png CENTERED (271,301)
-BLIT money.png CENTERED (306,291)
-BLIT money.png CENTERED (302,285)
-BLIT money.png CENTERED (292,301)
-BLIT money.png CENTERED (296,278)
-BLIT money.png CENTERED (292,271)
-BLIT money.png CENTERED (291,280)
-BLIT money.png CENTERED (288,284)
-BLIT money.png CENTERED (311,267)
-BLIT money.png CENTERED (322,267)
-BLIT money.png CENTERED (287,263)
-BLIT money.png CENTERED (317,297)
-BLIT money.png CENTERED (284,177)
-BLIT money.png CENTERED (287,146)
-BLIT money.png CENTERED (287,148)
-BLIT money.png CENTERED (287,252)
-BLIT money.png CENTERED (283,216)
-BLIT money.png CENTERED (278,232)
-BLIT money.png CENTERED (288,229)
-BLIT money.png CENTERED (281,245)
-BLIT money.png CENTERED (297,251)
-BLIT money.png CENTERED (286,222)
-BLIT money.png CENTERED (276,237)
-BLIT money.png CENTERED (276,231)
-BLIT money.png CENTERED (276,212)
-BLIT player_shoot.png CENTERED (240,131)
-BLIT player_shoot.png CENTERED (299,270)
-BLIT enemy1.png CENTERED (272,3)
-BLIT enemy1.png CENTERED (174,0)
-BLIT player.png CENTERED (247,379)
-BLIT player_shoot.png (30,460)
-INPUT click 333.0 554.0
-read 12 click 293.0 558.0
-WAIT 12 for click 293.0 558.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,135)
-BLIT star1.png CENTERED (286,280)
-BLIT star0.png CENTERED (145,73)
-BLIT star1.png CENTERED (125,-105)
-BLIT star1.png CENTERED (184,11)
-BLIT star1.png CENTERED (377,245)
-BLIT star0.png CENTERED (199,-152)
-BLIT star2.png CENTERED (55,171)
-BLIT star1.png CENTERED (372,419)
-BLIT star1.png CENTERED (25,226)
-BLIT star1.png CENTERED (461,171)
-BLIT star1.png CENTERED (112,473)
-BLIT star1.png CENTERED (140,-138)
-BLIT star1.png CENTERED (304,372)
-BLIT star1.png CENTERED (168,235)
-BLIT star1.png CENTERED (61,134)
-BLIT star1.png CENTERED (24,230)
-BLIT star1.png CENTERED (363,319)
-BLIT star0.png CENTERED (452,453)
-BLIT star1.png CENTERED (13,360)
-BLIT star0.png CENTERED (388,207)
-BLIT star1.png CENTERED (347,200)
-BLIT star2.png CENTERED (579,388)
-BLIT star1.png CENTERED (523,415)
-BLIT star1.png CENTERED (531,-102)
-BLIT star1.png CENTERED (63,-40)
-BLIT star0.png CENTERED (319,139)
-BLIT star1.png CENTERED (491,-77)
-BLIT star0.png CENTERED (313,338)
-BLIT star2.png CENTERED (118,195)
-BLIT star2.png CENTERED (179,-74)
-BLIT star2.png CENTERED (262,457)
-BLIT star1.png CENTERED (382,456)
-BLIT star0.png CENTERED (23,367)
-BLIT star1.png CENTERED (302,-59)
-BLIT star2.png CENTERED (117,177)
-BLIT star2.png CENTERED (575,295)
-BLIT star1.png CENTERED (120,249)
-BLIT star1.png CENTERED (405,283)
-BLIT star2.png CENTERED (25,205)
-BLIT star2.png CENTERED (547,178)
-BLIT star1.png CENTERED (464,420)
-BLIT star1.png CENTERED (560,309)
-BLIT star1.png CENTERED (578,66)
-BLIT star2.png CENTERED (482,66)
-BLIT star0.png CENTERED (271,76)
-BLIT star2.png CENTERED (608,163)
-BLIT star0.png CENTERED (137,-60)
-BLIT star1.png CENTERED (382,466)
-BLIT star2.png CENTERED (141,396)
-BLIT star1.png CENTERED (10,155)
-BLIT star2.png CENTERED (428,280)
-BLIT star0.png CENTERED (353,293)
-BLIT star1.png CENTERED (343,457)
-BLIT star2.png CENTERED (414,336)
-BLIT star1.png CENTERED (148,335)
-BLIT star2.png CENTERED (415,380)
-BLIT star1.png CENTERED (597,257)
-BLIT star2.png CENTERED (608,350)
-BLIT star0.png CENTERED (440,337)
-BLIT star2.png CENTERED (37,352)
-BLIT star2.png CENTERED (401,404)
-BLIT star0.png CENTERED (463,-94)
-BLIT star1.png CENTERED (93,-35)
-BLIT star2.png CENTERED (468,393)
-BLIT star0.png CENTERED (211,178)
-BLIT star1.png CENTERED (349,357)
-BLIT star0.png CENTERED (370,-158)
-BLIT star0.png CENTERED (321,438)
-BLIT star1.png CENTERED (605,329)
-BLIT star0.png CENTERED (517,-25)
-BLIT star1.png CENTERED (619,453)
-BLIT star2.png CENTERED (568,272)
-BLIT star0.png CENTERED (391,433)
-BLIT star2.png CENTERED (508,402)
-BLIT star1.png CENTERED (417,216)
-BLIT star2.png CENTERED (81,476)
-BLIT star0.png CENTERED (367,104)
-BLIT star1.png CENTERED (280,-119)
-BLIT star1.png CENTERED (390,123)
-BLIT star1.png CENTERED (590,316)
-BLIT star1.png CENTERED (322,-77)
-BLIT star0.png CENTERED (195,-140)
-BLIT star1.png CENTERED (102,183)
-BLIT star1.png CENTERED (263,123)
-BLIT star1.png CENTERED (381,18)
-BLIT star1.png CENTERED (41,186)
-BLIT star2.png CENTERED (4,81)
-BLIT star0.png CENTERED (18,-86)
-BLIT star1.png CENTERED (193,6)
-BLIT star1.png CENTERED (285,179)
-BLIT star2.png CENTERED (246,60)
-BLIT star0.png CENTERED (322,237)
-BLIT star1.png CENTERED (247,275)
-BLIT star1.png CENTERED (265,340)
-BLIT star2.png CENTERED (628,-68)
-BLIT star2.png CENTERED (194,455)
-BLIT star1.png CENTERED (429,-107)
-BLIT star0.png CENTERED (564,443)
-BLIT star2.png CENTERED (586,217)
-BLIT money.png CENTERED (296,308)
-BLIT money.png CENTERED (296,289)
-BLIT money.png CENTERED (289,291)
-BLIT money.png CENTERED (300,286)
-BLIT money.png CENTERED (312,283)
-BLIT money.png CENTERED (302,296)
-BLIT money.png CENTERED (272,300)
-BLIT money.png CENTERED (278,271)
-BLIT money.png CENTERED (271,307)
-BLIT money.png CENTERED (306,297)
-BLIT money.png CENTERED (302,291)
-BLIT money.png CENTERED (292,307)
-BLIT money.png CENTERED (296,284)
-BLIT money.png CENTERED (292,277)
-BLIT money.png CENTERED (291,286)
-BLIT money.png CENTERED (288,290)
-BLIT money.png CENTERED (311,273)
-BLIT money.png CENTERED (322,273)
-BLIT money.png CENTERED (287,269)
-BLIT money.png CENTERED (317,303)
-BLIT money.png CENTERED (284,183)
-BLIT money.png CENTERED (287,152)
-BLIT money.png CENTERED (287,154)
-BLIT money.png CENTERED (287,258)
-BLIT money.png CENTERED (283,222)
-BLIT money.png CENTERED (278,238)
-BLIT money.png CENTERED (288,235)
-BLIT money.png CENTERED (281,251)
-BLIT money.png CENTERED (297,257)
-BLIT money.png CENTERED (286,228)
-BLIT money.png CENTERED (276,243)
-BLIT money.png CENTERED (276,237)
-BLIT money.png CENTERED (276,218)
-BLIT player_shoot.png CENTERED (240,71)
-BLIT player_shoot.png CENTERED (299,210)
-BLIT player_shoot.png CENTERED (266,390)
-BLIT enemy1.png CENTERED (270,31)
-BLIT enemy1.png CENTERED (176,25)
-BLIT player.png CENTERED (270,420)
-BLIT player_shoot.png (30,460)
-INPUT click 293.0 558.0
-read 21 click 385.0 549.0
-WAIT 21 for click 385.0 549.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,138)
-BLIT star1.png CENTERED (286,283)
-BLIT star0.png CENTERED (145,75)
-BLIT star1.png CENTERED (125,-102)
-BLIT star1.png CENTERED (184,14)
-BLIT star1.png CENTERED (377,249)
-BLIT star0.png CENTERED (199,-151)
-BLIT star2.png CENTERED (55,175)
-BLIT star1.png CENTERED (372,422)
-BLIT star1.png CENTERED (25,228)
-BLIT star1.png CENTERED (461,174)
-BLIT star1.png CENTERED (112,476)
-BLIT star1.png CENTERED (140,-135)
-BLIT star1.png CENTERED (304,375)
-BLIT star1.png CENTERED (168,239)
-BLIT star1.png CENTERED (61,137)
-BLIT star1.png CENTERED (24,233)
-BLIT star1.png CENTERED (363,321)
-BLIT star0.png CENTERED (452,454)
-BLIT star1.png CENTERED (13,363)
-BLIT star0.png CENTERED (388,209)
-BLIT star1.png CENTERED (347,204)
-BLIT star2.png CENTERED (579,393)
-BLIT star1.png CENTERED (523,418)
-BLIT star1.png CENTERED (531,-100)
-BLIT star1.png CENTERED (63,-38)
-BLIT star0.png CENTERED (319,140)
-BLIT star1.png CENTERED (491,-75)
-BLIT star0.png CENTERED (313,339)
-BLIT star2.png CENTERED (118,199)
-BLIT star2.png CENTERED (179,-69)
-BLIT star2.png CENTERED (262,460)
-BLIT star1.png CENTERED (382,459)
-BLIT star0.png CENTERED (23,368)
-BLIT star1.png CENTERED (302,-55)
-BLIT star2.png CENTERED (117,182)
-BLIT star2.png CENTERED (575,300)
-BLIT star1.png CENTERED (120,251)
-BLIT star1.png CENTERED (405,285)
-BLIT star2.png CENTERED (25,210)
-BLIT star2.png CENTERED (547,183)
-BLIT star1.png CENTERED (464,423)
-BLIT star1.png CENTERED (560,313)
-BLIT star1.png CENTERED (578,70)
-BLIT star2.png CENTERED (482,70)
-BLIT star0.png CENTERED (271,78)
-BLIT star2.png CENTERED (608,168)
-BLIT star0.png CENTERED (137,-58)
-BLIT star1.png CENTERED (382,469)
-BLIT star2.png CENTERED (141,400)
-BLIT star1.png CENTERED (10,159)
-BLIT star2.png CENTERED (428,285)
-BLIT star0.png CENTERED (353,294)
-BLIT star1.png CENTERED (343,459)
-BLIT star2.png CENTERED (414,341)
-BLIT star1.png CENTERED (148,338)
-BLIT star2.png CENTERED (415,384)
-BLIT star1.png CENTERED (597,261)
-BLIT star2.png CENTERED (608,354)
-BLIT star0.png CENTERED (440,339)
-BLIT star2.png CENTERED (37,356)
-BLIT star2.png CENTERED (401,409)
-BLIT star0.png CENTERED (463,-92)
-BLIT star1.png CENTERED (93,-31)
-BLIT star2.png CENTERED (468,397)
-BLIT star0.png CENTERED (211,180)
-BLIT star1.png CENTERED (349,360)
-BLIT star0.png CENTERED (370,-157)
-BLIT star0.png CENTERED (321,439)
-BLIT star1.png CENTERED (605,331)
-BLIT star0.png CENTERED (517,-24)
-BLIT star1.png CENTERED (619,456)
-BLIT star2.png CENTERED (568,276)
-BLIT star0.png CENTERED (391,434)
-BLIT star2.png CENTERED (508,406)
-BLIT star1.png CENTERED (417,218)
-BLIT star2.png CENTERED (531,-9)
-BLIT star0.png CENTERED (367,105)
-BLIT star1.png CENTERED (280,-117)
-BLIT star1.png CENTERED (390,126)
-BLIT star1.png CENTERED (590,320)
-BLIT star1.png CENTERED (322,-74)
-BLIT star0.png CENTERED (195,-138)
-BLIT star1.png CENTERED (102,186)
-BLIT star1.png CENTERED (263,125)
-BLIT star1.png CENTERED (381,20)
-BLIT star1.png CENTERED (41,188)
-BLIT star2.png CENTERED (4,86)
-BLIT star0.png CENTERED (18,-85)
-BLIT star1.png CENTERED (193,8)
-BLIT star1.png CENTERED (285,183)
-BLIT star2.png CENTERED (246,65)
-BLIT star0.png CENTERED (322,238)
-BLIT star1.png CENTERED (247,277)
-BLIT star1.png CENTERED (265,343)
-BLIT star2.png CENTERED (628,-63)
-BLIT star2.png CENTERED (194,459)
-BLIT star1.png CENTERED (429,-104)
-BLIT star0.png CENTERED (564,444)
-BLIT star2.png CENTERED (586,221)
-BLIT money.png CENTERED (296,312)
-BLIT money.png CENTERED (296,294)
-BLIT money.png CENTERED (289,295)
-BLIT money.png CENTERED (300,291)
-BLIT money.png CENTERED (312,288)
-BLIT money.png CENTERED (302,301)
-BLIT money.png CENTERED (272,305)
-BLIT money.png CENTERED (278,276)
-BLIT money.png CENTERED (271,312)
-BLIT money.png CENTERED (306,302)
-BLIT money.png CENTERED (302,296)
-BLIT money.png CENTERED (292,312)
-BLIT money.png CENTERED (296,288)
-BLIT money.png CENTERED (292,282)
-BLIT money.png CENTERED (291,291)
-BLIT money.png CENTERED (288,295)
-BLIT money.png CENTERED (311,278)
-BLIT money.png CENTERED (322,278)
-BLIT money.png CENTERED (287,274)
-BLIT money.png CENTERED (317,307)
-BLIT money.png CENTERED (284,188)
-BLIT money.png CENTERED (287,157)
-BLIT money.png CENTERED (287,159)
-BLIT money.png CENTERED (287,263)
-BLIT money.png CENTERED (283,227)
-BLIT money.png CENTERED (278,243)
-BLIT money.png CENTERED (288,240)
-BLIT money.png CENTERED (281,256)
-BLIT money.png CENTERED (297,262)
-BLIT money.png CENTERED (286,233)
-BLIT money.png CENTERED (276,247)
-BLIT money.png CENTERED (276,242)
-BLIT money.png CENTERED (276,223)
-BLIT player_shoot.png CENTERED (240,23)
-BLIT player_shoot.png CENTERED (299,162)
-BLIT player_shoot.png CENTERED (266,342)
-BLIT enemy1.png CENTERED (269,53)
-BLIT enemy1.png CENTERED (177,46)
-BLIT player.png CENTERED (285,455)
-BLIT player_shoot.png (30,460)
-INPUT click 385.0 549.0
-read 13 click 318.0 545.0
-WAIT 13 for click 318.0 545.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,142)
-BLIT star1.png CENTERED (286,288)
-BLIT star0.png CENTERED (145,79)
-BLIT star1.png CENTERED (125,-97)
-BLIT star1.png CENTERED (184,19)
-BLIT star1.png CENTERED (377,255)
-BLIT star0.png CENTERED (199,-148)
-BLIT star2.png CENTERED (55,182)
-BLIT star1.png CENTERED (372,427)
-BLIT star1.png CENTERED (25,233)
-BLIT star1.png CENTERED (461,179)
-BLIT star0.png CENTERED (465,-7)
-BLIT star1.png CENTERED (140,-129)
-BLIT star1.png CENTERED (304,379)
-BLIT star1.png CENTERED (168,244)
-BLIT star1.png CENTERED (61,143)
-BLIT star1.png CENTERED (24,238)
-BLIT star1.png CENTERED (363,326)
-BLIT star0.png CENTERED (452,456)
-BLIT star1.png CENTERED (13,368)
-BLIT star0.png CENTERED (388,212)
-BLIT star1.png CENTERED (347,210)
-BLIT star2.png CENTERED (579,401)
-BLIT star1.png CENTERED (523,424)
-BLIT star1.png CENTERED (531,-95)
-BLIT star1.png CENTERED (63,-34)
-BLIT star0.png CENTERED (319,143)
-BLIT star1.png CENTERED (491,-71)
-BLIT star0.png CENTERED (313,341)
-BLIT star2.png CENTERED (118,205)
-BLIT star2.png CENTERED (179,-61)
-BLIT star2.png CENTERED (262,467)
-BLIT star1.png CENTERED (382,465)
-BLIT star0.png CENTERED (23,370)
-BLIT star1.png CENTERED (302,-49)
-BLIT star2.png CENTERED (117,190)
-BLIT star2.png CENTERED (575,308)
-BLIT star1.png CENTERED (120,255)
-BLIT star1.png CENTERED (405,289)
-BLIT star2.png CENTERED (25,218)
-BLIT star2.png CENTERED (547,191)
-BLIT star1.png CENTERED (464,430)
-BLIT star1.png CENTERED (560,319)
-BLIT star1.png CENTERED (578,76)
-BLIT star2.png CENTERED (482,76)
-BLIT star0.png CENTERED (271,81)
-BLIT star2.png CENTERED (608,176)
-BLIT star0.png CENTERED (137,-55)
-BLIT star1.png CENTERED (382,473)
-BLIT star2.png CENTERED (141,407)
-BLIT star1.png CENTERED (10,165)
-BLIT star2.png CENTERED (428,292)
-BLIT star0.png CENTERED (353,296)
-BLIT star1.png CENTERED (343,463)
-BLIT star2.png CENTERED (414,348)
-BLIT star1.png CENTERED (148,344)
-BLIT star2.png CENTERED (415,391)
-BLIT star1.png CENTERED (597,267)
-BLIT star2.png CENTERED (608,361)
-BLIT star0.png CENTERED (440,342)
-BLIT star2.png CENTERED (37,363)
-BLIT star2.png CENTERED (401,416)
-BLIT star0.png CENTERED (463,-89)
-BLIT star1.png CENTERED (93,-26)
-BLIT star2.png CENTERED (468,405)
-BLIT star0.png CENTERED (211,183)
-BLIT star1.png CENTERED (349,366)
-BLIT star0.png CENTERED (370,-155)
-BLIT star0.png CENTERED (321,441)
-BLIT star1.png CENTERED (605,334)
-BLIT star0.png CENTERED (517,-22)
-BLIT star1.png CENTERED (619,460)
-BLIT star2.png CENTERED (568,283)
-BLIT star0.png CENTERED (391,436)
-BLIT star2.png CENTERED (508,413)
-BLIT star1.png CENTERED (417,222)
-BLIT star2.png CENTERED (531,-1)
-BLIT star0.png CENTERED (367,108)
-BLIT star1.png CENTERED (280,-113)
-BLIT star1.png CENTERED (390,130)
-BLIT star1.png CENTERED (590,326)
-BLIT star1.png CENTERED (322,-69)
-BLIT star0.png CENTERED (195,-136)
-BLIT star1.png CENTERED (102,192)
-BLIT star1.png CENTERED (263,129)
-BLIT star1.png CENTERED (381,24)
-BLIT star1.png CENTERED (41,191)
-BLIT star2.png CENTERED (4,94)
-BLIT star0.png CENTERED (18,-83)
-BLIT star1.png CENTERED (193,13)
-BLIT star1.png CENTERED (285,188)
-BLIT star2.png CENTERED (246,73)
-BLIT star0.png CENTERED (322,241)
-BLIT star1.png CENTERED (247,281)
-BLIT star1.png CENTERED (265,347)
-BLIT star2.png CENTERED (628,-55)
-BLIT star2.png CENTERED (194,467)
-BLIT star1.png CENTERED (429,-100)
-BLIT star0.png CENTERED (564,446)
-BLIT star2.png CENTERED (586,229)
-BLIT money.png CENTERED (296,321)
-BLIT money.png CENTERED (296,302)
-BLIT money.png CENTERED (289,304)
-BLIT money.png CENTERED (300,299)
-BLIT money.png CENTERED (312,297)
-BLIT money.png CENTERED (302,309)
-BLIT money.png CENTERED (272,313)
-BLIT money.png CENTERED (278,284)
-BLIT money.png CENTERED (271,320)
-BLIT money.png CENTERED (306,310)
-BLIT money.png CENTERED (302,304)
-BLIT money.png CENTERED (292,320)
-BLIT money.png CENTERED (296,297)
-BLIT money.png CENTERED (292,290)
-BLIT money.png CENTERED (291,300)
-BLIT money.png CENTERED (288,303)
-BLIT money.png CENTERED (311,286)
-BLIT money.png CENTERED (322,286)
-BLIT money.png CENTERED (287,283)
-BLIT money.png CENTERED (317,316)
-BLIT money.png CENTERED (284,196)
-BLIT money.png CENTERED (287,165)
-BLIT money.png CENTERED (287,167)
-BLIT money.png CENTERED (287,272)
-BLIT money.png CENTERED (283,236)
-BLIT money.png CENTERED (278,251)
-BLIT money.png CENTERED (288,248)
-BLIT money.png CENTERED (281,264)
-BLIT money.png CENTERED (297,270)
-BLIT money.png CENTERED (286,242)
-BLIT money.png CENTERED (276,256)
-BLIT money.png CENTERED (276,250)
-BLIT money.png CENTERED (276,231)
-BLIT player_shoot.png CENTERED (240,-60)
-BLIT player_shoot.png CENTERED (299,78)
-BLIT player_shoot.png CENTERED (266,258)
-BLIT player_shoot.png CENTERED (289,450)
-BLIT enemy1.png CENTERED (266,92)
-BLIT enemy1.png CENTERED (179,82)
-BLIT player.png CENTERED (292,480)
-BLIT player_shoot.png (30,460)
-INPUT click 318.0 545.0
-read 8 click 329.0 555.0
-WAIT 8 for click 329.0 555.0
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,144)
-BLIT star1.png CENTERED (286,292)
-BLIT star0.png CENTERED (145,80)
-BLIT star1.png CENTERED (125,-94)
-BLIT star1.png CENTERED (184,23)
-BLIT star1.png CENTERED (377,259)
-BLIT star0.png CENTERED (199,-146)
-BLIT star2.png CENTERED (55,186)
-BLIT star1.png CENTERED (372,430)
-BLIT star1.png CENTERED (25,236)
-BLIT star1.png CENTERED (461,183)
-BLIT star0.png CENTERED (465,-5)
-BLIT star1.png CENTERED (140,-125)
-BLIT star1.png CENTERED (304,382)
-BLIT star1.png CENTERED (168,247)
-BLIT star1.png CENTERED (61,147)
-BLIT star1.png CENTERED (24,241)
-BLIT star1.png CENTERED (363,329)
-BLIT star0.png CENTERED (452,457)
-BLIT star1.png CENTERED (13,371)
-BLIT star0.png CENTERED (388,214)
-BLIT star1.png CENTERED (347,214)
-BLIT star2.png CENTERED (579,406)
-BLIT star1.png CENTERED (523,428)
-BLIT star1.png CENTERED (531,-93)
-BLIT star1.png CENTERED (63,-31)
-BLIT star0.png CENTERED (319,144)
-BLIT star1.png CENTERED (491,-69)
-BLIT star0.png CENTERED (313,343)
-BLIT star2.png CENTERED (118,209)
-BLIT star2.png CENTERED (179,-57)
-BLIT star2.png CENTERED (262,471)
-BLIT star1.png CENTERED (382,469)
-BLIT star0.png CENTERED (23,372)
-BLIT star1.png CENTERED (302,-45)
-BLIT star2.png CENTERED (117,195)
-BLIT star2.png CENTERED (575,313)
-BLIT star1.png CENTERED (120,257)
-BLIT star1.png CENTERED (405,292)
-BLIT star2.png CENTERED (25,223)
-BLIT star2.png CENTERED (547,195)
-BLIT star1.png CENTERED (464,434)
-BLIT star1.png CENTERED (560,323)
-BLIT star1.png CENTERED (578,80)
-BLIT star2.png CENTERED (482,81)
-BLIT star0.png CENTERED (271,83)
-BLIT star2.png CENTERED (608,181)
-BLIT star0.png CENTERED (137,-53)
-BLIT star1.png CENTERED (382,476)
-BLIT star2.png CENTERED (141,412)
-BLIT star1.png CENTERED (10,169)
-BLIT star2.png CENTERED (428,297)
-BLIT star0.png CENTERED (353,298)
-BLIT star1.png CENTERED (343,465)
-BLIT star2.png CENTERED (414,352)
-BLIT star1.png CENTERED (148,348)
-BLIT star2.png CENTERED (415,395)
-BLIT star1.png CENTERED (597,271)
-BLIT star2.png CENTERED (608,366)
-BLIT star0.png CENTERED (440,344)
-BLIT star2.png CENTERED (37,367)
-BLIT star2.png CENTERED (401,421)
-BLIT star0.png CENTERED (463,-88)
-BLIT star1.png CENTERED (93,-22)
-BLIT star2.png CENTERED (468,410)
-BLIT star0.png CENTERED (211,185)
-BLIT star1.png CENTERED (349,370)
-BLIT star0.png CENTERED (370,-154)
-BLIT star0.png CENTERED (321,443)
-BLIT star1.png CENTERED (605,337)
-BLIT star0.png CENTERED (517,-21)
-BLIT star1.png CENTERED (619,463)
-BLIT star2.png CENTERED (568,288)
-BLIT star0.png CENTERED (391,437)
-BLIT star2.png CENTERED (508,417)
-BLIT star1.png CENTERED (417,225)
-BLIT star2.png CENTERED (531,3)
-BLIT star0.png CENTERED (367,109)
-BLIT star1.png CENTERED (280,-111)
-BLIT star1.png CENTERED (390,133)
-BLIT star1.png CENTERED (590,330)
-BLIT star1.png CENTERED (322,-66)
-BLIT star0.png CENTERED (195,-134)
-BLIT star1.png CENTERED (102,195)
-BLIT star1.png CENTERED (263,132)
-BLIT star1.png CENTERED (381,26)
-BLIT star1.png CENTERED (41,193)
-BLIT star2.png CENTERED (4,99)
-BLIT star0.png CENTERED (18,-82)
-BLIT star1.png CENTERED (193,15)
-BLIT star1.png CENTERED (285,191)
-BLIT star2.png CENTERED (246,78)
-BLIT star0.png CENTERED (322,243)
-BLIT star1.png CENTERED (247,283)
-BLIT star1.png CENTERED (265,350)
-BLIT star2.png CENTERED (628,-50)
-BLIT star2.png CENTERED (194,472)
-BLIT star1.png CENTERED (429,-97)
-BLIT star0.png CENTERED (564,447)
-BLIT star2.png CENTERED (586,234)
-BLIT money.png CENTERED (296,326)
-BLIT money.png CENTERED (296,307)
-BLIT money.png CENTERED (289,309)
-BLIT money.png CENTERED (300,304)
-BLIT money.png CENTERED (312,302)
-BLIT money.png CENTERED (302,314)
-BLIT money.png CENTERED (272,318)
-BLIT money.png CENTERED (278,289)
-BLIT money.png CENTERED (271,326)
-BLIT money.png CENTERED (306,316)
-BLIT money.png CENTERED (302,310)
-BLIT money.png CENTERED (292,326)
-BLIT money.png CENTERED (296,302)
-BLIT money.png CENTERED (292,295)
-BLIT money.png CENTERED (291,305)
-BLIT money.png CENTERED (288,308)
-BLIT money.png CENTERED (311,291)
-BLIT money.png CENTERED (322,291)
-BLIT money.png CENTERED (287,288)
-BLIT money.png CENTERED (317,321)
-BLIT money.png CENTERED (284,201)
-BLIT money.png CENTERED (287,171)
-BLIT money.png CENTERED (287,173)
-BLIT money.png CENTERED (287,277)
-BLIT money.png CENTERED (283,241)
-BLIT money.png CENTERED (278,257)
-BLIT money.png CENTERED (288,253)
-BLIT money.png CENTERED (281,270)
-BLIT money.png CENTERED (297,275)
-BLIT money.png CENTERED (286,247)
-BLIT money.png CENTERED (276,261)
-BLIT money.png CENTERED (276,256)
-BLIT money.png CENTERED (276,236)
-BLIT player_shoot.png CENTERED (299,26)
-BLIT player_shoot.png CENTERED (266,206)
-BLIT player_shoot.png CENTERED (289,398)
-BLIT enemy_shoot.png CENTERED (257,159)
-BLIT enemy_shoot.png CENTERED (275,159)
-BLIT enemy_shoot.png CENTERED (170,144)
-BLIT enemy_shoot.png CENTERED (188,144)
-BLIT enemy1.png CENTERED (265,115)
-BLIT enemy1.png CENTERED (180,104)
-BLIT player.png CENTERED (323,480)
-BLIT player_shoot.png (30,460)
-INPUT click 329.0 555.0
-read 106 quit
-WAIT 106 for quit
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,146)
-BLIT star1.png CENTERED (286,294)
-BLIT star0.png CENTERED (145,82)
-BLIT star1.png CENTERED (125,-92)
-BLIT star1.png CENTERED (184,25)
-BLIT star1.png CENTERED (377,261)
-BLIT star0.png CENTERED (199,-145)
-BLIT star2.png CENTERED (55,189)
-BLIT star1.png CENTERED (372,431)
-BLIT star1.png CENTERED (25,238)
-BLIT star1.png CENTERED (461,185)
-BLIT star0.png CENTERED (465,-4)
-BLIT star1.png CENTERED (140,-123)
-BLIT star1.png CENTERED (304,384)
-BLIT star1.png CENTERED (168,249)
-BLIT star1.png CENTERED (61,149)
-BLIT star1.png CENTERED (24,243)
-BLIT star1.png CENTERED (363,331)
-BLIT star0.png CENTERED (452,458)
-BLIT star1.png CENTERED (13,373)
-BLIT star0.png CENTERED (388,215)
-BLIT star1.png CENTERED (347,216)
-BLIT star2.png CENTERED (579,409)
-BLIT star1.png CENTERED (523,430)
-BLIT star1.png CENTERED (531,-91)
-BLIT star1.png CENTERED (63,-30)
-BLIT star0.png CENTERED (319,145)
-BLIT star1.png CENTERED (491,-67)
-BLIT star0.png CENTERED (313,344)
-BLIT star2.png CENTERED (118,212)
-BLIT star2.png CENTERED (179,-54)
-BLIT star2.png CENTERED (262,474)
-BLIT star1.png CENTERED (382,471)
-BLIT star0.png CENTERED (23,372)
-BLIT star1.png CENTERED (302,-42)
-BLIT star2.png CENTERED (117,198)
-BLIT star2.png CENTERED (575,316)
-BLIT star1.png CENTERED (120,258)
-BLIT star1.png CENTERED (405,293)
-BLIT star2.png CENTERED (25,227)
-BLIT star2.png CENTERED (547,198)
-BLIT star1.png CENTERED (464,436)
-BLIT star1.png CENTERED (560,326)
-BLIT star1.png CENTERED (578,83)
-BLIT star2.png CENTERED (482,83)
-BLIT star0.png CENTERED (271,85)
-BLIT star2.png CENTERED (608,184)
-BLIT star0.png CENTERED (137,-52)
-BLIT star1.png CENTERED (382,477)
-BLIT star2.png CENTERED (141,414)
-BLIT star1.png CENTERED (10,171)
-BLIT star2.png CENTERED (428,300)
-BLIT star0.png CENTERED (353,299)
-BLIT star1.png CENTERED (343,466)
-BLIT star2.png CENTERED (414,355)
-BLIT star1.png CENTERED (148,350)
-BLIT star2.png CENTERED (415,398)
-BLIT star1.png CENTERED (597,273)
-BLIT star2.png CENTERED (608,368)
-BLIT star0.png CENTERED (440,345)
-BLIT star2.png CENTERED (37,370)
-BLIT star2.png CENTERED (401,423)
-BLIT star0.png CENTERED (463,-87)
-BLIT star1.png CENTERED (93,-20)
-BLIT star2.png CENTERED (468,413)
-BLIT star0.png CENTERED (211,187)
-BLIT star1.png CENTERED (349,372)
-BLIT star0.png CENTERED (370,-154)
-BLIT star0.png CENTERED (321,443)
-BLIT star1.png CENTERED (605,338)
-BLIT star0.png CENTERED (517,-20)
-BLIT star1.png CENTERED (619,465)
-BLIT star2.png CENTERED (568,291)
-BLIT star0.png CENTERED (391,438)
-BLIT star2.png CENTERED (508,420)
-BLIT star1.png CENTERED (417,226)
-BLIT star2.png CENTERED (531,6)
-BLIT star0.png CENTERED (367,110)
-BLIT star1.png CENTERED (280,-109)
-BLIT star1.png CENTERED (390,134)
-BLIT star1.png CENTERED (590,333)
-BLIT star1.png CENTERED (322,-64)
-BLIT star0.png CENTERED (195,-133)
-BLIT star1.png CENTERED (102,197)
-BLIT star1.png CENTERED (263,133)
-BLIT star1.png CENTERED (381,28)
-BLIT star1.png CENTERED (41,195)
-BLIT star2.png CENTERED (4,102)
-BLIT star0.png CENTERED (18,-81)
-BLIT star1.png CENTERED (193,17)
-BLIT star1.png CENTERED (285,193)
-BLIT star2.png CENTERED (246,81)
-BLIT star0.png CENTERED (322,244)
-BLIT star1.png CENTERED (247,284)
-BLIT star1.png CENTERED (265,351)
-BLIT star2.png CENTERED (628,-46)
-BLIT star2.png CENTERED (194,475)
-BLIT star1.png CENTERED (429,-95)
-BLIT star0.png CENTERED (564,448)
-BLIT star2.png CENTERED (586,237)
-BLIT money.png CENTERED (296,329)
-BLIT money.png CENTERED (296,310)
-BLIT money.png CENTERED (289,312)
-BLIT money.png CENTERED (300,308)
-BLIT money.png CENTERED (312,305)
-BLIT money.png CENTERED (302,317)
-BLIT money.png CENTERED (272,321)
-BLIT money.png CENTERED (278,293)
-BLIT money.png CENTERED (271,329)
-BLIT money.png CENTERED (306,319)
-BLIT money.png CENTERED (302,313)
-BLIT money.png CENTERED (292,329)
-BLIT money.png CENTERED (296,305)
-BLIT money.png CENTERED (292,299)
-BLIT money.png CENTERED (291,308)
-BLIT money.png CENTERED (288,312)
-BLIT money.png CENTERED (311,294)
-BLIT money.png CENTERED (322,294)
-BLIT money.png CENTERED (287,291)
-BLIT money.png CENTERED (317,324)
-BLIT money.png CENTERED (284,205)
-BLIT money.png CENTERED (287,174)
-BLIT money.png CENTERED (287,176)
-BLIT money.png CENTERED (287,280)
-BLIT money.png CENTERED (283,244)
-BLIT money.png CENTERED (278,260)
-BLIT money.png CENTERED (288,256)
-BLIT money.png CENTERED (281,273)
-BLIT money.png CENTERED (297,279)
-BLIT money.png CENTERED (286,250)
-BLIT money.png CENTERED (276,264)
-BLIT money.png CENTERED (276,259)
-BLIT money.png CENTERED (276,240)
-BLIT player_shoot.png CENTERED (299,-6)
-BLIT player_shoot.png CENTERED (266,174)
-BLIT player_shoot.png CENTERED (289,366)
-BLIT enemy_shoot.png CENTERED (257,191)
-BLIT enemy_shoot.png CENTERED (275,191)
-BLIT enemy_shoot.png CENTERED (170,176)
-BLIT enemy_shoot.png CENTERED (188,176)
-BLIT enemy1.png CENTERED (264,130)
-BLIT enemy1.png CENTERED (181,118)
-BLIT enemy1.png CENTERED (205,0)
-BLIT player.png CENTERED (321,480)
-BLIT player_shoot.png (30,460)
-INPUT quit
-END OF INPUTS
-CLEAR rgb(0.0;0.0;0.0)
-BLIT star1.png CENTERED (278,166)
-BLIT star1.png CENTERED (286,321)
-BLIT star0.png CENTERED (145,98)
-BLIT star1.png CENTERED (125,-67)
-BLIT star1.png CENTERED (184,53)
-BLIT star1.png CENTERED (377,293)
-BLIT star0.png CENTERED (199,-132)
-BLIT star2.png CENTERED (55,224)
-BLIT star1.png CENTERED (372,455)
-BLIT star1.png CENTERED (25,263)
-BLIT star1.png CENTERED (461,212)
-BLIT star0.png CENTERED (465,9)
-BLIT star1.png CENTERED (140,-94)
-BLIT star1.png CENTERED (304,408)
-BLIT star1.png CENTERED (168,276)
-BLIT star1.png CENTERED (61,180)
-BLIT star1.png CENTERED (24,267)
-BLIT star1.png CENTERED (363,356)
-BLIT star0.png CENTERED (452,467)
-BLIT star1.png CENTERED (13,399)
-BLIT star0.png CENTERED (388,230)
-BLIT star1.png CENTERED (347,248)
-BLIT star2.png CENTERED (579,451)
-BLIT star1.png CENTERED (523,460)
-BLIT star1.png CENTERED (531,-69)
-BLIT star1.png CENTERED (63,-9)
-BLIT star0.png CENTERED (319,156)
-BLIT star1.png CENTERED (491,-48)
-BLIT star0.png CENTERED (313,356)
-BLIT star2.png CENTERED (118,246)
-BLIT star2.png CENTERED (179,-14)
-BLIT star1.png CENTERED (573,-64)
-BLIT star1.png CENTERED (235,-37)
-BLIT star0.png CENTERED (23,383)
-BLIT star1.png CENTERED (302,-9)
-BLIT star2.png CENTERED (117,240)
-BLIT star2.png CENTERED (575,356)
-BLIT star1.png CENTERED (120,275)
-BLIT star1.png CENTERED (405,314)
-BLIT star2.png CENTERED (25,269)
-BLIT star2.png CENTERED (547,237)
-BLIT star1.png CENTERED (464,468)
-BLIT star1.png CENTERED (560,359)
-BLIT star1.png CENTERED (578,116)
-BLIT star2.png CENTERED (482,117)
-BLIT star0.png CENTERED (271,101)
-BLIT star2.png CENTERED (608,225)
-BLIT star0.png CENTERED (137,-35)
-BLIT star1.png CENTERED (173,-43)
-BLIT star2.png CENTERED (141,451)
-BLIT star1.png CENTERED (10,202)
-BLIT star2.png CENTERED (428,340)
-BLIT star0.png CENTERED (353,310)
-BLIT star1.png CENTERED (98,-12)
-BLIT star2.png CENTERED (414,390)
-BLIT star1.png CENTERED (148,379)
-BLIT star2.png CENTERED (415,435)
-BLIT star1.png CENTERED (597,306)
-BLIT star2.png CENTERED (608,404)
-BLIT star0.png CENTERED (440,360)
-BLIT star2.png CENTERED (37,406)
-BLIT star2.png CENTERED (401,461)
-BLIT star0.png CENTERED (463,-73)
-BLIT star1.png CENTERED (93,7)
-BLIT star2.png CENTERED (468,451)
-BLIT star0.png CENTERED (211,203)
-BLIT star1.png CENTERED (349,401)
-BLIT star0.png CENTERED (370,-144)
-BLIT star0.png CENTERED (321,454)
-BLIT star1.png CENTERED (605,356)
-BLIT star0.png CENTERED (517,-10)
-BLIT star1.png CENTERED (129,-64)
-BLIT star2.png CENTERED (568,328)
-BLIT star0.png CENTERED (391,449)
-BLIT star2.png CENTERED (508,457)
-BLIT star1.png CENTERED (417,246)
-BLIT star2.png CENTERED (531,45)
-BLIT star0.png CENTERED (367,124)
-BLIT star1.png CENTERED (280,-89)
-BLIT star1.png CENTERED (390,156)
-BLIT star1.png CENTERED (590,365)
-BLIT star1.png CENTERED (322,-36)
-BLIT star0.png CENTERED (195,-119)
-BLIT star1.png CENTERED (102,223)
-BLIT star1.png CENTERED (263,154)
-BLIT star1.png CENTERED (381,46)
-BLIT star1.png CENTERED (41,212)
-BLIT star2.png CENTERED (4,141)
-BLIT star0.png CENTERED (18,-70)
-BLIT star1.png CENTERED (193,39)
-BLIT star1.png CENTERED (285,220)
-BLIT star2.png CENTERED (246,123)
-BLIT star0.png CENTERED (322,258)
-BLIT star1.png CENTERED (247,302)
-BLIT star1.png CENTERED (265,372)
-BLIT star2.png CENTERED (628,-5)
-BLIT star0.png CENTERED (106,-78)
-BLIT star1.png CENTERED (429,-72)
-BLIT star0.png CENTERED (564,458)
-BLIT star2.png CENTERED (586,276)
-BLIT money.png CENTERED (296,372)
-BLIT money.png CENTERED (296,353)
-BLIT money.png CENTERED (289,355)
-BLIT money.png CENTERED (300,350)
-BLIT money.png CENTERED (312,347)
-BLIT money.png CENTERED (302,360)
-BLIT money.png CENTERED (272,364)
-BLIT money.png CENTERED (278,335)
-BLIT money.png CENTERED (271,371)
-BLIT money.png CENTERED (306,361)
-BLIT money.png CENTERED (302,355)
-BLIT money.png CENTERED (292,371)
-BLIT money.png CENTERED (296,348)
-BLIT money.png CENTERED (292,341)
-BLIT money.png CENTERED (291,350)
-BLIT money.png CENTERED (288,354)
-BLIT money.png CENTERED (311,337)
-BLIT money.png CENTERED (322,337)
-BLIT money.png CENTERED (287,333)
-BLIT money.png CENTERED (317,367)
-BLIT money.png CENTERED (284,247)
-BLIT money.png CENTERED (287,216)
-BLIT money.png CENTERED (287,218)
-BLIT money.png CENTERED (287,322)
-BLIT money.png CENTERED (283,286)
-BLIT money.png CENTERED (278,302)
-BLIT money.png CENTERED (288,299)
-BLIT money.png CENTERED (281,315)
-BLIT money.png CENTERED (297,321)
-BLIT money.png CENTERED (286,292)
-BLIT money.png CENTERED (276,307)
-BLIT money.png CENTERED (276,301)
-BLIT money.png CENTERED (276,282)
-BLIT money.png CENTERED (277,171)
-BLIT money.png CENTERED (264,175)
-BLIT money.png CENTERED (240,198)
-BLIT money.png CENTERED (263,181)
-BLIT money.png CENTERED (269,203)
-BLIT player_shoot.png CENTERED (289,-57)
-BLIT player_shoot.png CENTERED (323,66)
-BLIT player_shoot.png CENTERED (333,190)
-BLIT player_shoot.png CENTERED (342,314)
-BLIT player_shoot.png CENTERED (352,438)
-BLIT enemy_shoot.png CENTERED (175,484)
-BLIT enemy_shoot.png CENTERED (193,484)
-BLIT enemy_shoot.png CENTERED (197,283)
-BLIT enemy_shoot.png CENTERED (214,283)
-BLIT enemy_shoot.png CENTERED (180,367)
-BLIT enemy_shoot.png CENTERED (198,367)
-BLIT enemy_shoot.png CENTERED (197,121)
-BLIT enemy_shoot.png CENTERED (214,121)
-BLIT enemy1.png CENTERED (191,299)
-BLIT enemy1.png CENTERED (205,88)
-BLIT enemy0.png CENTERED (541,214)
-BLIT player.png CENTERED (355,480)
-BLIT player_shoot.png (30,460)
index 9357190..84b6677 100644 (file)
@@ -5,7 +5,7 @@ test_attr_easy.nit:19,43--53: Warning: expression is already a `Float`.
 test_attr_easy.nit:20,5--16: Warning: expression is already a `String`.
 test_attr_easy.nit:20,20--26: Warning: expression is already a `B`.
 test_attr_easy.nit:20,44--63: Warning: expression is already a `HashMap[Int, B]`.
-true false 12345 1.235 asdf true
+true false 12345 1.234 asdf true
 an instance of B
 true true true true
 true true true true
index 9fb5305..57d863d 100644 (file)
@@ -2,13 +2,13 @@ Compilation des classes Java ...
 Initialisation de la JVM ...
 ---------------------Test 1----------------------
 From java, pushing premier
-From java, pushing deuxi?me
-From java, pushing troisi?me
+From java, pushing deuxième
+From java, pushing troisième
 From java, popping premier
 premier
-From java, popping deuxi?me
+From java, popping deuxième
 deuxième
-From java, popping troisi?me
+From java, popping troisième
 troisième
 --------------------Test 2---------------------
 true
index 1b169e2..c237e27 100644 (file)
@@ -14,8 +14,8 @@ scan_full found 6 modules
   model: mpackages=1 mmodules=5
   mb: identified modules=5; parsed modules=0
 parse found 2 modules
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=6
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=6
 parse_full found 5 modules
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=6
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=6
index 5b3c4f0..4650fe7 100644 (file)
@@ -22,20 +22,20 @@ test_prog::test_prog: module?
        module test_prog::test_prog at test_prog/test_prog.nit
 test_prog::test_prog: group?
        nothing
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
 test_prog/: module?
        module test_prog::test_prog at test_prog/test_prog.nit
 test_prog/: group?
        group test_prog> at test_prog
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
-scan_full found 18 modules
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
+scan_full found 20 modules
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
 parse found 1 modules
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=8
-parse_full found 8 modules
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=8
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=8
+parse_full found 9 modules
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=9
index 940b6bf..fea9069 100644 (file)
@@ -6,26 +6,26 @@ test_prog::races: module?
        module test_prog::races at test_prog/rpg/races.nit
 test_prog::races: group?
        nothing
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
 test_prog::races:rpg: module?
        Error: cannot find module `test_prog::races:rpg`. Did you mean test_prog::races?
 test_prog::races:rpg: group?
        nothing
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
 test_prog::races::combat: module?
        Error: cannot find module `test_prog::races::combat`. Did you mean test_prog::combat?
 test_prog::races::combat: group?
        nothing
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
 scan_full found 1 modules
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
 parse found 1 modules
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=2
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=2
 parse_full found 1 modules
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=2
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=2
index 74dfacb..4c9789a 100644 (file)
@@ -8,26 +8,26 @@ test_prog::fail::races: module?
        Error: cannot find module `test_prog::fail::races`. Did you mean test_prog::races?
 test_prog::fail::races: group?
        nothing
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
 test_prog::fail: module?
        Error: cannot find module `test_prog::fail`. Did you mean test_prog::game?
 test_prog::fail: group?
        nothing
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
 fail::fail: module?
        nothing
 fail::fail: group?
        nothing
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
 scan_full found 0 modules
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
 parse found 0 modules
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
 parse_full found 0 modules
-  model: mpackages=2 mmodules=9
-  mb: identified modules=9; parsed modules=0
+  model: mpackages=2 mmodules=10
+  mb: identified modules=10; parsed modules=0
index 4ea9f3c..840f390 100644 (file)
@@ -1,7 +1,7 @@
 3.142
 -1.0
 0.0
-0.0
+-0.0
 0.785
 0.0
 1.571
index 982c125..cfee574 100644 (file)
@@ -1,12 +1,12 @@
 # elfves
 
  * 4: Elf (test_prog::Elf)
- * 5: Float (test_prog::Float)
- * 5: Race (test_prog::Race)
+ * 5: Sys (test_prog::Sys)
  * 5: careers (test_prog::careers)
+ * 5: examples (test_prog>examples>)
  * 5: excluded (excluded>)
  * 5: excluded (excluded::excluded)
  * 5: excluded (excluded)
- * 5: game (test_prog>game>)
  * 5: game (test_prog::game)
+ * 5: game (test_prog>game>)
  * 4: races (test_prog::races)
index 510eaba..f969724 100644 (file)
@@ -1,6 +1,6 @@
 # Dwarves
 
- * 13: List (test_prog::List)
+ * 13: Int (test_prog::Int)
  * 12: Sys (test_prog::Sys)
  * 8: excluded (excluded>)
  * 7: excluded (excluded)
index cb5e115..000025b 100644 (file)
@@ -1,12 +1,12 @@
 # Obj
 
- * 3: * (test_prog::Float::*)
- * 3: / (test_prog::Int::/)
- * 3: == (test_prog::Object::==)
+ * 3: + (test_prog::Int::+)
+ * 3: - (test_prog::Int::-)
+ * 3: > (test_prog::Int::>)
  * 3: Elf (test_prog::Elf)
  * 3: Int (test_prog::Int)
  * 1: Object (test_prog::Object)
  * 3: Sys (test_prog::Sys)
  * 3: age (test_prog::Character::age)
- * 3: rpg (test_prog>rpg>)
  * 3: rpg (test_prog::rpg)
+ * 3: rpg (test_prog>rpg>)
index 998a270..fc68d39 100644 (file)
@@ -6,7 +6,7 @@
  * 8: excluded (excluded)
  * 14: game (test_prog>game>)
  * 14: game (test_prog::game)
- * 14: rpg (test_prog::rpg)
  * 14: rpg (test_prog>rpg>)
+ * 14: rpg (test_prog::rpg)
  * 10: test_prog (test_prog>)
  * 9: test_prog (test_prog)
index 1e858ea..dd17043 100644 (file)
@@ -1,12 +1,12 @@
 # Foo
 
  * 3: != (test_prog::Object::!=)
- * 3: + (test_prog::Int::+)
+ * 3: == (test_prog::Object::==)
+ * 3: > (test_prog::Int::>)
  * 2: Bool (test_prog::Bool)
  * 3: Elf (test_prog::Elf)
  * 3: Float (test_prog::Float)
  * 3: Int (test_prog::Int)
  * 3: Sys (test_prog::Sys)
- * 3: dps (test_prog::Weapon::dps)
  * 3: rpg (test_prog::rpg)
  * 3: rpg (test_prog>rpg>)
index c3ac095..758d8df 100644 (file)
@@ -1,7 +1,8 @@
 # e
 
- * 2: endurance_bonus (test_prog::Career::endurance_bonus)
- * 1: excluded (excluded>)
+ * 3: endurance_bonus (test_prog::Career::endurance_bonus)
+ * 2: examples (test_prog>examples>)
  * 1: excluded (excluded::excluded)
+ * 1: excluded (excluded>)
  * 1: excluded (excluded)
- * 3: endurance_bonus= (test_prog::Career::endurance_bonus=)
+ * 4: endurance_bonus= (test_prog::Career::endurance_bonus=)
index fc9d8e2..191fd72 100644 (file)
@@ -1,7 +1,7 @@
 # A
 
- * 1: * (test_prog::Int::*)
  * 1: * (test_prog::Float::*)
+ * 1: * (test_prog::Int::*)
  * 1: + (test_prog::Int::+)
  * 1: + (test_prog::Float::+)
  * 1: - (test_prog::Int::-)
index bb6e9e1..a4c370f 100644 (file)
@@ -1,12 +1,12 @@
 # Foo
 
- * 3: * (test_prog::Int::*)
- * 3: / (test_prog::Int::/)
+ * 3: + (test_prog::Int::+)
+ * 3: + (test_prog::Float::+)
  * 2: Bool (test_prog::Bool)
  * 3: Elf (test_prog::Elf)
  * 3: Float (test_prog::Float)
  * 3: Int (test_prog::Int)
  * 3: Sys (test_prog::Sys)
+ * 3: age (test_prog::Character::age)
  * 3: rpg (test_prog::rpg)
  * 3: rpg (test_prog>rpg>)
- * 3: sex (test_prog::Character::sex)
index fdc3be7..e907ec7 100644 (file)
@@ -4,9 +4,9 @@ excluded test_prog
 excluded test_prog
 
 # mmodules:
-careers character combat excluded game platform races rpg test_prog
+careers character combat excluded game game_examples platform races rpg test_prog
 ------------------------------------
-careers character combat excluded game platform races rpg test_prog
+careers character combat excluded game game_examples platform races rpg test_prog
 
 # mclasses:
 Alcoholic Bool Career Character Combatable Dwarf Elf Float Game Human Int List Magician Object Race Starter String Sys Warrior Weapon
index c018d95..662f983 100644 (file)
@@ -7,4 +7,5 @@ out/test_platform_ios.bin/LaunchScreen.storyboardc/UIViewController-01J-lp-oVM.n
 out/test_platform_ios.bin/PkgInfo
 out/test_platform_ios.bin/_CodeSignature
 out/test_platform_ios.bin/_CodeSignature/CodeResources
+out/test_platform_ios.bin/assets
 out/test_platform_ios.bin/test_platform_ios
index b1fe714..ab1d9c6 100644 (file)
@@ -1,5 +1,7 @@
 test_prog/
 |--test_prog/README.md
+|--test_prog/examples
+|  `--test_prog/examples/game_examples.nit
 |--test_prog/game
 |  |--test_prog/game/README.md
 |  |--test_prog/game/excluded.nit
index 98bfc04..0b4f9cd 100644 (file)
@@ -1 +1,2 @@
-test_syntax.nit:48,2--39: Error: dev package for `a libray from outer space` unknown by `pkg-config`, install it with `apt-get`, `brew` or similar.
+test_syntax.nit:68,8--27: Warning: superfluous super-class `Object` in class `Blurry`.
+test_syntax.nit:134,8--13: Type Error: `Blurry[ELEM_ENT: nullable Object]` is a generic class.
diff --git a/tests/test_nitunit10.nit b/tests/test_nitunit10.nit
new file mode 100644 (file)
index 0000000..9166f24
--- /dev/null
@@ -0,0 +1,42 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_nitunit10 is test
+
+import test_nitunit9
+
+class TestNitunit10
+       super TestNitunit9
+       test
+
+       fun before_class2 is before_all do
+               assert true
+       end
+
+       fun before2 is before do
+               assert true
+       end
+
+       fun test_bar is test do
+               assert true
+       end
+
+       fun after2 is after do
+               assert true
+       end
+
+       fun after_class2 is after_all do
+               assert true
+       end
+end
diff --git a/tests/test_nitunit11.nit b/tests/test_nitunit11.nit
new file mode 100644 (file)
index 0000000..1eb67c3
--- /dev/null
@@ -0,0 +1,42 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module test_nitunit11 is test
+
+import test_nitunit10
+
+class TestNitunit11
+       super TestNitunit10
+       test
+
+       fun before_class3 is before_all do
+               assert true
+       end
+
+       fun before3 is before do
+               assert true
+       end
+
+       fun test_baz is test do
+               assert true
+       end
+
+       fun after3 is after do
+               assert true
+       end
+
+       fun after_class3 is after_all do
+               assert true
+       end
+end
similarity index 76%
rename from examples/shoot/src/shoot_android.nit
rename to tests/test_nitunit8.nit
index 4de7f66..92ef0bc 100644 (file)
@@ -4,7 +4,7 @@
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 #
-#     http://www.apache.org/licenses/LICENSE-2.0
+# http://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-# Android version of the shoot program
-module shoot_android
+module test_nitunit8 is test
+import test_nitunit7
 
-import shoot
-import mnit::android
+class TestNitunit8
+       test
 
-super
+       fun test_foo is test do
+               assert true
+       end
+end
similarity index 62%
rename from contrib/crazy_moles/src/moles_linux.nit
rename to tests/test_nitunit9.nit
index c46b29b..1959919 100644 (file)
@@ -1,12 +1,10 @@
 # This file is part of NIT ( http://www.nitlanguage.org ).
 #
-# Copyright 2012-2013 Alexis Laferrière <alexis.laf@xymus.net>
-#
 # Licensed under the Apache License, Version 2.0 (the "License");
 # you may not use this file except in compliance with the License.
 # You may obtain a copy of the License at
 #
-#     http://www.apache.org/licenses/LICENSE-2.0
+# http://www.apache.org/licenses/LICENSE-2.0
 #
 # Unless required by applicable law or agreed to in writing, software
 # distributed under the License is distributed on an "AS IS" BASIS,
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-module moles_linux
+module test_nitunit9 is test
+
+class TestNitunit9
+       test
+
+       fun before_class is before_all do
+               assert true
+       end
+
+       fun before is before do
+               assert true
+       end
 
-import mnit::linux
+       fun test_foo is test do
+               assert true
+       end
 
-import moles
-import effects
-import more_traps
+       fun after is after do
+               assert true
+       end
 
-redef fun display_scale do return 0.25
+       fun after_class is after_all do
+               assert false
+       end
+end
diff --git a/tests/test_prog/examples/game_examples.nit b/tests/test_prog/examples/game_examples.nit
new file mode 100644 (file)
index 0000000..68b16de
--- /dev/null
@@ -0,0 +1,32 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module game_examples is example
+
+import game
+
+# This is an example of how to implement the Game interface
+class MyGame
+       super Game
+
+       redef var player_characters = new List[Character]
+
+       redef var computer_characters = new List[Character]
+
+       redef fun start_game do end
+
+       redef fun pause_game do end
+
+       redef fun stop_game do end
+end
index 1cc4d27..b7ebf11 100755 (executable)
@@ -1,2 +1,2 @@
 #!/bin/sh
-./listfull.sh | xargs -E '' -x -- ./tests.sh "$@"
+./listfull.sh | xargs -E '' -- ./tests.sh "$@"
index a402eb2..658cbbb 100755 (executable)
 # This shell script compile, run and verify Nit program files
 
 # Set lang do default to avoid failed tests because of locale
-export LANG=C
-export LC_ALL=C
+export LANG=C.UTF-8
+export LC_ALL=C.UTF-8
+if uname | grep Darwin 1>/dev/null 2>&1; then
+       export LANG=en_US.UTF-8
+       export LC_ALL=en_US.UTF-8
+fi
+
 export NIT_TESTING=true
 # Use the pid as a collision prevention
 export NIT_TESTING_ID=$$
@@ -29,12 +34,21 @@ unset NIT_DIR
 
 # Get the first Java lib available
 if which_java=$(which javac 2>/dev/null); then
-       JAVA_HOME=$(dirname $(dirname $(readlink -f "$which_java")))
+
+       if sh -c "readlink -f ." 1>/dev/null 2>&1; then
+               READLINK="readlink -f"
+       else
+               # Darwin?
+               READLINK="readlink"
+       fi
+       JAVA_HOME=$(dirname $(dirname $($READLINK "$which_java")))
 
        shopt -s nullglob
        paths=`echo $JAVA_HOME/jre/lib/*/{client,server}/libjvm.so`
-       paths=($paths)
-       JNI_LIB_PATH=`dirname ${paths[0]}`
+       if [ -n "$paths" ]; then
+               paths=($paths)
+               JNI_LIB_PATH=`dirname ${paths[0]}`
+       fi
        shopt -u nullglob
 fi
 
@@ -636,7 +650,7 @@ END
                        echo 0.0 > "$ff.time.out"
                elif [ -n "$isinteractive" ]; then
                        cat > "$ff.bin" <<END
-exec $NITC --no-color --no-prompt $OPT $includes < $(printf '%q' "$i") "\$@"
+exec $NITC --no-color --no-prompt --source-name $(printf '%q' "$i") $OPT $includes < $(printf '%q' "$i") "\$@"
 END
                        chmod +x "$ff.bin"
                        > "$ff.cmp.err"
@@ -708,7 +722,7 @@ END
                        if [ -f "$ff.write" ]; then
                                cat -- "$ff.write" >> "$ff.res"
                        elif [ -d "$ff.write" ]; then
-                               LANG=C /bin/ls -F "$ff.write" >> "$ff.res"
+                               /bin/ls -F "$ff.write" >> "$ff.res"
                        fi
                        cp -- "$ff.res"  "$ff.res2"
                        cat -- "$ff.cmp.err" "$ff.err" "$ff.res2" > "$ff.res"
@@ -750,7 +764,7 @@ END
                                        if [ -f "$fff.write" ]; then
                                                cat -- "$fff.write" >> "$fff.res"
                                        elif [ -d "$fff.write" ]; then
-                                               LANG=C /bin/ls -F -- "$fff.write" >> "$fff.res"
+                                               /bin/ls -F -- "$fff.write" >> "$fff.res"
                                        fi
                                        if [ -s "$fff.err" ]; then
                                                cp -- "$fff.res"  "$fff.res2"
index ea13024..e6ce3b1 100644 (file)
@@ -2,7 +2,6 @@ nitx
 _linux
 android
 gles
-shoot
 curl
 neo
 gtk