Compare commits

..

No commits in common. "f9406aa9a990ab69dc626a20781e20b921bb026a" and "1f8aa8e55c3de9caf0db1cb167b76abd05641aeb" have entirely different histories.

46 changed files with 13637 additions and 2006 deletions

View File

@ -1,198 +0,0 @@
---
Language: Cpp
AccessModifierOffset: -4
AlignAfterOpenBracket: Align # [BlockIndent, Align]
AlignArrayOfStructures: None # [None, Left, Right]
AlignConsecutiveMacros: AcrossComments
AlignConsecutiveAssignments: None # [Consecutive, None]
AlignConsecutiveBitFields: Consecutive
AlignConsecutiveDeclarations: None
AlignEscapedNewlines: Left
AlignOperands: Align
AlignTrailingComments: true
AllowAllArgumentsOnNextLine: false
AllowAllParametersOfDeclarationOnNextLine: false
AllowShortEnumsOnASingleLine: false
AllowShortBlocksOnASingleLine: false
AllowShortCaseLabelsOnASingleLine: false
AllowShortFunctionsOnASingleLine: false # [InlineOnly, true]
AllowShortLambdasOnASingleLine: false
AllowShortIfStatementsOnASingleLine: false
AllowShortLoopsOnASingleLine: false
# AllowShortCompoundRequirementOnASingleLine: true # <== clang-format v18+
AlwaysBreakAfterDefinitionReturnType: false
AlwaysBreakAfterReturnType: None
AlwaysBreakBeforeMultilineStrings: true
AlwaysBreakTemplateDeclarations: true
BreakAfterAttributes: Leave
AttributeMacros:
- __capability
BinPackArguments: true
BinPackParameters: true
BreakBeforeBraces: Custom
BraceWrapping:
AfterCaseLabel: true
AfterClass: true
AfterControlStatement: Always
AfterEnum: false
AfterFunction: true
AfterNamespace: true
AfterObjCDeclaration: true
AfterStruct: true
AfterUnion: true
AfterExternBlock: true
BeforeCatch: true
BeforeElse: true
BeforeLambdaBody: false
BeforeWhile: true
IndentBraces: false
SplitEmptyFunction: true
SplitEmptyRecord: true
SplitEmptyNamespace: true
BreakBeforeBinaryOperators: None # true
BreakBeforeConceptDeclarations: true
BreakBeforeInheritanceComma: true
BreakInheritanceList: AfterComma
BreakBeforeTernaryOperators: true # false
BreakConstructorInitializersBeforeComma: true
BreakConstructorInitializers: BeforeColon
BreakAfterJavaFieldAnnotations: false
BreakStringLiterals: false
ColumnLimit: 100
CommentPragmas: '^ IWYU pragma:'
QualifierAlignment: Leave
CompactNamespaces: false
ConstructorInitializerIndentWidth: 4
ContinuationIndentWidth: 4
Cpp11BracedListStyle: false
DeriveLineEnding: true
DerivePointerAlignment: false
DisableFormat: false
EmptyLineAfterAccessModifier: Never
EmptyLineBeforeAccessModifier: LogicalBlock
ExperimentalAutoDetectBinPacking: false
PackConstructorInitializers: Never
ConstructorInitializerAllOnOneLineOrOnePerLine: false
AllowAllConstructorInitializersOnNextLine: true
FixNamespaceComments: false
ForEachMacros:
- foreach
- Q_FOREACH
- BOOST_FOREACH
IfMacros:
- KJ_IF_MAYBE
IncludeBlocks: Regroup
IncludeCategories:
- Regex: '(<[0-9a-z_-]*>)'
Priority: 0
SortPriority: 0
CaseSensitive: false
- Regex: '(<gdextension[/0-9a-z_-]*\.h[p]?[p]?>)'
Priority: 2
SortPriority: 3
CaseSensitive: false
- Regex: '(<godot[/0-9a-z_-]*\.h[p]?[p]?>)'
Priority: 2
SortPriority: 4
CaseSensitive: false
- Regex: '(<[0-9a-z_-]*\.h[p]?[p]?>)'
Priority: 1
SortPriority: 1
CaseSensitive: false
- Regex: '(<.+[/0-9a-z_]*\.h[p]?[p]?>)'
Priority: 1
SortPriority: 2
CaseSensitive: false
- Regex: '(".*\.h[p]?[p]?")'
Priority: 3
SortPriority: 5
CaseSensitive: false
- Regex: '(".+[/0-9a-z_]*\.h[p]?[p]?")'
Priority: 3
SortPriority: 6
CaseSensitive: false
IncludeIsMainRegex: '""'
IncludeIsMainSourceRegex: '""'
IndentAccessModifiers: false
IndentCaseLabels: true
IndentCaseBlocks: false
IndentGotoLabels: true
IndentPPDirectives: BeforeHash
IndentExternBlock: AfterExternBlock
IndentRequires: true
IndentWidth: 4
IndentWrappedFunctionNames: false
InsertTrailingCommas: None # [None, Wrapped] ==> trailing comma insertion cannot be used with bin packing
KeepEmptyLinesAtTheStartOfBlocks: false
LambdaBodyIndentation: Signature
MacroBlockBegin: ''
MacroBlockEnd: ''
MaxEmptyLinesToKeep: 1
NamespaceIndentation: All
PenaltyBreakAssignment: 50
PenaltyBreakBeforeFirstCallParameter: 10
PenaltyBreakComment: 50
PenaltyBreakFirstLessLess: 120
PenaltyBreakOpenParenthesis: 10
PenaltyBreakString: 1000
PenaltyBreakTemplateDeclaration: 1000
PenaltyExcessCharacter: 10
PenaltyReturnTypeOnItsOwnLine: 100
PenaltyIndentedWhitespace: 0
PointerAlignment: Left
PPIndentWidth: 2
# QualifierOrder: ['static', 'inline', 'constexpr', 'const', 'type']
ReferenceAlignment: Pointer
ReflowComments: true
RemoveBracesLLVM: true
# RemoveParentheses: true ## clang v17 only
RequiresClausePosition: OwnLine
SeparateDefinitionBlocks: Always # Leave
ShortNamespaceLines: 1
SortIncludes: true
SortUsingDeclarations: true
SpaceAfterCStyleCast: false
SpaceAfterLogicalNot: false
SpaceAfterTemplateKeyword: true
SpaceBeforeAssignmentOperators: true
SpaceBeforeCaseColon: false
SpaceBeforeCpp11BracedList: false
SpaceBeforeCtorInitializerColon: true
SpaceBeforeInheritanceColon: true
SpaceBeforeParens: Custom
SpaceBeforeParensOptions:
AfterControlStatements: true
AfterForeachMacros: true
AfterFunctionDefinitionName: false
AfterFunctionDeclarationName: false
AfterIfMacros: true
AfterOverloadedOperator: false
BeforeNonEmptyParentheses: false
SpaceAroundPointerQualifiers: Default
SpaceBeforeRangeBasedForLoopColon: true
SpaceInEmptyBlock: true
SpaceInEmptyParentheses: false
SpacesBeforeTrailingComments: 2
SpacesInAngles: Never
SpacesInConditionalStatement: false
SpacesInContainerLiterals: true
SpacesInCStyleCastParentheses: false
SpacesInLineCommentPrefix:
Minimum: 1
Maximum: -1
SpacesInParentheses: false
SpacesInSquareBrackets: false
SpaceBeforeSquareBrackets: false
BitFieldColonSpacing: Both
Standard: Latest
TabWidth: 4
UseCRLF: false
UseTab: Never
WhitespaceSensitiveMacros:
- STRINGIZE
- PP_STRINGIZE
- BOOST_PP_STRINGIZE
- NS_SWIFT_NAME
- CF_SWIFT_NAME
- R
...

1
.gitattributes vendored
View File

@ -1 +0,0 @@
* text=auto eol=lf

View File

@ -1,38 +0,0 @@
---
name: Bug report
about: Create a report to help us improve
title: ''
labels: ''
assignees: ''
---
**Describe the bug**
A clear and concise description of what the bug is.
**To Reproduce**
Steps to reproduce the behavior:
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**Screenshots**
If applicable, add screenshots to help explain your problem.
**Desktop (please complete the following information):**
- OS: [e.g. iOS]
- Browser [e.g. chrome, safari]
- Version [e.g. 22]
**Smartphone (please complete the following information):**
- Device: [e.g. iPhone6]
- OS: [e.g. iOS8.1]
- Browser [e.g. stock browser, safari]
- Version [e.g. 22]
**Additional context**
Add any other context about the problem here.

View File

@ -1,20 +0,0 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
**Is your feature request related to a problem? Please describe.**
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
**Describe the solution you'd like**
A clear and concise description of what you want to happen.
**Describe alternatives you've considered**
A clear and concise description of any alternative solutions or features you've considered.
**Additional context**
Add any other context or screenshots about the feature request here.

View File

@ -1,27 +0,0 @@
name: GDExtension CMake
on: [push, pull_request]
jobs:
build-linux:
runs-on: self-hosted
steps:
- uses: actions/checkout@v3
# linux / gcc build
- name: '[linux | submodule sync]'
run: cd ${{ github.workspace }} && git submodule deinit --all --force && git submodule update --init --recursive
- name: '[linux | gcc] => cmake - delete cache'
run: rm -rf ${{ github.workspace }}/.out/*
- name: '[linux | gcc] => cmake - configure'
run: >
cmake -B ${{ github.workspace }}/.out
-DCMAKE_CXX_COMPILER=g++
-DCMAKE_C_COMPILER=gcc
-DCMAKE_BUILD_TYPE=Debug
-S ${{ github.workspace }}
-G Ninja
- name: '[linux | gcc] => cmake - clean'
run: cmake --build ${{ github.workspace }}/.out --config Debug --target clean --parallel 48
- name: '[linux | gcc] => cmake - build'
run: cmake --build ${{ github.workspace }}/.out --config Debug --target roguelite --parallel 48

30
.gitignore vendored
View File

@ -1,30 +1,2 @@
.godot/
.import/
.out/
out/
cmake-build-*/
export.cfg
export_presets.cfg
.sconsign.dblite
*.translation
*.obj
**/bin/*
!**/bin/*.gdextension
.vs/**
!.vs/launch.vs.json
!.vs/VSWorkspaceSettings.json
!.vs/CMakeWorkspaceSettings.json
.vscode/**
!.vscode/c_cpp_properties.json
!.vscode/extensions.json
!.vscode/launch.json
!.vscode/settings.json
.cache/**
build/
compile_commands.json
.vscode/

11
.gitmodules vendored
View File

@ -1,11 +0,0 @@
[submodule "extern/godot-engine"]
path = extern/godot-engine
url = https://github.com/godotengine/godot.git
branch = 4.3
[submodule "extern/godot-cpp"]
path = extern/godot-cpp
url = https://github.com/godotengine/godot-cpp.git
branch = 4.3
[submodule "extern/vcpkg"]
path = extern/vcpkg
url = https://github.com/microsoft/vcpkg

View File

@ -1,4 +0,0 @@
{
"enableCMake": true,
"sourceDirectory": "${workspaceRoot}"
}

View File

@ -1,38 +0,0 @@
{
"BuildIncremental": {
"Enabled": false
},
"ExcludedItems": [
".git*",
".clang*",
".idea",
".vscode",
"*.md",
"cpp.hint",
"/scripts",
"extension_api.json",
"godot-engine/**/*.md",
"godot-engine/**/*.txt",
"godot-engine/**/*.py",
"godot-engine/**/*.png",
"godot-engine/**/*.svg",
"godot-engine/**/*.yml",
"godot-engine/**/SConstruct",
"godot-engine/**/SCsub",
"godot-engine/**/.mailmap*",
"godot-engine/**/.editorconfig",
"godot-engine/**/LICENSE",
"!.out*",
"!.out/*",
"!.out/build/*",
"!.godot",
"!README.md"
],
"Indexing": {
"Enabled": true
},
"Logger": {
"EnableVsLogging": false,
"LoggingLevel": "Info"
}
}

View File

@ -1,36 +0,0 @@
{
"version": "0.2.1",
"configurations": [
{
"type": "dll",
"exe": "${workspaceRoot}/extern/godot-engine/bin/godot.windows.editor.dev.x86_64.exe",
"args": [
"--editor",
"--windowed",
"--delta-smoothing enable",
"--resolution 1920x1080",
"--debug",
"--verbose",
"--path",
"${workspaceRoot}/project"
],
"project": "CMakeLists.txt",
"name": "gdextension (editor)",
"visualizerFile": "${workspaceRoot}/extern/godot-engine/platform/windows/godot.natvis"
},
{
"type": "dll",
"isDefaultConfiguration": true,
"exe": "${workspaceRoot}/extern/godot-engine/bin/godot.windows.editor.dev.x86_64.exe",
"args": [
"--debug",
"--verbose",
"--path",
"${workspaceRoot}/project"
],
"project": "CMakeLists.txt",
"name": "gdextension (project)",
"visualizerFile": "${workspaceRoot}/extern/godot-engine/platform/windows/godot.natvis"
}
]
}

View File

@ -1,25 +0,0 @@
{
"version": 4,
"configurations": [
{
"name": "GDNative C++ (GCC)",
"configurationProvider": "ms-vscode.cmake-tools",
"intelliSenseMode": "linux-gcc-x64"
},
{
"name": "GDNative C++ (Clang)",
"configurationProvider": "ms-vscode.cmake-tools",
"intelliSenseMode": "linux-clang-x64"
},
{
"name": "Mac GDNative C++ (Clang)",
"configurationProvider": "ms-vscode.cmake-tools",
"intelliSenseMode": "macos-clang-x64"
},
{
"name": "GDNative C++ (MSVC)",
"configurationProvider": "ms-vscode.cmake-tools",
"intelliSenseMode": "windows-msvc-x64"
}
]
}

View File

@ -1,7 +0,0 @@
{
"recommendations": [
"ms-vscode.cpptools",
"ms-vscode.cmake-tools",
"xaver.clang-format",
]
}

202
.vscode/launch.json vendored
View File

@ -1,202 +0,0 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "project (gdb)",
"type": "cppdbg",
"request": "launch",
"MIMode": "gdb",
"linux": {
"program": "${workspaceFolder}/extern/godot-engine/bin/godot.linuxbsd.editor.dev.x86_64",
"miDebuggerPath": "/usr/bin/gdb"
},
"windows": {
"program": "${workspaceFolder}/extern/godot-engine/bin/godot.windows.editor.dev.x86_64.exe",
"miDebuggerPath": "gdb"
},
"args": [
"--debug",
"--verbose",
"--path",
"${workspaceFolder}/project"
],
"cwd": "${workspaceFolder}",
"visualizerFile": "${workspaceFolder}/extern/godot-engine/platform/windows/godot.natvis",
"internalConsoleOptions": "openOnSessionStart",
"launchCompleteCommand": "exec-run",
"symbolLoadInfo": {
"loadAll": true,
"exceptionList": ""
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "editor (gdb)",
"type": "cppdbg",
"request": "launch",
"MIMode": "gdb",
"linux": {
"program": "${workspaceFolder}/extern/godot-engine/bin/godot.linuxbsd.editor.dev.x86_64",
"miDebuggerPath": "/usr/bin/gdb"
},
"windows": {
"program": "${workspaceFolder}/extern/godot-engine/bin/godot.windows.editor.dev.x86_64.exe",
"miDebuggerPath": "gdb"
},
"args": [
"--editor",
"--debug",
"--verbose",
"--path",
"${workspaceFolder}/project"
],
"cwd": "${workspaceFolder}",
"visualizerFile": "${workspaceFolder}/extern/godot-engine/platform/windows/godot.natvis",
"internalConsoleOptions": "openOnSessionStart",
"launchCompleteCommand": "exec-run",
"symbolLoadInfo": {
"loadAll": true,
"exceptionList": ""
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "project (vsdbg | windows)",
"type": "cppvsdbg",
"request": "launch",
"requireExactSource": true,
"symbolOptions": {
"searchPaths": [
"${workspaceFolder}/extern/godot-engine/bin",
"${workspaceFolder}/project"
],
"searchMicrosoftSymbolServer": true
},
"program": "${workspaceFolder}/extern/godot-engine/bin/godot.windows.editor.dev.x86_64.exe",
"args": [
"--debug",
"--verbose",
"--path",
"${workspaceFolder}/project"
],
"cwd": "${workspaceFolder}",
"visualizerFile": "${workspaceFolder}/extern/godot-engine/platform/windows/godot.natvis",
"internalConsoleOptions": "openOnSessionStart",
"console": "internalConsole"
},
{
"name": "editor (vsdbg | windows)",
"type": "cppvsdbg",
"request": "launch",
"requireExactSource": true,
"symbolOptions": {
"searchPaths": [
"${workspaceFolder}/extern/godot-engine/bin",
"${workspaceFolder}/project"
],
"searchMicrosoftSymbolServer": true
},
"program": "${workspaceFolder}/extern/godot-engine/bin/godot.windows.editor.dev.x86_64.exe",
"args": [
"--editor",
"--debug",
"--verbose",
"--path",
"${workspaceFolder}/project"
],
"cwd": "${workspaceFolder}",
"visualizerFile": "${workspaceFolder}/extern/godot-engine/platform/windows/godot.natvis",
"internalConsoleOptions": "openOnSessionStart",
"console": "internalConsole"
},
{
"name": "project (lldb)",
"type": "cppdbg",
"MIMode": "lldb",
"request": "launch",
"linux": {
"program": "${workspaceFolder}/extern/godot-engine/bin/godot.linuxbsd.editor.dev.x86_64"
},
"windows": {
"program": "${workspaceFolder}/extern/godot-engine/bin/godot.windows.editor.dev.x86_64.exe"
},
"osx": {
"program": "${workspaceFolder}/extern/godot-engine/bin/godot.macos.editor.dev.arm64"
},
"args": [
"--debug",
"--verbose",
"--path",
"${workspaceFolder}/project"
],
"cwd": "${workspaceFolder}",
"visualizerFile": "${workspaceFolder}/extern/godot-engine/platform/windows/godot.natvis",
"internalConsoleOptions": "openOnSessionStart",
"launchCompleteCommand": "exec-run",
"symbolLoadInfo": {
"loadAll": true,
"exceptionList": ""
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
},
{
"name": "editor (lldb)",
"type": "cppdbg",
"MIMode": "lldb",
"miDebuggerPath": "lldb",
"request": "launch",
"linux": {
"program": "${workspaceFolder}/extern/godot-engine/bin/godot.linuxbsd.editor.dev.x86_64"
},
"windows": {
"program": "${workspaceFolder}/extern/godot-engine/bin/godot.windows.editor.dev.x86_64.exe"
},
"osx": {
"program": "${workspaceFolder}/extern/godot-engine/bin/godot.macos.editor.dev.arm64"
},
"args": [
"--editor",
"--debug",
"--verbose",
"--path",
"${workspaceFolder}/project"
],
"cwd": "${workspaceFolder}",
"visualizerFile": "${workspaceFolder}/extern/godot-engine/platform/windows/godot.natvis",
"internalConsoleOptions": "openOnSessionStart",
"launchCompleteCommand": "exec-run",
"symbolLoadInfo": {
"loadAll": true,
"exceptionList": ""
},
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
}
]
}
]
}

105
.vscode/settings.json vendored
View File

@ -1,105 +0,0 @@
{
"C_Cpp.autoAddFileAssociations": false,
"C_Cpp.autocomplete": "default",
"C_Cpp.clang_format_fallbackStyle": "none",
"C_Cpp.clang_format_style": "file",
"C_Cpp.codeAnalysis.runAutomatically": true,
"C_Cpp.commentContinuationPatterns": [
"/**",
"///"
],
"C_Cpp.default.compilerPath": "",
"C_Cpp.default.cppStandard": "c++20",
"C_Cpp.default.enableConfigurationSquiggles": true,
"C_Cpp.enhancedColorization": "enabled",
"C_Cpp.formatting": "clangFormat",
"clang-format.language.cpp.enable": true,
"clang-format.language.cpp.style": "file",
"clang-format.assumeFilename": ".clangformat",
"C_Cpp.workspaceParsingPriority": "high",
"cmake.automaticReconfigure": true,
"cmake.buildBeforeRun": true,
"cmake.buildTask": false,
"cmake.cmakeCommunicationMode": "fileApi",
"cmake.configureOnOpen": true,
"cmake.languageSupport.enableFileAPI": true,
"cmake.launchBehavior": "breakAndReuseTerminal",
"cmake.outputLogEncoding": "utf-8",
"cmake.parallelJobs": 0,
"cmake.parseBuildDiagnostics": true,
"cmake.useCMakePresets": "always",
"debug.autoExpandLazyVariables": "on",
"debug.console.closeOnEnd": true,
"debug.console.fontFamily": "Fira Code Retina, Consolas, 'Courier New', monospace",
"debug.console.fontSize": 12,
"debug.inlineValues": "off",
"debug.onTaskErrors": "showErrors",
"debug.openDebug": "openOnSessionStart",
"debug.openExplorerOnEnd": true,
"debug.showBreakpointsInOverviewRuler": true,
"debug.terminal.clearBeforeReusing": true,
"debug.toolBarLocation": "docked",
"diffEditor.experimental.showMoves": true,
"diffEditor.experimental.useVersion2": true,
"docsView.documentationView.updateMode": "sticky",
"editor.autoClosingBrackets": "beforeWhitespace",
"editor.bracketPairColorization.enabled": false,
"editor.codeLens": false,
"editor.cursorSmoothCaretAnimation": "on",
"editor.cursorStyle": "line",
"editor.cursorSurroundingLinesStyle": "all",
"editor.dragAndDrop": false,
"editor.fontFamily": "Fira Code Retina, Consolas, 'Courier New', monospace",
"editor.fontLigatures": true,
"editor.fontSize": 12,
"editor.formatOnSave": true,
"editor.formatOnSaveMode": "file",
"editor.gotoLocation.alternativeDefinitionCommand": "editor.action.revealDeclaration",
"editor.hover.delay": 500,
"editor.maxTokenizationLineLength": 10000,
"editor.minimap.enabled": false,
"editor.mouseWheelScrollSensitivity": 3,
"editor.mouseWheelZoom": true,
"editor.quickSuggestionsDelay": 250,
"editor.renderLineHighlight": "gutter",
"editor.rulers": [
100
],
"editor.smoothScrolling": true,
"editor.stickyScroll.enabled": true,
"explorer.autoReveal": false,
"explorer.sortOrder": "foldersNestsFiles",
"files.trimFinalNewlines": true,
"git.autofetch": true,
"git.confirmSync": false,
"gitlens.plusFeatures.enabled": false,
"markdown-preview-enhanced.previewTheme": "one-dark.css",
"problems.sortOrder": "position",
"search.maxResults": null,
"search.showLineNumbers": true,
"search.useIgnoreFiles": false,
"terminal.integrated.automationProfile.linux": {
"path": "/usr/bin/bash"
},
"terminal.integrated.cursorStyle": "line",
"terminal.integrated.defaultProfile.linux": "bash",
"terminal.integrated.fontSize": 12,
"terminal.integrated.profiles.linux": {
"bash": {
"args": [
"--login",
"-i"
],
"color": "terminal.ansiYellow",
"icon": "terminal-bash",
"path": "bash"
}
},
"terminal.integrated.scrollback": 100000,
"workbench.editor.highlightModifiedTabs": true,
"workbench.editor.untitled.labelFormat": "name",
"workbench.list.smoothScrolling": true,
"workbench.tree.renderIndentGuides": "always",
"dotnet.defaultSolution": "disable",
"svg.preview.background": "editor",
}

View File

@ -1,272 +0,0 @@
# This is the main CMake script which (summed up) configures a CMake build project on how to build our .dll
# The gdextension .dll build can be run from Visual Studio Community, VSCode, CLion, etc as long as you have
# installed the appropriate CMake add-ons to enable IDE/editor integration with CMake, and the project is
# in the same directory as CMakeLists.txt
# This script can also easily handle adding 3rd party libraries to our gdextension project.
# An official explanation on how it's intended to function is here:
# https://github.com/vorlac/godot-roguelite/wiki#cmake-configuration
# =======================================================================
# Main cmake project settings area
# =======================================================================
cmake_minimum_required(VERSION 3.20)
# Name for our library:
set(GDEXTENSION_LIB_NAME naval-swarm)
# Directory for placing the built .dll (The project .gdextension file should likely point in here):
set(GDEXTENSION_LIB_PATH "${CMAKE_CURRENT_SOURCE_DIR}/project/bin")
# Tip: "set" arguments are basically defining variables in CMake
option(
AUTOFORMAT_SRC_ON_CONFIGURE
"If enabled, clang-format will be used to format all sources in src/ during configuration"
ON
)
# Tip: "option" arguments are basically also CMake variables, but in a easy user toggleable format.
option(
USE_CCACHE_FOR_GDEXT_BUILD
"If enabled, ccache will be used to when building the project lib"
ON
)
set(CMAKE_CXX_STANDARD 23)
set(CMAKE_CXX_EXTENSIONS ON)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_COLOR_DIAGNOSTICS ON)
set(CMAKE_MESSAGE_LOG_LEVEL STATUS)
# Assign CMAKE_MODULE_PATH which will indicate future include statements where the .cmake files to be included may be located
list(APPEND CMAKE_MODULE_PATH
"${CMAKE_CURRENT_SOURCE_DIR}/cmake/"
"${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-cpp/cmake/"
)
# Tip: "list" arguments allow you to group multiple variables under a single identifier.
# =======================================================================
# Configure vcpkg submodule and define library.
# vcpkg:
# is a submodule (repository within the main one, defined in
# .gitmodules) It is a program used by CMake further on in this
# script to easily add 3rd party libraries to our own main .dll
# (it can priorize dynamic or static linking for the dependency
# as well as the C runtime based on what the VCPKG_TARGET_TRIPLET
# variable is set to. For this project static linkage is configured
# for the library Windows (but the C runtime is dynamically linked)
# and Linux & MacOS favor dynamic linkage)
# =======================================================================
include(vcpkg-init)
# Tip: "vcpkg-init" is actually a .cmake script located in the cmake/ directory.
# Include file names in the cmake/ directory don't require a full path or file extension to be specified thanks to the
# previous CMAKE_MODULE_PATH list definition
project("${GDEXTENSION_LIB_NAME}"
LANGUAGES
C CXX
VERSION
0.1.0
)
# Tip: the "project" specifications tell CMake valuable project info for compilation:
# project name (same as lib name), languages and version.
include(vcpkg-install-deps)
# Tip: Includes cmake/vcpkg-install-deps.cmake and runs it here.
# the "vcpkg-install-deps" .cmake script just makes sure that the previously asserted vcpkg install has all of it's dependencies available
# =======================================================================
# Compiler identification
# =======================================================================
set(compiler_is_clang "$<OR:$<CXX_COMPILER_ID:AppleClang>,$<CXX_COMPILER_ID:Clang>>")
set(compiler_is_gnu "$<CXX_COMPILER_ID:GNU>")
set(compiler_is_msvc "$<CXX_COMPILER_ID:MSVC>")
# Tip: The compiler we are using is determined by configs in CMakePresets.json, which in turn are picked by the VS Community option we selected
# =======================================================================
# Configure godot-engine and godot-cpp submodules and define libraries.
# godot-cpp:
# Configured as a library that will statically
# link to this project's gdextension dynamic link library.
# godot-engine:
# The engine submodule will be (re)built using scons if a
# debug build of the editor doesn't already exist.
# the engine sources and headers will then be used to declare
# a library in cmake (but will not be built). The cmake library
# will improve code browsing, syntax highlighting, searching,
# debbuging, and autocomplete/intellisense for any IDEs that
# gather data from cmake (i.e. VSCode and Visual Studio 2022)
# =======================================================================
include(godot-dev-configuration)
# Tip: Includes cmake/godot-dev-configuration.cmake and runs it
# =======================================================================
# 3rd party library setup/configuration (leverages vcpkg)
# =======================================================================
find_package(fmt CONFIG REQUIRED)
find_package(spdlog CONFIG REQUIRED)
# Tip: The previous packages are in vcpkg's registry, hence why CMake's find_package method can find them.
# once found, they are respectively referenced by names (eg. fmt, spdlog, flecs)
# =======================================================================
# Our GDExtension dynamic library (.dll) setup/configuration
# =======================================================================
# Point to our library sources as "gdext_sources":
file(GLOB_RECURSE gdext_sources
CONFIGURE_DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.[hc]"
"${CMAKE_CURRENT_SOURCE_DIR}/src/*.[hc]pp"
)
# Use gdext_sources in order to build a shared library that will be named whatever
# the PROJECT_NAME variable is set to (which will be the same name you set for the
# GDEXTENSION_LIB_NAME variable at the top of this file):
add_library(${PROJECT_NAME}
SHARED
${gdext_sources}
)
# Tip1: The "add_library()" command is used to specify a library target for this cmake project to build
# The SHARED keyword tells CMake to create a shared/dynamic library. The gdext_sources file directories are passed to add_library()
# command to specify the source files for the library.
# Tip2: The .dll isn't built here yet, it's only being pointed at. The build will occur when running cmake --build in the same
# directory as this CMakeLists.txt file, or if the build command is run from visual studio.
# Import compiler warnings from godot-cpp's own cmake folder:
include(common_compiler_flags)
# Set compiler options for the gdextension library based on the compiler being used:
target_compile_options(${PROJECT_NAME} PUBLIC
$<${compiler_is_msvc}:
/EHsc
/utf-8
/Zc:preprocessor
>
$<$<NOT:${compiler_is_msvc}>:
-g
-Wno-unused-value
$<${compiler_is_gnu}:
-Wno-attributes
-Wno-attributes=rl::
>
$<${compiler_is_clang}:
-Wno-ignored-attributes
-Wno-unknown-attributes
>
$<$<CONFIG:Debug>:
-fno-omit-frame-pointer
-O0
>
$<$<CONFIG:Release>:
-O3
>
>
)
# Enable extension hot swapping:
target_compile_definitions(${PROJECT_NAME} PUBLIC
HOT_RELOAD_ENABLED
)
# Define the directories containing inclusion headers (CMake needs to know this after running add_library):
target_include_directories(${PROJECT_NAME} PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/src"
)
if (NOT APPLE)
# linker options for the gdextension library
target_link_options(${PROJECT_NAME} PRIVATE
$<$<NOT:${compiler_is_msvc}>:
-static-libgcc
-static-libstdc++
-Wl,-R,'$$ORIGIN'
>
)
endif()
# =======================================================================
# Optional configuration / build features
# =======================================================================
if (USE_CCACHE_FOR_GDEXT_BUILD MATCHES ON)
include(ccache)
endif()
if (AUTOFORMAT_SRC_ON_CONFIGURE MATCHES ON)
include(clang-format)
endif()
# =======================================================================
# Dependency linkage (linking dependencies to our .dll build)
# =======================================================================
# gdextension library dependency linkage
# godot::cpp: Found by CMake thanks to godot-dev-configuration "add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-cpp)" statement.
# the subdirectory addition runs godot-cpp's own CMakeLists.txt which declares "add_library(godot::cpp ALIAS ${PROJECT_NAME})"
# CMake automatically exports all targets that are created in the godot-cpp CMakeLists.txt file. This means that the godot::cpp
# library is accessible and linkable from here.
#
# The other libraries are found thanks to their definition earlier in "find_package", which
# is defined by the vcpkg package manager for each dependency added to the project.
target_link_libraries(${PROJECT_NAME}
PUBLIC godot::cpp
PRIVATE fmt::fmt
PRIVATE fmt::fmt-header-only
PRIVATE spdlog::spdlog_header_only
)
# Tip1: PUBLIC: our .dll depends on the library. PRIVATE: the library is expendable.
# Tip2: godot::cpp, fmt::fmt etc... each library name is declared by each of it's
# respective projects's own CMakeLists.txt, which is reached thanks to vcpkg
# Define system architecture for the build:
if(CMAKE_SIZEOF_VOID_P EQUAL 8)
set(system_bits 64)
else()
set(system_bits 32)
endif()
# Define built .dll name:
string(TOLOWER
"${PROJECT_NAME}.${CMAKE_SYSTEM_NAME}.${system_bits}.${CMAKE_BUILD_TYPE}"
gde_lib_name
)
set_target_properties(${PROJECT_NAME}
PROPERTIES
# This option tells CMake to generate position-independent code (PIC).
# PIC code can be loaded and executed at any address in memory.
# This is necessary when building shared/dynamic libraries.
POSITION_INDEPENDENT_CODE ON
# This option tells CMake to export the compile commands for the target.
# This can be useful for debugging and profiling purposes.
CMAKE_EXPORT_COMPILE_COMMANDS ON
# This option tells CMake to enable interprocedural optimization for the target.
# This can improve the performance of the target by optimizing code across multiple functions.
CMAKE_INTERPROCEDURAL_OPTIMIZATION_RELEASE ON
# This option tells CMake to place the static library archive for the target in the specified directory.
ARCHIVE_OUTPUT_DIRECTORY "${GDEXTENSION_LIB_PATH}"
# This option tells CMake to place the shared library for the target in the specified directory.
LIBRARY_OUTPUT_DIRECTORY "${GDEXTENSION_LIB_PATH}"
# This option tells CMake to place the runtime library for the target in the specified directory.
RUNTIME_OUTPUT_DIRECTORY "${GDEXTENSION_LIB_PATH}"
# This option tells CMake to place the program database (PDB) file for the target in the specified directory.
# The PDB file contains debugging information for the target.
CMAKE_PDB_OUTPUT_DIRECTORY "${GDEXTENSION_LIB_PATH}"
# This option tells CMake to place the compile-time PDB file for the target in the specified directory.
# The compile-time PDB file contains debugging information that can be used to debug the target while it is being built.
CMAKE_COMPILE_PDB_OUTPUT_DIRECTORY "${GDEXTENSION_LIB_PATH}"
# This option tells CMake to set the output name for the target to the specified value.
OUTPUT_NAME "${gde_lib_name}"
)
# =======================================================================
# Print configuration report
# =======================================================================
# Include utility script that prints a handful of useful build/configuration cmake variables:
include(cmake-utils)
print_project_variables()

View File

@ -1,225 +0,0 @@
{
"version": 5,
"configurePresets": [
{
"name": "default",
"hidden": true,
"generator": "Ninja",
"installDir": "${sourceDir}/.out/install/${presetName}",
"binaryDir": "${sourceDir}/.out/build/${presetName}",
"toolchainFile": "${sourceDir}/extern/vcpkg/scripts/buildsystems/vcpkg.cmake",
"architecture": {
"value": "x64",
"strategy": "external"
},
"toolset": {
"value": "host=x64",
"strategy": "external"
},
"environment": {
"NINJA_STATUS": "%p [%es] (%f/%t) -"
}
},
{
"name": "default-verbose",
"inherits": "default",
"hidden": true,
"environment": {
"VERBOSE": "true"
}
},
{
"name": "msvc",
"inherits": "default",
"hidden": true,
"cacheVariables": {
"CMAKE_C_COMPILER": "cl",
"CMAKE_CXX_COMPILER": "cl",
"VCPKG_TARGET_TRIPLET": "x64-windows-static-md"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"displayName": "MSVC Debug",
"name": "msvc-debug",
"inherits": "msvc",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"displayName": "MSVC Release",
"name": "msvc-release",
"inherits": "msvc",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"displayName": "MSVC RelWithDebInfo",
"name": "msvc-relwdebinfo",
"inherits": "msvc",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "gcc",
"inherits": "default",
"hidden": true,
"cacheVariables": {
"CMAKE_C_COMPILER": "gcc",
"CMAKE_CXX_COMPILER": "g++"
},
"condition": {
"type": "notEquals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"displayName": "GCC Debug",
"name": "gcc-debug",
"inherits": "gcc",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"displayName": "GCC Release",
"name": "gcc-release",
"inherits": "gcc",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"displayName": "GCC RelWithDebInfo",
"name": "gcc-relwdebinfo",
"inherits": "gcc",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "gcc-windows",
"inherits": "default",
"hidden": true,
"cacheVariables": {
"CMAKE_C_COMPILER": "gcc",
"CMAKE_CXX_COMPILER": "g++",
"VCPKG_TARGET_TRIPLET": "x64-windows-static-md"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"displayName": "GCC Debug",
"name": "gcc-windows-debug",
"inherits": "gcc-windows",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"displayName": "GCC Release",
"name": "gcc-windows-release",
"inherits": "gcc-windows",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"displayName": "GCC RelWithDebInfo",
"name": "gcc-windows-relwdebinfo",
"inherits": "gcc-windows",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "clang",
"inherits": "default",
"hidden": true,
"cacheVariables": {
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++"
},
"condition": {
"type": "notEquals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"displayName": "Clang Debug",
"name": "clang-debug",
"inherits": "clang",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"displayName": "Clang Release",
"name": "clang-release",
"inherits": "clang",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"displayName": "Clang RelWithDebInfo",
"name": "clang-relwdebinfo",
"inherits": "clang",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
},
{
"name": "clang-windows",
"inherits": "default",
"hidden": true,
"cacheVariables": {
"CMAKE_C_COMPILER": "clang",
"CMAKE_CXX_COMPILER": "clang++",
"VCPKG_TARGET_TRIPLET": "x64-windows-static-md"
},
"condition": {
"type": "equals",
"lhs": "${hostSystemName}",
"rhs": "Windows"
}
},
{
"displayName": "Clang Debug",
"name": "clang-windows-debug",
"inherits": "clang-windows",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Debug"
}
},
{
"displayName": "Clang Release",
"name": "clang-windows-release",
"inherits": "clang-windows",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "Release"
}
},
{
"displayName": "Clang RelWithDebInfo",
"name": "clang-windows-relwdebinfo",
"inherits": "clang-windows",
"cacheVariables": {
"CMAKE_BUILD_TYPE": "RelWithDebInfo"
}
}
]
}

21
LICENSE
View File

@ -1,21 +0,0 @@
MIT License
Copyright (c) 2023 sal
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.

37
Makefile Normal file
View File

@ -0,0 +1,37 @@
# Compiler and flags
CPPC = g++
#CPPC_FLAGS = -std=c++23 -s -O3 -Wall -Wextra -lSDL3 -lSDL3_image
# Debug flags:
CPPC_FLAGS = -std=c++23 -ggdb -Wall -Wextra -lSDL3 -lSDL3_image
SRC_PATH := src
OBJ_PATH := build/obj
BIN_PATH := build/bin
SRC_FILES := $(shell find $(SRC_PATH) -name '*.cpp')
# Generate corresponding object file paths by replacing src/ with build/obj/
OBJ_FILES := $(patsubst $(SRC_PATH)/%.cpp,$(OBJ_PATH)/%.o,$(SRC_FILES))
all: make-build-dir $(BIN_PATH)/naval_swarm
make-build-dir:
mkdir -p $(OBJ_PATH)
mkdir -p $(BIN_PATH)
$(BIN_PATH)/naval_swarm: $(OBJ_FILES)
$(CPPC) $(CPPC_FLAGS) $^ -o $@
$(OBJ_PATH)/%.o: $(SRC_PATH)/%.cpp
$(CPPC) $(CPPC_FLAGS) -c $< -o $@
clean:
rm -fr build
.PHONY: all clean make-build-dir

View File

@ -1,91 +0,0 @@
# Godot 4.3 GDExtension C++ Prototype
This project is a rough prototype focusing on understanding how to implementa majority of a game's core logic/scripting in C++ using GDExtension. Everything is done in the code aside from UI/dialog/menu design, and scene file generation.
The current focus is aimed towards learning more about how certain features and funtionality can be implemented in native code leveraging the [godot-cpp](https://github.com/godotengine/godot-cpp) GDExtension bindings so there isn't much game logic implemented yet. Since the documentation is pretty sparse when it comes to pure native development, most of the functionality implemnted in this project is focused on providing a variety of general examples of misc functionality that others will likely find useful.
Game logic will become a focus when most of the essentials are figured out and implented throughout the project.
# Overview
This project is meant to show others working with GDExtension how to:
- structure a project
- implement specific features and functionality entirely in C++
- incorporate 3rd party libraries into their GDExtension code/library
- use CMake, VCPKG, and submodules to configure the project automatically
- configure VSCode (linux & windows) / Visual Studio 2022 (windows) for
- good code navigation for godot engine sources, godot-cpp sources, and the gdextension project sources.
- good autocomplete / intellisense configuration
- preconfigured debugger launch profiles to run the project standalone or by launching the editor (both launch settings debuggable)
- good debugger visualizations for internal godot data structures by leveraging the .natvis file provided with godot-cpp
# High Level Project Structure
The project's [main scene](./project/main.tscn) consists of a single `Main` node. The `Main` node is intended to handle all high level game management (level loading, scene swaps, saving, loading, UI, input handling, menus, signal propigation, etc)
The overall node hierarchy:
<div class="highlight highlight-html"> <pre>
<a href="./src/main.hpp" title="Main">Main</a>
├── <a href="./src/ui/main_dialog.hpp" title="main_dialog.hpp">Main Canvas Layer<a> (reference to <a href=https://github.com/vorlac/godot-roguelite/blob/main/project/scenes/ui/main_dialog.tscn#L100-L113 title="title">Canvas Layer</a> in MainDialog)
├── <a href="./src/ui/main_dialog.hpp" title="main_dialog.hpp">MainDialog</a>
│ ├── <a href="https://github.com/vorlac/godot-roguelite/blob/main/project/scenes/ui/main_dialog.tscn#L132-L159" title="main_dialog.tscn">RichTextLabel (In-Game Console)</a>
│ └── <a href="https://github.com/vorlac/godot-roguelite/blob/main/project/scenes/ui/main_dialog.tscn#L100-L113" title="main_dialog.tscn">MainSubViewport (Primary Game Viewport)</a>
│ └── <a href="https://github.com/vorlac/godot-roguelite/blob/main/project/scenes/ui/main_dialog.tscn#L100-L113" title="main_dialog.tscn">Canvas Layer</a>
├── <a href="./src/entity/level.hpp" title="level.hpp">Level</a>
│ ├── <a href="./src/entity/character/player.cpp" title="player.cpp">Player</a> (GDCLASS object inheritance example)
│ │ ├── <a href="./project/scenes/characters/player.tscn" title="player.tscn">Godot Player Scene</a>
│ │ ├── <a href="./src/entity/controller/character_controller.cpp" title="character_controller.cp">CharacterController</a>
│ │ ├── <a href="./src/entity/camera.cpp" title="camera.cpp">Camera</a>
│ │ └── <a href="https://github.com/vorlac/godot-roguelite/blob/main/src/entity/character/character.hpp#L85" title="character.hpp">FiringPoint (Marker2D reference from Godot Player Scene)</a>
│ └── <a href="./src/entity/projectile/projectile_spawner.hpp" title="projectile_spawner.hpp">Projectile Spawner</a>
│ └── <a href="./src/entity/projectile/projectile.hpp" title="projectile.hpp">Projectile</a>
<a href="./src/singletons/console.hpp" title="console.hpp">Console (Singleton example)</a>
└── <a href="https://github.com/vorlac/godot-roguelite/blob/main/project/scenes/ui/main_dialog.tscn#L132-L159" title="main_dialog.tscn">RichTextLabel (Reference from MainDialog)</a>
</pre> </div>
# Setup Guide
See the [wiki](https://github.com/vorlac/godot-roguelite/wiki) for a detailed guide that will walk you through the steps required to get this project running and debugging on linux or windows. Make sure to thank [PixelRain](https://github.com/Mangonels) in the [Godot discord](https://discord.com/channels/212250894228652034/342047011778068481) for his contributions to the wiki.
# Using this project as a base for your project
This repo is set up as a template (using the "use this template"->"create a new repository" button on the main landing page of this repo). If you use that option rather than just cloning this repo directly it will create a copy of the repo (not a clone or fork) in your github account with all history stripped. This project should be relatively plug and play when it comes to reusing the parts you want to keep and removing/replacing the parts you don't. If you create a repo from the template you also have the option of making the project private when it creates the repo in your github account.
Once the template project is created you _should_ be able to just swap out the code in `src/` and godot project files in `project/` with your own C++ source code and godot project files. If everything was replaced correctly/consistently, the cmake build should detect the changes in the `src/` directory (file additions/removals/renames) and know to reconfigure the project if/when changes are made.
More information about using this repo as a base for your own project in the [templating](https://github.com/vorlac/godot-roguelite/wiki/Templating-%E2%80%90-godot%E2%80%90roguelite-as-a-template-for-your-own-project) section of the wiki.
# Note about cloning
If you just want to clone/try this project locally, it's important that you truly clone the repo and not just download it as a zip. The repo contains submodules that are required for the build to function properly, which will only be included if the repo is cloned (or templated). The zip download option won't correctly package the repos located in each extern/<submodule> directory which will lead to the buildscripts failing.
# Contributing
This repo and/or the [gdextension developer documentation](https://github.com/vorlac/gdextension-docs/blob/main/main.md) I recently started working on is open to anyone that wants to contribute. Feel free to submit PRs for any changes that implement new features, fix bugs, or improve upon any existing features, functionality, or design.
# Additional Resources
The projects below are also worth checking out for some additional GDExtension examples to use as references
- https://github.com/paddy-exe/GDExtensionSummator
- https://github.com/asmaloney/GDExtensionTemplate
- https://github.com/godotengine/godot-cpp-template
- https://github.com/godotengine/godot-cpp/tree/master/test/src
# Licensing
#### Code
- All code in this project is licensed as [MIT](./LICENSE)
#### Assets
- All art assets (`project/assets/art/*`) are licensed as [Creative Commons Zero, CC0](./project/assets/art/LICENSE)
- All audio assets (`project/assets/audio/*`) are licensed as [Creative Commons Zero, CC0](./project/assets/audio/LICENSE)
- Art & audio assets credit: [Kenney](www.kenney.nl)
- Asset pack purchase link: [All-in-1 Asset Pack](https://kenney.itch.io/kenney-game-assets)
> [vorlac/godot-roguelite](https://github.com/vorlac/godot-roguelite) was used as template

73
TODO.md
View File

@ -1,73 +0,0 @@
# TODO
### Stats / Resource Monitoring
* print resource usage (fps, frametime, object count, etc) in UI labels.
* truncate console text output once it exceeds ~1024 lines.
### Resource loading
* see if loading from path can be default rather than loading cached resource file.
* cached files don't always play nice with certain native code changes (i.e. changing `GDCLASS` baseclass)
### Menu Dialogs / HUD
* create main menu
* create options menu
* create pause menu
* in-game HUD
### Level Creation
* look into procedural level generation
* completely dynamic? pieced together using prebuilt scene chunks?
### Enemies
* implement placeholer dynamic enemy spawns
* health
* movement
* attacks
* weapons
### Projectiles
* design dynamic projectile system
* custom paths
* tweening
* speed
* size
* acceleration
* TTL
* distance
* auto tracking
* rayscan / lazer
* pattern
* accuracy / randomness in spray
### Weapons
* implement weapon inventory
* weapon swapping
* weapon pickups / replacement
* randomized properties?
### Items
* implement basic item pickup system
* usable items
* passive modifiers
### Score / Stats tracking
* player health
* score / kills
* survival time
* dungeon depth
* rooms cleared per dungeon / floor
* currency
* apply toward perstent upgrades / weapons / skill tree
### Player Character
##### Inputs / Movement
* refine controls
##### Animations
* implement basic animations for movement / state change
### Graphics
* Look into shaders
* particle effects (projectiles? dashing?)
### Audio
* Hook up some basic sfx / music

BIN
assets/background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 MiB

913
assets/destroyer.svg Normal file
View File

@ -0,0 +1,913 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
version="1.1"
id="svg1"
width="58.118374"
height="512"
viewBox="0 0 58.118374 511.99998"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<g
id="g1"
transform="matrix(0.75042725,0,0,0.75042725,-268.6203,-165.22315)">
<path
id="path2"
d="m 96,58.502331 h 18"
style="fill:none;stroke:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path3"
d="M 115,78.502331 V 158.50233"
style="fill:none;stroke:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path4"
d="M 95,78.502331 V 158.50233"
style="fill:none;stroke:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path5"
d="m 115,158.50233 -0.003,1.9633 -0.009,1.96212 -0.0151,1.95975 -0.0211,1.9562 -0.027,1.95148 -0.033,1.94559 -0.039,1.93851 -0.0449,1.93028 -0.0508,1.92087 -0.0567,1.91031 -0.0626,1.89861 -0.0684,1.88575 -0.0741,1.87177 -0.0798,1.85665 -0.0855,1.84041 -0.0911,1.82307 -0.0967,1.80464 -0.10221,1.7851 -0.10765,1.7645 -0.11303,1.74283 -0.11834,1.72012 -0.12358,1.69636 -0.12875,1.67159 -0.13384,1.64581 -0.13885,1.61904 -0.14378,1.59128 -0.14861,1.56259 -0.15336,1.53293 -0.15801,1.50237 -0.16258,1.47089 -0.16704,1.43852 -0.1714,1.4053 -0.17567,1.37123 -0.17981,1.33632 -0.18386,1.30062 -0.1878,1.26413 -0.19162,1.22687 -0.19532,1.18889 -0.19891,1.15019 -0.20238,1.11078 -0.20572,1.07072 -0.20895,1.03 -0.21205,0.98867 -0.21501,0.94674 -0.21786,0.90424 -0.22056,0.8612 -0.22314,0.81764 -0.22558,0.77358 -0.22788,0.72906 -0.23005,0.68411 -0.23208,0.63872 -0.23397,0.59298 -0.23572,0.54686 -0.23733,0.50041 -0.23879,0.45367 -0.24011,0.40665 -0.24128,0.35939 -0.24232,0.31191 -0.24319,0.26424 -0.24394,0.21642 -0.24452,0.16846 -0.24497,0.1204 -0.24527,0.0723 -0.24541,0.0241 -0.24541,-0.0241 -0.24527,-0.0723 -0.24497,-0.1204 -0.24452,-0.16846 -0.24394,-0.21642 -0.24319,-0.26424 -0.24232,-0.31191 -0.24128,-0.35939 -0.24011,-0.40665 -0.23879,-0.45367 -0.23733,-0.50041 -0.23572,-0.54686 -0.23397,-0.59298 -0.23208,-0.63872 -0.23005,-0.68411 -0.22789,-0.72906 -0.22557,-0.77358 -0.22314,-0.81764 -0.22056,-0.8612 -0.21786,-0.90424 -0.21501,-0.94674 -0.212048,-0.98867 -0.208948,-1.03 -0.205726,-1.07072 -0.20238,-1.11078 -0.198911,-1.15019 -0.195323,-1.18889 -0.191617,-1.22687 -0.187796,-1.26413 -0.183861,-1.30062 -0.179815,-1.33632 -0.175663,-1.37123 -0.171403,-1.4053 -0.16704,-1.43852 -0.162577,-1.47089 -0.158017,-1.50237 -0.153359,-1.53293 -0.148611,-1.56259 -0.143773,-1.59128 -0.138848,-1.61904 -0.13384,-1.64581 -0.12875,-1.67159 -0.123584,-1.69636 -0.118343,-1.72012 -0.11303,-1.74283 -0.10765,-1.7645 -0.102205,-1.7851 -0.0967,-1.80464 -0.09113,-1.82307 -0.08551,-1.84041 -0.07984,-1.85665 -0.07412,-1.87177 -0.06836,-1.88575 -0.06255,-1.89861 -0.05671,-1.91031 -0.05083,-1.92087 -0.04492,-1.93028 -0.03899,-1.93851 -0.03303,-1.94559 -0.02705,-1.95148 -0.02106,-1.9562 -0.01505,-1.95975 -0.009,-1.96212 -0.003,-1.9633"
style="fill:none;stroke:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path6"
d="m 96,58.502331 -1,20"
style="fill:none;stroke:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path7"
d="m 114,58.502331 1,20"
style="fill:none;stroke:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path8"
d="m 106,205.25233 -9e-4,0.0423 -0.003,0.0423 -0.004,0.0421 -0.006,0.0419 -0.008,0.0416 -0.01,0.0412 -0.0115,0.0408 -0.0132,0.0402 -0.0149,0.0396 -0.0166,0.039 -0.0182,0.0382 -0.0198,0.0374 -0.0214,0.0366 -0.0229,0.0356 -0.0244,0.0346 -0.0259,0.0335 -0.0272,0.0324 -0.0286,0.0312 -0.0299,0.03 -0.0311,0.0287 -0.0323,0.0274 -0.0335,0.026 -0.0345,0.0245 -0.0355,0.023 -0.0365,0.0215 -0.0374,0.02 -0.0382,0.0184 -0.0389,0.0167 -0.0396,0.0151 -0.0402,0.0134 -0.0407,0.0117 -0.0412,0.01 -0.0416,0.008 -0.0419,0.006 -0.0421,0.005 -0.0422,0.003 -0.0423,0.001 -0.0423,-7.3e-4 -0.0423,-0.003 -0.0421,-0.004 -0.0419,-0.006 -0.0416,-0.008 -0.0412,-0.01 -0.0408,-0.0113 -0.0403,-0.0131 -0.0397,-0.0148 -0.039,-0.0164 -0.0383,-0.0181 -0.0375,-0.0197 -0.0366,-0.0213 -0.0357,-0.0228 -0.0347,-0.0243 -0.0337,-0.0257 -0.0325,-0.0271 -0.0314,-0.0285 -0.0301,-0.0298 -0.0288,-0.031 -0.0275,-0.0322 -0.0261,-0.0334 -0.0247,-0.0344 -0.0232,-0.0354 -0.0217,-0.0364 -0.0201,-0.0373 -0.0185,-0.0381 -0.0169,-0.0388 -0.0152,-0.0395 -0.0135,-0.0401 -0.0118,-0.0407 -0.0101,-0.0411 -0.008,-0.0415 -0.007,-0.0418 -0.005,-0.0421 -0.003,-0.0422 -10e-4,-0.0423 5.7e-4,-0.0423 0.002,-0.0423 0.004,-0.0421 0.006,-0.0419 0.008,-0.0416 0.009,-0.0413 0.0112,-0.0408 0.0129,-0.0403 0.0146,-0.0397 0.0163,-0.0391 0.0179,-0.0384 0.0195,-0.0376 0.0211,-0.0367 0.0227,-0.0358 0.0241,-0.0348 0.0256,-0.0337 0.027,-0.0326 0.0284,-0.0315 0.0297,-0.0302 0.0309,-0.029 0.0321,-0.0276 0.0333,-0.0262 0.0343,-0.0248 0.0353,-0.0233 0.0363,-0.0218 0.0372,-0.0203 0.038,-0.0187 0.0388,-0.017 0.0395,-0.0154 0.0401,-0.0137 0.0406,-0.012 0.0411,-0.0102 0.0415,-0.008 0.0418,-0.007 0.0421,-0.005 0.0422,-0.003 0.0423,-0.001 0.0423,4.2e-4 0.0423,0.002 0.0422,0.004 0.0419,0.006 0.0417,0.008 0.0413,0.009 0.0409,0.011 0.0404,0.0128 0.0398,0.0145 0.0392,0.0161 0.0384,0.0178 0.0376,0.0194 0.0368,0.021 0.0359,0.0225 0.0349,0.024 0.0338,0.0255 0.0327,0.0269 0.0316,0.0282 0.0303,0.0296 0.0291,0.0308 0.0277,0.032 0.0264,0.0332 0.0249,0.0342 0.0235,0.0353 0.0219,0.0362 0.0204,0.0371 0.0188,0.0379 0.0172,0.0387 0.0155,0.0394 0.0138,0.04 0.0121,0.0406 0.0104,0.0411 0.009,0.0415 0.007,0.0418 0.005,0.042 0.003,0.0422 0.002,0.0423 1.1e-4,0.0152 z"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path9"
d="m 99,198.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path10"
d="M 100.5,198.50233 H 102"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path11"
d="m 102,198.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path12"
d="M 103.5,198.50233 H 105"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path13"
d="m 99,186.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path14"
d="M 100.5,186.50233 H 102"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path15"
d="m 102,186.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path16"
d="M 103.5,186.50233 H 105"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path17"
d="m 111,186.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path18"
d="m 111,188.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path19"
d="m 111,189.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path20"
d="m 111,191.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path21"
d="m 99,186.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path22"
d="m 99,188.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path23"
d="m 99,189.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path24"
d="m 99,191.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path25"
d="m 111,103.50233 h -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path26"
d="M 109.5,103.50233 H 108"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path27"
d="m 108,103.50233 h -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path28"
d="M 106.5,103.50233 H 105"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path29"
d="m 99,103.50233 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path30"
d="m 99,102.00233 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path31"
d="M 99,100.50233 V 99.002331"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path32"
d="m 99,99.002331 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path33"
d="m 111,103.50233 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path34"
d="m 111,102.00233 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path35"
d="M 111,100.50233 V 99.002331"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path36"
d="m 111,99.002331 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path37"
d="m 105,198.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path38"
d="M 106.5,198.50233 H 108"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path39"
d="m 108,198.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path40"
d="M 109.5,198.50233 H 111"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path41"
d="m 105,186.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path42"
d="M 106.5,186.50233 H 108"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path43"
d="m 108,186.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path44"
d="M 109.5,186.50233 H 111"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path45"
d="m 111,192.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path46"
d="m 111,194.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path47"
d="m 111,195.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path48"
d="m 111,197.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path49"
d="m 99,192.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path50"
d="m 99,194.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path51"
d="m 99,195.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path52"
d="m 99,197.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path53"
d="m 105,103.50233 h -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path54"
d="M 103.5,103.50233 H 102"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path55"
d="m 102,103.50233 h -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path56"
d="M 100.5,103.50233 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path57"
d="m 99,97.502331 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path58"
d="m 99,96.002331 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path59"
d="m 111,97.502331 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path60"
d="m 111,96.002331 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path61"
d="m 99,197.00233 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path62"
d="m 100.5,198.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path63"
d="m 109.5,94.502331 v 8.999999"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path64"
d="m 102,198.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path65"
d="m 108,94.502331 v 8.999999"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path66"
d="m 103.5,186.50233 v 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path67"
d="M 106.5,103.50233 V 94.502331"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path68"
d="m 105,198.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path69"
d="m 105,94.502331 v 8.999999"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path70"
d="m 106.5,198.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path71"
d="m 103.5,94.502331 v 8.999999"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path72"
d="m 108,198.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path73"
d="m 102,94.502331 v 8.999999"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path74"
d="m 109.5,186.50233 v 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path75"
d="M 100.5,103.50233 V 94.502331"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path76"
d="M 111,195.50233 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path77"
d="m 99,94.502331 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path78"
d="m 99,194.00233 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path79"
d="M 111,96.002331 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path80"
d="m 99,192.50233 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path81"
d="M 111,97.502331 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path82"
d="M 111,191.00233 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path83"
d="m 99,99.002331 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path84"
d="m 99,189.50233 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path85"
d="M 111,100.50233 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path86"
d="m 99,188.00233 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path87"
d="M 111,102.00233 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path88"
d="m 100.5,178.50233 h 9"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path89"
d="m 109.5,178.50233 0.5,-15"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path90"
d="m 100.5,178.50233 -0.5,-15"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path91"
d="m 100,163.50233 -5,-5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path92"
d="m 110,163.50233 5,-5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path93"
d="m 100,163.50233 h 10"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path94"
d="M 110,139.50233 H 100"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path95"
d="m 100,163.50233 1,-2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path96"
d="m 110,163.50233 -1,-2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path97"
d="m 109,161.50233 h -8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path98"
d="m 101,161.50233 -4,-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path99"
d="m 97,145.50233 4,-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path100"
d="m 109,141.50233 4,4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path101"
d="m 109,161.50233 4,-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path102"
d="m 106,173.50233 -9e-4,0.0423 -0.003,0.0423 -0.004,0.0421 -0.006,0.0419 -0.008,0.0416 -0.01,0.0412 -0.0115,0.0408 -0.0132,0.0402 -0.0149,0.0396 -0.0166,0.039 -0.0182,0.0382 -0.0198,0.0374 -0.0214,0.0366 -0.0229,0.0356 -0.0244,0.0346 -0.0259,0.0335 -0.0272,0.0324 -0.0286,0.0312 -0.0299,0.03 -0.0311,0.0287 -0.0323,0.0274 -0.0335,0.026 -0.0345,0.0245 -0.0355,0.023 -0.0365,0.0215 -0.0374,0.02 -0.0382,0.0184 -0.0389,0.0167 -0.0396,0.0151 -0.0402,0.0134 -0.0407,0.0117 -0.0412,0.01 -0.0416,0.008 -0.0419,0.006 -0.0421,0.005 -0.0422,0.003 -0.0423,0.001 -0.0423,-7.3e-4 -0.0423,-0.003 -0.0421,-0.004 -0.0419,-0.006 -0.0416,-0.008 -0.0412,-0.01 -0.0408,-0.0113 -0.0403,-0.0131 -0.0397,-0.0148 -0.039,-0.0164 -0.0383,-0.0181 -0.0375,-0.0197 -0.0366,-0.0213 -0.0357,-0.0228 -0.0347,-0.0243 -0.0337,-0.0257 -0.0325,-0.0271 -0.0314,-0.0285 -0.0301,-0.0298 -0.0288,-0.031 -0.0275,-0.0322 -0.0261,-0.0334 -0.0247,-0.0344 -0.0232,-0.0354 -0.0217,-0.0364 -0.0201,-0.0373 -0.0185,-0.0381 -0.0169,-0.0388 -0.0152,-0.0395 -0.0135,-0.0401 -0.0118,-0.0407 -0.0101,-0.0411 -0.008,-0.0415 -0.007,-0.0418 -0.005,-0.0421 -0.003,-0.0422 -10e-4,-0.0423 5.7e-4,-0.0423 0.002,-0.0423 0.004,-0.0421 0.006,-0.0419 0.008,-0.0416 0.009,-0.0413 0.0112,-0.0408 0.0129,-0.0403 0.0146,-0.0397 0.0163,-0.0391 0.0179,-0.0384 0.0195,-0.0376 0.0211,-0.0367 0.0227,-0.0358 0.0241,-0.0348 0.0256,-0.0337 0.027,-0.0326 0.0284,-0.0315 0.0297,-0.0302 0.0309,-0.029 0.0321,-0.0276 0.0333,-0.0262 0.0343,-0.0248 0.0353,-0.0233 0.0363,-0.0218 0.0372,-0.0203 0.038,-0.0187 0.0388,-0.017 0.0395,-0.0154 0.0401,-0.0137 0.0406,-0.012 0.0411,-0.0102 0.0415,-0.008 0.0418,-0.007 0.0421,-0.005 0.0422,-0.003 0.0423,-0.001 0.0423,4.2e-4 0.0423,0.002 0.0422,0.004 0.0419,0.006 0.0417,0.008 0.0413,0.009 0.0409,0.011 0.0404,0.0128 0.0398,0.0145 0.0392,0.0161 0.0384,0.0178 0.0376,0.0194 0.0368,0.021 0.0359,0.0225 0.0349,0.024 0.0338,0.0255 0.0327,0.0269 0.0316,0.0282 0.0303,0.0296 0.0291,0.0308 0.0277,0.032 0.0264,0.0332 0.0249,0.0342 0.0235,0.0353 0.0219,0.0362 0.0204,0.0371 0.0188,0.0379 0.0172,0.0387 0.0155,0.0394 0.0138,0.04 0.0121,0.0406 0.0104,0.0411 0.009,0.0415 0.007,0.0418 0.005,0.042 0.003,0.0422 0.002,0.0423 1.1e-4,0.0152 z"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path103"
d="m 105,141.50233 h -3"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path104"
d="m 102,141.50233 h -1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path105"
d="m 105,141.50233 h 3"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path106"
d="m 108,141.50233 h 1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path107"
d="m 100,139.50233 1,2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path108"
d="m 109,141.50233 1,-2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path109"
d="m 110,139.50233 5,5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path110"
d="m 100,139.50233 -5,5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path111"
d="m 113,157.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path112"
d="m 97,157.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path113"
d="m 102,141.50233 v 8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path114"
d="m 108,141.50233 v 8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path115"
d="m 102,149.50233 h 6"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path116"
d="m 108,149.50233 -1,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path117"
d="m 107,148.50233 h -4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path118"
d="m 103,148.50233 -1,1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path119"
d="m 102,141.50233 1,1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path120"
d="m 108,141.50233 -1,1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path121"
d="m 107,142.50233 v 6"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path122"
d="m 103,148.50233 v -6"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path123"
d="m 103,142.50233 h 4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path124"
d="m 106,143.50233 -9e-4,0.0423 -0.003,0.0423 -0.004,0.0421 -0.006,0.0419 -0.008,0.0416 -0.01,0.0412 -0.0115,0.0408 -0.0132,0.0402 -0.0149,0.0396 -0.0166,0.039 -0.0182,0.0382 -0.0198,0.0374 -0.0214,0.0366 -0.0229,0.0356 -0.0244,0.0346 -0.0259,0.0335 -0.0272,0.0324 -0.0286,0.0312 -0.0299,0.03 -0.0311,0.0287 -0.0323,0.0274 -0.0335,0.026 -0.0345,0.0245 -0.0355,0.023 -0.0365,0.0215 -0.0374,0.02 -0.0382,0.0184 -0.0389,0.0167 -0.0396,0.0151 -0.0402,0.0134 -0.0407,0.0117 -0.0412,0.01 -0.0416,0.008 -0.0419,0.006 -0.0421,0.005 -0.0422,0.003 -0.0423,0.001 -0.0423,-7.3e-4 -0.0423,-0.003 -0.0421,-0.004 -0.0419,-0.006 -0.0416,-0.008 -0.0412,-0.01 -0.0408,-0.0113 -0.0403,-0.0131 -0.0397,-0.0148 -0.039,-0.0164 -0.0383,-0.0181 -0.0375,-0.0197 -0.0366,-0.0213 -0.0357,-0.0228 -0.0347,-0.0243 -0.0337,-0.0257 -0.0325,-0.0271 -0.0314,-0.0285 -0.0301,-0.0298 -0.0288,-0.031 -0.0275,-0.0322 -0.0261,-0.0334 -0.0247,-0.0344 -0.0232,-0.0354 -0.0217,-0.0364 -0.0201,-0.0373 -0.0185,-0.0381 -0.0169,-0.0388 -0.0152,-0.0395 -0.0135,-0.0401 -0.0118,-0.0407 -0.0101,-0.0411 -0.008,-0.0415 -0.007,-0.0418 -0.005,-0.0421 -0.003,-0.0422 -10e-4,-0.0423 5.7e-4,-0.0423 0.002,-0.0423 0.004,-0.0421 0.006,-0.0419 0.008,-0.0416 0.009,-0.0413 0.0112,-0.0408 0.0129,-0.0403 0.0146,-0.0397 0.0163,-0.0391 0.0179,-0.0384 0.0195,-0.0376 0.0211,-0.0367 0.0227,-0.0358 0.0241,-0.0348 0.0256,-0.0337 0.027,-0.0326 0.0284,-0.0315 0.0297,-0.0302 0.0309,-0.029 0.0321,-0.0276 0.0333,-0.0262 0.0343,-0.0248 0.0353,-0.0233 0.0363,-0.0218 0.0372,-0.0203 0.038,-0.0187 0.0388,-0.017 0.0395,-0.0154 0.0401,-0.0137 0.0406,-0.012 0.0411,-0.0102 0.0415,-0.008 0.0418,-0.007 0.0421,-0.005 0.0422,-0.003 0.0423,-0.001 0.0423,4.2e-4 0.0423,0.002 0.0422,0.004 0.0419,0.006 0.0417,0.008 0.0413,0.009 0.0409,0.011 0.0404,0.0128 0.0398,0.0145 0.0392,0.0161 0.0384,0.0178 0.0376,0.0194 0.0368,0.021 0.0359,0.0225 0.0349,0.024 0.0338,0.0255 0.0327,0.0269 0.0316,0.0282 0.0303,0.0296 0.0291,0.0308 0.0277,0.032 0.0264,0.0332 0.0249,0.0342 0.0235,0.0353 0.0219,0.0362 0.0204,0.0371 0.0188,0.0379 0.0172,0.0387 0.0155,0.0394 0.0138,0.04 0.0121,0.0406 0.0104,0.0411 0.009,0.0415 0.007,0.0418 0.005,0.042 0.003,0.0422 0.002,0.0423 1.1e-4,0.0152 z"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path125"
d="m 5005.7238,7252.6356 -0.1693,-3.9973 -0.5067,-3.9687 -0.8405,-3.9116 -1.1682,-3.8264 -1.4875,-3.7138 -1.7963,-3.5746 -2.092,-3.4097 -2.3729,-3.2204 -2.6367,-3.008 -2.8816,-2.7741 -3.1058,-2.5201 -3.3077,-2.2483 -3.486,-1.9602 -3.6393,-1.658 -3.7664,-1.3441 -3.8666,-1.0204 -3.9389,-0.6895 -3.9832,-0.3536 -3.9988,-0.015 -3.9857,0.3234 -3.9441,0.6596 -3.8742,0.9911 -3.7764,1.3154 -3.6518,1.6305 -3.5007,1.9336 -3.3247,2.2231 -3.1248,2.4966 -2.9025,2.7521 -2.6594,2.9879 -2.3972,3.2023 -2.1179,3.3937 -1.8232,3.5609 -1.5157,3.7024 -1.1972,3.8175 -0.87,3.9051 -0.5368,3.9647 -0.1996,3.996 0.1391,3.9985 0.4766,3.9724 0.8108,3.9179 1.1391,3.8351 1.4594,3.725 1.7691,3.5881 2.0662,3.4255 2.3484,3.2383 2.6138,3.0279 2.8605,2.7958 3.0866,2.5437 3.2907,2.2733 3.471,1.9865 3.6266,1.6856 3.7561,1.3726 3.8587,1.0498 3.9337,0.7193 3.9804,0.3838 3.9985,0.046 3.9881,-0.2931 3.9489,-0.6297 3.8816,-0.9617 3.7863,-1.2867 3.664,-1.6027 3.5153,-1.9071 3.3415,-2.1978 3.1436,-2.4728 2.9233,-2.73 2.6819,-2.9676 2.4214,-3.1841 2.1435,-3.3776 1.8502,-3.5469 1.5437,-3.6908 1.226,-3.8083 0.8996,-3.8984 0.5668,-3.9605 0.2299,-3.9944 0.01,-0.7163 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="scale(0.08)" />
<path
id="path126"
d="m 103,146.50233 -0.0128,-3e-4 -0.0128,-9e-4 -0.0128,-0.002 -0.0128,-0.002 -0.0127,-0.003 -0.0127,-0.003 -0.0126,-0.004 -0.0126,-0.004 -0.0125,-0.005 -0.0125,-0.006 -0.0124,-0.006 -0.0123,-0.007 -0.0122,-0.007 -0.0121,-0.008 -0.012,-0.009 -0.0119,-0.009 -0.0118,-0.01 -0.0117,-0.0102 -0.0115,-0.0108 -0.0114,-0.0113 -0.0112,-0.0118 -0.0111,-0.0124 -0.0109,-0.0129 -0.0107,-0.0134 -0.0106,-0.0139 -0.0104,-0.0144 -0.0102,-0.0149 -0.01,-0.0153 -0.01,-0.0158 -0.01,-0.0163 -0.009,-0.0167 -0.009,-0.0171 -0.009,-0.0176 -0.009,-0.018 -0.008,-0.0184 -0.008,-0.0188 -0.008,-0.0192 -0.008,-0.0195 -0.007,-0.0199 -0.007,-0.0202 -0.007,-0.0206 -0.007,-0.0209 -0.006,-0.0212 -0.006,-0.0215 -0.006,-0.0218 -0.006,-0.0221 -0.005,-0.0223 -0.005,-0.0226 -0.005,-0.0228 -0.004,-0.023 -0.004,-0.0232 -0.004,-0.0234 -0.004,-0.0236 -0.003,-0.0237 -0.003,-0.0239 -0.003,-0.024 -0.002,-0.0241 -0.002,-0.0242 -0.002,-0.0243 -10e-4,-0.0244 -0.001,-0.0245 -7.9e-4,-0.0245 -4.7e-4,-0.0245 -1.6e-4,-0.0245 1.6e-4,-0.0245 4.7e-4,-0.0245 7.9e-4,-0.0245 0.001,-0.0245 10e-4,-0.0244 0.002,-0.0243 0.002,-0.0242 0.002,-0.0241 0.003,-0.024 0.003,-0.0239 0.003,-0.0237 0.004,-0.0236 0.004,-0.0234 0.004,-0.0232 0.004,-0.023 0.005,-0.0228 0.005,-0.0226 0.005,-0.0223 0.006,-0.0221 0.006,-0.0218 0.006,-0.0215 0.006,-0.0212 0.007,-0.0209 0.007,-0.0206 0.007,-0.0202 0.007,-0.0199 0.008,-0.0195 0.008,-0.0192 0.008,-0.0188 0.008,-0.0184 0.009,-0.018 0.009,-0.0176 0.009,-0.0171 0.009,-0.0167 0.01,-0.0163 0.01,-0.0158 0.01,-0.0153 0.0102,-0.0149 0.0104,-0.0144 0.0106,-0.0139 0.0107,-0.0134 0.0109,-0.0129 0.0111,-0.0124 0.0112,-0.0118 0.0114,-0.0113 0.0115,-0.0108 0.0117,-0.0102 0.0118,-0.01 0.0119,-0.009 0.012,-0.009 0.0121,-0.008 0.0122,-0.007 0.0123,-0.007 0.0124,-0.006 0.0125,-0.006 0.0125,-0.005 0.0126,-0.004 0.0126,-0.004 0.0127,-0.003 0.0127,-0.003 0.0128,-0.002 0.0128,-0.002 0.0128,-9e-4 0.0128,-3e-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path127"
d="m 107,144.50233 0.0136,3e-4 0.0136,9e-4 0.0136,0.002 0.0135,0.002 0.0135,0.003 0.0135,0.003 0.0134,0.004 0.0134,0.004 0.0133,0.005 0.0132,0.006 0.0131,0.006 0.013,0.007 0.013,0.007 0.0128,0.008 0.0127,0.009 0.0126,0.009 0.0125,0.01 0.0123,0.0102 0.0122,0.0108 0.0121,0.0113 0.0119,0.0118 0.0117,0.0124 0.0116,0.0129 0.0114,0.0134 0.0112,0.0139 0.011,0.0144 0.0108,0.0149 0.0106,0.0153 0.0104,0.0158 0.0102,0.0163 0.01,0.0167 0.01,0.0171 0.009,0.0176 0.009,0.018 0.009,0.0184 0.009,0.0188 0.008,0.0192 0.008,0.0195 0.008,0.0199 0.008,0.0202 0.007,0.0206 0.007,0.0209 0.007,0.0212 0.007,0.0215 0.006,0.0218 0.006,0.0221 0.006,0.0223 0.005,0.0226 0.005,0.0228 0.005,0.023 0.004,0.0232 0.004,0.0234 0.004,0.0236 0.003,0.0237 0.003,0.0239 0.003,0.024 0.002,0.0241 0.002,0.0242 0.002,0.0243 10e-4,0.0244 0.001,0.0245 8.3e-4,0.0245 5e-4,0.0245 1.7e-4,0.0245 -1.7e-4,0.0245 -5e-4,0.0245 -8.3e-4,0.0245 -0.001,0.0245 -10e-4,0.0244 -0.002,0.0243 -0.002,0.0242 -0.002,0.0241 -0.003,0.024 -0.003,0.0239 -0.003,0.0237 -0.004,0.0236 -0.004,0.0234 -0.004,0.0232 -0.005,0.023 -0.005,0.0228 -0.005,0.0226 -0.006,0.0223 -0.006,0.0221 -0.006,0.0218 -0.007,0.0215 -0.007,0.0212 -0.007,0.0209 -0.007,0.0206 -0.008,0.0202 -0.008,0.0199 -0.008,0.0195 -0.008,0.0192 -0.009,0.0188 -0.009,0.0184 -0.009,0.018 -0.009,0.0176 -0.01,0.0171 -0.01,0.0167 -0.0102,0.0163 -0.0104,0.0158 -0.0106,0.0153 -0.0108,0.0149 -0.011,0.0144 -0.0112,0.0139 -0.0114,0.0134 -0.0116,0.0129 -0.0117,0.0124 -0.0119,0.0118 -0.0121,0.0113 -0.0122,0.0108 -0.0123,0.0102 -0.0125,0.01 -0.0126,0.009 -0.0127,0.009 -0.0128,0.008 -0.013,0.007 -0.013,0.007 -0.0131,0.006 -0.0132,0.006 -0.0133,0.005 -0.0134,0.004 -0.0134,0.004 -0.0135,0.003 -0.0135,0.003 -0.0135,0.002 -0.0136,0.002 -0.0136,9e-4 -0.0136,3e-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path128"
d="m 104,148.90233 3e-4,-0.01 9e-4,-0.01 0.002,-0.01 0.002,-0.01 0.003,-0.01 0.003,-0.01 0.004,-0.01 0.004,-0.01 0.005,-0.01 0.006,-0.01 0.006,-0.009 0.007,-0.009 0.007,-0.009 0.008,-0.009 0.009,-0.009 0.009,-0.009 0.01,-0.009 0.0102,-0.009 0.0108,-0.009 0.0113,-0.009 0.0118,-0.009 0.0124,-0.008 0.0129,-0.008 0.0134,-0.008 0.0139,-0.008 0.0144,-0.008 0.0149,-0.008 0.0153,-0.008 0.0158,-0.008 0.0163,-0.007 0.0167,-0.007 0.0171,-0.007 0.0176,-0.007 0.018,-0.007 0.0184,-0.007 0.0188,-0.006 0.0192,-0.006 0.0195,-0.006 0.0199,-0.006 0.0202,-0.006 0.0206,-0.005 0.0209,-0.005 0.0212,-0.005 0.0215,-0.005 0.0218,-0.005 0.0221,-0.004 0.0223,-0.004 0.0226,-0.004 0.0228,-0.004 0.023,-0.003 0.0232,-0.003 0.0234,-0.003 0.0236,-0.003 0.0237,-0.002 0.0239,-0.002 0.024,-0.002 0.0241,-0.002 0.0242,-0.002 0.0243,-0.001 0.0244,-0.001 0.0245,-8.5e-4 0.0245,-6e-4 0.0245,-3.6e-4 0.0245,-1.2e-4 0.0245,1.2e-4 0.0245,3.6e-4 0.0245,6e-4 0.0245,8.5e-4 0.0244,0.001 0.0243,0.001 0.0242,0.002 0.0241,0.002 0.024,0.002 0.0239,0.002 0.0237,0.002 0.0236,0.003 0.0234,0.003 0.0232,0.003 0.023,0.003 0.0228,0.004 0.0226,0.004 0.0223,0.004 0.0221,0.004 0.0218,0.005 0.0215,0.005 0.0212,0.005 0.0209,0.005 0.0206,0.005 0.0202,0.006 0.0199,0.006 0.0195,0.006 0.0192,0.006 0.0188,0.006 0.0184,0.007 0.018,0.007 0.0176,0.007 0.0171,0.007 0.0167,0.007 0.0163,0.007 0.0158,0.008 0.0153,0.008 0.0149,0.008 0.0144,0.008 0.0139,0.008 0.0134,0.008 0.0129,0.008 0.0124,0.008 0.0118,0.009 0.0113,0.009 0.0108,0.009 0.0102,0.009 0.01,0.009 0.009,0.009 0.009,0.009 0.008,0.009 0.007,0.009 0.007,0.009 0.006,0.009 0.006,0.01 0.005,0.01 0.005,0.01 0.004,0.01 0.003,0.01 0.003,0.01 0.002,0.01 0.002,0.01 9e-4,0.01 3e-4,0.01"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path129"
d="m 112.5,142.00233 v -18"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path130"
d="m 97.5,142.00233 v -18"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path131"
d="m 97.5,124.00233 2.5,-2.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path132"
d="m 112.5,124.00233 -2.5,-2.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path133"
d="m 100,121.50233 v -9"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path134"
d="m 110,121.50233 v -9"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path135"
d="m 102.5,112.50233 h 5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path136"
d="M 107.5,112.50233 H 109"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path137"
d="m 101,112.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path138"
d="m 100,139.50233 v -15"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path139"
d="m 110,139.50233 v -15"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path140"
d="m 110,124.50233 -2.5,-2.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path141"
d="m 100,124.50233 2.5,-2.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path142"
d="m 102.5,122.00233 v -8.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path143"
d="m 107.5,122.00233 v -8.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path144"
d="m 107.5,113.50233 h -5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path145"
d="m 100,112.50233 v -8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path146"
d="m 100,104.50233 h 10"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path147"
d="m 110,104.50233 v 8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path148"
d="m 107.5,122.00233 2.5,-0.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path149"
d="m 102.5,122.00233 -2.5,-0.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path150"
d="m 100,124.50233 -2.5,-0.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path151"
d="m 110,124.50233 2.5,-0.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path152"
d="m 109,105.50233 1,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path153"
d="m 100,104.50233 1,1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path154"
d="m 109,112.50233 v -7"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path155"
d="m 109,105.50233 h -8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path156"
d="m 101,105.50233 v 7"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path157"
d="m 101,112.50233 1.5,1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path158"
d="m 107.5,113.50233 1.5,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path159"
d="m 113,145.50233 2,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path160"
d="m 97,145.50233 -2,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path161"
d="m 97,157.50233 -2,1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path162"
d="m 98,93.502331 -3,-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path163"
d="m 112,93.502331 3,-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path164"
d="m 114,89.302331 v -12.8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path165"
d="m 98,93.502331 h 14"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path166"
d="m 98.4,92.502331 h 13.2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path167"
d="m 96,89.302331 v -12.8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path168"
d="m 98.4,92.502331 -2.4,-3.2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path169"
d="m 111.6,92.502331 2.4,-3.2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path170"
d="m 96,76.502331 h 18"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path171"
d="m 96,76.502331 -0.85,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path172"
d="m 98,93.502331 0.4,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path173"
d="m 112,93.502331 -0.4,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path174"
d="m 114,89.302331 1,0.2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path175"
d="m 96,89.302331 -1,0.2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path176"
d="m 96,75.502331 h 18"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path177"
d="m 114,75.502331 h 0.9"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path178"
d="M 96,75.502331 H 95.1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path179"
d="m 114,76.502331 0.9,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path180"
d="m 106.75,82.902331 -5.1e-4,0.04235 -0.002,0.04232 -0.003,0.04227 -0.004,0.0422 -0.005,0.0421 -0.006,0.04198 -0.007,0.04183 -0.008,0.04165 -0.009,0.04146 -0.01,0.04124 -0.0106,0.04099 -0.0116,0.04072 -0.0126,0.04043 -0.0136,0.04011 -0.0146,0.03977 -0.0155,0.03941 -0.0165,0.03902 -0.0174,0.03861 -0.0183,0.03818 -0.0192,0.03772 -0.0202,0.03724 -0.0211,0.03675 -0.0219,0.03623 -0.0228,0.03568 -0.0237,0.03512 -0.0245,0.03454 -0.0253,0.03394 -0.0262,0.03331 -0.0269,0.03267 -0.0277,0.03201 -0.0285,0.03133 -0.0292,0.03063 -0.03,0.02991 -0.0307,0.02918 -0.0314,0.02843 -0.0321,0.02766 -0.0327,0.02688 -0.0334,0.02608 -0.034,0.02526 -0.0346,0.02443 -0.0352,0.02359 -0.0357,0.02273 -0.0363,0.02186 -0.0368,0.02097 -0.0373,0.02007 -0.0378,0.01917 -0.0382,0.01825 -0.0387,0.01732 -0.0391,0.01638 -0.0394,0.01543 -0.0398,0.01447 -0.0401,0.0135 -0.0405,0.01253 -0.0407,0.01154 -0.041,0.01055 -0.0413,0.0096 -0.0415,0.0086 -0.0417,0.0076 -0.0418,0.0065 -0.042,0.0055 -0.0421,0.0045 -0.0422,0.0035 -0.0423,0.0025 -0.0423,0.0014 -0.0424,4.17e-4 -0.0423,-6.09e-4 -0.0423,-0.0016 -0.0423,-0.0027 -0.0422,-0.0037 -0.0421,-0.0047 -0.042,-0.0057 -0.0418,-0.0067 -0.0416,-0.0077 -0.0414,-0.0087 -0.0412,-0.0097 -0.041,-0.01074 -0.0407,-0.01173 -0.0404,-0.01271 -0.0401,-0.01368 -0.0397,-0.01465 -0.0394,-0.01561 -0.039,-0.01655 -0.0386,-0.01749 -0.0381,-0.01842 -0.0377,-0.01934 -0.0372,-0.02024 -0.0367,-0.02114 -0.0362,-0.02202 -0.0356,-0.02289 -0.0351,-0.02374 -0.0345,-0.02459 -0.0339,-0.02541 -0.0332,-0.02622 -0.0326,-0.02702 -0.0319,-0.0278 -0.0313,-0.02857 -0.0306,-0.02932 -0.0299,-0.03005 -0.0291,-0.03076 -0.0284,-0.03146 -0.0276,-0.03213 -0.0268,-0.03279 -0.026,-0.03343 -0.0252,-0.03405 -0.0243,-0.03465 -0.0235,-0.03523 -0.0226,-0.03579 -0.0218,-0.03633 -0.0209,-0.03684 -0.02,-0.03734 -0.0191,-0.03781 -0.0182,-0.03826 -0.0172,-0.03869 -0.0163,-0.03909 -0.0153,-0.03948 -0.0144,-0.03983 -0.0134,-0.04017 -0.0124,-0.04048 -0.0114,-0.04077 -0.0105,-0.04104 -0.009,-0.04128 -0.008,-0.0415 -0.007,-0.04169 -0.006,-0.04186 -0.005,-0.042 -0.004,-0.04212 -0.003,-0.04221 -0.002,-0.04228 -0.001,-0.04233 -3.2e-4,-0.04235 7e-4,-0.04234 0.002,-0.04232 0.003,-0.04226 0.004,-0.04218 0.005,-0.04208 0.006,-0.04195 0.007,-0.0418 0.008,-0.04162 0.009,-0.04142 0.01,-0.04119 0.0108,-0.04094 0.0118,-0.04067 0.0128,-0.04037 0.0138,-0.04005 0.0147,-0.0397 0.0157,-0.03934 0.0166,-0.03894 0.0176,-0.03853 0.0185,-0.03809 0.0194,-0.03763 0.0203,-0.03715 0.0212,-0.03665 0.0221,-0.03613 0.023,-0.03558 0.0238,-0.03502 0.0247,-0.03443 0.0255,-0.03382 0.0263,-0.03319 0.0271,-0.03255 0.0279,-0.03188 0.0286,-0.0312 0.0294,-0.0305 0.0301,-0.02978 0.0308,-0.02904 0.0315,-0.02828 0.0322,-0.02751 0.0329,-0.02673 0.0335,-0.02592 0.0341,-0.0251 0.0347,-0.02427 0.0353,-0.02343 0.0358,-0.02257 0.0364,-0.02169 0.0369,-0.02081 0.0374,-0.01991 0.0379,-0.019 0.0383,-0.01807 0.0387,-0.01714 0.0391,-0.0162 0.0395,-0.01525 0.0399,-0.01429 0.0402,-0.01332 0.0405,-0.01234 0.0408,-0.01136 0.0411,-0.01037 0.0413,-0.0094 0.0415,-0.0084 0.0417,-0.0074 0.0419,-0.0063 0.042,-0.0053 0.0421,-0.0043 0.0422,-0.0033 0.0423,-0.0023 0.0423,-0.0012 0.0423,-2.26e-4 0.0423,8e-4 0.0423,0.0018 0.0422,0.0028 0.0422,0.0039 0.0421,0.0049 0.0419,0.0059 0.0418,0.0069 0.0416,0.0079 0.0414,0.0089 0.0412,0.0099 0.0409,0.01092 0.0406,0.01191 0.0403,0.01289 0.04,0.01386 0.0397,0.01483 0.0393,0.01578 0.0389,0.01673 0.0385,0.01767 0.038,0.01859 0.0376,0.01951 0.0371,0.02041 0.0366,0.0213 0.0361,0.02218 0.0355,0.02305 0.035,0.0239 0.0344,0.02474 0.0338,0.02557 0.0331,0.02638 0.0325,0.02717 0.0318,0.02795 0.0311,0.02871 0.0304,0.02945 0.0297,0.03018 0.029,0.03089 0.0282,0.03159 0.0274,0.03226 0.0267,0.03291 0.0258,0.03355 0.025,0.03416 0.0242,0.03476 0.0233,0.03533 0.0225,0.03589 0.0216,0.03642 0.0207,0.03693 0.0198,0.03742 0.0189,0.03789 0.018,0.03834 0.017,0.03876 0.0161,0.03917 0.0152,0.03954 0.0142,0.0399 0.0132,0.04023 0.0122,0.04054 0.0113,0.04082 0.0103,0.04108 0.009,0.04132 0.008,0.04153 0.007,0.04172 0.006,0.04189 0.005,0.04202 0.004,0.04214 0.003,0.04223 0.002,0.04229 0.001,0.04233 2e-4,0.02653 z"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 69 KiB

View File

@ -1,22 +0,0 @@
# SPDX-License-Identifier: Unlicense
# See: https://crascit.com/2016/04/09/using-ccache-with-cmake/
find_program( CCACHE_PROGRAM ccache )
if ( CCACHE_PROGRAM )
# get version information
execute_process(
COMMAND "${CCACHE_PROGRAM}" --version
OUTPUT_VARIABLE CCACHE_VERSION
)
string( REGEX MATCH "[^\r\n]*" CCACHE_VERSION ${CCACHE_VERSION} )
message( STATUS "Using ccache: ${CCACHE_PROGRAM} (${CCACHE_VERSION})" )
# Turn on ccache for all targets
set( CMAKE_CXX_COMPILER_LAUNCHER "${CCACHE_PROGRAM}" )
set( CMAKE_C_COMPILER_LAUNCHER "${CCACHE_PROGRAM}" )
unset( CCACHE_VERSION )
endif()

View File

@ -1,31 +0,0 @@
# SPDX-License-Identifier: Unlicense
find_program(CLANG_FORMAT_PROGRAM NAMES clang-format)
if (CLANG_FORMAT_PROGRAM)
execute_process(
COMMAND "${CLANG_FORMAT_PROGRAM}" --version
OUTPUT_VARIABLE CLANG_FORMAT_VERSION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
message("Using clang-format: ${CLANG_FORMAT_PROGRAM} (${CLANG_FORMAT_VERSION})")
file(GLOB_RECURSE
format_src_list
RELATIVE
"${CMAKE_CURRENT_SOURCE_DIR}"
"src/*.[hc]"
"src/*.[hc]pp"
)
foreach(_src_file ${format_src_list})
message(" formatting => ${_src_file}")
execute_process(
COMMAND "${CLANG_FORMAT_PROGRAM}" --style=file -i "${_src_file}"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
)
endforeach()
unset(CLANG_FORMAT_VERSION)
endif()

View File

@ -1,111 +0,0 @@
# Creates a custom "graphviz" target that outputs useful information
# about the project's (and sub target) lib deps/linkage relationships
function(run_active_cmake_diagnostics)
# enabled with -D DEPENDENCY_DIAGNOSTICS=ON
if(DEPENDENCY_DIAGNOSTICS MATCHES ON)
# prints a dependency hierarchy for all targets in project
set_property(GLOBAL PROPERTY GLOBAL_DEPENDS_DEBUG_MODE ON)
endif()
# enabled with -D GRAPHVIZ_OUTPUT=ON
if(GRAPHVIZ_OUTPUT MATCHES ON)
# Outputs graphviz dot files and generates png images showing dependency
# relationships for top level project and all targets it contains.
# All files will be generated in src/build/graphviz_output by default.
#
# Note: png image graph generation requires graphviz to be installed
include(${CMAKE_SOURCE_DIR}/CMakeGraphVizOptions.cmake)
add_custom_target(graphviz ALL
# TODO: wipe out ${CMAKE_BINARY_DIR}/graphviz_output dir here
COMMAND ${CMAKE_COMMAND} "--graphviz=${CMAKE_BINARY_DIR}/graphviz_output/${PROJECT_NAME}.dot" .
COMMAND for dot_file in \$$\(find "${CMAKE_BINARY_DIR}/graphviz_output/*.dot*" ! -name \"*.png\" \)\; do echo \"Generating \$\${dot_file}.png\" && dot -Tpng \"\$$dot_file\" -o \"\$$dot_file.png\" \; done;
WORKING_DIRECTORY "${CMAKE_BINARY_DIR}"
)
endif()
endfunction(run_active_cmake_diagnostics)
# function to output all CMAKE variables along with their
# values using a case insentive regex match
#
# examples:
# 1. print all cmake variables:
# > dump_cmake_variables(".*")
# 2. print all boolt cmake variables:
# > dump_cmake_variables("^boost.*")
function(dump_cmake_variables)
get_cmake_property(_vars VARIABLES)
list(SORT _vars)
foreach(_var ${_vars})
if(ARGV0)
unset(MATCHED)
# case insenstitive match
string(TOLOWER "${ARGV0}" ARGV0_lower)
string(TOLOWER "${_var}" _var_lower)
string(REGEX MATCH ${ARGV0_lower} MATCHED ${_var_lower})
if(NOT MATCHED)
continue()
endif()
endif()
set(_value ${${_var}})
list(LENGTH _value _val_list_len)
if(_val_list_len GREATER 1)
message(DEBUG " [${_var}] =>")
foreach(_val ${_value})
message(DEBUG " - ${_val}")
endforeach()
else()
message(DEBUG " [${_var}] => ${_value}")
endif()
endforeach()
endfunction()
# prints a collection of useful C++ project configuration values
function(print_project_variables)
message(DEBUG "")
message(DEBUG "DEBUG CMake Cache Variable Dump")
message(DEBUG "=============================================")
message(DEBUG "")
dump_cmake_variables(".*")
message(NOTICE "")
message(NOTICE "Project Configuration Settigs: " ${PROJECT_NAME})
message(NOTICE "=============================================")
message(NOTICE "")
message(NOTICE "Build Configuration")
message(NOTICE " CMAKE_SYSTEM_PROCESSOR:..................: " ${CMAKE_SYSTEM_PROCESSOR})
message(NOTICE " CMAKE_HOST_SYSTEM_NAME:..................: " ${CMAKE_HOST_SYSTEM_NAME})
message(NOTICE " CMAKE_BUILD_TYPE:........................: " ${CMAKE_BUILD_TYPE})
message(NOTICE " CMAKE_CXX_COMPILER_ARCHITECTURE_ID:......: " ${CMAKE_CXX_COMPILER_ARCHITECTURE_ID})
message(NOTICE " CMAKE_CXX_STANDARD:......................: " ${CMAKE_CXX_STANDARD})
message(NOTICE " CMAKE_CXX_COMPILER_VERSION:..............: " ${CMAKE_CXX_COMPILER_VERSION})
message(NOTICE " CMAKE_CXX_SIZEOF_DATA_PTR:...............: " ${CMAKE_CXX_SIZEOF_DATA_PTR})
message(NOTICE " CMAKE_GENERATOR:.........................: " ${CMAKE_GENERATOR})
message(NOTICE " CMAKE_VERSION:...........................: " ${CMAKE_VERSION})
message(NOTICE " CMAKE_MINIMUM_REQUIRED_VERSION:..........: " ${CMAKE_MINIMUM_REQUIRED_VERSION})
message(NOTICE " VCPKG_TARGET_TRIPLET.....................: " ${VCPKG_TARGET_TRIPLET})
message(NOTICE " CMAKE_DEBUG_POSTFIX......................: " ${CMAKE_DEBUG_POSTFIX})
message(NOTICE "")
message(NOTICE "CMake Paths")
message(NOTICE " CMAKE_CURRENT_SOURCE_DIR.................: " ${CMAKE_CURRENT_SOURCE_DIR})
message(NOTICE " CMAKE_TOOLCHAIN_FILE:....................: " ${CMAKE_TOOLCHAIN_FILE})
message(NOTICE " CMAKE_SOURCE_DIR:........................: " ${CMAKE_SOURCE_DIR})
message(NOTICE " CMAKE_COMMAND:...........................: " ${CMAKE_COMMAND})
message(NOTICE " CLANG_FORMAT_PROGRAM:....................: " ${CLANG_FORMAT_PROGRAM})
message(NOTICE " SCONS_PROGRAM:...........................: " ${SCONS_PROGRAM})
message(NOTICE " CMAKE_CXX_COMPILER:......................: " ${CMAKE_CXX_COMPILER})
message(NOTICE " CMAKE_LINKER:............................: " ${CMAKE_LINKER})
message(NOTICE " CMAKE_BUILD_TOOL:........................: " ${CMAKE_BUILD_TOOL})
message(NOTICE " vcpkg_executable:........................: " ${vcpkg_executable})
message(NOTICE " godot_debug_editor_executable:...........: " ${godot_debug_editor_executable})
message(NOTICE " CMAKE_INSTALL_PREFIX:....................: " ${CMAKE_INSTALL_PREFIX})
message(NOTICE " CMAKE_BINARY_DIR:........................: " ${CMAKE_BINARY_DIR})
message(NOTICE " GDEXTENSION_LIB_PATH:....................: " ${GDEXTENSION_LIB_PATH})
message(NOTICE "")
endfunction(print_project_variables)

View File

@ -1,207 +0,0 @@
# =======================================================================
# Godot Engine submodule update/init
# =======================================================================
# confirm we found the godot engine source files.
# if the sources list is empty, the submodule probably
# hasn't been initialized or updated yet.
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/core")
message(NOTICE "Godot engine sources not found")
message(NOTICE "initializing/updating the engine submodule...")
# update the engine submodule to populate it with the
# code necessary to build a debug version of the editor that
# can be easily debugged along with the gdextension library
execute_process(
COMMAND git submodule update --init extern/godot-engine
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND_ERROR_IS_FATAL ANY
)
endif()
# =======================================================================
# Godot-cpp bindings submodule update/init
# =======================================================================
# confirm we found the godot engine source files.
# if the sources list is empty, the submodule probably
# hasn't been initialized or updated yet.
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-cpp/src")
message(NOTICE "godot-cpp bingings source not found")
message(NOTICE "initializing/updating the godot-cpp submodule...")
# update the c++ bingings submodule to populate it with
# the necessary source for the gdextension library
execute_process(
COMMAND git submodule update --init extern/godot-cpp
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMAND_ERROR_IS_FATAL ANY
)
endif()
# =======================================================================
# Godot editor/engine debug build
# =======================================================================
string(TOLOWER "${CMAKE_SYSTEM_NAME}" host_os)
set(cpu_arch "x86_64")
# define variable to be used in the engine build when specifying platform.
set(host_os_engine "${host_os}")
if (APPLE)
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
set(cpu_arch "arm64")
endif()
# ${CMAKE_SYSTEM_NAME} returns Darwin, but the scons platform name will be macos
set(host_os_engine "macos")
elseif(UNIX)
# the scons build expects linuxbsd to be passed in as the platform
# when building on linux, so just append bsd to CMAKE_SYSTEM_NAME
set(host_os_engine "${host_os}bsd")
endif()
set(godot_debug_editor_executable
"${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/bin/godot.${host_os_engine}.editor.dev.${cpu_arch}${CMAKE_EXECUTABLE_SUFFIX}"
)
find_program(SCONS_PROGRAM NAMES scons)
if (NOT EXISTS "${SCONS_PROGRAM}")
message(FATAL_ERROR
"scons not found, it is required for the godot engine build. "
"Please install scons and confirm it is in your system PATH."
)
endif()
message(NOTICE "godot_debug_editor_executable = ${godot_debug_editor_executable}")
# if the engine/editor executable isn't found in the
# engine's submodule bin folder, invoke the scons build.
if(NOT EXISTS "${godot_debug_editor_executable}")
message(STATUS "Godot engine debug binaries not found, invoking debug build of engine...")
if (WIN32)
set(SCONS_COMMAND powershell -c)
endif()
set(SCONS_COMMAND
${SCONS_COMMAND}
${SCONS_PROGRAM}
target=editor
use_static_cpp=yes
dev_build=yes
debug_symbols=yes
optimize=none
use_lto=no
)
set(GODOT_ENGINE_CLEAN_BUILD OFF)
if (GODOT_ENGINE_CLEAN_BUILD MATCHES ON)
message(STATUS "Invoking scons clean: ${SCONS_COMMAND} --clean")
execute_process(
COMMAND "${SCONS_PROGRAM}" --clean
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine"
COMMAND_ERROR_IS_FATAL ANY
)
endif()
message(STATUS "Invoking scons build: ${SCONS_COMMAND}")
# this build should only ever need to be run once (unless the enging debug binaries
# are deleted or you want to change the build configuration/command invoked below).
execute_process(
COMMAND ${SCONS_COMMAND}
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine"
COMMAND_ERROR_IS_FATAL ANY
)
# not necessary, the temp file in here just confuses Visual Studio
file(REMOVE_RECURSE "${CMAKE_CURRENT_SOURCE_DIR}}/extern/godot-engine/.sconf_temp")
if(NOT EXISTS "${godot_debug_editor_executable}")
message(FATAL_ERROR "Couldn't find godot debug executable after scons build: ${godot_debug_editor_executable}")
endif()
endif()
# =======================================================================
# Godot C++ bindings library setup/configuration
# =======================================================================
add_subdirectory(${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-cpp)
# =======================================================================
# Godot engine library setup/configuration.
# Not necessary, just provides better support in multiple IDEs
# for engine source code browsing, intellisense, and debugging
# =======================================================================
# populate source file list for the godot engine submodule
file(GLOB_RECURSE godot_engine_sources CONFIGURE_DEPENDS
"${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/*.[hc]"
"${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/*.[hc]pp"
)
# add the engine sources as a library so intellisense works in VS and VSCode
# (and any other IDEs that support CMake in a way where the information from
# the CMake build is fed into the IDE for additional context about the code
# when browsing/debugging). even though the engine is being added as a library here,
# the EXCLUDE_FROM_ALL option will prevent it from compiling. This is done
# purely for IDE integration so it's able to properly navigate the engine
# source code using features like "go do definition", or typical tooltips.
add_library(godot_engine EXCLUDE_FROM_ALL ${godot_engine_sources})
# this is just a handful of additional include directories used by the engine.
# this isn't a complete list, I just add them as needed whenever I venture into
# code where the IDE can't find certain header files during engine source browsing.
target_include_directories(godot_engine PUBLIC
"${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine"
"${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/platform/windows"
"${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/thirdparty/zlib"
"${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/thirdparty/vulkan"
"${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/thirdparty/vulkan/include"
"${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/thirdparty/vulkan/include/vulkan"
"${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/drivers/vulkan"
SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/thirdparty/glad"
SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/thirdparty/volk"
SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/thirdparty/zstd"
SYSTEM "${CMAKE_CURRENT_SOURCE_DIR}/extern/godot-engine/thirdparty/mbedtls/include"
)
# define a bunch of the same symbol definitions
# used when by the scons engine build. These build
# flags can differen based on the engine's build for
# you system. Update as needed for your setup.
target_compile_definitions(godot_engine PUBLIC
$<$<CONFIG:Debug>:
DEBUG_ENABLED
DEBUG_METHODS_ENABLED
DEV_ENABLED
>
$<$<BOOL:UNIX>:
UNIX_ENABLED
VK_USE_PLATFORM_XLIB_KHR
>
$<$<BOOL:WIN32>:
WINDOWS_ENABLED
WASAPI_ENABLED
WINMIDI_ENABLED
TYPED_METHOD_BIND
NOMINMAX
WIN32
VK_USE_PLATFORM_WIN32_KHR
_SCRT_STARTUP_WINMAIN=1
$<$<BOOL:MSVC>:
MSVC
>
>
TOOLS_ENABLED
NO_EDITOR_SPLASH
GLAD_ENABLED
GLES3_ENABLED
GLES_OVER_GL
VULKAN_ENABLED
USE_VOLK
MINIZIP_ENABLED
BROTLI_ENABLED
ZSTD_STATIC_LINKING_ONLY
)

View File

@ -1 +0,0 @@
# TODO: implement include-what-you-use auto analysis target

View File

@ -1,48 +0,0 @@
# VCPKG submodule init/update
if(NOT EXISTS "${CMAKE_CURRENT_SOURCE_DIR}/extern/vcpkg/ports")
message(NOTICE "VCPKG package manager sources not found")
message(NOTICE "initializing/updating the vcpkg submodule...")
execute_process(
COMMAND git submodule update --init extern/vcpkg
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
COMMAND_ERROR_IS_FATAL ANY
)
endif()
# =======================================================================
# VCPKG triplet definition (should enforce static linkage for all deps)
# This would typically be passed in from CMakePresets.json, but if
# the cmake configuration is invoked without using a preset this fallback
# should define a preset that prefers static linkage for 3rd party libs.
# =======================================================================
if (NOT VCPKG_TARGET_TRIPLET)
if (WIN32)
# static-md enforces static linkage to all dependencies,
# as well as dynamic linkage to the C runtime for consistency.
# if this gives you trouble change to "x64-windows-static".
set(VCPKG_TARGET_TRIPLET "x64-windows-static-md")
elseif(APPLE)
if ("${CMAKE_SYSTEM_PROCESSOR}" STREQUAL "arm64")
set(VCPKG_TARGET_TRIPLET "arm64-osx")
else()
set(VCPKG_TARGET_TRIPLET "x64-osx")
endif()
elseif(UNIX)
set(VCPKG_TARGET_TRIPLET "x64-linux")
endif()
endif()
# =======================================================================
# Define VCPKG toolchain file. This would typically be passed in from
# CMakePresets.json, but if the cmake configuration is invoked without
# using a preset this fallback should detect that the path is missing.
# =======================================================================
if(NOT CMAKE_TOOLCHAIN_FILE)
set(toolchain_file_path "${CMAKE_CURRENT_SOURCE_DIR}/extern/vcpkg/scripts/buildsystems/vcpkg.cmake")
if (EXISTS "${toolchain_file_path}")
set(CMAKE_TOOLCHAIN_FILE "${toolchain_file_path}")
else()
message(WARNING "VCPKG toolchain file not found: ${toolchain_file_path}")
endif()
endif()

View File

@ -1,31 +0,0 @@
# =======================================================================
# VCPKG bootstrap / initialization.
# =======================================================================
set(vcpkg_executable "${CMAKE_CURRENT_SOURCE_DIR}/extern/vcpkg/vcpkg${CMAKE_EXECUTABLE_SUFFIX}")
if(EXISTS "${vcpkg_executable}")
message(NOTICE "Found VCPKG Executable: ${vcpkg_executable}")
else()
message(NOTICE "Could not find VCPKG Executable: ${vcpkg_executable}")
message(NOTICE "Calling VCPKG bootstrap scripts.")
if(WIN32)
execute_process(
COMMAND powershell -c "${CMAKE_CURRENT_SOURCE_DIR}/extern/vcpkg/bootstrap-vcpkg.bat"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND_ERROR_IS_FATAL ANY
)
elseif(UNIX)
execute_process(
COMMAND bash "${CMAKE_CURRENT_SOURCE_DIR}/extern/vcpkg/bootstrap-vcpkg.sh"
WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}"
COMMAND_ERROR_IS_FATAL ANY
)
endif()
# fail out if vcpkg isn't found after setup
if(NOT EXISTS "${vcpkg_executable}")
message(FATAL_ERROR "ERROR: '${vcpkg_executable}' not found!")
endif()
endif()

1
extern/godot-cpp vendored

@ -1 +0,0 @@
Subproject commit f3a1a2fd458dfaf4de08c906f22a2fe9e924b16f

1
extern/godot-engine vendored

@ -1 +0,0 @@
Subproject commit 90f21a35c71107d2afe95a3875bb761ba2170d90

1
extern/vcpkg vendored

@ -1 +0,0 @@
Subproject commit 01f602195983451bc83e72f4214af2cbc495aa94

11520
misc/destroyer.dxf Normal file

File diff suppressed because it is too large Load Diff

BIN
misc/destroyer.pdf Normal file

Binary file not shown.

950
misc/destroyer.svg Normal file
View File

@ -0,0 +1,950 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
version="1.1"
id="svg1"
width="58.118374"
height="512"
viewBox="0 0 58.118374 511.99998"
sodipodi:docname="destroyer.svg"
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
inkscape:export-filename="../assets/destroyer.svg"
inkscape:export-xdpi="96"
inkscape:export-ydpi="96"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns="http://www.w3.org/2000/svg"
xmlns:svg="http://www.w3.org/2000/svg">
<defs
id="defs1" />
<sodipodi:namedview
id="namedview1"
pagecolor="#545454"
bordercolor="#999999"
borderopacity="1"
inkscape:showpageshadow="2"
inkscape:pageopacity="0"
inkscape:pagecheckerboard="true"
inkscape:deskcolor="#d1d1d1"
inkscape:zoom="4"
inkscape:cx="38.875"
inkscape:cy="447.625"
inkscape:window-width="1629"
inkscape:window-height="1058"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="g1">
<inkscape:page
x="7.2906252e-15"
y="3.5531787e-15"
inkscape:label="1"
id="page1"
width="58.118374"
height="511.99997"
margin="0"
bleed="0" />
</sodipodi:namedview>
<g
id="g1"
inkscape:groupmode="layer"
inkscape:label="1"
transform="matrix(0.75042725,0,0,0.75042725,-268.6203,-165.22315)">
<path
id="path2"
d="m 96,58.502331 h 18"
style="fill:none;stroke:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path3"
d="M 115,78.502331 V 158.50233"
style="fill:none;stroke:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path4"
d="M 95,78.502331 V 158.50233"
style="fill:none;stroke:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path5"
d="m 115,158.50233 -0.003,1.9633 -0.009,1.96212 -0.0151,1.95975 -0.0211,1.9562 -0.027,1.95148 -0.033,1.94559 -0.039,1.93851 -0.0449,1.93028 -0.0508,1.92087 -0.0567,1.91031 -0.0626,1.89861 -0.0684,1.88575 -0.0741,1.87177 -0.0798,1.85665 -0.0855,1.84041 -0.0911,1.82307 -0.0967,1.80464 -0.10221,1.7851 -0.10765,1.7645 -0.11303,1.74283 -0.11834,1.72012 -0.12358,1.69636 -0.12875,1.67159 -0.13384,1.64581 -0.13885,1.61904 -0.14378,1.59128 -0.14861,1.56259 -0.15336,1.53293 -0.15801,1.50237 -0.16258,1.47089 -0.16704,1.43852 -0.1714,1.4053 -0.17567,1.37123 -0.17981,1.33632 -0.18386,1.30062 -0.1878,1.26413 -0.19162,1.22687 -0.19532,1.18889 -0.19891,1.15019 -0.20238,1.11078 -0.20572,1.07072 -0.20895,1.03 -0.21205,0.98867 -0.21501,0.94674 -0.21786,0.90424 -0.22056,0.8612 -0.22314,0.81764 -0.22558,0.77358 -0.22788,0.72906 -0.23005,0.68411 -0.23208,0.63872 -0.23397,0.59298 -0.23572,0.54686 -0.23733,0.50041 -0.23879,0.45367 -0.24011,0.40665 -0.24128,0.35939 -0.24232,0.31191 -0.24319,0.26424 -0.24394,0.21642 -0.24452,0.16846 -0.24497,0.1204 -0.24527,0.0723 -0.24541,0.0241 -0.24541,-0.0241 -0.24527,-0.0723 -0.24497,-0.1204 -0.24452,-0.16846 -0.24394,-0.21642 -0.24319,-0.26424 -0.24232,-0.31191 -0.24128,-0.35939 -0.24011,-0.40665 -0.23879,-0.45367 -0.23733,-0.50041 -0.23572,-0.54686 -0.23397,-0.59298 -0.23208,-0.63872 -0.23005,-0.68411 -0.22789,-0.72906 -0.22557,-0.77358 -0.22314,-0.81764 -0.22056,-0.8612 -0.21786,-0.90424 -0.21501,-0.94674 -0.212048,-0.98867 -0.208948,-1.03 -0.205726,-1.07072 -0.20238,-1.11078 -0.198911,-1.15019 -0.195323,-1.18889 -0.191617,-1.22687 -0.187796,-1.26413 -0.183861,-1.30062 -0.179815,-1.33632 -0.175663,-1.37123 -0.171403,-1.4053 -0.16704,-1.43852 -0.162577,-1.47089 -0.158017,-1.50237 -0.153359,-1.53293 -0.148611,-1.56259 -0.143773,-1.59128 -0.138848,-1.61904 -0.13384,-1.64581 -0.12875,-1.67159 -0.123584,-1.69636 -0.118343,-1.72012 -0.11303,-1.74283 -0.10765,-1.7645 -0.102205,-1.7851 -0.0967,-1.80464 -0.09113,-1.82307 -0.08551,-1.84041 -0.07984,-1.85665 -0.07412,-1.87177 -0.06836,-1.88575 -0.06255,-1.89861 -0.05671,-1.91031 -0.05083,-1.92087 -0.04492,-1.93028 -0.03899,-1.93851 -0.03303,-1.94559 -0.02705,-1.95148 -0.02106,-1.9562 -0.01505,-1.95975 -0.009,-1.96212 -0.003,-1.9633"
style="fill:none;stroke:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path6"
d="m 96,58.502331 -1,20"
style="fill:none;stroke:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path7"
d="m 114,58.502331 1,20"
style="fill:none;stroke:#ffffff;stroke-width:0.5;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path8"
d="m 106,205.25233 -9e-4,0.0423 -0.003,0.0423 -0.004,0.0421 -0.006,0.0419 -0.008,0.0416 -0.01,0.0412 -0.0115,0.0408 -0.0132,0.0402 -0.0149,0.0396 -0.0166,0.039 -0.0182,0.0382 -0.0198,0.0374 -0.0214,0.0366 -0.0229,0.0356 -0.0244,0.0346 -0.0259,0.0335 -0.0272,0.0324 -0.0286,0.0312 -0.0299,0.03 -0.0311,0.0287 -0.0323,0.0274 -0.0335,0.026 -0.0345,0.0245 -0.0355,0.023 -0.0365,0.0215 -0.0374,0.02 -0.0382,0.0184 -0.0389,0.0167 -0.0396,0.0151 -0.0402,0.0134 -0.0407,0.0117 -0.0412,0.01 -0.0416,0.008 -0.0419,0.006 -0.0421,0.005 -0.0422,0.003 -0.0423,0.001 -0.0423,-7.3e-4 -0.0423,-0.003 -0.0421,-0.004 -0.0419,-0.006 -0.0416,-0.008 -0.0412,-0.01 -0.0408,-0.0113 -0.0403,-0.0131 -0.0397,-0.0148 -0.039,-0.0164 -0.0383,-0.0181 -0.0375,-0.0197 -0.0366,-0.0213 -0.0357,-0.0228 -0.0347,-0.0243 -0.0337,-0.0257 -0.0325,-0.0271 -0.0314,-0.0285 -0.0301,-0.0298 -0.0288,-0.031 -0.0275,-0.0322 -0.0261,-0.0334 -0.0247,-0.0344 -0.0232,-0.0354 -0.0217,-0.0364 -0.0201,-0.0373 -0.0185,-0.0381 -0.0169,-0.0388 -0.0152,-0.0395 -0.0135,-0.0401 -0.0118,-0.0407 -0.0101,-0.0411 -0.008,-0.0415 -0.007,-0.0418 -0.005,-0.0421 -0.003,-0.0422 -10e-4,-0.0423 5.7e-4,-0.0423 0.002,-0.0423 0.004,-0.0421 0.006,-0.0419 0.008,-0.0416 0.009,-0.0413 0.0112,-0.0408 0.0129,-0.0403 0.0146,-0.0397 0.0163,-0.0391 0.0179,-0.0384 0.0195,-0.0376 0.0211,-0.0367 0.0227,-0.0358 0.0241,-0.0348 0.0256,-0.0337 0.027,-0.0326 0.0284,-0.0315 0.0297,-0.0302 0.0309,-0.029 0.0321,-0.0276 0.0333,-0.0262 0.0343,-0.0248 0.0353,-0.0233 0.0363,-0.0218 0.0372,-0.0203 0.038,-0.0187 0.0388,-0.017 0.0395,-0.0154 0.0401,-0.0137 0.0406,-0.012 0.0411,-0.0102 0.0415,-0.008 0.0418,-0.007 0.0421,-0.005 0.0422,-0.003 0.0423,-0.001 0.0423,4.2e-4 0.0423,0.002 0.0422,0.004 0.0419,0.006 0.0417,0.008 0.0413,0.009 0.0409,0.011 0.0404,0.0128 0.0398,0.0145 0.0392,0.0161 0.0384,0.0178 0.0376,0.0194 0.0368,0.021 0.0359,0.0225 0.0349,0.024 0.0338,0.0255 0.0327,0.0269 0.0316,0.0282 0.0303,0.0296 0.0291,0.0308 0.0277,0.032 0.0264,0.0332 0.0249,0.0342 0.0235,0.0353 0.0219,0.0362 0.0204,0.0371 0.0188,0.0379 0.0172,0.0387 0.0155,0.0394 0.0138,0.04 0.0121,0.0406 0.0104,0.0411 0.009,0.0415 0.007,0.0418 0.005,0.042 0.003,0.0422 0.002,0.0423 1.1e-4,0.0152 z"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path9"
d="m 99,198.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path10"
d="M 100.5,198.50233 H 102"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path11"
d="m 102,198.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path12"
d="M 103.5,198.50233 H 105"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path13"
d="m 99,186.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path14"
d="M 100.5,186.50233 H 102"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path15"
d="m 102,186.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path16"
d="M 103.5,186.50233 H 105"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path17"
d="m 111,186.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path18"
d="m 111,188.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path19"
d="m 111,189.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path20"
d="m 111,191.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path21"
d="m 99,186.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path22"
d="m 99,188.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path23"
d="m 99,189.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path24"
d="m 99,191.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path25"
d="m 111,103.50233 h -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path26"
d="M 109.5,103.50233 H 108"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path27"
d="m 108,103.50233 h -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path28"
d="M 106.5,103.50233 H 105"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path29"
d="m 99,103.50233 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path30"
d="m 99,102.00233 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path31"
d="M 99,100.50233 V 99.002331"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path32"
d="m 99,99.002331 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path33"
d="m 111,103.50233 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path34"
d="m 111,102.00233 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path35"
d="M 111,100.50233 V 99.002331"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path36"
d="m 111,99.002331 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path37"
d="m 105,198.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path38"
d="M 106.5,198.50233 H 108"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path39"
d="m 108,198.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path40"
d="M 109.5,198.50233 H 111"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path41"
d="m 105,186.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path42"
d="M 106.5,186.50233 H 108"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path43"
d="m 108,186.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path44"
d="M 109.5,186.50233 H 111"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path45"
d="m 111,192.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path46"
d="m 111,194.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path47"
d="m 111,195.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path48"
d="m 111,197.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path49"
d="m 99,192.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path50"
d="m 99,194.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path51"
d="m 99,195.50233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path52"
d="m 99,197.00233 v 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path53"
d="m 105,103.50233 h -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path54"
d="M 103.5,103.50233 H 102"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path55"
d="m 102,103.50233 h -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path56"
d="M 100.5,103.50233 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path57"
d="m 99,97.502331 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path58"
d="m 99,96.002331 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path59"
d="m 111,97.502331 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path60"
d="m 111,96.002331 v -1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path61"
d="m 99,197.00233 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path62"
d="m 100.5,198.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path63"
d="m 109.5,94.502331 v 8.999999"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path64"
d="m 102,198.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path65"
d="m 108,94.502331 v 8.999999"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path66"
d="m 103.5,186.50233 v 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path67"
d="M 106.5,103.50233 V 94.502331"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path68"
d="m 105,198.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path69"
d="m 105,94.502331 v 8.999999"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path70"
d="m 106.5,198.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path71"
d="m 103.5,94.502331 v 8.999999"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path72"
d="m 108,198.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path73"
d="m 102,94.502331 v 8.999999"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path74"
d="m 109.5,186.50233 v 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path75"
d="M 100.5,103.50233 V 94.502331"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path76"
d="M 111,195.50233 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path77"
d="m 99,94.502331 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path78"
d="m 99,194.00233 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path79"
d="M 111,96.002331 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path80"
d="m 99,192.50233 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path81"
d="M 111,97.502331 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path82"
d="M 111,191.00233 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path83"
d="m 99,99.002331 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path84"
d="m 99,189.50233 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path85"
d="M 111,100.50233 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path86"
d="m 99,188.00233 h 12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path87"
d="M 111,102.00233 H 99"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path88"
d="m 100.5,178.50233 h 9"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path89"
d="m 109.5,178.50233 0.5,-15"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path90"
d="m 100.5,178.50233 -0.5,-15"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path91"
d="m 100,163.50233 -5,-5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path92"
d="m 110,163.50233 5,-5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path93"
d="m 100,163.50233 h 10"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path94"
d="M 110,139.50233 H 100"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path95"
d="m 100,163.50233 1,-2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path96"
d="m 110,163.50233 -1,-2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path97"
d="m 109,161.50233 h -8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path98"
d="m 101,161.50233 -4,-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path99"
d="m 97,145.50233 4,-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path100"
d="m 109,141.50233 4,4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path101"
d="m 109,161.50233 4,-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path102"
d="m 106,173.50233 -9e-4,0.0423 -0.003,0.0423 -0.004,0.0421 -0.006,0.0419 -0.008,0.0416 -0.01,0.0412 -0.0115,0.0408 -0.0132,0.0402 -0.0149,0.0396 -0.0166,0.039 -0.0182,0.0382 -0.0198,0.0374 -0.0214,0.0366 -0.0229,0.0356 -0.0244,0.0346 -0.0259,0.0335 -0.0272,0.0324 -0.0286,0.0312 -0.0299,0.03 -0.0311,0.0287 -0.0323,0.0274 -0.0335,0.026 -0.0345,0.0245 -0.0355,0.023 -0.0365,0.0215 -0.0374,0.02 -0.0382,0.0184 -0.0389,0.0167 -0.0396,0.0151 -0.0402,0.0134 -0.0407,0.0117 -0.0412,0.01 -0.0416,0.008 -0.0419,0.006 -0.0421,0.005 -0.0422,0.003 -0.0423,0.001 -0.0423,-7.3e-4 -0.0423,-0.003 -0.0421,-0.004 -0.0419,-0.006 -0.0416,-0.008 -0.0412,-0.01 -0.0408,-0.0113 -0.0403,-0.0131 -0.0397,-0.0148 -0.039,-0.0164 -0.0383,-0.0181 -0.0375,-0.0197 -0.0366,-0.0213 -0.0357,-0.0228 -0.0347,-0.0243 -0.0337,-0.0257 -0.0325,-0.0271 -0.0314,-0.0285 -0.0301,-0.0298 -0.0288,-0.031 -0.0275,-0.0322 -0.0261,-0.0334 -0.0247,-0.0344 -0.0232,-0.0354 -0.0217,-0.0364 -0.0201,-0.0373 -0.0185,-0.0381 -0.0169,-0.0388 -0.0152,-0.0395 -0.0135,-0.0401 -0.0118,-0.0407 -0.0101,-0.0411 -0.008,-0.0415 -0.007,-0.0418 -0.005,-0.0421 -0.003,-0.0422 -10e-4,-0.0423 5.7e-4,-0.0423 0.002,-0.0423 0.004,-0.0421 0.006,-0.0419 0.008,-0.0416 0.009,-0.0413 0.0112,-0.0408 0.0129,-0.0403 0.0146,-0.0397 0.0163,-0.0391 0.0179,-0.0384 0.0195,-0.0376 0.0211,-0.0367 0.0227,-0.0358 0.0241,-0.0348 0.0256,-0.0337 0.027,-0.0326 0.0284,-0.0315 0.0297,-0.0302 0.0309,-0.029 0.0321,-0.0276 0.0333,-0.0262 0.0343,-0.0248 0.0353,-0.0233 0.0363,-0.0218 0.0372,-0.0203 0.038,-0.0187 0.0388,-0.017 0.0395,-0.0154 0.0401,-0.0137 0.0406,-0.012 0.0411,-0.0102 0.0415,-0.008 0.0418,-0.007 0.0421,-0.005 0.0422,-0.003 0.0423,-0.001 0.0423,4.2e-4 0.0423,0.002 0.0422,0.004 0.0419,0.006 0.0417,0.008 0.0413,0.009 0.0409,0.011 0.0404,0.0128 0.0398,0.0145 0.0392,0.0161 0.0384,0.0178 0.0376,0.0194 0.0368,0.021 0.0359,0.0225 0.0349,0.024 0.0338,0.0255 0.0327,0.0269 0.0316,0.0282 0.0303,0.0296 0.0291,0.0308 0.0277,0.032 0.0264,0.0332 0.0249,0.0342 0.0235,0.0353 0.0219,0.0362 0.0204,0.0371 0.0188,0.0379 0.0172,0.0387 0.0155,0.0394 0.0138,0.04 0.0121,0.0406 0.0104,0.0411 0.009,0.0415 0.007,0.0418 0.005,0.042 0.003,0.0422 0.002,0.0423 1.1e-4,0.0152 z"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path103"
d="m 105,141.50233 h -3"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path104"
d="m 102,141.50233 h -1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path105"
d="m 105,141.50233 h 3"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path106"
d="m 108,141.50233 h 1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path107"
d="m 100,139.50233 1,2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path108"
d="m 109,141.50233 1,-2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path109"
d="m 110,139.50233 5,5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path110"
d="m 100,139.50233 -5,5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path111"
d="m 113,157.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path112"
d="m 97,157.50233 v -12"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path113"
d="m 102,141.50233 v 8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path114"
d="m 108,141.50233 v 8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path115"
d="m 102,149.50233 h 6"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path116"
d="m 108,149.50233 -1,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path117"
d="m 107,148.50233 h -4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path118"
d="m 103,148.50233 -1,1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path119"
d="m 102,141.50233 1,1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path120"
d="m 108,141.50233 -1,1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path121"
d="m 107,142.50233 v 6"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path122"
d="m 103,148.50233 v -6"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path123"
d="m 103,142.50233 h 4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path124"
d="m 106,143.50233 -9e-4,0.0423 -0.003,0.0423 -0.004,0.0421 -0.006,0.0419 -0.008,0.0416 -0.01,0.0412 -0.0115,0.0408 -0.0132,0.0402 -0.0149,0.0396 -0.0166,0.039 -0.0182,0.0382 -0.0198,0.0374 -0.0214,0.0366 -0.0229,0.0356 -0.0244,0.0346 -0.0259,0.0335 -0.0272,0.0324 -0.0286,0.0312 -0.0299,0.03 -0.0311,0.0287 -0.0323,0.0274 -0.0335,0.026 -0.0345,0.0245 -0.0355,0.023 -0.0365,0.0215 -0.0374,0.02 -0.0382,0.0184 -0.0389,0.0167 -0.0396,0.0151 -0.0402,0.0134 -0.0407,0.0117 -0.0412,0.01 -0.0416,0.008 -0.0419,0.006 -0.0421,0.005 -0.0422,0.003 -0.0423,0.001 -0.0423,-7.3e-4 -0.0423,-0.003 -0.0421,-0.004 -0.0419,-0.006 -0.0416,-0.008 -0.0412,-0.01 -0.0408,-0.0113 -0.0403,-0.0131 -0.0397,-0.0148 -0.039,-0.0164 -0.0383,-0.0181 -0.0375,-0.0197 -0.0366,-0.0213 -0.0357,-0.0228 -0.0347,-0.0243 -0.0337,-0.0257 -0.0325,-0.0271 -0.0314,-0.0285 -0.0301,-0.0298 -0.0288,-0.031 -0.0275,-0.0322 -0.0261,-0.0334 -0.0247,-0.0344 -0.0232,-0.0354 -0.0217,-0.0364 -0.0201,-0.0373 -0.0185,-0.0381 -0.0169,-0.0388 -0.0152,-0.0395 -0.0135,-0.0401 -0.0118,-0.0407 -0.0101,-0.0411 -0.008,-0.0415 -0.007,-0.0418 -0.005,-0.0421 -0.003,-0.0422 -10e-4,-0.0423 5.7e-4,-0.0423 0.002,-0.0423 0.004,-0.0421 0.006,-0.0419 0.008,-0.0416 0.009,-0.0413 0.0112,-0.0408 0.0129,-0.0403 0.0146,-0.0397 0.0163,-0.0391 0.0179,-0.0384 0.0195,-0.0376 0.0211,-0.0367 0.0227,-0.0358 0.0241,-0.0348 0.0256,-0.0337 0.027,-0.0326 0.0284,-0.0315 0.0297,-0.0302 0.0309,-0.029 0.0321,-0.0276 0.0333,-0.0262 0.0343,-0.0248 0.0353,-0.0233 0.0363,-0.0218 0.0372,-0.0203 0.038,-0.0187 0.0388,-0.017 0.0395,-0.0154 0.0401,-0.0137 0.0406,-0.012 0.0411,-0.0102 0.0415,-0.008 0.0418,-0.007 0.0421,-0.005 0.0422,-0.003 0.0423,-0.001 0.0423,4.2e-4 0.0423,0.002 0.0422,0.004 0.0419,0.006 0.0417,0.008 0.0413,0.009 0.0409,0.011 0.0404,0.0128 0.0398,0.0145 0.0392,0.0161 0.0384,0.0178 0.0376,0.0194 0.0368,0.021 0.0359,0.0225 0.0349,0.024 0.0338,0.0255 0.0327,0.0269 0.0316,0.0282 0.0303,0.0296 0.0291,0.0308 0.0277,0.032 0.0264,0.0332 0.0249,0.0342 0.0235,0.0353 0.0219,0.0362 0.0204,0.0371 0.0188,0.0379 0.0172,0.0387 0.0155,0.0394 0.0138,0.04 0.0121,0.0406 0.0104,0.0411 0.009,0.0415 0.007,0.0418 0.005,0.042 0.003,0.0422 0.002,0.0423 1.1e-4,0.0152 z"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path125"
d="m 5005.7238,7252.6356 -0.1693,-3.9973 -0.5067,-3.9687 -0.8405,-3.9116 -1.1682,-3.8264 -1.4875,-3.7138 -1.7963,-3.5746 -2.092,-3.4097 -2.3729,-3.2204 -2.6367,-3.008 -2.8816,-2.7741 -3.1058,-2.5201 -3.3077,-2.2483 -3.486,-1.9602 -3.6393,-1.658 -3.7664,-1.3441 -3.8666,-1.0204 -3.9389,-0.6895 -3.9832,-0.3536 -3.9988,-0.015 -3.9857,0.3234 -3.9441,0.6596 -3.8742,0.9911 -3.7764,1.3154 -3.6518,1.6305 -3.5007,1.9336 -3.3247,2.2231 -3.1248,2.4966 -2.9025,2.7521 -2.6594,2.9879 -2.3972,3.2023 -2.1179,3.3937 -1.8232,3.5609 -1.5157,3.7024 -1.1972,3.8175 -0.87,3.9051 -0.5368,3.9647 -0.1996,3.996 0.1391,3.9985 0.4766,3.9724 0.8108,3.9179 1.1391,3.8351 1.4594,3.725 1.7691,3.5881 2.0662,3.4255 2.3484,3.2383 2.6138,3.0279 2.8605,2.7958 3.0866,2.5437 3.2907,2.2733 3.471,1.9865 3.6266,1.6856 3.7561,1.3726 3.8587,1.0498 3.9337,0.7193 3.9804,0.3838 3.9985,0.046 3.9881,-0.2931 3.9489,-0.6297 3.8816,-0.9617 3.7863,-1.2867 3.664,-1.6027 3.5153,-1.9071 3.3415,-2.1978 3.1436,-2.4728 2.9233,-2.73 2.6819,-2.9676 2.4214,-3.1841 2.1435,-3.3776 1.8502,-3.5469 1.5437,-3.6908 1.226,-3.8083 0.8996,-3.8984 0.5668,-3.9605 0.2299,-3.9944 0.01,-0.7163 z"
style="fill:#ffffff;fill-opacity:1;fill-rule:evenodd;stroke:none"
transform="scale(0.08)" />
<path
id="path126"
d="m 103,146.50233 -0.0128,-3e-4 -0.0128,-9e-4 -0.0128,-0.002 -0.0128,-0.002 -0.0127,-0.003 -0.0127,-0.003 -0.0126,-0.004 -0.0126,-0.004 -0.0125,-0.005 -0.0125,-0.006 -0.0124,-0.006 -0.0123,-0.007 -0.0122,-0.007 -0.0121,-0.008 -0.012,-0.009 -0.0119,-0.009 -0.0118,-0.01 -0.0117,-0.0102 -0.0115,-0.0108 -0.0114,-0.0113 -0.0112,-0.0118 -0.0111,-0.0124 -0.0109,-0.0129 -0.0107,-0.0134 -0.0106,-0.0139 -0.0104,-0.0144 -0.0102,-0.0149 -0.01,-0.0153 -0.01,-0.0158 -0.01,-0.0163 -0.009,-0.0167 -0.009,-0.0171 -0.009,-0.0176 -0.009,-0.018 -0.008,-0.0184 -0.008,-0.0188 -0.008,-0.0192 -0.008,-0.0195 -0.007,-0.0199 -0.007,-0.0202 -0.007,-0.0206 -0.007,-0.0209 -0.006,-0.0212 -0.006,-0.0215 -0.006,-0.0218 -0.006,-0.0221 -0.005,-0.0223 -0.005,-0.0226 -0.005,-0.0228 -0.004,-0.023 -0.004,-0.0232 -0.004,-0.0234 -0.004,-0.0236 -0.003,-0.0237 -0.003,-0.0239 -0.003,-0.024 -0.002,-0.0241 -0.002,-0.0242 -0.002,-0.0243 -10e-4,-0.0244 -0.001,-0.0245 -7.9e-4,-0.0245 -4.7e-4,-0.0245 -1.6e-4,-0.0245 1.6e-4,-0.0245 4.7e-4,-0.0245 7.9e-4,-0.0245 0.001,-0.0245 10e-4,-0.0244 0.002,-0.0243 0.002,-0.0242 0.002,-0.0241 0.003,-0.024 0.003,-0.0239 0.003,-0.0237 0.004,-0.0236 0.004,-0.0234 0.004,-0.0232 0.004,-0.023 0.005,-0.0228 0.005,-0.0226 0.005,-0.0223 0.006,-0.0221 0.006,-0.0218 0.006,-0.0215 0.006,-0.0212 0.007,-0.0209 0.007,-0.0206 0.007,-0.0202 0.007,-0.0199 0.008,-0.0195 0.008,-0.0192 0.008,-0.0188 0.008,-0.0184 0.009,-0.018 0.009,-0.0176 0.009,-0.0171 0.009,-0.0167 0.01,-0.0163 0.01,-0.0158 0.01,-0.0153 0.0102,-0.0149 0.0104,-0.0144 0.0106,-0.0139 0.0107,-0.0134 0.0109,-0.0129 0.0111,-0.0124 0.0112,-0.0118 0.0114,-0.0113 0.0115,-0.0108 0.0117,-0.0102 0.0118,-0.01 0.0119,-0.009 0.012,-0.009 0.0121,-0.008 0.0122,-0.007 0.0123,-0.007 0.0124,-0.006 0.0125,-0.006 0.0125,-0.005 0.0126,-0.004 0.0126,-0.004 0.0127,-0.003 0.0127,-0.003 0.0128,-0.002 0.0128,-0.002 0.0128,-9e-4 0.0128,-3e-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path127"
d="m 107,144.50233 0.0136,3e-4 0.0136,9e-4 0.0136,0.002 0.0135,0.002 0.0135,0.003 0.0135,0.003 0.0134,0.004 0.0134,0.004 0.0133,0.005 0.0132,0.006 0.0131,0.006 0.013,0.007 0.013,0.007 0.0128,0.008 0.0127,0.009 0.0126,0.009 0.0125,0.01 0.0123,0.0102 0.0122,0.0108 0.0121,0.0113 0.0119,0.0118 0.0117,0.0124 0.0116,0.0129 0.0114,0.0134 0.0112,0.0139 0.011,0.0144 0.0108,0.0149 0.0106,0.0153 0.0104,0.0158 0.0102,0.0163 0.01,0.0167 0.01,0.0171 0.009,0.0176 0.009,0.018 0.009,0.0184 0.009,0.0188 0.008,0.0192 0.008,0.0195 0.008,0.0199 0.008,0.0202 0.007,0.0206 0.007,0.0209 0.007,0.0212 0.007,0.0215 0.006,0.0218 0.006,0.0221 0.006,0.0223 0.005,0.0226 0.005,0.0228 0.005,0.023 0.004,0.0232 0.004,0.0234 0.004,0.0236 0.003,0.0237 0.003,0.0239 0.003,0.024 0.002,0.0241 0.002,0.0242 0.002,0.0243 10e-4,0.0244 0.001,0.0245 8.3e-4,0.0245 5e-4,0.0245 1.7e-4,0.0245 -1.7e-4,0.0245 -5e-4,0.0245 -8.3e-4,0.0245 -0.001,0.0245 -10e-4,0.0244 -0.002,0.0243 -0.002,0.0242 -0.002,0.0241 -0.003,0.024 -0.003,0.0239 -0.003,0.0237 -0.004,0.0236 -0.004,0.0234 -0.004,0.0232 -0.005,0.023 -0.005,0.0228 -0.005,0.0226 -0.006,0.0223 -0.006,0.0221 -0.006,0.0218 -0.007,0.0215 -0.007,0.0212 -0.007,0.0209 -0.007,0.0206 -0.008,0.0202 -0.008,0.0199 -0.008,0.0195 -0.008,0.0192 -0.009,0.0188 -0.009,0.0184 -0.009,0.018 -0.009,0.0176 -0.01,0.0171 -0.01,0.0167 -0.0102,0.0163 -0.0104,0.0158 -0.0106,0.0153 -0.0108,0.0149 -0.011,0.0144 -0.0112,0.0139 -0.0114,0.0134 -0.0116,0.0129 -0.0117,0.0124 -0.0119,0.0118 -0.0121,0.0113 -0.0122,0.0108 -0.0123,0.0102 -0.0125,0.01 -0.0126,0.009 -0.0127,0.009 -0.0128,0.008 -0.013,0.007 -0.013,0.007 -0.0131,0.006 -0.0132,0.006 -0.0133,0.005 -0.0134,0.004 -0.0134,0.004 -0.0135,0.003 -0.0135,0.003 -0.0135,0.002 -0.0136,0.002 -0.0136,9e-4 -0.0136,3e-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path128"
d="m 104,148.90233 3e-4,-0.01 9e-4,-0.01 0.002,-0.01 0.002,-0.01 0.003,-0.01 0.003,-0.01 0.004,-0.01 0.004,-0.01 0.005,-0.01 0.006,-0.01 0.006,-0.009 0.007,-0.009 0.007,-0.009 0.008,-0.009 0.009,-0.009 0.009,-0.009 0.01,-0.009 0.0102,-0.009 0.0108,-0.009 0.0113,-0.009 0.0118,-0.009 0.0124,-0.008 0.0129,-0.008 0.0134,-0.008 0.0139,-0.008 0.0144,-0.008 0.0149,-0.008 0.0153,-0.008 0.0158,-0.008 0.0163,-0.007 0.0167,-0.007 0.0171,-0.007 0.0176,-0.007 0.018,-0.007 0.0184,-0.007 0.0188,-0.006 0.0192,-0.006 0.0195,-0.006 0.0199,-0.006 0.0202,-0.006 0.0206,-0.005 0.0209,-0.005 0.0212,-0.005 0.0215,-0.005 0.0218,-0.005 0.0221,-0.004 0.0223,-0.004 0.0226,-0.004 0.0228,-0.004 0.023,-0.003 0.0232,-0.003 0.0234,-0.003 0.0236,-0.003 0.0237,-0.002 0.0239,-0.002 0.024,-0.002 0.0241,-0.002 0.0242,-0.002 0.0243,-0.001 0.0244,-0.001 0.0245,-8.5e-4 0.0245,-6e-4 0.0245,-3.6e-4 0.0245,-1.2e-4 0.0245,1.2e-4 0.0245,3.6e-4 0.0245,6e-4 0.0245,8.5e-4 0.0244,0.001 0.0243,0.001 0.0242,0.002 0.0241,0.002 0.024,0.002 0.0239,0.002 0.0237,0.002 0.0236,0.003 0.0234,0.003 0.0232,0.003 0.023,0.003 0.0228,0.004 0.0226,0.004 0.0223,0.004 0.0221,0.004 0.0218,0.005 0.0215,0.005 0.0212,0.005 0.0209,0.005 0.0206,0.005 0.0202,0.006 0.0199,0.006 0.0195,0.006 0.0192,0.006 0.0188,0.006 0.0184,0.007 0.018,0.007 0.0176,0.007 0.0171,0.007 0.0167,0.007 0.0163,0.007 0.0158,0.008 0.0153,0.008 0.0149,0.008 0.0144,0.008 0.0139,0.008 0.0134,0.008 0.0129,0.008 0.0124,0.008 0.0118,0.009 0.0113,0.009 0.0108,0.009 0.0102,0.009 0.01,0.009 0.009,0.009 0.009,0.009 0.008,0.009 0.007,0.009 0.007,0.009 0.006,0.009 0.006,0.01 0.005,0.01 0.005,0.01 0.004,0.01 0.003,0.01 0.003,0.01 0.002,0.01 0.002,0.01 9e-4,0.01 3e-4,0.01"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path129"
d="m 112.5,142.00233 v -18"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path130"
d="m 97.5,142.00233 v -18"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path131"
d="m 97.5,124.00233 2.5,-2.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path132"
d="m 112.5,124.00233 -2.5,-2.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path133"
d="m 100,121.50233 v -9"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path134"
d="m 110,121.50233 v -9"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path135"
d="m 102.5,112.50233 h 5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path136"
d="M 107.5,112.50233 H 109"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path137"
d="m 101,112.50233 h 1.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path138"
d="m 100,139.50233 v -15"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path139"
d="m 110,139.50233 v -15"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path140"
d="m 110,124.50233 -2.5,-2.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path141"
d="m 100,124.50233 2.5,-2.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path142"
d="m 102.5,122.00233 v -8.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path143"
d="m 107.5,122.00233 v -8.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path144"
d="m 107.5,113.50233 h -5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path145"
d="m 100,112.50233 v -8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path146"
d="m 100,104.50233 h 10"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path147"
d="m 110,104.50233 v 8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path148"
d="m 107.5,122.00233 2.5,-0.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path149"
d="m 102.5,122.00233 -2.5,-0.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path150"
d="m 100,124.50233 -2.5,-0.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path151"
d="m 110,124.50233 2.5,-0.5"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path152"
d="m 109,105.50233 1,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path153"
d="m 100,104.50233 1,1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path154"
d="m 109,112.50233 v -7"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path155"
d="m 109,105.50233 h -8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path156"
d="m 101,105.50233 v 7"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path157"
d="m 101,112.50233 1.5,1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path158"
d="m 107.5,113.50233 1.5,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path159"
d="m 113,145.50233 2,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path160"
d="m 97,145.50233 -2,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path161"
d="m 97,157.50233 -2,1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path162"
d="m 98,93.502331 -3,-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path163"
d="m 112,93.502331 3,-4"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path164"
d="m 114,89.302331 v -12.8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path165"
d="m 98,93.502331 h 14"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path166"
d="m 98.4,92.502331 h 13.2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path167"
d="m 96,89.302331 v -12.8"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path168"
d="m 98.4,92.502331 -2.4,-3.2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path169"
d="m 111.6,92.502331 2.4,-3.2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path170"
d="m 96,76.502331 h 18"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path171"
d="m 96,76.502331 -0.85,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path172"
d="m 98,93.502331 0.4,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path173"
d="m 112,93.502331 -0.4,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path174"
d="m 114,89.302331 1,0.2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path175"
d="m 96,89.302331 -1,0.2"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path176"
d="m 96,75.502331 h 18"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path177"
d="m 114,75.502331 h 0.9"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path178"
d="M 96,75.502331 H 95.1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path179"
d="m 114,76.502331 0.9,-1"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
<path
id="path180"
d="m 106.75,82.902331 -5.1e-4,0.04235 -0.002,0.04232 -0.003,0.04227 -0.004,0.0422 -0.005,0.0421 -0.006,0.04198 -0.007,0.04183 -0.008,0.04165 -0.009,0.04146 -0.01,0.04124 -0.0106,0.04099 -0.0116,0.04072 -0.0126,0.04043 -0.0136,0.04011 -0.0146,0.03977 -0.0155,0.03941 -0.0165,0.03902 -0.0174,0.03861 -0.0183,0.03818 -0.0192,0.03772 -0.0202,0.03724 -0.0211,0.03675 -0.0219,0.03623 -0.0228,0.03568 -0.0237,0.03512 -0.0245,0.03454 -0.0253,0.03394 -0.0262,0.03331 -0.0269,0.03267 -0.0277,0.03201 -0.0285,0.03133 -0.0292,0.03063 -0.03,0.02991 -0.0307,0.02918 -0.0314,0.02843 -0.0321,0.02766 -0.0327,0.02688 -0.0334,0.02608 -0.034,0.02526 -0.0346,0.02443 -0.0352,0.02359 -0.0357,0.02273 -0.0363,0.02186 -0.0368,0.02097 -0.0373,0.02007 -0.0378,0.01917 -0.0382,0.01825 -0.0387,0.01732 -0.0391,0.01638 -0.0394,0.01543 -0.0398,0.01447 -0.0401,0.0135 -0.0405,0.01253 -0.0407,0.01154 -0.041,0.01055 -0.0413,0.0096 -0.0415,0.0086 -0.0417,0.0076 -0.0418,0.0065 -0.042,0.0055 -0.0421,0.0045 -0.0422,0.0035 -0.0423,0.0025 -0.0423,0.0014 -0.0424,4.17e-4 -0.0423,-6.09e-4 -0.0423,-0.0016 -0.0423,-0.0027 -0.0422,-0.0037 -0.0421,-0.0047 -0.042,-0.0057 -0.0418,-0.0067 -0.0416,-0.0077 -0.0414,-0.0087 -0.0412,-0.0097 -0.041,-0.01074 -0.0407,-0.01173 -0.0404,-0.01271 -0.0401,-0.01368 -0.0397,-0.01465 -0.0394,-0.01561 -0.039,-0.01655 -0.0386,-0.01749 -0.0381,-0.01842 -0.0377,-0.01934 -0.0372,-0.02024 -0.0367,-0.02114 -0.0362,-0.02202 -0.0356,-0.02289 -0.0351,-0.02374 -0.0345,-0.02459 -0.0339,-0.02541 -0.0332,-0.02622 -0.0326,-0.02702 -0.0319,-0.0278 -0.0313,-0.02857 -0.0306,-0.02932 -0.0299,-0.03005 -0.0291,-0.03076 -0.0284,-0.03146 -0.0276,-0.03213 -0.0268,-0.03279 -0.026,-0.03343 -0.0252,-0.03405 -0.0243,-0.03465 -0.0235,-0.03523 -0.0226,-0.03579 -0.0218,-0.03633 -0.0209,-0.03684 -0.02,-0.03734 -0.0191,-0.03781 -0.0182,-0.03826 -0.0172,-0.03869 -0.0163,-0.03909 -0.0153,-0.03948 -0.0144,-0.03983 -0.0134,-0.04017 -0.0124,-0.04048 -0.0114,-0.04077 -0.0105,-0.04104 -0.009,-0.04128 -0.008,-0.0415 -0.007,-0.04169 -0.006,-0.04186 -0.005,-0.042 -0.004,-0.04212 -0.003,-0.04221 -0.002,-0.04228 -0.001,-0.04233 -3.2e-4,-0.04235 7e-4,-0.04234 0.002,-0.04232 0.003,-0.04226 0.004,-0.04218 0.005,-0.04208 0.006,-0.04195 0.007,-0.0418 0.008,-0.04162 0.009,-0.04142 0.01,-0.04119 0.0108,-0.04094 0.0118,-0.04067 0.0128,-0.04037 0.0138,-0.04005 0.0147,-0.0397 0.0157,-0.03934 0.0166,-0.03894 0.0176,-0.03853 0.0185,-0.03809 0.0194,-0.03763 0.0203,-0.03715 0.0212,-0.03665 0.0221,-0.03613 0.023,-0.03558 0.0238,-0.03502 0.0247,-0.03443 0.0255,-0.03382 0.0263,-0.03319 0.0271,-0.03255 0.0279,-0.03188 0.0286,-0.0312 0.0294,-0.0305 0.0301,-0.02978 0.0308,-0.02904 0.0315,-0.02828 0.0322,-0.02751 0.0329,-0.02673 0.0335,-0.02592 0.0341,-0.0251 0.0347,-0.02427 0.0353,-0.02343 0.0358,-0.02257 0.0364,-0.02169 0.0369,-0.02081 0.0374,-0.01991 0.0379,-0.019 0.0383,-0.01807 0.0387,-0.01714 0.0391,-0.0162 0.0395,-0.01525 0.0399,-0.01429 0.0402,-0.01332 0.0405,-0.01234 0.0408,-0.01136 0.0411,-0.01037 0.0413,-0.0094 0.0415,-0.0084 0.0417,-0.0074 0.0419,-0.0063 0.042,-0.0053 0.0421,-0.0043 0.0422,-0.0033 0.0423,-0.0023 0.0423,-0.0012 0.0423,-2.26e-4 0.0423,8e-4 0.0423,0.0018 0.0422,0.0028 0.0422,0.0039 0.0421,0.0049 0.0419,0.0059 0.0418,0.0069 0.0416,0.0079 0.0414,0.0089 0.0412,0.0099 0.0409,0.01092 0.0406,0.01191 0.0403,0.01289 0.04,0.01386 0.0397,0.01483 0.0393,0.01578 0.0389,0.01673 0.0385,0.01767 0.038,0.01859 0.0376,0.01951 0.0371,0.02041 0.0366,0.0213 0.0361,0.02218 0.0355,0.02305 0.035,0.0239 0.0344,0.02474 0.0338,0.02557 0.0331,0.02638 0.0325,0.02717 0.0318,0.02795 0.0311,0.02871 0.0304,0.02945 0.0297,0.03018 0.029,0.03089 0.0282,0.03159 0.0274,0.03226 0.0267,0.03291 0.0258,0.03355 0.025,0.03416 0.0242,0.03476 0.0233,0.03533 0.0225,0.03589 0.0216,0.03642 0.0207,0.03693 0.0198,0.03742 0.0189,0.03789 0.018,0.03834 0.017,0.03876 0.0161,0.03917 0.0152,0.03954 0.0142,0.0399 0.0132,0.04023 0.0122,0.04054 0.0113,0.04082 0.0103,0.04108 0.009,0.04132 0.008,0.04153 0.007,0.04172 0.006,0.04189 0.005,0.04202 0.004,0.04214 0.003,0.04223 0.002,0.04229 0.001,0.04233 2e-4,0.02653 z"
style="fill:none;stroke:#ffffff;stroke-width:0.25;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
transform="matrix(3.7779048,0,0,-3.7799327,0,1122.64)" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 70 KiB

View File

@ -1,2 +0,0 @@
# Normalize EOL for all files that Git considers text files.
* text=auto eol=lf

3
project/.gitignore vendored
View File

@ -1,3 +0,0 @@
# Godot 4+ specific ignores
.godot/
/android/

View File

@ -1 +0,0 @@
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128"><rect width="124" height="124" x="2" y="2" fill="#363d52" stroke="#212532" stroke-width="4" rx="14"/><g fill="#fff" transform="translate(12.322 12.322)scale(.101)"><path d="M105 673v33q407 354 814 0v-33z"/><path fill="#478cbf" d="m105 673 152 14q12 1 15 14l4 67 132 10 8-61q2-11 15-15h162q13 4 15 15l8 61 132-10 4-67q3-13 15-14l152-14V427q30-39 56-81-35-59-83-108-43 20-82 47-40-37-88-64 7-51 8-102-59-28-123-42-26 43-46 89-49-7-98 0-20-46-46-89-64 14-123 42 1 51 8 102-48 27-88 64-39-27-82-47-48 49-83 108 26 42 56 81zm0 33v39c0 276 813 276 814 0v-39l-134 12-5 69q-2 10-14 13l-162 11q-12 0-16-11l-10-65H446l-10 65q-4 11-16 11l-162-11q-12-3-14-13l-5-69z"/><path d="M483 600c0 34 58 34 58 0v-86c0-34-58-34-58 0z"/><circle cx="725" cy="526" r="90"/><circle cx="299" cy="526" r="90"/></g><g fill="#414042" transform="translate(12.322 12.322)scale(.101)"><circle cx="307" cy="532" r="60"/><circle cx="717" cy="532" r="60"/></g></svg>

Before

Width:  |  Height:  |  Size: 994 B

View File

@ -1,37 +0,0 @@
[remap]
importer="texture"
type="CompressedTexture2D"
uid="uid://dmcjlguuq8xqt"
path="res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"
metadata={
"vram_texture": false
}
[deps]
source_file="res://icon.svg"
dest_files=["res://.godot/imported/icon.svg-218a8f2b3041327d8a5756f3a245f83b.ctex"]
[params]
compress/mode=0
compress/high_quality=false
compress/lossy_quality=0.7
compress/hdr_compression=1
compress/normal_map=0
compress/channel_pack=0
mipmaps/generate=false
mipmaps/limit=-1
roughness/mode=0
roughness/src_normal=""
process/fix_alpha_border=true
process/premult_alpha=false
process/normal_map_invert_y=false
process/hdr_as_srgb=false
process/hdr_clamp_exposure=false
process/size_limit=0
detect_3d/compress_to=1
svg/scale=1.0
editor/scale_with_editor_scale=false
editor/convert_colors_with_editor_theme=false

View File

@ -1,9 +0,0 @@
[gd_scene load_steps=2 format=3 uid="uid://beuvt3vhjibjt"]
[ext_resource type="Texture2D" uid="uid://dmcjlguuq8xqt" path="res://icon.svg" id="1_lodlx"]
[node name="Main" type="Node"]
[node name="Sprite2D" type="Sprite2D" parent="."]
texture = ExtResource("1_lodlx")
centered = false

View File

@ -1,14 +0,0 @@
[configuration]
entry_symbol = "extension_library_init"
compatibility_minimum = 4.3
reloadable = true
[libraries]
windows.debug.x86_64 = "res://bin/naval-swarm.windows.64.debug.dll"
windows.release.x86_64 = "res://bin/naval-swarm.windows.64.release.dll"
linux.debug.x86_64 = "res://bin/libnaval-swarm.linux.64.debug.so"
linux.release.x86_64 = "res://bin/libnaval-swarm.linux.64.release.so"
macos.debug = "res://bin/libnaval-swarm.darwin.64.debug.dylib"
macos.release = "res://bin/libnaval-swarm.darwin.64.release.dylib"

View File

@ -1,16 +0,0 @@
; Engine configuration file.
; It's best edited using the editor UI and not directly,
; since the parameters that go here are not all obvious.
;
; Format:
; [section] ; section goes between []
; param=value ; assign values to parameters
config_version=5
[application]
config/name="Naval Swarm"
run/main_scene="res://main.tscn"
config/features=PackedStringArray("4.3", "Forward Plus")
config/icon="res://icon.svg"

View File

@ -1,22 +1,175 @@
#include "main.hpp"
#include <SDL3/SDL.h>
#include <SDL3_image/SDL_image.h>
#include "types.hpp"
Main::Main()
{
time_passed = 0.0;
}
constexpr int SCREEN_WIDTH = 800;
constexpr int SCREEN_HEIGHT = 600;
constexpr int WORLD_WIDTH = 1600;
constexpr int WORLD_HEIGHT = 1200;
constexpr int TARGET_FPS = 60;
constexpr Uint64 TARGET_FRAME_TIME_NS = 1'000'000'000 / TARGET_FPS;
Main::~Main()
{
// Required destructor implementation
}
struct Entity {
SDL_FRect position;
SDL_Texture* texture;
SDL_Rect srcRect;
float speed = 250.0f;
Angle360 Angle;
};
void Main::_bind_methods()
{
ClassDB::bind_method(D_METHOD("_process", "delta"), &Main::_process);
}
struct Camera {
SDL_FRect view = {0.0f, 0.0f, SCREEN_WIDTH, SCREEN_HEIGHT};
bool followPlayer = true;
float speed = 500.0f;
float smoothness = 0.1f;
};
void Main::_process(double delta)
{
time_passed += delta;
set_rotation(time_passed);
int main() {
SDL_Init(SDL_INIT_VIDEO);
SDL_Window* window = SDL_CreateWindow("Naval Swarm", SCREEN_WIDTH, SCREEN_HEIGHT, 0);
SDL_Renderer* renderer = SDL_CreateRenderer(window, "gpu,vulcan");
// Load textures
SDL_Texture* spriteSheet = IMG_LoadTexture(renderer, "assets/destroyer.svg");
SDL_Texture* bgTexture = IMG_LoadTexture(renderer, "assets/background.png");
// Initialize player
Entity destroyer;
destroyer.texture = spriteSheet;
destroyer.position = {WORLD_WIDTH/2.0f, WORLD_HEIGHT/2.0f, 58.0f, 512.0f};
destroyer.srcRect = {0, 0, 58, 512}; // Static source rectangle
destroyer.Angle = 0;
// Initialize camera
Camera camera;
bool running = true;
Uint64 lastFrameTime = SDL_GetTicksNS();
float deltaTime = 0.0f;
while (running) {
const Uint64 frameStart = SDL_GetTicksNS();
// Event handling
SDL_Event event;
while (SDL_PollEvent(&event)) {
if (event.type == SDL_EVENT_QUIT) running = false;
}
// Input handling
const bool* keystate = SDL_GetKeyboardState(NULL);
// Toggle camera mode with C key
static Uint32 lastToggle = 0;
if (keystate[SDL_SCANCODE_C] && (SDL_GetTicks() - lastToggle > 200)) {
camera.followPlayer = !camera.followPlayer;
lastToggle = SDL_GetTicks();
}
// Player movement
int moveX = keystate[SDL_SCANCODE_RIGHT] - keystate[SDL_SCANCODE_LEFT];
int moveY = keystate[SDL_SCANCODE_DOWN] - keystate[SDL_SCANCODE_UP];
// There is propably more eficient way to do this
switch (moveX) {
case 1:
switch (moveY) {
case 1:
destroyer.Angle = 135;
break;
case -1:
destroyer.Angle = 45;
break;
default:
destroyer.Angle = 90;
}
break;
case -1:
switch (moveY) {
case 1:
destroyer.Angle = 225;
break;
case -1:
destroyer.Angle = 315;
break;
default:
destroyer.Angle = 270;
}
break;
default:
switch (moveY) {
case 1:
destroyer.Angle = 180;
break;
case -1:
destroyer.Angle = 0;
break;
}
}
destroyer.position.x += (float)moveX * destroyer.speed * deltaTime;
destroyer.position.y += (float)moveY * destroyer.speed * deltaTime;
// Camera movement
if (camera.followPlayer) {
float targetX = destroyer.position.x + destroyer.position.w/2 - camera.view.w/2;
float targetY = destroyer.position.y + destroyer.position.h/2 - camera.view.h/2;
camera.view.x += (targetX - camera.view.x) * camera.smoothness;
camera.view.y += (targetY - camera.view.y) * camera.smoothness;
} else {
float camMoveX = keystate[SDL_SCANCODE_L] - keystate[SDL_SCANCODE_J];
float camMoveY = keystate[SDL_SCANCODE_K] - keystate[SDL_SCANCODE_I];
camera.view.x += camMoveX * camera.speed * deltaTime;
camera.view.y += camMoveY * camera.speed * deltaTime;
}
// World bounds
destroyer.position.x = SDL_clamp(destroyer.position.x, 0.0f, WORLD_WIDTH - destroyer.position.w);
destroyer.position.y = SDL_clamp(destroyer.position.y, 0.0f, WORLD_HEIGHT - destroyer.position.h);
camera.view.x = SDL_clamp(camera.view.x, 0.0f, WORLD_WIDTH - camera.view.w);
camera.view.y = SDL_clamp(camera.view.y, 0.0f, WORLD_HEIGHT - camera.view.h);
//ANIMATION HERE
// Rendering
SDL_SetRenderDrawColor(renderer, 30, 30, 45, 255);
SDL_RenderClear(renderer);
// Draw background
if (bgTexture) {
SDL_FRect bgDest = { -camera.view.x, -camera.view.y, WORLD_WIDTH, WORLD_HEIGHT };
SDL_RenderTexture(renderer, bgTexture, NULL, &bgDest);
}
// Draw player (simplified without animation)
SDL_FRect srcFRect;
SDL_RectToFRect(&destroyer.srcRect, &srcFRect);
SDL_FRect destRect = {
destroyer.position.x - camera.view.x,
destroyer.position.y - camera.view.y,
destroyer.position.w,
destroyer.position.h
};
SDL_RenderTextureRotated(renderer, destroyer.texture, &srcFRect, &destRect, destroyer.Angle, nullptr, SDL_FLIP_NONE);
SDL_RenderPresent(renderer);
// Frame timing (unchanged)
const Uint64 frameTime = SDL_GetTicksNS() - frameStart;
if (frameTime < TARGET_FRAME_TIME_NS) {
const Uint64 sleepTime = TARGET_FRAME_TIME_NS - frameTime;
SDL_DelayNS(sleepTime - 2'000'000);
while (SDL_GetTicksNS() - frameStart < TARGET_FRAME_TIME_NS) {}
}
deltaTime = (SDL_GetTicksNS() - lastFrameTime) / 1e9f;
lastFrameTime = SDL_GetTicksNS();
}
// Cleanup
SDL_DestroyTexture(spriteSheet);
SDL_DestroyTexture(bgTexture);
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}

View File

@ -1,20 +0,0 @@
#include <godot_cpp/classes/sprite2d.hpp>
using namespace godot;
class Main : public Sprite2D
{
GDCLASS(Main, Sprite2D) // Must be in public section
private:
double time_passed;
protected:
static void _bind_methods();
public:
Main();
virtual ~Main() override; // Required for proper destruction
void _process(double delta) override;
};

46
src/types.hpp Normal file
View File

@ -0,0 +1,46 @@
#include <SDL3/SDL.h>
#include <SDL3_image/SDL_image.h>
#include <iostream>
struct Angle360 {
private:
int value{0};
void normalize() {
value %= 360;
if (value < 0) value += 360; // Handle negative values
}
public:
// Constructor
Angle360(int val = 0) : value(val) { normalize(); }
// Assignment operator
Angle360& operator=(int val) {
value = val;
normalize();
return *this;
}
// Compound assignment
Angle360& operator+=(int rhs) {
value += rhs;
normalize();
return *this;
}
Angle360& operator-=(int rhs) {
value -= rhs;
normalize();
return *this;
}
// Type conversion
operator int() const { return value; }
// Stream output
friend std::ostream& operator<<(std::ostream& os, const Angle360& a) {
return os << a.value;
}
};

View File

@ -1,10 +0,0 @@
{
"$schema": "https://raw.githubusercontent.com/microsoft/vcpkg-tool/main/docs/vcpkg.schema.json",
"documentation": "https://github.com/microsoft/vcpkg/blob/master/docs/users/manifests.md",
"name": "naval-swarm",
"version": "0.1.0",
"dependencies": [
"fmt",
"spdlog"
]
}