Compare commits

47 Commits

Author SHA1 Message Date
167ddbc0ff refactor: migrate to docusaurus 2023-11-06 20:50:42 +01:00
40e779ff8f chore(deps): node:18.10.0
Some checks failed
ci/woodpecker/push/build Pipeline failed
2023-11-06 19:30:45 +01:00
3e002ad9c0 ci: migrate to woodpecker 2023-11-06 19:27:51 +01:00
6a0115fe54 traefik.io/v1alpha1 crds
All checks were successful
continuous-integration/drone/push Build is passing
2023-05-31 15:05:52 +02:00
b352d76cf3 Updated scanner recommendations
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-15 23:13:57 +02:00
2e237f0481 Added german keyboard layout to scanner config
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-15 23:10:17 +02:00
edabfa88b3 Typo
All checks were successful
continuous-integration/drone/push Build is passing
2023-04-15 22:42:04 +02:00
e5be5ae4d5 Switched to npm cache for build
All checks were successful
continuous-integration/drone/push Build is passing
2023-03-17 15:38:46 +01:00
3c94706fee Added Citizen Group warning to selfservice
All checks were successful
continuous-integration/drone/push Build is passing
2023-02-15 14:39:10 +01:00
bbde19b6aa Fresh argo move to new h2 cluster
All checks were successful
continuous-integration/drone/push Build is passing
2023-01-10 18:34:54 +01:00
b99f088c71 Switched project to lfk
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-10 17:32:25 +02:00
658d915f9c Removed old file
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-10 17:28:03 +02:00
297741d9fc Added LfK imprint
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-10 17:27:07 +02:00
1434f4aa92 Ignore secret 2022-10-10 17:25:19 +02:00
ad7bc3ba5f Removed secret 2022-10-10 17:25:05 +02:00
39fda4bbf5 dns resolver
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-10 17:11:14 +02:00
13c9d12db0 Added argo deployment
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-10 17:09:38 +02:00
23980609ed Removed ci license export
All checks were successful
continuous-integration/drone/push Build is passing
2022-10-10 17:06:07 +02:00
6fe82686f2 Drone -> Kaniko
Some checks failed
continuous-integration/drone/push Build was killed
2022-10-10 17:05:21 +02:00
e544df0e19 Ignore pnpm lock 2022-10-10 17:03:13 +02:00
fbe8136be2 Added dockerignore 2022-10-10 17:02:41 +02:00
8cc14c7a26 Docker bump 2022-10-10 17:02:34 +02:00
93b442790e Dependency bump 2022-10-10 17:00:32 +02:00
c1fc13ba29 Bumped image dependencies 2022-10-10 16:52:24 +02:00
6fed301721 removed pdf from gitignore
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-22 20:29:43 +02:00
e7751034cd added scanerconfig pdf
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-22 20:20:30 +02:00
4b94d3ce2a moved config scanner docs to own file
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-22 20:02:56 +02:00
458bf7267a Added scanner config docs
Some checks failed
continuous-integration/drone/push Build is failing
2021-04-22 20:00:19 +02:00
7381749e33 Removed useless install section
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-17 20:33:52 +02:00
7b8df787a0 Added admin/services section
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-17 20:32:17 +02:00
a67f943591 Added donation payment docs
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-15 16:54:17 +02:00
74b68410a5 Added livesystem docs
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-15 16:49:49 +02:00
01c892b393 Updated scanclient config docs 2021-04-15 16:49:39 +02:00
c998795b92 Added newlines
All checks were successful
continuous-integration/drone/push Build is passing
2021-04-06 19:43:41 +02:00
e6a7b76f08 Added beamershow to Top-Nav and it's own sidebar
Some checks failed
continuous-integration/drone/push Build is failing
closes #6
2021-04-06 19:43:20 +02:00
9ef707e132 Added beamershow config guide
All checks were successful
continuous-integration/drone/push Build is passing
ref #6
2021-04-06 19:40:32 +02:00
fbbb6cd505 Added beamershow index page
All checks were successful
continuous-integration/drone/push Build is passing
ref #6
2021-04-06 19:37:04 +02:00
eaff7d02ab Fixed missing link in en
All checks were successful
continuous-integration/drone/push Build is passing
closes #7
2021-04-06 19:27:10 +02:00
c95eec7465 Implemented router-link work-around
All checks were successful
continuous-integration/drone/push Build is passing
closes #7
2021-04-06 19:22:34 +02:00
32a51c8cb1 Changed pnpm->yarn b/c of sporadic build issues
All checks were successful
continuous-integration/drone/push Build is passing
ref #7
2021-04-06 19:04:44 +02:00
c7feec631e new license file version [CI SKIP] 2021-04-06 16:58:10 +00:00
6d0ad1aa0f Pinned/bumped dependencies
All checks were successful
continuous-integration/drone/push Build is passing
ref #7
2021-04-06 18:56:46 +02:00
2ab3b01954 Added install to scanstation sidebar
All checks were successful
continuous-integration/drone/push Build is passing
closes #5
2021-04-03 10:56:17 +02:00
368153e7d4 Added install docs
ref #5
2021-04-03 10:55:24 +02:00
a555f290ad Added scanstation sidebar
All checks were successful
continuous-integration/drone/push Build is passing
ref #5
2021-04-03 10:48:39 +02:00
1e168ac522 Formatting
ref #5
2021-04-03 10:47:56 +02:00
2b43905b54 Added "how to use" section to scanstations index
All checks were successful
continuous-integration/drone/push Build is passing
ref #5
2021-04-03 10:46:08 +02:00
92 changed files with 10691 additions and 793 deletions

33
.argo/application.yaml Normal file
View File

@@ -0,0 +1,33 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
annotations:
argocd-image-updater.argoproj.io/image-list: docs=registry.odit.services/lfk/docs:latest
argocd-image-updater.argoproj.io/write-back-method: argocd
argocd-image-updater.argoproj.io/update-strategy: digest
argocd-image-updater.argoproj.io/docs.pull-secret: pullsecret:argocd/registry-odit-services
name: docs-lfk-de
namespace: argocd
spec:
project: lfk
source:
repoURL: "git@git.odit.services:lfk/docs.git"
path: .argo
targetRevision: main
destination:
name: odit-h2
namespace: lfk
syncPolicy:
automated:
prune: true
selfHeal: true
allowEmpty: false
syncOptions:
- PruneLast=true
- CreateNamespace=true
retry:
limit: 5
backoff:
duration: 20s
factor: 2
maxDuration: 7m

14
.argo/cert.yaml Normal file
View File

@@ -0,0 +1,14 @@
---
apiVersion: cert-manager.io/v1
kind: Certificate
metadata:
name: docs-lfk-de-cert
namespace: lfk
spec:
commonName: docs.lauf-fuer-kaya.de
secretName: docs-lfk-de-cert
dnsNames:
- docs.lauf-fuer-kaya.de
issuerRef:
name: letsencrypt-prod-dns
kind: ClusterIssuer

58
.argo/deployment.yaml Normal file
View File

@@ -0,0 +1,58 @@
---
apiVersion: apps/v1
kind: Deployment
metadata:
name: docs-lfk-de
namespace: lfk
labels:
app: docs-lfk-de
spec:
replicas: 1
revisionHistoryLimit: 10
strategy:
type: RollingUpdate
rollingUpdate:
maxSurge: 1
maxUnavailable: 0
selector:
matchLabels:
app: docs-lfk-de
template:
metadata:
labels:
app: docs-lfk-de
spec:
containers:
- name: docs-lfk-de
image: registry.odit.services/lfk/docs:latest
imagePullPolicy: IfNotPresent
ports:
- containerPort: 80
name: web
resources:
requests:
cpu: 50m
memory: 10Mi
limits:
cpu: 100m
memory: 128Mi
readinessProbe:
httpGet:
path: /health/
port: 80
initialDelaySeconds: 5
periodSeconds: 3
successThreshold: 4
livenessProbe:
httpGet:
path: /health/
port: 80
initialDelaySeconds: 5
periodSeconds: 3
lifecycle:
preStop:
exec:
command: ["/bin/sh", "-c", "sleep 10"]
imagePullSecrets:
- name: registry-odit-services
restartPolicy: Always

12
.argo/dns.yaml Normal file
View File

@@ -0,0 +1,12 @@
apiVersion: externaldns.k8s.io/v1alpha1
kind: DNSEndpoint
metadata:
name: docs-lfk-de-dns
namespace: lfk
spec:
endpoints:
- dnsName: docs.lauf-fuer-kaya.de
recordTTL: 180
recordType: CNAME
targets:
- k.odit.services

17
.argo/ingress.yaml Normal file
View File

@@ -0,0 +1,17 @@
---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
name: docs-lfk-de
namespace: lfk
spec:
entryPoints:
- websecure
routes:
- match: Host(`docs.lauf-fuer-kaya.de`)
kind: Rule
services:
- name: docs-lfk-de
port: 80
tls:
secretName: docs-lfk-de-cert

7
.argo/kustomization.yaml Normal file
View File

@@ -0,0 +1,7 @@
namespace: lfk
resources:
- deployment.yaml
- service.yaml
- ingress.yaml
- cert.yaml
- dns.yaml

15
.argo/service.yaml Normal file
View File

@@ -0,0 +1,15 @@
---
apiVersion: v1
kind: Service
metadata:
name: docs-lfk-de
namespace: lfk
labels:
app: docs-lfk-de
spec:
ports:
- port: 80
name: web
selector:
app: docs-lfk-de
type: ClusterIP

139
.dockerignore Normal file
View File

@@ -0,0 +1,139 @@
# ---> VisualStudioCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/i18n-ally-custom-framework.yml
*.code-workspace
# Local History for Visual Studio Code
.history/
# ---> Node
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
yarn.lock
package-lock.json
*.sqlite
*.sqlite-jurnal
/docs
lib
/oss-attribution
*.tmp

View File

@@ -1,61 +0,0 @@
---
kind: secret
name: docker_username
get:
path: odit-registry-builder
name: username
---
kind: secret
name: docker_password
get:
path: odit-registry-builder
name: password
---
kind: secret
name: git_ssh
get:
path: odit-git-bot
name: sshkey
---
kind: pipeline
type: kubernetes
name: build:latest
steps:
- name: run full license export
depends_on: ["clone"]
image: node:alpine
commands:
- yarn
- yarn licenses:export
- name: push new licenses file to repo
depends_on: ["run full license export"]
image: appleboy/drone-git-push
settings:
branch: main
commit: true
commit_message: new license file version [CI SKIP]
author_email: bot@odit.services
remote: git@git.odit.services:lfk/docs.git
ssh_key:
from_secret: git_ssh
- name: build latest
image: plugins/docker
depends_on: [clone]
settings:
username:
from_secret: docker_username
password:
from_secret: docker_password
repo: registry.odit.services/lfk/docs
tags:
- latest
registry: registry.odit.services
mtu: 1000
trigger:
branch:
- main
event:
- push

161
.gitignore vendored
View File

@@ -1,141 +1,20 @@
# ---> VisualStudioCode
.vscode/*
!.vscode/settings.json
!.vscode/tasks.json
!.vscode/launch.json
!.vscode/extensions.json
!.vscode/i18n-ally-custom-framework.yml
*.code-workspace
# Local History for Visual Studio Code
.history/
# ---> Node
# Logs
logs
*.log
npm-debug.log*
yarn-debug.log*
yarn-error.log*
lerna-debug.log*
# Diagnostic reports (https://nodejs.org/api/report.html)
report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json
# Runtime data
pids
*.pid
*.seed
*.pid.lock
# Directory for instrumented libs generated by jscoverage/JSCover
lib-cov
# Coverage directory used by tools like istanbul
coverage
*.lcov
# nyc test coverage
.nyc_output
# Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files)
.grunt
# Bower dependency directory (https://bower.io/)
bower_components
# node-waf configuration
.lock-wscript
# Compiled binary addons (https://nodejs.org/api/addons.html)
build/Release
# Dependency directories
node_modules/
jspm_packages/
# Snowpack dependency directory (https://snowpack.dev/)
web_modules/
# TypeScript cache
*.tsbuildinfo
# Optional npm cache directory
.npm
# Optional eslint cache
.eslintcache
# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/
# Optional REPL history
.node_repl_history
# Output of 'npm pack'
*.tgz
# Yarn Integrity file
.yarn-integrity
# dotenv environment variables file
.env
.env.test
# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache
# Next.js build output
.next
out
# Nuxt.js build / generate output
.nuxt
dist
# Gatsby files
.cache/
# Comment in the public line in if your project uses Gatsby and not Next.js
# https://nextjs.org/blog/next-9-1#public-directory-support
# public
# vuepress build output
.vuepress/dist
# Serverless directories
.serverless/
# FuseBox cache
.fusebox/
# DynamoDB Local files
.dynamodb/
# TernJS port file
.tern-port
# Stores VSCode versions used for testing VSCode extensions
.vscode-test
# yarn v2
.yarn/cache
.yarn/unplugged
.yarn/build-state.yml
.yarn/install-state.gz
.pnp.*
yarn.lock
package-lock.json
build
*.sqlite
*.sqlite-jurnal
/docs
lib
/oss-attribution
*.tmp
*.pdf
# Dependencies
/node_modules
# Production
/build
# Generated files
.docusaurus
.cache-loader
# Misc
.DS_Store
.env.local
.env.development.local
.env.test.local
.env.production.local
npm-debug.log*
yarn-debug.log*
yarn-error.log*

20
.woodpecker/build.yml Normal file
View File

@@ -0,0 +1,20 @@
steps:
- name: build latest
image: woodpeckerci/plugin-docker-buildx
settings:
repo: registry.odit.services/lfk/docs
tags:
- latest
registry: registry.odit.services
platforms: linux/amd64,linux/arm64
cache_from: registry.odit.services/lfk/docs:latest
username:
from_secret: odit-registry-builder-username
password:
from_secret: odit-registry-builder-password
secrets:
- source: odit-npm-cache-url
target: NPM_REGISTRY_URL
when:
branch: main
event: push

View File

@@ -1,11 +1,14 @@
FROM node:15.5.1-alpine3.12 AS build
FROM registry.odit.services/hub/library/node:21.1.0-alpine3.18 AS build
ARG NPM_REGISTRY_URL=https://registry.npmjs.org
WORKDIR /app
RUN npm i -g pnpm
COPY package.json ./
RUN pnpm i
COPY package.json pnpm-lock.yaml ./
RUN npm config set registry $NPM_REGISTRY_URL && npm i -g pnpm@8
RUN pnpm i --frozen-lockfile
COPY . ./
RUN pnpm run build
RUN pnpm build
# final image
FROM fholzer/nginx-brotli:v1.19.1 AS final
COPY --from=build /app/src/.vuepress/dist /usr/share/nginx/html
FROM registry.odit.services/library/nginx-brotli:3.15.130
COPY --from=build /app/build /usr/share/nginx/html
COPY ./nginx.conf /etc/nginx/nginx.conf

View File

@@ -1,34 +1,41 @@
# @lfk/documentation
The documentation for the LfK! 'Läufersystem'.
Powered by Vuepress.
The main language for the content is German (since our primary target audience is the Lauf für Kaya! Team at a local German school).
## Quickstart 🐳
> Use this to run the documentation server via docker.
1. Clone the repo or copy the docker-compose.yml
2. Cd into the folder containing the docker-compose.yml
2. Run docker-compose: `docker-compose up -d`
3. Visit http://127.0.0.1:8080/ to check if the server is running
## Dev Setup 🛠
> Local dev setup for previewing changes.
1. Install Dependencies
```bash
yarn
```
2. Start the server
```bash
yarn dev
```
## Recommended Editor
[Visual Studio Code](https://code.visualstudio.com/)
### Recommended Extensions
* will be automatically recommended via ./vscode/extensions.json
# Website
This website is built using [Docusaurus 2](https://docusaurus.io/), a modern static website generator.
### Installation
```
$ yarn
```
### Local Development
```
$ yarn start
```
This command starts a local development server and opens up a browser window. Most changes are reflected live without having to restart the server.
### Build
```
$ yarn build
```
This command generates static content into the `build` directory and can be served using any static contents hosting service.
### Deployment
Using SSH:
```
$ USE_SSH=true yarn deploy
```
Not using SSH:
```
$ GIT_USER=<Your GitHub username> yarn deploy
```
If you are using GitHub pages for hosting, this command is a convenient way to build the website and push to the `gh-pages` branch.

3
babel.config.js Normal file
View File

@@ -0,0 +1,3 @@
module.exports = {
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
};

View File

@@ -3,4 +3,4 @@ services:
httpd:
build: .
ports:
- 8080:80
- 12345:80

26
docs/admins/README.md Normal file
View File

@@ -0,0 +1,26 @@
# Admins
Dieser Teil der Dokumentation befasst sich mit der Installation, Konfiguration und Bedienung des Läufersystems für normale Admins.
Solltest du an der Bedienung für normale Nutzer interessiert sein schau doch mal in den <router-link to="./users">Nutzerbereich</router-link>.
## Services
> Eine kurze Übersicht über die verschiedenen Services des Systems und ihre Interaktion
* Backend: Beinhaltet die Hauptlogik und verwaltet die Daten (via Datenbankanbindung)
* Mailer: Versendet auf Basis von HTML-Templates automatisiert Mails
* Document-Server: Erstellt PDFs (Urkunden, Läuferkarten, Sponsoringerklärungen) aus HTML-Templates
* Frontend: Verwaltungsoberfläche für die Admins und Benutzer:innen des Läufersystems
* Selfservice: Portal in dem sich Bürger- und Firmenläufer:innen registrieren und ihre Daten einsehen können
* Beamershow: Zeigt aktuelle Statistiken und Toplisten zum Event an
* Scanclient: Software für die Scannerstationen
* Docs: Diese Dokumentation
![Service Diagramms](/images/service_interaction.png)
## FAQ
> Ein paar der meist gestellten Fragen vorab
### Warum sehe ich eine Seite nicht?
Nutzer sehen nur die Seiten im System, für die sie Berechtigungen haben.
Solltest du eine Seite nicht sehen bist du vermutlich nicht voll als Admin berechtigt.

View File

@@ -1,19 +1,19 @@
# Schnellstart
> Du willst das System schnell aufsetzen und testen? Dann bist du hier genau richtig!
> Um das System für produktive Zwecke einzusetzen schau dir bitte die [Installationsanleitung](./installation) an.
## Voraussetzungen
Alle der folgenden Anleitungen gehen davon aus, dass du bereits Docker und Docker-Compose installiert hast.
Die Installationsanleitungen dafür findest du hier:
* [Docker](https://docs.docker.com/get-docker/)
* [Docker-Compose](https://docs.docker.com/compose/install/)
## Das ganze System
> Du willst das ganze System (backend, fronten, document-server) schnell aufsetzen.
1. Klone das lfk/deployment git repo von: https://git.odit.services/lfk/deployment (oder lade es herunter)
2. Navigiere nach `docker-compose/full_stack`: `cd deployment/docker-compose/full_stack`
3. Starte das System mit `docker-compose up`
4. Nachdem alles gestartet ist ist kannst du das Frontend aufrufen: http://localhost:4010 (backend: http://localhost:4010/api/, document-server: http://localhost:4010/documents/)
# Schnellstart
> Du willst das System schnell aufsetzen und testen? Dann bist du hier genau richtig!
> Um das System für produktive Zwecke einzusetzen schau dir bitte die <router-link to="./installation">Installationsanleitung</router-link> an.
## Voraussetzungen
Alle der folgenden Anleitungen gehen davon aus, dass du bereits Docker und Docker-Compose installiert hast.
Die Installationsanleitungen dafür findest du hier:
* [Docker](https://docs.docker.com/get-docker/)
* [Docker-Compose](https://docs.docker.com/compose/install/)
## Das ganze System
> Du willst das ganze System (backend, fronten, document-server) schnell aufsetzen.
1. Klone das lfk/deployment git repo von: https://git.odit.services/lfk/deployment (oder lade es herunter)
2. Navigiere nach `docker-compose/full_stack`: `cd deployment/docker-compose/full_stack`
3. Starte das System mit `docker-compose up`
4. Nachdem alles gestartet ist ist kannst du das Frontend aufrufen: http://localhost:4010 (backend: http://localhost:4010/api/, document-server: http://localhost:4010/documents/)
Bei Bedarf können die Ports und andere Einstellungen im docker-compose.yml angepasst werden.

17
docs/beamershow/README.md Normal file
View File

@@ -0,0 +1,17 @@
# Beamershow
Die Beamershow zeigt live Statistiken zum aktuellen Event an.
Wie der Name schon andeutet ist sie dafür gedacht mit einem Beamer vor Ort auf eine (Lein)Wand projeziert zu werden.
Sie sollte im Normalfall immer unter `<läufersystem>/beamershow` erreichbar sein, mehr dazu unter <router-link to="./config">Konfiguration</router-link>
## Seiten/Informationen
> Die Beamershow umfasst folgende Seiten/Abschnitte
* Allgemeines
* Anzahl an Läufer:innen
* Bisher insgesamt erlaufene Kilometer
* Aktuelle Spendengesamtsumme
* Top 10 Läufer nach Distanz
* Top 10 Läufer nach schnellster Rundenzeit
* Top 10 Organisationen nach Distanz
* Top 10 Teams nach Distanz

12
docs/beamershow/config.md Normal file
View File

@@ -0,0 +1,12 @@
# Konfiguration
> Wie man die Beamershow konfiguriert
## Start
Wenn du die Beamershow öffnest wirst du als erstes nach dem API Endpunkt gefragt - diese entspricht der URL des Läufersystems (z.B.: `https://dev.lauf-fuer-kaya.de`).<br/>
Als nächstes musst du noch einen Client Token gefragt, den du von deinem Admin bekommst.
Sobald du den Token eingegeben hast kannst du auf den Button "Konfigurieren" klicken und die Beamershow wird gestartet.
## Konfiguration ändern
Tippe `cnf` auf einer beliebigen Seite der Beamershow.<br/>
Du wirst sofort von der Beamershow abbemeldet und kannst so einen neuen API Endpunkt und Client Token angeben.

View File

@@ -3,4 +3,11 @@
Die Scannerstation ist die Kombination aus Hardware und Software, die dazu genutzt wird Läuferkarten zu scannen und damit gelaufene Distanzen im System zu erfassen.
Wir schreiben grundsätzlich keine Hardware oder Software vor - stellen aber selbst eine Software bereit und empfehlen Hardware.
Die API für Scannerstationen im Läufersystem ist grundsätzlich so gestaltet, dass Scans live erfasst und validiert (Läufer, Track, Rundenzeit) werden.
Die API für Scannerstationen im Läufersystem ist grundsätzlich so gestaltet, dass Scans live erfasst und validiert (Läufer, Track, Rundenzeit) werden.
## Bedienung
> Die Bedienung nach der <router-link to="./config.html">Konfiguration</router-link>
Die Bedienung der Software als Helfer an der Scannerstation ist sehr einfach:
1. Scannen
2. Auf dem Bildschirm sehen, ob der Scan valide war

View File

@@ -2,7 +2,12 @@
> Wie man die Scanclient Software konfiguriert
## Start
Wenn du die Scanclient Software öffnest wirst du als erstes nach einem Client Token gefragt. -> [So kommst du an einen Client token](../users/scanstations)
Wenn du die Scanclient Software öffnest wirst du als erstes nach einem API Endpunkt gefragt.
Hier musst du die URL deines LfK-Backends eintragen (z.B.: `https://dev.lauf-fuer-kaya.de`).
Als nächstes musst du noch einen Client Token gefragt -> <router-link to="../users/scanstations.html">So kommst du an einen Client token</router-link><br/>
Solltest du dich beim API-Endpunkt vertippt haben kannst du hier auch `rst` eingeben, um diesen nochmal zu setzen.
Sobald du den Token eingegeben hast kannst du auf den Button "Konfigurieren" klicken und der Scanclient wird gestartet.
## Konfiguration ändern

View File

@@ -0,0 +1,31 @@
# Scannerkonfiguration
> Achtung: Diese Konfiguratiuon wurde nur mit GD4130-BK/WH USB Scannern getestet
> Download als PDF: [Scannerkonfiguration.pdf](/files/scannerconfig.pdf)
## 1. Werkseinstellungen wiederherstellen
![Factory reset](/images/barcode_config/00_factory_reset.png)
## 2. Programming Mode Aktivieren
![Enter/Exit Programming Mode](/images/barcode_config/01_programming-mode.png)
## 3. Nur EAN-13 scannen (optional)
![Check EAN Checkdigit](/images/barcode_config/02_disable_all.png)
![Disable EAN Checkdigit](/images/barcode_config/03_enable_ean.png)
## 4. EAN13 Check-Zahl überprüfen, aber nicht übertragen
![Disable EAN Checkdigit](/images/barcode_config/05_disable_ean_digit.png)
## 5. Scanner auf always on stellen (optional)
![Scan mode: Always on](/images/barcode_config/06_always_on.png)
## 6. Programming Mode Verlassen
![Enter/Exit Programming Mode](/images/barcode_config/01_programming-mode.png)
## 7. Beep ausschalten (optional)
![Enter/Exit Programming Mode](/images/barcode_config/01_programming-mode.png)
![Scan mode: Always on](/images/barcode_config/07_beep_off.png)
![Enter/Exit Programming Mode](/images/barcode_config/01_programming-mode.png)
## 8. Tastatur auf Deutsch stellen (optional)
![Enter/Exit Programming Mode](/images/barcode_config/01_programming-mode.png)
![Country Mode: Germany](/images/barcode_config/08_countrycode_germany.png)
![Enter/Exit Programming Mode](/images/barcode_config/01_programming-mode.png)

View File

@@ -7,6 +7,6 @@
* Arbeitsspeicher: Minimum 4GB
## Barcodescanner
* Datalogic Gryphon GD4130-BK/WH USB Scanner
* Datalogic Gryphon GD4132-BK/WH USB Scanner
* Datalogic Gryphon GD4200 USB Scanner
* Datalogic Gryphon GD4130-BK/WH USB Scanner (1D)
* Datalogic Gryphon GD4200 USB Scanner (1D)
* Datalogic Gryphon GD4400 USB Scanner (2D)

View File

@@ -0,0 +1,35 @@
# Installation
Es gibt aktuell drei Varianten, um die Scanclient Software zu installieren/nutzen
* Als Livesystem starten (empfohlen)
* Für Windows herunterladen
* Für Linux herunterladen
## Livesystem
> Empfohlene Variante
1. Lade dir die aktuellste Version des Betriebssystems herunter: [Versionsübersicht](https://git.odit.services/lfk/scanclient-live/releases)
* Den neusten (obersten) Release auswählen.
* Unter "Downloads" die Datei lfk-scanclient-live_X.Y.Z_x64.zip anklicken
2. Einen USB-Stick einstecken und als FAT32 formatieren (Achtung: Hierbei gehen alle Daten verloren, die auf dem Stick sind)
3. Die ZIP-Datei auf den Stick kopieren
4. Die ZIP Datei auf dem Stick entpacken -> Du solltest einen neuen Order `slax` erhalten
5. Den Stick bootfähig machen
* Windows: Die Datei `USBSTICK\slax\boot\bootinst.bat` als Administrator ausführen
* Linux/Mac: Die Datei `USBSTICK/slax/boot/bootinst.sh` mit Root-Rechten (sudo) ausführen
6. Den Stick in den Rechner deiner Wahl einstecken und von ihm Starten
* Bei den meisten Rechner: Beim Hochfahren F12 drücken und dann den USB-Stick auswähren
## Windows
1. Programm aus dem Git Repo herunterladen: [Versionsübersicht](https://git.odit.services/lfk/scanclient-electron/releases)
* Den neusten (obersten) Release auswählen.
* Unter "Downloads" die Datei @lfk-scanclient-electron-win32-x64.zip anklicken
2. Die ZIP-Datei entpacken
3. Die Datei `@lfk-scanclient-electron.exe` öffnen
## Linux
1. Programm aus dem Git Repo herunterladen: [Versionsübersicht](https://git.odit.services/lfk/scanclient-electron/releases)
* Den neusten (obersten) Release auswählen.
* Unter "Downloads" die Datei @lfk-scanclient-electron-linux-x64.zip anklicken
2. Die ZIP-Datei entpacken
3. Die Datei `@lfk-scanclient-electron` öffnen

View File

@@ -8,4 +8,6 @@ Genauer gibt es folgende Funktionen:
* Stammdaten: Vorname, Mittelname, Nachname, E-Mail Adresse, Telefonnummer
* Rundenzeiten
* Herunterladen der eigenen Läuferurkunde
* Restloses löschen der eigenen Daten aus dem System
* Restloses löschen der eigenen Daten aus dem System
Achtung: Damit der Selfservice für Bürgerläufer funktioniert, muss die automatisch generierte Bürgerlauf-Organisation existieren!

View File

@@ -1,7 +1,7 @@
# Einleitung
Dieser Teil der Dokumentation befasst sich mit der Bedienung des Läufersystems für normale Nutzer:innen.
Solltest du an der Installation oder Konfiguration interessiert sein schau doch mal in den [Admin](../admins) Bereich.
Solltest du an der Installation oder Konfiguration interessiert sein schau doch mal in den <router-link to="../admins">Admin</router-link> Bereich.
## FAQ
> Ein paar der meist gestellten Fragen vorab

View File

@@ -1,6 +1,6 @@
# Läuferkarten
Läuferkarten dienen dazu [Trackscans](./scans) für [Läufer:innen](./runners) durch [Scannerstationen](./scanstations) zu erzeugen
Läuferkarten dienen dazu <router-link to="./scans">Trackscans</router-link> für <router-link to="./runners">Läufer:innen</router-link> durch <router-link to="./scanstations">Scannerstationen</router-link> zu erzeugen
Läuferkarten können entweder fest zu einer Läufer:in gehören, oder als Blankokarten genutzt werden, die frei beliebigen Läufer:innen zugewiesen werden können.
## Anlegen
Du kannst Läuferkarten entweder manuell anlegen oder automatisch von System generieren lassen.

View File

@@ -1,6 +1,6 @@
# Kontakte
Kontakte dienen dem Customer Relation Management (CRM) und können beliebig vielen [Teams](./teams) und [Organisationen](./orgs) zugeordnet werden.
Kontakte dienen dem Customer Relation Management (CRM) und können beliebig vielen <router-link to="./teams">Teams</router-link> und <router-link to="./organizations">Organisationen</router-link> zugeordnet werden.
Achtung: Ein(e) Team/Organisation kann immer nur einen Kontakt haben.
Aktuell dienen die Kontakte nur der Dokumentation, in Zukunft solle es aber auch möglich sein einem Kontakt per Knopfdruck die Urkunden für all seine Teams/Orgs per Mail zu schicken.
@@ -8,7 +8,7 @@ Aktuell dienen die Kontakte nur der Dokumentation, in Zukunft solle es aber auch
## Anlegen
Um einen neuen Kontakt anzulegen öffne im Läufersystem die Seite `Kontakt`.
Über den Button `Kontakt erstellen` kannst du einen neuen Kontakt erstellen.
Dabei kannst du dem Kontakt eine(n) Namen, Telefonnummer und E-Mail Adresse geben und sie beliebig vielen Gruppen (Teams/Orgs) zuweisen.
Dabei kannst du dem Kontakt eine(n) Namen, Telefonnummer und E-Mail Adresse geben und sie beliebig vielen Gruppen (Teams/Organisationen) zuweisen.
Ebenfalls kannst du auswählen, ob du eine Adresse für den Kontakt festlegen willst (wenn nicht mach einfach den Haken bei Adresse weg).
## Bearbeiten

View File

@@ -1,7 +1,7 @@
# Sponsorings
Sponsorings können entweder Festbetragsspenden oder Kilometerspenden sein.
Kilometerspenden verbinden [Läufer:innen](./runners) mit [Sponsor:innen](./donors), die einen festen Betrag pro zurückgelegtem Kilometer der Läufer:in spenden.
Kilometerspenden verbinden <router-link to="./runners">Läufer:innen</router-link> mit <router-link to="./donors">Sponsor:innen</router-link>, die einen festen Betrag pro zurückgelegtem Kilometer der Läufer:in spenden.
## Anlegen
Um ein neues Sponsoring anzulegen öffne im Läufersystem die Seite `Sponsorings`.
@@ -30,6 +30,18 @@ Sobald du alles angepasst hast kannst du mit dem Button `Änderungen speichern`
Für Festbetragsspenden kannst du zusätzlich den Spendenbetrag anpassen.
Sobald du alles angepasst hast kannst du mit dem Button `Änderungen speichern` die Änderungen übernehmen.
## Zahlung eingeben
### In der Sponsoringübersicht
Um eine Zahlung einzugeben kannst du in der Sponsoringübersicht den Button `Zahlung eingeben` für das gewünschte Sponsoring anklicken.
Daraufhin öffnet sich ein Dialog, in dem du den bezahlten Betrag für das Sponsoring eingeben kannst.
Wenn das Sponsoring auf den Cent genau bezahlt wurde kannst du dir das eintippen über den Button `MAX` sparen.
Wenn du deine Änderungen vorgenommen hast kannst du diese über den Button `Änderungen speichern` übernehmen.
### Im Sponsoringdetail
> Siehe Sponsoring bearbeiten
## Löschen
> Du kannst ein Sponsoring entweder aus der Sponsoringübersicht oder der Sponsoringdetailansicht löschen.

View File

@@ -1,7 +1,7 @@
# Sponsor:innen
Sponsor:innen sind die Spender, die mit einen Festbetrag oder eine Kilometerspende den Lauf für Kaya! unterstützen.
Zusammen mit den [Sponsorings](./donations) bilden sie das Herzstück des Spendenmanagement und der Spendenverrechnung.
Zusammen mit den <router-link to="./donations">Sponsorings</router-link> bilden sie das Herzstück des Spendenmanagement und der Spendenverrechnung.
## Sponsorübersicht
> Eine kurze Übersicht über die Funktionen der Sponsorübersicht.

View File

@@ -1,36 +1,36 @@
# Organisationen
> Solltest du dich für den Selfservice für Orgs interessieren findest du die Dokumentation zu [hier](../selfservice/org_selfservice)
Läuferorganisationen sind das Herzstück des Gruppensystems für Läufer.
Eine Organisation kann eine Firma, Schule, Kindergarten, Verein oder ähnliches sein.
Läufer:innen können direkt einer Organisation zugeordnet werden.
Um die Läufer:innen einer Organisation (z.B.: Schule) weiter zu sortieren können einer Organisation mehrere Teams (z.B.: Klassen) zugeordnet werden.
Einer/m Organisation/Team kann ein Kontakt zugeordnet werden, mehr dazu findest du [hier](./contacts).
Mehr zu Teams findest du [hier](./teams)
## Anlegen
Um eine neue Organisation anzulegen öffne im Läufersystem die Seite `Orgs`.
Über den Button `Organisation erstellen` kannst du eine neue Organisation erstellen.
Dabei kannst du der Organisation einen Namen geben.
## Bearbeiten
Um eine Organisation zu bearbeiten kannst du in der Organisationsübersicht den Button `Details` für die gewünschte Organisation anklicken.
In der Übersicht für diese Organisation kannst du nun den Namen der Organisation und den zugewiesenen Kontakt ändern.
Wenn du fertig bist klick einfach auf `Änderungen speichern`.
## Löschen
> Du kannst eine Organisation entweder aus der Organisationsübersicht oder der Organisationsdetailansicht löschen.
### In der Organisationsübersicht
Klick bei der gewünschten Organisation auf den Button `Löschen`.
Daraufhin wirst du gefragt, ob du die Organisation wirklich löschen oder abbrechen willst.
### In der Organisationsdetailansicht
Klick bei der gewünschten Organisation auf den Button `Details`.
Oben auf der Seite gibt es jetzt den Knopf `Organisation löschen`.
Daraufhin wirst du gefragt, ob du die Organisation wirklich löschen oder abbrechen willst.
### Organisation mit Teams und Läufer
Sollte die Organisation noch Teams und/oder Läufer haben geht nach dem Bestätigen der Löschung nochmal eine Warnung auf.
# Organisationen
> Solltest du dich für den Selfservice für Orgs interessieren findest du die Dokumentation zu <router-link to="../selfservice/org_selfservice">hier</router-link>
Läuferorganisationen sind das Herzstück des Gruppensystems für Läufer.
Eine Organisation kann eine Firma, Schule, Kindergarten, Verein oder ähnliches sein.
Läufer:innen können direkt einer Organisation zugeordnet werden.
Um die Läufer:innen einer Organisation (z.B.: Schule) weiter zu sortieren können einer Organisation mehrere Teams (z.B.: Klassen) zugeordnet werden.
Einer/m Organisation/Team kann ein Kontakt zugeordnet werden, mehr dazu findest du <router-link to="./contacts">hier</router-link>.
Mehr zu Teams findest du <router-link to="./teams">hier</router-link>
## Anlegen
Um eine neue Organisation anzulegen öffne im Läufersystem die Seite `Orgs`.
Über den Button `Organisation erstellen` kannst du eine neue Organisation erstellen.
Dabei kannst du der Organisation einen Namen geben.
## Bearbeiten
Um eine Organisation zu bearbeiten kannst du in der Organisationsübersicht den Button `Details` für die gewünschte Organisation anklicken.
In der Übersicht für diese Organisation kannst du nun den Namen der Organisation und den zugewiesenen Kontakt ändern.
Wenn du fertig bist klick einfach auf `Änderungen speichern`.
## Löschen
> Du kannst eine Organisation entweder aus der Organisationsübersicht oder der Organisationsdetailansicht löschen.
### In der Organisationsübersicht
Klick bei der gewünschten Organisation auf den Button `Löschen`.
Daraufhin wirst du gefragt, ob du die Organisation wirklich löschen oder abbrechen willst.
### In der Organisationsdetailansicht
Klick bei der gewünschten Organisation auf den Button `Details`.
Oben auf der Seite gibt es jetzt den Knopf `Organisation löschen`.
Daraufhin wirst du gefragt, ob du die Organisation wirklich löschen oder abbrechen willst.
### Organisation mit Teams und Läufer
Sollte die Organisation noch Teams und/oder Läufer haben geht nach dem Bestätigen der Löschung nochmal eine Warnung auf.
Hier musst du nochmal die Löschung inklusive aller Läufer und Teams bestätigen, alternativ kannst du auch Abbrechen.

View File

@@ -1,109 +1,109 @@
# Läuferimport
Um das Eintragen von Läufer:innen ins System zu erleichtern können Läufer aus Excel-Tabellen(CSV, XLSX) importiert werden.
Diese Funktion ist vor allem für Schulen und Kindergärten gedacht, kann aber natürlich für alle Arten von Teams und Organisationen verwendet werden.
Im Folgenden erklären wir dir Schritt für Schritt, wie du Läufer ins System importieren kannst.
## Aufbau der Importdateien
> Die Datei muss im Format XLSX(Excel) oder CSV vorliegen
Alle Läufer müssen auf einem "Tabellenblatt"(Excel) stehen, alle weiteren Tabellenblätter werden ignoriert.
Die Tabelle muss folgendem Schema folgen:
Vorname | Mittelname | Nachname | Team/Klasse
- | - | - | -
Vorname1 | Optional | Nachname1 | Optional
Achtung: Die Team Spalte kann Team oder Klasse heißen!
### Beispiel: CSV
**Mit Mittelname**
> [Beispieldatei herunterladen](/files/class_with_middlename.csv)
```
Vorname; Mittelname; Nachname; Team;
Peter; ; Tester; 1A
Manuel; Steffen; Regenwald; 1A
Toller; ; Typ; 2A
```
**Ohne Mittelname**
> [Beispieldatei herunterladen](/files/class_without_middlename.csv)
```
Vorname; Nachname; Team;
Peter; Tester; 1A
Manuel; Regenwald; 1A
Toller; Typ; 2A
```
### Beispiel: XLSX (Excel)
**Mit Mittelname**
> [Beispieldatei herunterladen](/files/class_with_middlename.xlsx)
![Excel Screenshot with Middlename](/images/runner_import_excel_with_middlename.png)
**Ohne Mittelname**
> [Beispieldatei herunterladen](/files/class_without_middlename.xlsx)
![Excel Screenshot with Middlename](/images/runner_import_excel_no_middlename.png)
## Import in eine Organisation
> Wähle diese Variante, wenn du in einer Organisation automatisch Teams anlegen und die Läufer in diese Importieren willst. <br>
> Wähle diese Variante, wenn du Läufer direkt in eine Organisation importieren willst.
Wenn in der Datei bei einer Läufer:in kein Team angegeben ist wird sie direkt in die Organisation importiert.
Ist ein Team angegeben wird das Team in der Organisation gesucht und neu Angelegt, wenn es nicht gefunden wurde - danach wird die Läufer:in in das Team importiert.
### Aus der Organisationsübersicht
1. Öffne im Läufersystem die Seite `Orgs`
2. Klicke oben auf `Läufer importieren`
3. Klicke auf `Datei auswählen` und wähle die Datei aus, aus der du Läufer:innen importieren willst
4. Dir wird eine Übersicht aller Läufer:innen angezeigt, die in der Datei gefunden wurden - überprüfe alle Läufer:innen auf Korrektheit
5. Wähle oben die Organisation aus, in die die Läufer:innen importiert werden sollen
6. Klicke unten auf `Läufer importieren`, um die Läufer:innen zu importieren oder `Abbrechen`, um den Import abzubrechen
7. Die Läufer werden nun in die Organisation importiert
### Aus der Organisationsdetailansicht
1. Öffne im Läufersystem die Seite `Orgs`
2. Klicke bei der gewünschten Organisation auf den `Details` Button
3. Klicke oben auf `Läufer importieren`
4. Klicke auf `Datei auswählen` und wähle die Datei aus, aus der du Läufer:innen importieren willst
5. Dir wird eine Übersicht aller Läufer:innen angezeigt, die in der Datei gefunden wurden - überprüfe alle Läufer:innen auf Korrektheit
6. Wähle oben die Organisation aus, in die die Läufer:innen importiert werden sollen
7. Klicke unten auf `Läufer importieren`, um die Läufer:innen zu importieren oder `Abbrechen`, um den Import abzubrechen
8. Die Läufer werden nun in die Organisation importiert
### Aus der Läuferübersicht
1. Öffne im Läufersystem die Seite `Läufer`
2. Klicke oben auf `Läufer importieren`
3. Klicke auf `Datei auswählen` und wähle die Datei aus, aus der du Läufer:innen importieren willst
4. Dir wird eine Übersicht aller Läufer:innen angezeigt, die in der Datei gefunden wurden - überprüfe alle Läufer:innen auf Korrektheit
5. Wähle oben die Organisation (Hat kein `>` im Namen) aus, in die die Läufer:innen importiert werden sollen
6. Klicke unten auf `Läufer importieren`, um die Läufer:innen zu importieren oder `Abbrechen`, um den Import abzubrechen
7. Die Läufer werden nun in die Organisation importiert
## Import in ein Team
> Wähle diese Variante, wenn du Läufer direkt in ein Team importieren willst.
Wenn in der Datei bei einer Läufer:in ein Team angegeben ist wird dieses ignoriert und mit dem gewählten Team überschrieben..
### Aus der Teamdetailansicht
1. Öffne im Läufersystem die Seite `Teams`
2. Klicke bei de, gewünschten Team auf den `Details` Button
3. Klicke oben auf `Läufer importieren`
4. Klicke auf `Datei auswählen` und wähle die Datei aus, aus der du Läufer:innen importieren willst
5. Dir wird eine Übersicht aller Läufer:innen angezeigt, die in der Datei gefunden wurden - überprüfe alle Läufer:innen auf Korrektheit
6. Wähle oben das Team aus, in die die Läufer:innen importiert werden sollen
7. Klicke unten auf `Läufer importieren`, um die Läufer:innen zu importieren oder `Abbrechen`, um den Import abzubrechen
8. Die Läufer werden nun in das Team importiert
### Aus der Läuferübersicht
1. Öffne im Läufersystem die Seite `Läufer`
2. Klicke oben auf `Läufer importieren`
3. Klicke auf `Datei auswählen` und wähle die Datei aus, aus der du Läufer:innen importieren willst
4. Dir wird eine Übersicht aller Läufer:innen angezeigt, die in der Datei gefunden wurden - überprüfe alle Läufer:innen auf Korrektheit
5. Wähle oben das Team (Hat ein `>` im Namen) aus, in die die Läufer:innen importiert werden sollen
6. Klicke unten auf `Läufer importieren`, um die Läufer:innen zu importieren oder `Abbrechen`, um den Import abzubrechen
# Läuferimport
Um das Eintragen von Läufer:innen ins System zu erleichtern können Läufer aus Excel-Tabellen(CSV, XLSX) importiert werden.
Diese Funktion ist vor allem für Schulen und Kindergärten gedacht, kann aber natürlich für alle Arten von Teams und Organisationen verwendet werden.
Im Folgenden erklären wir dir Schritt für Schritt, wie du Läufer ins System importieren kannst.
## Aufbau der Importdateien
> Die Datei muss im Format XLSX(Excel) oder CSV vorliegen
Alle Läufer müssen auf einem "Tabellenblatt"(Excel) stehen, alle weiteren Tabellenblätter werden ignoriert.
Die Tabelle muss folgendem Schema folgen:
Vorname | Mittelname | Nachname | Team/Klasse
- | - | - | -
Vorname1 | Optional | Nachname1 | Optional
Achtung: Die Team Spalte kann Team oder Klasse heißen!
### Beispiel: CSV
**Mit Mittelname**
> [Beispieldatei herunterladen](/files/class_with_middlename.csv)
```
Vorname; Mittelname; Nachname; Team;
Peter; ; Tester; 1A
Manuel; Steffen; Regenwald; 1A
Toller; ; Typ; 2A
```
**Ohne Mittelname**
> [Beispieldatei herunterladen](/files/class_without_middlename.csv)
```
Vorname; Nachname; Team;
Peter; Tester; 1A
Manuel; Regenwald; 1A
Toller; Typ; 2A
```
### Beispiel: XLSX (Excel)
**Mit Mittelname**
> [Beispieldatei herunterladen](/files/class_with_middlename.xlsx)
![Excel Screenshot with Middlename](/images/runner_import_excel_with_middlename.png)
**Ohne Mittelname**
> [Beispieldatei herunterladen](/files/class_without_middlename.xlsx)
![Excel Screenshot with Middlename](/images/runner_import_excel_no_middlename.png)
## Import in eine Organisation
> Wähle diese Variante, wenn du in einer Organisation automatisch Teams anlegen und die Läufer in diese Importieren willst. <br/>
> Wähle diese Variante, wenn du Läufer direkt in eine Organisation importieren willst.
Wenn in der Datei bei einer Läufer:in kein Team angegeben ist wird sie direkt in die Organisation importiert.
Ist ein Team angegeben wird das Team in der Organisation gesucht und neu Angelegt, wenn es nicht gefunden wurde - danach wird die Läufer:in in das Team importiert.
### Aus der Organisationsübersicht
1. Öffne im Läufersystem die Seite `Orgs`
2. Klicke oben auf `Läufer importieren`
3. Klicke auf `Datei auswählen` und wähle die Datei aus, aus der du Läufer:innen importieren willst
4. Dir wird eine Übersicht aller Läufer:innen angezeigt, die in der Datei gefunden wurden - überprüfe alle Läufer:innen auf Korrektheit
5. Wähle oben die Organisation aus, in die die Läufer:innen importiert werden sollen
6. Klicke unten auf `Läufer importieren`, um die Läufer:innen zu importieren oder `Abbrechen`, um den Import abzubrechen
7. Die Läufer werden nun in die Organisation importiert
### Aus der Organisationsdetailansicht
1. Öffne im Läufersystem die Seite `Orgs`
2. Klicke bei der gewünschten Organisation auf den `Details` Button
3. Klicke oben auf `Läufer importieren`
4. Klicke auf `Datei auswählen` und wähle die Datei aus, aus der du Läufer:innen importieren willst
5. Dir wird eine Übersicht aller Läufer:innen angezeigt, die in der Datei gefunden wurden - überprüfe alle Läufer:innen auf Korrektheit
6. Wähle oben die Organisation aus, in die die Läufer:innen importiert werden sollen
7. Klicke unten auf `Läufer importieren`, um die Läufer:innen zu importieren oder `Abbrechen`, um den Import abzubrechen
8. Die Läufer werden nun in die Organisation importiert
### Aus der Läuferübersicht
1. Öffne im Läufersystem die Seite `Läufer`
2. Klicke oben auf `Läufer importieren`
3. Klicke auf `Datei auswählen` und wähle die Datei aus, aus der du Läufer:innen importieren willst
4. Dir wird eine Übersicht aller Läufer:innen angezeigt, die in der Datei gefunden wurden - überprüfe alle Läufer:innen auf Korrektheit
5. Wähle oben die Organisation (Hat kein `>` im Namen) aus, in die die Läufer:innen importiert werden sollen
6. Klicke unten auf `Läufer importieren`, um die Läufer:innen zu importieren oder `Abbrechen`, um den Import abzubrechen
7. Die Läufer werden nun in die Organisation importiert
## Import in ein Team
> Wähle diese Variante, wenn du Läufer direkt in ein Team importieren willst.
Wenn in der Datei bei einer Läufer:in ein Team angegeben ist wird dieses ignoriert und mit dem gewählten Team überschrieben..
### Aus der Teamdetailansicht
1. Öffne im Läufersystem die Seite `Teams`
2. Klicke bei de, gewünschten Team auf den `Details` Button
3. Klicke oben auf `Läufer importieren`
4. Klicke auf `Datei auswählen` und wähle die Datei aus, aus der du Läufer:innen importieren willst
5. Dir wird eine Übersicht aller Läufer:innen angezeigt, die in der Datei gefunden wurden - überprüfe alle Läufer:innen auf Korrektheit
6. Wähle oben das Team aus, in die die Läufer:innen importiert werden sollen
7. Klicke unten auf `Läufer importieren`, um die Läufer:innen zu importieren oder `Abbrechen`, um den Import abzubrechen
8. Die Läufer werden nun in das Team importiert
### Aus der Läuferübersicht
1. Öffne im Läufersystem die Seite `Läufer`
2. Klicke oben auf `Läufer importieren`
3. Klicke auf `Datei auswählen` und wähle die Datei aus, aus der du Läufer:innen importieren willst
4. Dir wird eine Übersicht aller Läufer:innen angezeigt, die in der Datei gefunden wurden - überprüfe alle Läufer:innen auf Korrektheit
5. Wähle oben das Team (Hat ein `>` im Namen) aus, in die die Läufer:innen importiert werden sollen
6. Klicke unten auf `Läufer importieren`, um die Läufer:innen zu importieren oder `Abbrechen`, um den Import abzubrechen
7. Die Läufer werden nun in das Team importiert

View File

@@ -1,54 +1,54 @@
# Läufer:innen
Läufer sind das Herzstück des Läufersystems.
Über sie werden Strecken erfasst und Spenden berechnet.
Läufer können einem [Team](./teams) oder einer [Organisation](./organizations) zugeordnet werden.
## Läuferübersicht
> Eine kurze Übersicht über die Funktionen der Läuferübersicht.
In der Läuferübersicht werden alle im System registrierten Läufer:innen aufgelistet.
Von hier aus kannst du einzelne Läufer:innen hinzufügen, bearbeiten oder löschen.
Um die Suche nach einzelnen Läufer:innen zu erleichtern gibt es einen Filter nach Teams und Organisationen.
Wenn du mehrere Teams/Organisationen in den Filter packst werden dir alle Läufer:innen angezeigt, die in einem/r der Teams/Organisationen registriert sind angezeigt.
Ebenso gibt es eine Suchfunktion mit Hilfe derer du nach Läufernamen, -IDs und Gruppen (Teams/Organisationen) suchen kannst.
Du eine ID eingibst wird dir nur die Läufer:in mit genau der ID angezeigt, solltest du alle Läufer:innen sehen wollen, deren IDs mit deiner Eingabe beginnen stelle ein `*` ans Ende der ID.
Beispiele:
* `Peter` -> Alle Läufer:innen mit Peter im Namen
* `Gymnasium` -> Alle Läufer:innen, die in einer Gruppe mit dem Namen Gymnasium sind
* `421` -> Die Läufer:in mit der ID 421
* `42*` -> Alle Läufer:innen, deren ID mit 42 beginnt
## Aktionen
### Anlegen
> Achtung: Um eine Läufer:in anzulegen musst du vorher eine Organisation und/oder ein Team anlegen.
Um eine neue Läufer:in anzulegen öffne im Läufersystem die Seite `Läufer`.
Über den Button `Läufer:in hinzufügen` kannst du eine neue Läufer:in anlegen.
Dabei musst du einen Vornamen, Nachnamen und die Gruppe (Team/Organisation) festlegen.
Zusätzlich kannst du einen Mittelnamen(2. Vornamen), eine Telefonnummer und eine E-Mail Adresse angeben.
### Bearbeiten
Um eine Läufer:in zu bearbeiten kannst du in der Läuferübersicht den Button `Details` für die gewünschte Läufer:in anklicken.
In der Übersicht für die Läufer:in kannst du nun den Vornamen, Mittelnamen, Nachnamen, sowie die Telefonnummer, E-Mail Adresse und Gruppe bearbeiten.
Wenn du fertig bist klick einfach auf `Änderungen speichern`.
### Löschen
> Du kannst eine Läufer:in entweder aus der Läuferübersicht oder der Läuferdetailansicht löschen.
### In der Läuferübersicht
Klick bei der gewünschten Läufer:in auf den Button `Löschen`.
Daraufhin wirst du gefragt, ob du die Läufer:in wirklich löschen oder abbrechen willst.
### In der Läuferdetailansicht
Klick bei der gewünschten Läufer:in auf den Button `Details`.
Oben auf der Seite gibt es jetzt den Knopf `Läufer:in löschen`.
Daraufhin wirst du gefragt, ob du die Läufer:in wirklich löschen oder abbrechen willst.
## Import
> Die Importanleitung findest du [hier](./runner_import)
# Läufer:innen
Läufer sind das Herzstück des Läufersystems.
Über sie werden Strecken erfasst und Spenden berechnet.
Läufer können einem <router-link to="./teams">Team</router-link> oder einer <router-link to="./organizations">Organisation</router-link> zugeordnet werden.
## Läuferübersicht
> Eine kurze Übersicht über die Funktionen der Läuferübersicht.
In der Läuferübersicht werden alle im System registrierten Läufer:innen aufgelistet.
Von hier aus kannst du einzelne Läufer:innen hinzufügen, bearbeiten oder löschen.
Um die Suche nach einzelnen Läufer:innen zu erleichtern gibt es einen Filter nach Teams und Organisationen.
Wenn du mehrere Teams/Organisationen in den Filter packst werden dir alle Läufer:innen angezeigt, die in einem/r der Teams/Organisationen registriert sind angezeigt.
Ebenso gibt es eine Suchfunktion mit Hilfe derer du nach Läufernamen, -IDs und Gruppen (Teams/Organisationen) suchen kannst.
Du eine ID eingibst wird dir nur die Läufer:in mit genau der ID angezeigt, solltest du alle Läufer:innen sehen wollen, deren IDs mit deiner Eingabe beginnen stelle ein `*` ans Ende der ID.
Beispiele:
* `Peter` -> Alle Läufer:innen mit Peter im Namen
* `Gymnasium` -> Alle Läufer:innen, die in einer Gruppe mit dem Namen Gymnasium sind
* `421` -> Die Läufer:in mit der ID 421
* `42*` -> Alle Läufer:innen, deren ID mit 42 beginnt
## Aktionen
### Anlegen
> Achtung: Um eine Läufer:in anzulegen musst du vorher eine Organisation und/oder ein Team anlegen.
Um eine neue Läufer:in anzulegen öffne im Läufersystem die Seite `Läufer`.
Über den Button `Läufer:in hinzufügen` kannst du eine neue Läufer:in anlegen.
Dabei musst du einen Vornamen, Nachnamen und die Gruppe (Team/Organisation) festlegen.
Zusätzlich kannst du einen Mittelnamen(2. Vornamen), eine Telefonnummer und eine E-Mail Adresse angeben.
### Bearbeiten
Um eine Läufer:in zu bearbeiten kannst du in der Läuferübersicht den Button `Details` für die gewünschte Läufer:in anklicken.
In der Übersicht für die Läufer:in kannst du nun den Vornamen, Mittelnamen, Nachnamen, sowie die Telefonnummer, E-Mail Adresse und Gruppe bearbeiten.
Wenn du fertig bist klick einfach auf `Änderungen speichern`.
### Löschen
> Du kannst eine Läufer:in entweder aus der Läuferübersicht oder der Läuferdetailansicht löschen.
### In der Läuferübersicht
Klick bei der gewünschten Läufer:in auf den Button `Löschen`.
Daraufhin wirst du gefragt, ob du die Läufer:in wirklich löschen oder abbrechen willst.
### In der Läuferdetailansicht
Klick bei der gewünschten Läufer:in auf den Button `Details`.
Oben auf der Seite gibt es jetzt den Knopf `Läufer:in löschen`.
Daraufhin wirst du gefragt, ob du die Läufer:in wirklich löschen oder abbrechen willst.
## Import
> Die Importanleitung findest du <router-link to="./runner_import">hier</router-link>

View File

@@ -1,13 +1,13 @@
# Scans
Scans sind das Herzstück der Kilometerzählung - sie verbinden [Läufer:innen](./runners) mit zurückgeleter Distantz.
Scans sind das Herzstück der Kilometerzählung - sie verbinden <router-link to="./runners">Läufer:innen</router-link> mit zurückgeleter Distantz.
Es gibt zwei Arten von Scans im System: "Festdistanzscans" und "Trackscans"
Festdistanzscans können nur von Benutzer:innen im Läufersystem angelegt werden und weisen einer Läufer:in eine feste Distanz zu.
Dies ist besonders nützlich, wenn Läufer:innen Karten auf halber Strecke verloren haben oder aus anderen Gründen einen Distanzbonus bekommen.
Trackscans hingegen können nur dadurch erzeugt werden, dass eine Scannerstation den Code der Karte einer Läufer:in scannen und so einen neuen Scan anlegen.
Die Trackscans sind immer Fest mit einer Läufer:in und einem [Track](./tracks) verbunden, von dem die Distanz abgeleitet wird.
Die Trackscans sind immer Fest mit einer Läufer:in und einem <router-link to="./tracks">Track</router-link> verbunden, von dem die Distanz abgeleitet wird.
## Anlegen
> Du kannst im Läufersystem nur Festdistanzscans anlegen.

View File

@@ -1,13 +1,14 @@
# Scannerstationen
> Die Doku zur Nutzung der <router-link to="../scanstations">Scannerstationen gibt es hier</router-link>
Scannerstationen sind erstellen Scans für Läuferkarten auf [Tracks](./tracks).
Scannerstationen sind erstellen Scans für Läuferkarten auf <router-link to="./tracks">Tracks</router-link>.
Die Scannerstationen sind in realen Welt üblicherweise Laptops mit Barcode-Scannern und einer speziellen Software.
Die Scannerstationen im Läufersystem dienen dazu die "realen" Scannerstationen anzumelden und einem Track zuzuweisen.
Dieser Teil der Dokumentation befasst sich nur mit den Scannerstationen im Läufersystem!
## Anlegen
> Bevor du eine Scannerstation anlegen kannst musst du erst einen [Track](./tracks) anlegen, zu dem sie gehört.
> Bevor du eine Scannerstation anlegen kannst musst du erst einen <router-link to="./tracks">Track</router-link> anlegen, zu dem sie gehört.
> Du bekommst beim Erstellen einer Scanenrstation einen Token (Code/Key) für diese - bewahre ihn gut auf!
Um eine neue Scannerstation anzulegen öffne im Läufersystem die Seite `Scannerstationen`.

View File

@@ -1,6 +1,6 @@
# Sponsoring-Erklärungen
Das System kann für beliebige [Läufer:innen](./runners), [Teams](./teams) oder ganze [Organisationen](./organizations) Sponsoring-Erklärungen generieren.
Das System kann für beliebige <router-link to="./runners">Läufer:innen</router-link>, <router-link to="./teams">Teams</router-link> oder ganze <router-link to="./organizations">Organisationen</router-link> Sponsoring-Erklärungen generieren.
Die Sponsoring-Erklärungen sind dabei aktuell auf Deutsch und Englisch verfügbar.
Die Texte auf dem Sponsoring-Erklärungen und die Anzahl von Erklärungen/Läufer:in können deine Admins anpassen.

View File

@@ -1,35 +1,35 @@
# Teams
Läuferteams sind die Untergruppen des Gruppensystems für Läufer:innen.
Ein Team kann eine Klasse, Abteilung, Gruppe oder ähnliches sein.
Läufer:innen können einem Team zugeordnet werden, das wiederum zu einer Organisation gehört (mehr zu Organisationen findest du [hier](./organizations)).
Einer/m Organisation/Team kann ein Kontakt zugeordnet werden, mehr dazu findest du [hier](./contacts).
## Anlegen
> Achtung: Um ein Team anzulegen musst du vorher die Mutter-Organisation für das Team anlegen.
Um ein neues Team anzulegen öffne im Läufersystem die Seite `Teams`.
Über den Button `Team erstellen` kannst du ein neues Team erstellen.
Dabei kannst du dem Team einen Namen geben und auswählen, zu welcher Organisation das Team gehört.
## Bearbeiten
Um ein Team zu bearbeiten kannst du in der Teamübersicht den Button `Details` für das gewünschte Team anklicken.
In der Übersicht für dieses Team kannst du nun den Namen, die Mutter-Organisation und den Kontakt des Teams ändern.
Wenn du fertig bist klick einfach auf `Änderungen speichern`.
## Löschen
> Du kannst ein Team entweder aus der Teamübersicht oder der Teamdetailansicht löschen.
### In der Teamübersicht
Klick bei dem gewünschten Team auf den Button `Löschen`.
Daraufhin wirst du gefragt, ob du das Team wirklich löschen oder abbrechen willst.
### In der Teamdetailansicht
Klick bei dem gewünschten Team auf den Button `Details`.
Oben auf der Seite gibt es jetzt den Knopf `Team löschen`.
Daraufhin wirst du gefragt, ob du das Team wirklich löschen oder abbrechen willst.
### Teams mit Läufern
Sollte das Team noch Läufer haben geht nach dem Bestätigen der Löschung nochmal eine Warnung auf.
# Teams
Läuferteams sind die Untergruppen des Gruppensystems für Läufer:innen.
Ein Team kann eine Klasse, Abteilung, Gruppe oder ähnliches sein.
Läufer:innen können einem Team zugeordnet werden, das wiederum zu einer Organisation gehört (mehr zu Organisationen findest du <router-link to="./organizations">hier</router-link>).
Einer/m Organisation/Team kann ein Kontakt zugeordnet werden, mehr dazu findest du <router-link to="./contacts">hier</router-link>.
## Anlegen
> Achtung: Um ein Team anzulegen musst du vorher die Mutter-Organisation für das Team anlegen.
Um ein neues Team anzulegen öffne im Läufersystem die Seite `Teams`.
Über den Button `Team erstellen` kannst du ein neues Team erstellen.
Dabei kannst du dem Team einen Namen geben und auswählen, zu welcher Organisation das Team gehört.
## Bearbeiten
Um ein Team zu bearbeiten kannst du in der Teamübersicht den Button `Details` für das gewünschte Team anklicken.
In der Übersicht für dieses Team kannst du nun den Namen, die Mutter-Organisation und den Kontakt des Teams ändern.
Wenn du fertig bist klick einfach auf `Änderungen speichern`.
## Löschen
> Du kannst ein Team entweder aus der Teamübersicht oder der Teamdetailansicht löschen.
### In der Teamübersicht
Klick bei dem gewünschten Team auf den Button `Löschen`.
Daraufhin wirst du gefragt, ob du das Team wirklich löschen oder abbrechen willst.
### In der Teamdetailansicht
Klick bei dem gewünschten Team auf den Button `Details`.
Oben auf der Seite gibt es jetzt den Knopf `Team löschen`.
Daraufhin wirst du gefragt, ob du das Team wirklich löschen oder abbrechen willst.
### Teams mit Läufern
Sollte das Team noch Läufer haben geht nach dem Bestätigen der Löschung nochmal eine Warnung auf.
Hier musst du nochmal die Löschung inklusive aller Läufer bestätigen, alternativ kannst du auch Abbrechen.

114
docusaurus.config.js Normal file
View File

@@ -0,0 +1,114 @@
// @ts-check
// `@type` JSDoc annotations allow editor autocompletion and type checking
// (when paired with `@ts-check`).
// There are various equivalent ways to declare your Docusaurus config.
// See: https://docusaurus.io/docs/api/docusaurus-config
import {themes as prismThemes} from 'prism-react-renderer';
/** @type {import('@docusaurus/types').Config} */
const config = {
title: 'LfK! Docs',
tagline: 'LfK! Dokumentation',
favicon: 'img/favicon.ico',
// Set the production url of your site here
url: 'https://your-docusaurus-site.example.com',
// Set the /<baseUrl>/ pathname under which your site is served
// For GitHub pages deployment, it is often '/<projectName>/'
baseUrl: '/',
onBrokenLinks: 'throw',
onBrokenMarkdownLinks: 'warn',
// Even if you don't use internationalization, you can use this field to set
// useful metadata like html lang. For example, if your site is Chinese, you
// may want to replace "en" with "zh-Hans".
i18n: {
defaultLocale: 'de',
locales: ['de'],
},
presets: [
[
'classic',
/** @type {import('@docusaurus/preset-classic').Options} */
({
docs: {
sidebarPath: './sidebars.js',
},
blog: {
showReadingTime: true,
},
theme: {
customCss: './src/css/custom.css',
},
}),
],
],
themeConfig:
/** @type {import('@docusaurus/preset-classic').ThemeConfig} */
({
// Replace with your project's social card
image: 'img/docusaurus-social-card.jpg',
navbar: {
title: 'LfK! Docs',
logo: {
alt: 'LfK! Docs Logo',
src: 'img/logo.svg',
},
items: [
{
type: 'docSidebar',
sidebarId: 'tutorialSidebar',
position: 'left',
label: 'Docs',
},
],
},
footer: {
style: 'dark',
links: [
{
title: 'Docs',
items: [
{
label: 'Docs',
to: '/docs/admins',
},
],
},
{
title: 'Legal',
items: [
{
label: 'Imprint',
href: 'https://odit.services/imprint/',
},
{
label: 'Privacy',
href: 'https://odit.services/privacy/',
},
],
},
{
title: 'More',
items: [
{
label: 'Code',
href: 'https://git.odit.services/lfk/',
},
],
},
],
copyright: `Copyright © ${new Date().getFullYear()} ODIT.Services`,
},
prism: {
theme: prismThemes.github,
darkTheme: prismThemes.dracula,
},
}),
};
export default config;

View File

@@ -1,5 +1,5 @@
# vuepress-plugin-flexsearch
**Author**: [object Object]
**Author**: Ahmad Mostafa
**Repo**: https://github.com/z3by/vuepress-plugin-flexsearch
**License**: MIT
**Description**: Next-Generation full text search library for Vuepress
@@ -84,7 +84,7 @@ OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# vuepress
**Author**: Evan You
**Repo**: git+https://github.com/vuejs/vuepress.git
**Repo**: https://github.com/vuejs/vuepress
**License**: MIT
**Description**: Minimalistic doc generator with Vue component based layout system
## License Text

View File

@@ -1,8 +1,7 @@
{
"name": "@odit/lfk-docs",
"version": "0.0.1",
"description": "The documentation for the LfK! 'Läufersystem'.",
"main": "index.js",
"name": "@lfk/docs",
"version": "1.0.0",
"license": "CC-BY-NC-SA-4.0",
"author": {
"name": "ODIT.Services",
"email": "info@odit.services",
@@ -25,17 +24,39 @@
"url": "git@git.odit.services:lfk/docs.git"
},
"scripts": {
"dev": "vuepress dev src",
"build": "vuepress build src",
"licenses:export": "license-exporter --markdown"
},
"license": "CC-BY-NC-SA-4.0",
"devDependencies": {
"@odit/license-exporter": "^0.0.10",
"vuepress": "^1.5.3"
"docusaurus": "docusaurus",
"dev": "docusaurus start",
"build": "docusaurus build",
"swizzle": "docusaurus swizzle",
"deploy": "docusaurus deploy",
"clear": "docusaurus clear",
"serve": "docusaurus serve",
"write-translations": "docusaurus write-translations",
"write-heading-ids": "docusaurus write-heading-ids"
},
"dependencies": {
"vuepress-plugin-flexsearch": "^0.1.0",
"vuepress-theme-default-prefers-color-scheme": "^2.0.0"
"@docusaurus/core": "3.0.0",
"@docusaurus/preset-classic": "3.0.0",
"@mdx-js/react": "3.0.0",
"clsx": "1.2.1",
"prism-react-renderer": "2.1.0",
"react": "18.0.0",
"react-dom": "18.0.0"
},
"devDependencies": {
"@docusaurus/module-type-aliases": "3.0.0",
"@docusaurus/types": "3.0.0"
},
"browserslist": {
"production": [
">0.5%",
"not dead",
"not op_mini all"
],
"development": [
"last 3 chrome version",
"last 3 firefox version",
"last 5 safari version"
]
}
}

9219
pnpm-lock.yaml generated Normal file

File diff suppressed because it is too large Load Diff

33
sidebars.js Normal file
View File

@@ -0,0 +1,33 @@
/**
* Creating a sidebar enables you to:
- create an ordered group of docs
- render a sidebar for each doc of that group
- provide next/previous navigation
The sidebars can be generated from the filesystem, or explicitly defined here.
Create as many sidebars as you want.
*/
// @ts-check
/** @type {import('@docusaurus/plugin-content-docs').SidebarsConfig} */
const sidebars = {
// By default, Docusaurus generates a sidebar from the docs folder structure
tutorialSidebar: [{type: 'autogenerated', dirName: '.'}],
// But you can create a sidebar manually
/*
tutorialSidebar: [
'intro',
'hello',
{
type: 'category',
label: 'Tutorial',
items: ['tutorial-basics/create-a-document'],
},
],
*/
};
export default sidebars;

View File

@@ -1,15 +0,0 @@
<template>
<p class="demo">
{{ msg }}
</p>
</template>
<script>
export default {
data () {
return {
msg: 'Hello this is <Foo-Bar>'
}
}
}
</script>

View File

@@ -1,3 +0,0 @@
<template>
<p class="demo">This is another component</p>
</template>

View File

@@ -1,15 +0,0 @@
<template>
<p class="demo">
{{ msg }}
</p>
</template>
<script>
export default {
data() {
return {
msg: 'Hello this is <demo-component>'
}
}
}
</script>

View File

@@ -1,146 +0,0 @@
const { description } = require('../../package')
module.exports = {
locales: {
'/': {
lang: 'de-DE',
title: 'LfK! Dokumentation',
description: 'Dokumentation für das Lauf für Kaya! Läufersystem'
},
'/en/': {
lang: 'en-US',
title: 'LfK! Documentation',
description: 'The official documentation for the LfK! "Läufersystem"'
}
},
head: [
['meta', { name: 'theme-color', content: '#3eaf7c' }],
['meta', { name: 'apple-mobile-web-app-capable', content: 'yes' }],
['meta', { name: 'apple-mobile-web-app-status-bar-style', content: 'black' }]
],
theme: 'default-prefers-color-scheme',
themeConfig: {
repo: '',
editLinks: false,
docsDir: '',
editLinkText: '',
lastUpdated: false,
locales: {
'/': {
selectText: 'Sprachen',
label: 'Deutsch (German)',
nav: [
{
text: 'Für Nutzer',
link: '/users/',
},
{
text: 'Für Admins',
link: '/admins/'
},
{
text: 'Über den Selfservice',
link: '/selfservice/'
},
{
text: 'Scannerstationen',
link: '/scanstations/'
},
{
text: 'Source Code',
link: 'https://git.odit.services/lfk'
}
],
sidebar: {
'/users/': [
{
title: 'Nutzerdokumentation',
collapsable: false,
children: [
'',
'accounts',
'organizations',
'teams',
'runners',
'runner_import',
'donors',
'donations',
'cards',
'sponsoring_contracts',
'tracks',
'scans',
'scanstations'
]
}
],
'/admins/': [
{
title: 'Administrative Dokumentation',
collapsable: false,
children: [
'',
'quickstart',
'installation',
'users',
'usergroups'
]
}
],
'/selfservice/': [
{
title: 'Selfservice Dokumentation',
collapsable: false,
children: [
'',
'org_selfservice'
]
}
],
}
},
'/en/': {
selectText: 'Languages',
label: 'English',
nav: [
{
text: 'For Users',
link: '/en/users/',
},
{
text: 'For Admins',
link: '/en/admins/'
},
{
text: 'Source Code',
link: 'https://git.odit.services/lfk'
}
],
sidebar: {
'/en/users/': [
{
title: 'User documentation',
collapsable: false,
children: [
''
]
}
],
'/en/admins/': [
{
title: 'Admin documentation',
collapsable: false,
children: [
''
]
}
],
}
}
}
},
plugins: [
'@vuepress/plugin-back-to-top',
'@vuepress/plugin-medium-zoom',
'flexsearch'
]
}

View File

@@ -1,14 +0,0 @@
/**
* Client app enhancement file.
*
* https://v1.vuepress.vuejs.org/guide/basic-config.html#app-level-enhancements
*/
export default ({
Vue, // the version of Vue being used in the VuePress app
options, // the options for the root Vue instance
router, // the router instance for the app
siteData // site metadata
}) => {
// ...apply enhancements for the site.
}

View File

@@ -1,8 +0,0 @@
/**
* Custom Styles here.
*
* refhttps://v1.vuepress.vuejs.org/config/#index-styl
*/
.home .hero img
max-width 450px!important

View File

@@ -1,10 +0,0 @@
/**
* Custom palette here.
*
* refhttps://v1.vuepress.vuejs.org/zh/config/#palette-styl
*/
$accentColor = #3eaf7c
$textColor = #2c3e50
$borderColor = #eaecef
$codeBgColor = #282c34

View File

@@ -1,11 +0,0 @@
# Admins
Dieser Teil der Dokumentation befasst sich mit der Installation, Konfiguration und Bedienung des Läufersystems für normale Admins.
Solltest du an der Bedienung für normale Nutzer interessiert sein schau doch mal in den [Nutzer](../users) Bereich.
## FAQ
> Ein paar der meist gestellten Fragen vorab
### Warum sehe ich eine Seite nicht?
Nutzer sehen nur die Seiten im System, für die sie Berechtigungen haben.
Solltest du eine Seite nicht sehen bist du vermutlich nicht voll als Admin berechtigt.

View File

@@ -1 +0,0 @@
# Installation

View File

@@ -0,0 +1,11 @@
.features {
display: flex;
align-items: center;
padding: 2rem 0;
width: 100%;
}
.featureSvg {
height: 200px;
width: 200px;
}

30
src/css/custom.css Normal file
View File

@@ -0,0 +1,30 @@
/**
* Any CSS included here will be global. The classic template
* bundles Infima by default. Infima is a CSS framework designed to
* work well for content-centric websites.
*/
/* You can override the default Infima variables here. */
:root {
--ifm-color-primary: #2e8555;
--ifm-color-primary-dark: #29784c;
--ifm-color-primary-darker: #277148;
--ifm-color-primary-darkest: #205d3b;
--ifm-color-primary-light: #33925d;
--ifm-color-primary-lighter: #359962;
--ifm-color-primary-lightest: #3cad6e;
--ifm-code-font-size: 95%;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.1);
}
/* For readability concerns, you should choose a lighter palette in dark mode. */
[data-theme='dark'] {
--ifm-color-primary: #25c2a0;
--ifm-color-primary-dark: #21af90;
--ifm-color-primary-darker: #1fa588;
--ifm-color-primary-darkest: #1a8870;
--ifm-color-primary-light: #29d5b0;
--ifm-color-primary-lighter: #32d8b4;
--ifm-color-primary-lightest: #4fddbf;
--docusaurus-highlighted-code-line-bg: rgba(0, 0, 0, 0.3);
}

View File

@@ -1,3 +0,0 @@
# Admins
TODO:

View File

@@ -1,15 +0,0 @@
---
home: true
heroImage: /logo.png
tagline: The documentation for the LfK! "Läufersystem".
actionText: Quickstart for users →
actionLink: ./users/
# features:
# - title: Feature 1 Title
# details: Feature 1 Description
# - title: Feature 2 Title
# details: Feature 2 Description
# - title: Feature 3 Title
# details: Feature 3 Description
footer: Made by ODIT.Services with ❤️
---

View File

@@ -1,11 +0,0 @@
# Introduction
This part of the documentation describes the interaction with the system for normal users.
If you're interested in installing, configuring or administrating the system take a look at the [admin](../admins) section.
## FAQ
> A couple of frequently asked questiones.
### Why can't i see the page XY?
Users can only see pages if they have the right permissions.
If you can't view a page that you need to, please contact your administrator.

View File

@@ -1,15 +0,0 @@
---
home: true
heroImage: /logo.png
tagline: Die Dokumentation für das LfK! Läufersystem
actionText: Schnellstart für Nutzer →
actionLink: /users/
# features:
# - title: Feature 1 Title
# details: Feature 1 Description
# - title: Feature 2 Title
# details: Feature 2 Description
# - title: Feature 3 Title
# details: Feature 3 Description
footer: Made by ODIT.Services with ❤️
---

31
src/pages/index.js Normal file
View File

@@ -0,0 +1,31 @@
import clsx from 'clsx';
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
import Layout from '@theme/Layout';
import Heading from '@theme/Heading';
import styles from './index.module.css';
function HomepageHeader() {
const {siteConfig} = useDocusaurusContext();
return (
<header className={clsx('hero hero--primary', styles.heroBanner)}>
<div className="container">
<Heading as="h1" className="hero__title">
{siteConfig.title}
</Heading>
<p className="hero__subtitle">{siteConfig.tagline}</p>
</div>
</header>
);
}
export default function Home() {
const {siteConfig} = useDocusaurusContext();
return (
<Layout
title={`Hello from ${siteConfig.title}`}
description="Description will go into a meta tag in <head />">
<HomepageHeader />
</Layout>
);
}

View File

@@ -0,0 +1,23 @@
/**
* CSS files with the .module.css suffix will be treated as CSS modules
* and scoped locally.
*/
.heroBanner {
padding: 4rem 0;
text-align: center;
position: relative;
overflow: hidden;
}
@media screen and (max-width: 996px) {
.heroBanner {
padding: 2rem;
}
}
.buttons {
display: flex;
align-items: center;
justify-content: center;
}

View File

@@ -0,0 +1,7 @@
---
title: Markdown page example
---
# Markdown page example
You don't need React to write simple standalone pages.

0
static/.nojekyll Normal file
View File

Binary file not shown.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 152 KiB

View File

Before

Width:  |  Height:  |  Size: 65 KiB

After

Width:  |  Height:  |  Size: 65 KiB

View File

Before

Width:  |  Height:  |  Size: 77 KiB

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 54 KiB

BIN
static/img/docusaurus.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

BIN
static/img/favicon.ico Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

1
static/img/logo.svg Normal file

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 6.3 KiB

View File

@@ -0,0 +1,171 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1088" height="687.962" viewBox="0 0 1088 687.962">
<title>Easy to Use</title>
<g id="Group_12" data-name="Group 12" transform="translate(-57 -56)">
<g id="Group_11" data-name="Group 11" transform="translate(57 56)">
<path id="Path_83" data-name="Path 83" d="M1017.81,560.461c-5.27,45.15-16.22,81.4-31.25,110.31-20,38.52-54.21,54.04-84.77,70.28a193.275,193.275,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.282,657.282,0,0,0-104.09-13.16q-14.97-.675-29.97-.67c-15.42.02-293.07,5.29-360.67-131.57-16.69-33.76-28.13-75-32.24-125.27-11.63-142.12,52.29-235.46,134.74-296.47,155.97-115.41,369.76-110.57,523.43,7.88C941.15,276.621,1036.99,396.031,1017.81,560.461Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_84" data-name="Path 84" d="M986.56,670.771c-20,38.52-47.21,64.04-77.77,80.28a193.272,193.272,0,0,1-27.46,11.94c-55.61,19.3-117.85,14.18-166.74,3.99a657.3,657.3,0,0,0-104.09-13.16q-14.97-.675-29.97-.67-23.13.03-46.25,1.72c-100.17,7.36-253.82-6.43-321.42-143.29L382,283.981,444.95,445.6l20.09,51.59,55.37-75.98L549,381.981l130.2,149.27,36.8-81.27L970.78,657.9l14.21,11.59Z" transform="translate(-56 -106.019)" fill="#f2f2f2"/>
<path id="Path_85" data-name="Path 85" d="M302,282.962l26-57,36,83-31-60Z" opacity="0.1"/>
<path id="Path_86" data-name="Path 86" d="M610.5,753.821q-14.97-.675-29.97-.67L465.04,497.191Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<path id="Path_87" data-name="Path 87" d="M464.411,315.191,493,292.962l130,150-132-128Z" opacity="0.1"/>
<path id="Path_88" data-name="Path 88" d="M908.79,751.051a193.265,193.265,0,0,1-27.46,11.94L679.2,531.251Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<circle id="Ellipse_11" data-name="Ellipse 11" cx="3" cy="3" r="3" transform="translate(479 98.962)" fill="#f2f2f2"/>
<circle id="Ellipse_12" data-name="Ellipse 12" cx="3" cy="3" r="3" transform="translate(396 201.962)" fill="#f2f2f2"/>
<circle id="Ellipse_13" data-name="Ellipse 13" cx="2" cy="2" r="2" transform="translate(600 220.962)" fill="#f2f2f2"/>
<circle id="Ellipse_14" data-name="Ellipse 14" cx="2" cy="2" r="2" transform="translate(180 265.962)" fill="#f2f2f2"/>
<circle id="Ellipse_15" data-name="Ellipse 15" cx="2" cy="2" r="2" transform="translate(612 96.962)" fill="#f2f2f2"/>
<circle id="Ellipse_16" data-name="Ellipse 16" cx="2" cy="2" r="2" transform="translate(736 192.962)" fill="#f2f2f2"/>
<circle id="Ellipse_17" data-name="Ellipse 17" cx="2" cy="2" r="2" transform="translate(858 344.962)" fill="#f2f2f2"/>
<path id="Path_89" data-name="Path 89" d="M306,121.222h-2.76v-2.76h-1.48v2.76H299V122.7h2.76v2.759h1.48V122.7H306Z" fill="#f2f2f2"/>
<path id="Path_90" data-name="Path 90" d="M848,424.222h-2.76v-2.76h-1.48v2.76H841V425.7h2.76v2.759h1.48V425.7H848Z" fill="#f2f2f2"/>
<path id="Path_91" data-name="Path 91" d="M1144,719.981c0,16.569-243.557,74-544,74s-544-57.431-544-74,243.557,14,544,14S1144,703.413,1144,719.981Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_92" data-name="Path 92" d="M1144,719.981c0,16.569-243.557,74-544,74s-544-57.431-544-74,243.557,14,544,14S1144,703.413,1144,719.981Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<ellipse id="Ellipse_18" data-name="Ellipse 18" cx="544" cy="30" rx="544" ry="30" transform="translate(0 583.962)" fill="#3f3d56"/>
<path id="Path_93" data-name="Path 93" d="M624,677.981c0,33.137-14.775,24-33,24s-33,9.137-33-24,33-96,33-96S624,644.844,624,677.981Z" transform="translate(-56 -106.019)" fill="#ff6584"/>
<path id="Path_94" data-name="Path 94" d="M606,690.66c0,15.062-6.716,10.909-15,10.909s-15,4.153-15-10.909,15-43.636,15-43.636S606,675.6,606,690.66Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<rect id="Rectangle_97" data-name="Rectangle 97" width="92" height="18" rx="9" transform="translate(489 604.962)" fill="#2f2e41"/>
<rect id="Rectangle_98" data-name="Rectangle 98" width="92" height="18" rx="9" transform="translate(489 586.962)" fill="#2f2e41"/>
<path id="Path_95" data-name="Path 95" d="M193,596.547c0,55.343,34.719,100.126,77.626,100.126" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_96" data-name="Path 96" d="M270.626,696.673c0-55.965,38.745-101.251,86.626-101.251" transform="translate(-56 -106.019)" fill="#6c63ff"/>
<path id="Path_97" data-name="Path 97" d="M221.125,601.564c0,52.57,22.14,95.109,49.5,95.109" transform="translate(-56 -106.019)" fill="#6c63ff"/>
<path id="Path_98" data-name="Path 98" d="M270.626,696.673c0-71.511,44.783-129.377,100.126-129.377" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_99" data-name="Path 99" d="M254.3,697.379s11.009-.339,14.326-2.7,16.934-5.183,17.757-1.395,16.544,18.844,4.115,18.945-28.879-1.936-32.19-3.953S254.3,697.379,254.3,697.379Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_100" data-name="Path 100" d="M290.716,710.909c-12.429.1-28.879-1.936-32.19-3.953-2.522-1.536-3.527-7.048-3.863-9.591l-.368.014s.7,8.879,4.009,10.9,19.761,4.053,32.19,3.953c3.588-.029,4.827-1.305,4.759-3.2C294.755,710.174,293.386,710.887,290.716,710.909Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_101" data-name="Path 101" d="M777.429,633.081c0,38.029,23.857,68.8,53.341,68.8" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_102" data-name="Path 102" d="M830.769,701.882c0-38.456,26.623-69.575,59.525-69.575" transform="translate(-56 -106.019)" fill="#6c63ff"/>
<path id="Path_103" data-name="Path 103" d="M796.755,636.528c0,36.124,15.213,65.354,34.014,65.354" transform="translate(-56 -106.019)" fill="#6c63ff"/>
<path id="Path_104" data-name="Path 104" d="M830.769,701.882c0-49.139,30.773-88.9,68.8-88.9" transform="translate(-56 -106.019)" fill="#3f3d56"/>
<path id="Path_105" data-name="Path 105" d="M819.548,702.367s7.565-.233,9.844-1.856,11.636-3.562,12.2-.958,11.368,12.949,2.828,13.018-19.844-1.33-22.119-2.716S819.548,702.367,819.548,702.367Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_106" data-name="Path 106" d="M844.574,711.664c-8.54.069-19.844-1.33-22.119-2.716-1.733-1.056-2.423-4.843-2.654-6.59l-.253.01s.479,6.1,2.755,7.487,13.579,2.785,22.119,2.716c2.465-.02,3.317-.9,3.27-2.2C847.349,711.159,846.409,711.649,844.574,711.664Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_107" data-name="Path 107" d="M949.813,724.718s11.36-1.729,14.5-4.591,16.89-7.488,18.217-3.667,19.494,17.447,6.633,19.107-30.153,1.609-33.835-.065S949.813,724.718,949.813,724.718Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_108" data-name="Path 108" d="M989.228,734.173c-12.86,1.659-30.153,1.609-33.835-.065-2.8-1.275-4.535-6.858-5.2-9.45l-.379.061s1.833,9.109,5.516,10.783,20.975,1.725,33.835.065c3.712-.479,4.836-1.956,4.529-3.906C993.319,732.907,991.991,733.817,989.228,734.173Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_109" data-name="Path 109" d="M670.26,723.9s9.587-1.459,12.237-3.875,14.255-6.32,15.374-3.095,16.452,14.725,5.6,16.125-25.448,1.358-28.555-.055S670.26,723.9,670.26,723.9Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_110" data-name="Path 110" d="M703.524,731.875c-10.853,1.4-25.448,1.358-28.555-.055-2.367-1.076-3.827-5.788-4.39-7.976l-.32.051s1.547,7.687,4.655,9.1,17.7,1.456,28.555.055c3.133-.4,4.081-1.651,3.822-3.3C706.977,730.807,705.856,731.575,703.524,731.875Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_111" data-name="Path 111" d="M178.389,719.109s7.463-1.136,9.527-3.016,11.1-4.92,11.969-2.409,12.808,11.463,4.358,12.553-19.811,1.057-22.23-.043S178.389,719.109,178.389,719.109Z" transform="translate(-56 -106.019)" fill="#a8a8a8"/>
<path id="Path_112" data-name="Path 112" d="M204.285,725.321c-8.449,1.09-19.811,1.057-22.23-.043-1.842-.838-2.979-4.506-3.417-6.209l-.249.04s1.2,5.984,3.624,7.085,13.781,1.133,22.23.043c2.439-.315,3.177-1.285,2.976-2.566C206.973,724.489,206.1,725.087,204.285,725.321Z" transform="translate(-56 -106.019)" opacity="0.2"/>
<path id="Path_113" data-name="Path 113" d="M439.7,707.337c0,30.22-42.124,20.873-93.7,20.873s-93.074,9.347-93.074-20.873,42.118-36.793,93.694-36.793S439.7,677.117,439.7,707.337Z" transform="translate(-56 -106.019)" opacity="0.1"/>
<path id="Path_114" data-name="Path 114" d="M439.7,699.9c0,30.22-42.124,20.873-93.7,20.873s-93.074,9.347-93.074-20.873S295.04,663.1,346.616,663.1,439.7,669.676,439.7,699.9Z" transform="translate(-56 -106.019)" fill="#3f3d56"/>
</g>
<g id="docusaurus_keytar" transform="translate(312.271 493.733)">
<path id="Path_40" data-name="Path 40" d="M99,52h91.791V89.153H99Z" transform="translate(5.904 -14.001)" fill="#fff" fill-rule="evenodd"/>
<path id="Path_41" data-name="Path 41" d="M24.855,163.927A21.828,21.828,0,0,1,5.947,153a21.829,21.829,0,0,0,18.908,32.782H46.71V163.927Z" transform="translate(-3 -4.634)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_42" data-name="Path 42" d="M121.861,61.1l76.514-4.782V45.39A21.854,21.854,0,0,0,176.52,23.535H78.173L75.441,18.8a3.154,3.154,0,0,0-5.464,0l-2.732,4.732L64.513,18.8a3.154,3.154,0,0,0-5.464,0l-2.732,4.732L53.586,18.8a3.154,3.154,0,0,0-5.464,0L45.39,23.535c-.024,0-.046,0-.071,0l-4.526-4.525a3.153,3.153,0,0,0-5.276,1.414l-1.5,5.577-5.674-1.521a3.154,3.154,0,0,0-3.863,3.864L26,34.023l-5.575,1.494a3.155,3.155,0,0,0-1.416,5.278l4.526,4.526c0,.023,0,.046,0,.07L18.8,48.122a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,59.05a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,69.977a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,80.9a3.154,3.154,0,0,0,0,5.464L23.535,89.1,18.8,91.832a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,102.76a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,113.687a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,124.615a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,135.542a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,146.469a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,157.4a3.154,3.154,0,0,0,0,5.464l4.732,2.732L18.8,168.324a3.154,3.154,0,0,0,0,5.464l4.732,2.732A21.854,21.854,0,0,0,45.39,198.375H176.52a21.854,21.854,0,0,0,21.855-21.855V89.1l-76.514-4.782a11.632,11.632,0,0,1,0-23.219" transform="translate(-1.681 -17.226)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_43" data-name="Path 43" d="M143,186.71h32.782V143H143Z" transform="translate(9.984 -5.561)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_44" data-name="Path 44" d="M196.71,159.855a5.438,5.438,0,0,0-.7.07c-.042-.164-.081-.329-.127-.493a5.457,5.457,0,1,0-5.4-9.372q-.181-.185-.366-.367a5.454,5.454,0,1,0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467,5.467,0,1,0-10.788,0c-.162.042-.325.08-.486.126a5.457,5.457,0,1,0-9.384,5.4,21.843,21.843,0,1,0,36.421,21.02,5.452,5.452,0,1,0,.7-10.858" transform="translate(10.912 -6.025)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_45" data-name="Path 45" d="M153,124.855h32.782V103H153Z" transform="translate(10.912 -9.271)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_46" data-name="Path 46" d="M194.855,116.765a2.732,2.732,0,1,0,0-5.464,2.811,2.811,0,0,0-.349.035c-.022-.082-.04-.164-.063-.246a2.733,2.733,0,0,0-1.052-5.253,2.7,2.7,0,0,0-1.648.566q-.09-.093-.184-.184a2.7,2.7,0,0,0,.553-1.633,2.732,2.732,0,0,0-5.245-1.07,10.928,10.928,0,1,0,0,21.031,2.732,2.732,0,0,0,5.245-1.07,2.7,2.7,0,0,0-.553-1.633q.093-.09.184-.184a2.7,2.7,0,0,0,1.648.566,2.732,2.732,0,0,0,1.052-5.253c.023-.081.042-.164.063-.246a2.814,2.814,0,0,0,.349.035" transform="translate(12.767 -9.377)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_47" data-name="Path 47" d="M65.087,56.891a2.732,2.732,0,0,1-2.732-2.732,8.2,8.2,0,0,0-16.391,0,2.732,2.732,0,0,1-5.464,0,13.659,13.659,0,0,1,27.319,0,2.732,2.732,0,0,1-2.732,2.732" transform="translate(0.478 -15.068)" fill-rule="evenodd"/>
<path id="Path_48" data-name="Path 48" d="M103,191.347h65.565a21.854,21.854,0,0,0,21.855-21.855V93H124.855A21.854,21.854,0,0,0,103,114.855Z" transform="translate(6.275 -10.199)" fill="#ffff50" fill-rule="evenodd"/>
<path id="Path_49" data-name="Path 49" d="M173.216,129.787H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0,21.855H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186m0,21.855H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0-54.434H118.535a1.093,1.093,0,1,1,0-2.185h54.681a1.093,1.093,0,0,1,0,2.185m0,21.652H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186m0,21.855H118.535a1.093,1.093,0,1,1,0-2.186h54.681a1.093,1.093,0,0,1,0,2.186M189.585,61.611c-.013,0-.024-.007-.037-.005-3.377.115-4.974,3.492-6.384,6.472-1.471,3.114-2.608,5.139-4.473,5.078-2.064-.074-3.244-2.406-4.494-4.874-1.436-2.835-3.075-6.049-6.516-5.929-3.329.114-4.932,3.053-6.346,5.646-1.5,2.762-2.529,4.442-4.5,4.364-2.106-.076-3.225-1.972-4.52-4.167-1.444-2.443-3.112-5.191-6.487-5.1-3.272.113-4.879,2.606-6.3,4.808-1.5,2.328-2.552,3.746-4.551,3.662-2.156-.076-3.27-1.65-4.558-3.472-1.447-2.047-3.077-4.363-6.442-4.251-3.2.109-4.807,2.153-6.224,3.954-1.346,1.709-2.4,3.062-4.621,2.977a1.093,1.093,0,0,0-.079,2.186c3.3.11,4.967-1.967,6.417-3.81,1.286-1.635,2.4-3.045,4.582-3.12,2.1-.09,3.091,1.218,4.584,3.327,1.417,2,3.026,4.277,6.263,4.394,3.391.114,5.022-2.42,6.467-4.663,1.292-2,2.406-3.734,4.535-3.807,1.959-.073,3.026,1.475,4.529,4.022,1.417,2.4,3.023,5.121,6.324,5.241,3.415.118,5.064-2.863,6.5-5.5,1.245-2.282,2.419-4.437,4.5-4.509,1.959-.046,2.981,1.743,4.492,4.732,1.412,2.79,3.013,5.95,6.365,6.071l.185,0c3.348,0,4.937-3.36,6.343-6.331,1.245-2.634,2.423-5.114,4.444-5.216Z" transform="translate(7.109 -13.11)" fill-rule="evenodd"/>
<path id="Path_50" data-name="Path 50" d="M83,186.71h43.71V143H83Z" transform="translate(4.42 -5.561)" fill="#3ecc5f" fill-rule="evenodd"/>
<g id="Group_8" data-name="Group 8" transform="matrix(0.966, -0.259, 0.259, 0.966, 109.327, 91.085)">
<rect id="Rectangle_3" data-name="Rectangle 3" width="92.361" height="36.462" rx="2" transform="translate(0 0)" fill="#d8d8d8"/>
<g id="Group_2" data-name="Group 2" transform="translate(1.531 23.03)">
<rect id="Rectangle_4" data-name="Rectangle 4" width="5.336" height="5.336" rx="1" transform="translate(16.797 0)" fill="#4a4a4a"/>
<rect id="Rectangle_5" data-name="Rectangle 5" width="5.336" height="5.336" rx="1" transform="translate(23.12 0)" fill="#4a4a4a"/>
<rect id="Rectangle_6" data-name="Rectangle 6" width="5.336" height="5.336" rx="1" transform="translate(29.444 0)" fill="#4a4a4a"/>
<rect id="Rectangle_7" data-name="Rectangle 7" width="5.336" height="5.336" rx="1" transform="translate(35.768 0)" fill="#4a4a4a"/>
<rect id="Rectangle_8" data-name="Rectangle 8" width="5.336" height="5.336" rx="1" transform="translate(42.091 0)" fill="#4a4a4a"/>
<rect id="Rectangle_9" data-name="Rectangle 9" width="5.336" height="5.336" rx="1" transform="translate(48.415 0)" fill="#4a4a4a"/>
<rect id="Rectangle_10" data-name="Rectangle 10" width="5.336" height="5.336" rx="1" transform="translate(54.739 0)" fill="#4a4a4a"/>
<rect id="Rectangle_11" data-name="Rectangle 11" width="5.336" height="5.336" rx="1" transform="translate(61.063 0)" fill="#4a4a4a"/>
<rect id="Rectangle_12" data-name="Rectangle 12" width="5.336" height="5.336" rx="1" transform="translate(67.386 0)" fill="#4a4a4a"/>
<path id="Path_51" data-name="Path 51" d="M1.093,0H14.518a1.093,1.093,0,0,1,1.093,1.093V4.243a1.093,1.093,0,0,1-1.093,1.093H1.093A1.093,1.093,0,0,1,0,4.243V1.093A1.093,1.093,0,0,1,1.093,0ZM75,0H88.426a1.093,1.093,0,0,1,1.093,1.093V4.243a1.093,1.093,0,0,1-1.093,1.093H75a1.093,1.093,0,0,1-1.093-1.093V1.093A1.093,1.093,0,0,1,75,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
</g>
<g id="Group_3" data-name="Group 3" transform="translate(1.531 10.261)">
<path id="Path_52" data-name="Path 52" d="M1.093,0H6.218A1.093,1.093,0,0,1,7.31,1.093V4.242A1.093,1.093,0,0,1,6.218,5.335H1.093A1.093,1.093,0,0,1,0,4.242V1.093A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_13" data-name="Rectangle 13" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
<rect id="Rectangle_14" data-name="Rectangle 14" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
<rect id="Rectangle_15" data-name="Rectangle 15" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
<rect id="Rectangle_16" data-name="Rectangle 16" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
<rect id="Rectangle_17" data-name="Rectangle 17" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
<rect id="Rectangle_18" data-name="Rectangle 18" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
<rect id="Rectangle_19" data-name="Rectangle 19" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
<rect id="Rectangle_20" data-name="Rectangle 20" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
<rect id="Rectangle_21" data-name="Rectangle 21" width="5.336" height="5.336" rx="1" transform="translate(58.888 0)" fill="#4a4a4a"/>
<rect id="Rectangle_22" data-name="Rectangle 22" width="5.336" height="5.336" rx="1" transform="translate(65.212 0)" fill="#4a4a4a"/>
<rect id="Rectangle_23" data-name="Rectangle 23" width="5.336" height="5.336" rx="1" transform="translate(71.536 0)" fill="#4a4a4a"/>
<rect id="Rectangle_24" data-name="Rectangle 24" width="5.336" height="5.336" rx="1" transform="translate(77.859 0)" fill="#4a4a4a"/>
<rect id="Rectangle_25" data-name="Rectangle 25" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
</g>
<g id="Group_4" data-name="Group 4" transform="translate(91.05 9.546) rotate(180)">
<path id="Path_53" data-name="Path 53" d="M1.093,0H6.219A1.093,1.093,0,0,1,7.312,1.093v3.15A1.093,1.093,0,0,1,6.219,5.336H1.093A1.093,1.093,0,0,1,0,4.243V1.093A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_26" data-name="Rectangle 26" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
<rect id="Rectangle_27" data-name="Rectangle 27" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
<rect id="Rectangle_28" data-name="Rectangle 28" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
<rect id="Rectangle_29" data-name="Rectangle 29" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
<rect id="Rectangle_30" data-name="Rectangle 30" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
<rect id="Rectangle_31" data-name="Rectangle 31" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
<rect id="Rectangle_32" data-name="Rectangle 32" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
<rect id="Rectangle_33" data-name="Rectangle 33" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
<rect id="Rectangle_34" data-name="Rectangle 34" width="5.336" height="5.336" rx="1" transform="translate(58.889 0)" fill="#4a4a4a"/>
<rect id="Rectangle_35" data-name="Rectangle 35" width="5.336" height="5.336" rx="1" transform="translate(65.213 0)" fill="#4a4a4a"/>
<rect id="Rectangle_36" data-name="Rectangle 36" width="5.336" height="5.336" rx="1" transform="translate(71.537 0)" fill="#4a4a4a"/>
<rect id="Rectangle_37" data-name="Rectangle 37" width="5.336" height="5.336" rx="1" transform="translate(77.86 0)" fill="#4a4a4a"/>
<rect id="Rectangle_38" data-name="Rectangle 38" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
<rect id="Rectangle_39" data-name="Rectangle 39" width="5.336" height="5.336" rx="1" transform="translate(8.299 0)" fill="#4a4a4a"/>
<rect id="Rectangle_40" data-name="Rectangle 40" width="5.336" height="5.336" rx="1" transform="translate(14.623 0)" fill="#4a4a4a"/>
<rect id="Rectangle_41" data-name="Rectangle 41" width="5.336" height="5.336" rx="1" transform="translate(20.947 0)" fill="#4a4a4a"/>
<rect id="Rectangle_42" data-name="Rectangle 42" width="5.336" height="5.336" rx="1" transform="translate(27.271 0)" fill="#4a4a4a"/>
<rect id="Rectangle_43" data-name="Rectangle 43" width="5.336" height="5.336" rx="1" transform="translate(33.594 0)" fill="#4a4a4a"/>
<rect id="Rectangle_44" data-name="Rectangle 44" width="5.336" height="5.336" rx="1" transform="translate(39.918 0)" fill="#4a4a4a"/>
<rect id="Rectangle_45" data-name="Rectangle 45" width="5.336" height="5.336" rx="1" transform="translate(46.242 0)" fill="#4a4a4a"/>
<rect id="Rectangle_46" data-name="Rectangle 46" width="5.336" height="5.336" rx="1" transform="translate(52.565 0)" fill="#4a4a4a"/>
<rect id="Rectangle_47" data-name="Rectangle 47" width="5.336" height="5.336" rx="1" transform="translate(58.889 0)" fill="#4a4a4a"/>
<rect id="Rectangle_48" data-name="Rectangle 48" width="5.336" height="5.336" rx="1" transform="translate(65.213 0)" fill="#4a4a4a"/>
<rect id="Rectangle_49" data-name="Rectangle 49" width="5.336" height="5.336" rx="1" transform="translate(71.537 0)" fill="#4a4a4a"/>
<rect id="Rectangle_50" data-name="Rectangle 50" width="5.336" height="5.336" rx="1" transform="translate(77.86 0)" fill="#4a4a4a"/>
<rect id="Rectangle_51" data-name="Rectangle 51" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
</g>
<g id="Group_6" data-name="Group 6" transform="translate(1.531 16.584)">
<path id="Path_54" data-name="Path 54" d="M1.093,0h7.3A1.093,1.093,0,0,1,9.485,1.093v3.15A1.093,1.093,0,0,1,8.392,5.336h-7.3A1.093,1.093,0,0,1,0,4.243V1.094A1.093,1.093,0,0,1,1.093,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<g id="Group_5" data-name="Group 5" transform="translate(10.671 0)">
<rect id="Rectangle_52" data-name="Rectangle 52" width="5.336" height="5.336" rx="1" fill="#4a4a4a"/>
<rect id="Rectangle_53" data-name="Rectangle 53" width="5.336" height="5.336" rx="1" transform="translate(6.324 0)" fill="#4a4a4a"/>
<rect id="Rectangle_54" data-name="Rectangle 54" width="5.336" height="5.336" rx="1" transform="translate(12.647 0)" fill="#4a4a4a"/>
<rect id="Rectangle_55" data-name="Rectangle 55" width="5.336" height="5.336" rx="1" transform="translate(18.971 0)" fill="#4a4a4a"/>
<rect id="Rectangle_56" data-name="Rectangle 56" width="5.336" height="5.336" rx="1" transform="translate(25.295 0)" fill="#4a4a4a"/>
<rect id="Rectangle_57" data-name="Rectangle 57" width="5.336" height="5.336" rx="1" transform="translate(31.619 0)" fill="#4a4a4a"/>
<rect id="Rectangle_58" data-name="Rectangle 58" width="5.336" height="5.336" rx="1" transform="translate(37.942 0)" fill="#4a4a4a"/>
<rect id="Rectangle_59" data-name="Rectangle 59" width="5.336" height="5.336" rx="1" transform="translate(44.265 0)" fill="#4a4a4a"/>
<rect id="Rectangle_60" data-name="Rectangle 60" width="5.336" height="5.336" rx="1" transform="translate(50.589 0)" fill="#4a4a4a"/>
<rect id="Rectangle_61" data-name="Rectangle 61" width="5.336" height="5.336" rx="1" transform="translate(56.912 0)" fill="#4a4a4a"/>
<rect id="Rectangle_62" data-name="Rectangle 62" width="5.336" height="5.336" rx="1" transform="translate(63.236 0)" fill="#4a4a4a"/>
</g>
<path id="Path_55" data-name="Path 55" d="M1.094,0H8A1.093,1.093,0,0,1,9.091,1.093v3.15A1.093,1.093,0,0,1,8,5.336H1.093A1.093,1.093,0,0,1,0,4.243V1.094A1.093,1.093,0,0,1,1.093,0Z" transform="translate(80.428 0)" fill="#4a4a4a" fill-rule="evenodd"/>
</g>
<g id="Group_7" data-name="Group 7" transform="translate(1.531 29.627)">
<rect id="Rectangle_63" data-name="Rectangle 63" width="5.336" height="5.336" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
<rect id="Rectangle_64" data-name="Rectangle 64" width="5.336" height="5.336" rx="1" transform="translate(6.324 0)" fill="#4a4a4a"/>
<rect id="Rectangle_65" data-name="Rectangle 65" width="5.336" height="5.336" rx="1" transform="translate(12.647 0)" fill="#4a4a4a"/>
<rect id="Rectangle_66" data-name="Rectangle 66" width="5.336" height="5.336" rx="1" transform="translate(18.971 0)" fill="#4a4a4a"/>
<path id="Path_56" data-name="Path 56" d="M1.093,0H31.515a1.093,1.093,0,0,1,1.093,1.093V4.244a1.093,1.093,0,0,1-1.093,1.093H1.093A1.093,1.093,0,0,1,0,4.244V1.093A1.093,1.093,0,0,1,1.093,0ZM34.687,0h3.942a1.093,1.093,0,0,1,1.093,1.093V4.244a1.093,1.093,0,0,1-1.093,1.093H34.687a1.093,1.093,0,0,1-1.093-1.093V1.093A1.093,1.093,0,0,1,34.687,0Z" transform="translate(25.294 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_67" data-name="Rectangle 67" width="5.336" height="5.336" rx="1" transform="translate(66.003 0)" fill="#4a4a4a"/>
<rect id="Rectangle_68" data-name="Rectangle 68" width="5.336" height="5.336" rx="1" transform="translate(72.327 0)" fill="#4a4a4a"/>
<rect id="Rectangle_69" data-name="Rectangle 69" width="5.336" height="5.336" rx="1" transform="translate(84.183 0)" fill="#4a4a4a"/>
<path id="Path_57" data-name="Path 57" d="M5.336,0V1.18A1.093,1.093,0,0,1,4.243,2.273H1.093A1.093,1.093,0,0,1,0,1.18V0Z" transform="translate(83.59 2.273) rotate(180)" fill="#4a4a4a"/>
<path id="Path_58" data-name="Path 58" d="M5.336,0V1.18A1.093,1.093,0,0,1,4.243,2.273H1.093A1.093,1.093,0,0,1,0,1.18V0Z" transform="translate(78.255 3.063)" fill="#4a4a4a"/>
</g>
<rect id="Rectangle_70" data-name="Rectangle 70" width="88.927" height="2.371" rx="1.085" transform="translate(1.925 1.17)" fill="#4a4a4a"/>
<rect id="Rectangle_71" data-name="Rectangle 71" width="4.986" height="1.581" rx="0.723" transform="translate(4.1 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_72" data-name="Rectangle 72" width="4.986" height="1.581" rx="0.723" transform="translate(10.923 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_73" data-name="Rectangle 73" width="4.986" height="1.581" rx="0.723" transform="translate(16.173 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_74" data-name="Rectangle 74" width="4.986" height="1.581" rx="0.723" transform="translate(21.421 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_75" data-name="Rectangle 75" width="4.986" height="1.581" rx="0.723" transform="translate(26.671 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_76" data-name="Rectangle 76" width="4.986" height="1.581" rx="0.723" transform="translate(33.232 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_77" data-name="Rectangle 77" width="4.986" height="1.581" rx="0.723" transform="translate(38.48 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_78" data-name="Rectangle 78" width="4.986" height="1.581" rx="0.723" transform="translate(43.73 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_79" data-name="Rectangle 79" width="4.986" height="1.581" rx="0.723" transform="translate(48.978 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_80" data-name="Rectangle 80" width="4.986" height="1.581" rx="0.723" transform="translate(55.54 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_81" data-name="Rectangle 81" width="4.986" height="1.581" rx="0.723" transform="translate(60.788 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_82" data-name="Rectangle 82" width="4.986" height="1.581" rx="0.723" transform="translate(66.038 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_83" data-name="Rectangle 83" width="4.986" height="1.581" rx="0.723" transform="translate(72.599 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_84" data-name="Rectangle 84" width="4.986" height="1.581" rx="0.723" transform="translate(77.847 1.566)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_85" data-name="Rectangle 85" width="4.986" height="1.581" rx="0.723" transform="translate(83.097 1.566)" fill="#d8d8d8" opacity="0.136"/>
</g>
<path id="Path_59" data-name="Path 59" d="M146.71,159.855a5.439,5.439,0,0,0-.7.07c-.042-.164-.081-.329-.127-.493a5.457,5.457,0,1,0-5.4-9.372q-.181-.185-.366-.367a5.454,5.454,0,1,0-9.384-5.4c-.162-.046-.325-.084-.486-.126a5.467,5.467,0,1,0-10.788,0c-.162.042-.325.08-.486.126a5.457,5.457,0,1,0-9.384,5.4,21.843,21.843,0,1,0,36.421,21.02,5.452,5.452,0,1,0,.7-10.858" transform="translate(6.275 -6.025)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_60" data-name="Path 60" d="M83,124.855h43.71V103H83Z" transform="translate(4.42 -9.271)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_61" data-name="Path 61" d="M134.855,116.765a2.732,2.732,0,1,0,0-5.464,2.811,2.811,0,0,0-.349.035c-.022-.082-.04-.164-.063-.246a2.733,2.733,0,0,0-1.052-5.253,2.7,2.7,0,0,0-1.648.566q-.09-.093-.184-.184a2.7,2.7,0,0,0,.553-1.633,2.732,2.732,0,0,0-5.245-1.07,10.928,10.928,0,1,0,0,21.031,2.732,2.732,0,0,0,5.245-1.07,2.7,2.7,0,0,0-.553-1.633q.093-.09.184-.184a2.7,2.7,0,0,0,1.648.566,2.732,2.732,0,0,0,1.052-5.253c.023-.081.042-.164.063-.246a2.811,2.811,0,0,0,.349.035" transform="translate(7.202 -9.377)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_62" data-name="Path 62" d="M143.232,42.33a2.967,2.967,0,0,1-.535-.055,2.754,2.754,0,0,1-.514-.153,2.838,2.838,0,0,1-.471-.251,4.139,4.139,0,0,1-.415-.339,3.2,3.2,0,0,1-.338-.415A2.7,2.7,0,0,1,140.5,39.6a2.968,2.968,0,0,1,.055-.535,3.152,3.152,0,0,1,.152-.514,2.874,2.874,0,0,1,.252-.47,2.633,2.633,0,0,1,.753-.754,2.837,2.837,0,0,1,.471-.251,2.753,2.753,0,0,1,.514-.153,2.527,2.527,0,0,1,1.071,0,2.654,2.654,0,0,1,.983.4,4.139,4.139,0,0,1,.415.339,4.019,4.019,0,0,1,.339.415,2.786,2.786,0,0,1,.251.47,2.864,2.864,0,0,1,.208,1.049,2.77,2.77,0,0,1-.8,1.934,4.139,4.139,0,0,1-.415.339,2.722,2.722,0,0,1-1.519.459m21.855-1.366a2.789,2.789,0,0,1-1.935-.8,4.162,4.162,0,0,1-.338-.415,2.7,2.7,0,0,1-.459-1.519,2.789,2.789,0,0,1,.8-1.934,4.139,4.139,0,0,1,.415-.339,2.838,2.838,0,0,1,.471-.251,2.752,2.752,0,0,1,.514-.153,2.527,2.527,0,0,1,1.071,0,2.654,2.654,0,0,1,.983.4,4.139,4.139,0,0,1,.415.339,2.79,2.79,0,0,1,.8,1.934,3.069,3.069,0,0,1-.055.535,2.779,2.779,0,0,1-.153.514,3.885,3.885,0,0,1-.251.47,4.02,4.02,0,0,1-.339.415,4.138,4.138,0,0,1-.415.339,2.722,2.722,0,0,1-1.519.459" transform="translate(9.753 -15.532)" fill-rule="evenodd"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 31 KiB

View File

@@ -0,0 +1,170 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1041.277" height="554.141" viewBox="0 0 1041.277 554.141">
<title>Powered by React</title>
<g id="Group_24" data-name="Group 24" transform="translate(-440 -263)">
<g id="Group_23" data-name="Group 23" transform="translate(439.989 262.965)">
<path id="Path_299" data-name="Path 299" d="M1040.82,611.12q-1.74,3.75-3.47,7.4-2.7,5.67-5.33,11.12c-.78,1.61-1.56,3.19-2.32,4.77-8.6,17.57-16.63,33.11-23.45,45.89A73.21,73.21,0,0,1,942.44,719l-151.65,1.65h-1.6l-13,.14-11.12.12-34.1.37h-1.38l-17.36.19h-.53l-107,1.16-95.51,1-11.11.12-69,.75H429l-44.75.48h-.48l-141.5,1.53-42.33.46a87.991,87.991,0,0,1-10.79-.54h0c-1.22-.14-2.44-.3-3.65-.49a87.38,87.38,0,0,1-51.29-27.54C116,678.37,102.75,655,93.85,629.64q-1.93-5.49-3.6-11.12C59.44,514.37,97,380,164.6,290.08q4.25-5.64,8.64-11l.07-.08c20.79-25.52,44.1-46.84,68.93-62,44-26.91,92.75-34.49,140.7-11.9,40.57,19.12,78.45,28.11,115.17,30.55,3.71.24,7.42.42,11.11.53,84.23,2.65,163.17-27.7,255.87-47.29,3.69-.78,7.39-1.55,11.12-2.28,66.13-13.16,139.49-20.1,226.73-5.51a189.089,189.089,0,0,1,26.76,6.4q5.77,1.86,11.12,4c41.64,16.94,64.35,48.24,74,87.46q1.37,5.46,2.37,11.11C1134.3,384.41,1084.19,518.23,1040.82,611.12Z" transform="translate(-79.34 -172.91)" fill="#f2f2f2"/>
<path id="Path_300" data-name="Path 300" d="M576.36,618.52a95.21,95.21,0,0,1-1.87,11.12h93.7V618.52Zm-78.25,62.81,11.11-.09V653.77c-3.81-.17-7.52-.34-11.11-.52ZM265.19,618.52v11.12h198.5V618.52ZM1114.87,279h-74V191.51q-5.35-2.17-11.12-4V279H776.21V186.58c-3.73.73-7.43,1.5-11.12,2.28V279H509.22V236.15c-3.69-.11-7.4-.29-11.11-.53V279H242.24V217c-24.83,15.16-48.14,36.48-68.93,62h-.07v.08q-4.4,5.4-8.64,11h8.64V618.52h-83q1.66,5.63,3.6,11.12h79.39v93.62a87,87,0,0,0,12.2,2.79c1.21.19,2.43.35,3.65.49h0a87.991,87.991,0,0,0,10.79.54l42.33-.46v-97H498.11v94.21l11.11-.12V629.64H765.09V721l11.12-.12V629.64H1029.7v4.77c.76-1.58,1.54-3.16,2.32-4.77q2.63-5.45,5.33-11.12,1.73-3.64,3.47-7.4v-321h76.42Q1116.23,284.43,1114.87,279ZM242.24,618.52V290.08H498.11V618.52Zm267,0V290.08H765.09V618.52Zm520.48,0H776.21V290.08H1029.7Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_301" data-name="Path 301" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l46.65-28,93.6-.78,2-.01.66-.01,2-.03,44.94-.37,2.01-.01.64-.01,2-.01L315,509.3l.38-.01,35.55-.3h.29l277.4-2.34,6.79-.05h.68l5.18-.05,37.65-.31,2-.03,1.85-.02h.96l11.71-.09,2.32-.03,3.11-.02,9.75-.09,15.47-.13,2-.02,3.48-.02h.65l74.71-.64Z" fill="#65617d"/>
<path id="Path_302" data-name="Path 302" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l46.65-28,93.6-.78,2-.01.66-.01,2-.03,44.94-.37,2.01-.01.64-.01,2-.01L315,509.3l.38-.01,35.55-.3h.29l277.4-2.34,6.79-.05h.68l5.18-.05,37.65-.31,2-.03,1.85-.02h.96l11.71-.09,2.32-.03,3.11-.02,9.75-.09,15.47-.13,2-.02,3.48-.02h.65l74.71-.64Z" opacity="0.2"/>
<path id="Path_303" data-name="Path 303" d="M375.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
<path id="Path_304" data-name="Path 304" d="M375.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_305" data-name="Path 305" d="M377.44,656.57v24.49a6.13,6.13,0,0,1-3.5,5.54,6,6,0,0,1-2.5.6l-34.9.74a6,6,0,0,1-2.7-.57,6.12,6.12,0,0,1-3.57-5.57V656.57Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
<rect id="Rectangle_137" data-name="Rectangle 137" width="47.17" height="31.5" transform="translate(680.92 483.65)" fill="#3f3d56"/>
<rect id="Rectangle_138" data-name="Rectangle 138" width="47.17" height="31.5" transform="translate(680.92 483.65)" opacity="0.1"/>
<rect id="Rectangle_139" data-name="Rectangle 139" width="47.17" height="31.5" transform="translate(678.92 483.65)" fill="#3f3d56"/>
<path id="Path_306" data-name="Path 306" d="M298.09,483.65v4.97l-47.17,1.26v-6.23Z" opacity="0.1"/>
<path id="Path_307" data-name="Path 307" d="M460.69,485.27v168.2a4,4,0,0,1-3.85,3.95l-191.65,5.1h-.05a4,4,0,0,1-3.95-3.95V485.27a4,4,0,0,1,3.95-3.95h191.6a4,4,0,0,1,3.95,3.95Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
<path id="Path_308" data-name="Path 308" d="M265.19,481.32v181.2h-.05a4,4,0,0,1-3.95-3.95V485.27a4,4,0,0,1,3.95-3.95Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_309" data-name="Path 309" d="M194.59,319.15h177.5V467.4l-177.5,4Z" fill="#39374d"/>
<path id="Path_310" data-name="Path 310" d="M726.09,483.65v6.41l-47.17-1.26v-5.15Z" opacity="0.1"/>
<path id="Path_311" data-name="Path 311" d="M867.69,485.27v173.3a4,4,0,0,1-4,3.95h0L672,657.42a4,4,0,0,1-3.85-3.95V485.27a4,4,0,0,1,3.95-3.95H863.7a4,4,0,0,1,3.99,3.95Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
<path id="Path_312" data-name="Path 312" d="M867.69,485.27v173.3a4,4,0,0,1-4,3.95h0V481.32h0a4,4,0,0,1,4,3.95Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_313" data-name="Path 313" d="M775.59,319.15H598.09V467.4l177.5,4Z" fill="#39374d"/>
<path id="Path_314" data-name="Path 314" d="M663.19,485.27v168.2a4,4,0,0,1-3.85,3.95l-191.65,5.1h0a4,4,0,0,1-4-3.95V485.27a4,4,0,0,1,3.95-3.95h191.6A4,4,0,0,1,663.19,485.27Z" transform="translate(-79.34 -172.91)" fill="#65617d"/>
<path id="Path_315" data-name="Path 315" d="M397.09,319.15h177.5V467.4l-177.5,4Z" fill="#4267b2"/>
<path id="Path_316" data-name="Path 316" d="M863.09,533.65v13l-151.92,1.4-1.62.03-57.74.53-1.38.02-17.55.15h-.52l-106.98.99L349.77,551.4h-.15l-44.65.42-.48.01-198.4,1.82v-15l202.51-1.33h.48l40.99-.28h.19l283.08-1.87h.29l.17-.01h.47l4.79-.03h1.46l74.49-.5,4.4-.02.98-.01Z" opacity="0.1"/>
<circle id="Ellipse_111" data-name="Ellipse 111" cx="51.33" cy="51.33" r="51.33" transform="translate(435.93 246.82)" fill="#fbbebe"/>
<path id="Path_317" data-name="Path 317" d="M617.94,550.07s-99.5,12-90,0c3.44-4.34,4.39-17.2,4.2-31.85-.06-4.45-.22-9.06-.45-13.65-1.1-22-3.75-43.5-3.75-43.5s87-41,77-8.5c-4,13.13-2.69,31.57.35,48.88.89,5.05,1.92,10,3,14.7a344.66,344.66,0,0,0,9.65,33.92Z" transform="translate(-79.34 -172.91)" fill="#fbbebe"/>
<path id="Path_318" data-name="Path 318" d="M585.47,546c11.51-2.13,23.7-6,34.53-1.54,2.85,1.17,5.47,2.88,8.39,3.86s6.12,1.22,9.16,1.91c10.68,2.42,19.34,10.55,24.9,20s8.44,20.14,11.26,30.72l6.9,25.83c6,22.45,12,45.09,13.39,68.3a2437.506,2437.506,0,0,1-250.84,1.43c5.44-10.34,11-21.31,10.54-33s-7.19-23.22-4.76-34.74c1.55-7.34,6.57-13.39,9.64-20.22,8.75-19.52,1.94-45.79,17.32-60.65,6.92-6.68,17-9.21,26.63-8.89,12.28.41,24.85,4.24,37,6.11C555.09,547.48,569.79,548.88,585.47,546Z" transform="translate(-79.34 -172.91)" fill="#ff6584"/>
<path id="Path_319" data-name="Path 319" d="M716.37,657.17l-.1,1.43v.1l-.17,2.3-1.33,18.51-1.61,22.3-.46,6.28-1,13.44v.17l-107,1-175.59,1.9v.84h-.14v-1.12l.45-14.36.86-28.06.74-23.79.07-2.37a10.53,10.53,0,0,1,11.42-10.17c4.72.4,10.85.89,18.18,1.41l3,.22c42.33,2.94,120.56,6.74,199.5,2,1.66-.09,3.33-.19,5-.31,12.24-.77,24.47-1.76,36.58-3a10.53,10.53,0,0,1,11.6,11.23Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_320" data-name="Path 320" d="M429.08,725.44v-.84l175.62-1.91,107-1h.3v-.17l1-13.44.43-6,1.64-22.61,1.29-17.9v-.44a10.617,10.617,0,0,0-.11-2.47.3.3,0,0,0,0-.1,10.391,10.391,0,0,0-2-4.64,10.54,10.54,0,0,0-9.42-4c-12.11,1.24-24.34,2.23-36.58,3-1.67.12-3.34.22-5,.31-78.94,4.69-157.17.89-199.5-2l-3-.22c-7.33-.52-13.46-1-18.18-1.41a10.54,10.54,0,0,0-11.24,8.53,11,11,0,0,0-.18,1.64l-.68,22.16L429.54,710l-.44,14.36v1.12Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
<path id="Path_321" data-name="Path 321" d="M716.67,664.18l-1.23,15.33-1.83,22.85-.46,5.72-1,12.81-.06.64v.17h0l-.15,1.48.11-1.48h-.29l-107,1-175.65,1.9v-.28l.49-14.36,1-28.06.64-18.65A6.36,6.36,0,0,1,434.3,658a6.25,6.25,0,0,1,3.78-.9c2.1.17,4.68.37,7.69.59,4.89.36,10.92.78,17.94,1.22,13,.82,29.31,1.7,48,2.42,52,2,122.2,2.67,188.88-3.17,3-.26,6.1-.55,9.13-.84a6.26,6.26,0,0,1,3.48.66,5.159,5.159,0,0,1,.86.54,6.14,6.14,0,0,1,2,2.46,3.564,3.564,0,0,1,.25.61A6.279,6.279,0,0,1,716.67,664.18Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_322" data-name="Path 322" d="M377.44,677.87v3.19a6.13,6.13,0,0,1-3.5,5.54l-40.1.77a6.12,6.12,0,0,1-3.57-5.57v-3Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_323" data-name="Path 323" d="M298.59,515.57l-52.25,1V507.9l52.25-1Z" fill="#3f3d56"/>
<path id="Path_324" data-name="Path 324" d="M298.59,515.57l-52.25,1V507.9l52.25-1Z" opacity="0.1"/>
<path id="Path_325" data-name="Path 325" d="M300.59,515.57l-52.25,1V507.9l52.25-1Z" fill="#3f3d56"/>
<path id="Path_326" data-name="Path 326" d="M758.56,679.87v3.19a6.13,6.13,0,0,0,3.5,5.54l40.1.77a6.12,6.12,0,0,0,3.57-5.57v-3Z" transform="translate(-79.34 -172.91)" opacity="0.1"/>
<path id="Path_327" data-name="Path 327" d="M678.72,517.57l52.25,1V509.9l-52.25-1Z" opacity="0.1"/>
<path id="Path_328" data-name="Path 328" d="M676.72,517.57l52.25,1V509.9l-52.25-1Z" fill="#3f3d56"/>
<path id="Path_329" data-name="Path 329" d="M534.13,486.79c.08,7-3.16,13.6-5.91,20.07a163.491,163.491,0,0,0-12.66,74.71c.73,11,2.58,22,.73,32.9s-8.43,21.77-19,24.9c17.53,10.45,41.26,9.35,57.76-2.66,8.79-6.4,15.34-15.33,21.75-24.11a97.86,97.86,0,0,1-13.31,44.75A103.43,103.43,0,0,0,637,616.53c4.31-5.81,8.06-12.19,9.72-19.23,3.09-13-1.22-26.51-4.51-39.5a266.055,266.055,0,0,1-6.17-33c-.43-3.56-.78-7.22.1-10.7,1-4.07,3.67-7.51,5.64-11.22,5.6-10.54,5.73-23.3,2.86-34.88s-8.49-22.26-14.06-32.81c-4.46-8.46-9.3-17.31-17.46-22.28-5.1-3.1-11-4.39-16.88-5.64l-25.37-5.43c-5.55-1.19-11.26-2.38-16.87-1.51-9.47,1.48-16.14,8.32-22,15.34-4.59,5.46-15.81,15.71-16.6,22.86-.72,6.59,5.1,17.63,6.09,24.58,1.3,9,2.22,6,7.3,11.52C532,478.05,534.07,482,534.13,486.79Z" transform="translate(-79.34 -172.91)" fill="#3f3d56"/>
</g>
<g id="docusaurus_keytar" transform="translate(670.271 615.768)">
<path id="Path_40" data-name="Path 40" d="M99,52h43.635V69.662H99Z" transform="translate(-49.132 -33.936)" fill="#fff" fill-rule="evenodd"/>
<path id="Path_41" data-name="Path 41" d="M13.389,158.195A10.377,10.377,0,0,1,4.4,153a10.377,10.377,0,0,0,8.988,15.584H23.779V158.195Z" transform="translate(-3 -82.47)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_42" data-name="Path 42" d="M66.967,38.083l36.373-2.273V30.615A10.389,10.389,0,0,0,92.95,20.226H46.2l-1.3-2.249a1.5,1.5,0,0,0-2.6,0L41,20.226l-1.3-2.249a1.5,1.5,0,0,0-2.6,0l-1.3,2.249-1.3-2.249a1.5,1.5,0,0,0-2.6,0l-1.3,2.249-.034,0-2.152-2.151a1.5,1.5,0,0,0-2.508.672L25.21,21.4l-2.7-.723a1.5,1.5,0,0,0-1.836,1.837l.722,2.7-2.65.71a1.5,1.5,0,0,0-.673,2.509l2.152,2.152c0,.011,0,.022,0,.033l-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6L20.226,41l-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3-2.249,1.3a1.5,1.5,0,0,0,0,2.6l2.249,1.3A10.389,10.389,0,0,0,30.615,103.34H92.95A10.389,10.389,0,0,0,103.34,92.95V51.393L66.967,49.12a5.53,5.53,0,0,1,0-11.038" transform="translate(-9.836 -17.226)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_43" data-name="Path 43" d="M143,163.779h15.584V143H143Z" transform="translate(-70.275 -77.665)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_44" data-name="Path 44" d="M173.779,148.389a2.582,2.582,0,0,0-.332.033c-.02-.078-.038-.156-.06-.234a2.594,2.594,0,1,0-2.567-4.455q-.086-.088-.174-.175a2.593,2.593,0,1,0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6,2.6,0,1,0-5.128,0c-.077.02-.154.038-.231.06a2.594,2.594,0,1,0-4.461,2.569,10.384,10.384,0,1,0,17.314,9.992,2.592,2.592,0,1,0,.332-5.161" transform="translate(-75.08 -75.262)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_45" data-name="Path 45" d="M153,113.389h15.584V103H153Z" transform="translate(-75.08 -58.444)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_46" data-name="Path 46" d="M183.389,108.944a1.3,1.3,0,1,0,0-2.6,1.336,1.336,0,0,0-.166.017c-.01-.039-.019-.078-.03-.117a1.3,1.3,0,0,0-.5-2.5,1.285,1.285,0,0,0-.783.269q-.043-.044-.087-.087a1.285,1.285,0,0,0,.263-.776,1.3,1.3,0,0,0-2.493-.509,5.195,5.195,0,1,0,0,10,1.3,1.3,0,0,0,2.493-.509,1.285,1.285,0,0,0-.263-.776q.044-.043.087-.087a1.285,1.285,0,0,0,.783.269,1.3,1.3,0,0,0,.5-2.5c.011-.038.02-.078.03-.117a1.337,1.337,0,0,0,.166.017" transform="translate(-84.691 -57.894)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_47" data-name="Path 47" d="M52.188,48.292a1.3,1.3,0,0,1-1.3-1.3,3.9,3.9,0,0,0-7.792,0,1.3,1.3,0,1,1-2.6,0,6.493,6.493,0,0,1,12.987,0,1.3,1.3,0,0,1-1.3,1.3" transform="translate(-21.02 -28.41)" fill-rule="evenodd"/>
<path id="Path_48" data-name="Path 48" d="M103,139.752h31.168a10.389,10.389,0,0,0,10.389-10.389V93H113.389A10.389,10.389,0,0,0,103,103.389Z" transform="translate(-51.054 -53.638)" fill="#ffff50" fill-rule="evenodd"/>
<path id="Path_49" data-name="Path 49" d="M141.1,94.017H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0-25.877H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.293H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m0,10.389H115.106a.519.519,0,1,1,0-1.039H141.1a.519.519,0,0,1,0,1.039m7.782-47.993c-.006,0-.011,0-.018,0-1.605.055-2.365,1.66-3.035,3.077-.7,1.48-1.24,2.443-2.126,2.414-.981-.035-1.542-1.144-2.137-2.317-.683-1.347-1.462-2.876-3.1-2.819-1.582.054-2.344,1.451-3.017,2.684-.715,1.313-1.2,2.112-2.141,2.075-1-.036-1.533-.938-2.149-1.981-.686-1.162-1.479-2.467-3.084-2.423-1.555.053-2.319,1.239-2.994,2.286-.713,1.106-1.213,1.781-2.164,1.741-1.025-.036-1.554-.784-2.167-1.65-.688-.973-1.463-2.074-3.062-2.021a3.815,3.815,0,0,0-2.959,1.879c-.64.812-1.14,1.456-2.2,1.415a.52.52,0,0,0-.037,1.039,3.588,3.588,0,0,0,3.05-1.811c.611-.777,1.139-1.448,2.178-1.483,1-.043,1.47.579,2.179,1.582.674.953,1.438,2.033,2.977,2.089,1.612.054,2.387-1.151,3.074-2.217.614-.953,1.144-1.775,2.156-1.81.931-.035,1.438.7,2.153,1.912.674,1.141,1.437,2.434,3.006,2.491,1.623.056,2.407-1.361,3.09-2.616.592-1.085,1.15-2.109,2.14-2.143.931-.022,1.417.829,2.135,2.249.671,1.326,1.432,2.828,3.026,2.886l.088,0c1.592,0,2.347-1.6,3.015-3.01.592-1.252,1.152-2.431,2.113-2.479Z" transform="translate(-55.378 -38.552)" fill-rule="evenodd"/>
<path id="Path_50" data-name="Path 50" d="M83,163.779h20.779V143H83Z" transform="translate(-41.443 -77.665)" fill="#3ecc5f" fill-rule="evenodd"/>
<g id="Group_8" data-name="Group 8" transform="matrix(0.966, -0.259, 0.259, 0.966, 51.971, 43.3)">
<rect id="Rectangle_3" data-name="Rectangle 3" width="43.906" height="17.333" rx="2" transform="translate(0 0)" fill="#d8d8d8"/>
<g id="Group_2" data-name="Group 2" transform="translate(0.728 10.948)">
<rect id="Rectangle_4" data-name="Rectangle 4" width="2.537" height="2.537" rx="1" transform="translate(7.985 0)" fill="#4a4a4a"/>
<rect id="Rectangle_5" data-name="Rectangle 5" width="2.537" height="2.537" rx="1" transform="translate(10.991 0)" fill="#4a4a4a"/>
<rect id="Rectangle_6" data-name="Rectangle 6" width="2.537" height="2.537" rx="1" transform="translate(13.997 0)" fill="#4a4a4a"/>
<rect id="Rectangle_7" data-name="Rectangle 7" width="2.537" height="2.537" rx="1" transform="translate(17.003 0)" fill="#4a4a4a"/>
<rect id="Rectangle_8" data-name="Rectangle 8" width="2.537" height="2.537" rx="1" transform="translate(20.009 0)" fill="#4a4a4a"/>
<rect id="Rectangle_9" data-name="Rectangle 9" width="2.537" height="2.537" rx="1" transform="translate(23.015 0)" fill="#4a4a4a"/>
<rect id="Rectangle_10" data-name="Rectangle 10" width="2.537" height="2.537" rx="1" transform="translate(26.021 0)" fill="#4a4a4a"/>
<rect id="Rectangle_11" data-name="Rectangle 11" width="2.537" height="2.537" rx="1" transform="translate(29.028 0)" fill="#4a4a4a"/>
<rect id="Rectangle_12" data-name="Rectangle 12" width="2.537" height="2.537" rx="1" transform="translate(32.034 0)" fill="#4a4a4a"/>
<path id="Path_51" data-name="Path 51" d="M.519,0H6.9A.519.519,0,0,1,7.421.52v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0ZM35.653,0h6.383a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H35.652a.519.519,0,0,1-.519-.519V.519A.519.519,0,0,1,35.652,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
</g>
<g id="Group_3" data-name="Group 3" transform="translate(0.728 4.878)">
<path id="Path_52" data-name="Path 52" d="M.519,0H2.956a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_13" data-name="Rectangle 13" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
<rect id="Rectangle_14" data-name="Rectangle 14" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
<rect id="Rectangle_15" data-name="Rectangle 15" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
<rect id="Rectangle_16" data-name="Rectangle 16" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
<rect id="Rectangle_17" data-name="Rectangle 17" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
<rect id="Rectangle_18" data-name="Rectangle 18" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
<rect id="Rectangle_19" data-name="Rectangle 19" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
<rect id="Rectangle_20" data-name="Rectangle 20" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
<rect id="Rectangle_21" data-name="Rectangle 21" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
<rect id="Rectangle_22" data-name="Rectangle 22" width="2.537" height="2.537" rx="1" transform="translate(31 0)" fill="#4a4a4a"/>
<rect id="Rectangle_23" data-name="Rectangle 23" width="2.537" height="2.537" rx="1" transform="translate(34.006 0)" fill="#4a4a4a"/>
<rect id="Rectangle_24" data-name="Rectangle 24" width="2.537" height="2.537" rx="1" transform="translate(37.012 0)" fill="#4a4a4a"/>
<rect id="Rectangle_25" data-name="Rectangle 25" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
</g>
<g id="Group_4" data-name="Group 4" transform="translate(43.283 4.538) rotate(180)">
<path id="Path_53" data-name="Path 53" d="M.519,0H2.956a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.519A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_26" data-name="Rectangle 26" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
<rect id="Rectangle_27" data-name="Rectangle 27" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
<rect id="Rectangle_28" data-name="Rectangle 28" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
<rect id="Rectangle_29" data-name="Rectangle 29" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
<rect id="Rectangle_30" data-name="Rectangle 30" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
<rect id="Rectangle_31" data-name="Rectangle 31" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
<rect id="Rectangle_32" data-name="Rectangle 32" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
<rect id="Rectangle_33" data-name="Rectangle 33" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
<rect id="Rectangle_34" data-name="Rectangle 34" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
<rect id="Rectangle_35" data-name="Rectangle 35" width="2.537" height="2.537" rx="1" transform="translate(31.001 0)" fill="#4a4a4a"/>
<rect id="Rectangle_36" data-name="Rectangle 36" width="2.537" height="2.537" rx="1" transform="translate(34.007 0)" fill="#4a4a4a"/>
<rect id="Rectangle_37" data-name="Rectangle 37" width="2.537" height="2.537" rx="1" transform="translate(37.013 0)" fill="#4a4a4a"/>
<rect id="Rectangle_38" data-name="Rectangle 38" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
<rect id="Rectangle_39" data-name="Rectangle 39" width="2.537" height="2.537" rx="1" transform="translate(3.945 0)" fill="#4a4a4a"/>
<rect id="Rectangle_40" data-name="Rectangle 40" width="2.537" height="2.537" rx="1" transform="translate(6.951 0)" fill="#4a4a4a"/>
<rect id="Rectangle_41" data-name="Rectangle 41" width="2.537" height="2.537" rx="1" transform="translate(9.958 0)" fill="#4a4a4a"/>
<rect id="Rectangle_42" data-name="Rectangle 42" width="2.537" height="2.537" rx="1" transform="translate(12.964 0)" fill="#4a4a4a"/>
<rect id="Rectangle_43" data-name="Rectangle 43" width="2.537" height="2.537" rx="1" transform="translate(15.97 0)" fill="#4a4a4a"/>
<rect id="Rectangle_44" data-name="Rectangle 44" width="2.537" height="2.537" rx="1" transform="translate(18.976 0)" fill="#4a4a4a"/>
<rect id="Rectangle_45" data-name="Rectangle 45" width="2.537" height="2.537" rx="1" transform="translate(21.982 0)" fill="#4a4a4a"/>
<rect id="Rectangle_46" data-name="Rectangle 46" width="2.537" height="2.537" rx="1" transform="translate(24.988 0)" fill="#4a4a4a"/>
<rect id="Rectangle_47" data-name="Rectangle 47" width="2.537" height="2.537" rx="1" transform="translate(27.994 0)" fill="#4a4a4a"/>
<rect id="Rectangle_48" data-name="Rectangle 48" width="2.537" height="2.537" rx="1" transform="translate(31.001 0)" fill="#4a4a4a"/>
<rect id="Rectangle_49" data-name="Rectangle 49" width="2.537" height="2.537" rx="1" transform="translate(34.007 0)" fill="#4a4a4a"/>
<rect id="Rectangle_50" data-name="Rectangle 50" width="2.537" height="2.537" rx="1" transform="translate(37.013 0)" fill="#4a4a4a"/>
<rect id="Rectangle_51" data-name="Rectangle 51" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
</g>
<g id="Group_6" data-name="Group 6" transform="translate(0.728 7.883)">
<path id="Path_54" data-name="Path 54" d="M.519,0h3.47a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.52A.519.519,0,0,1,.519,0Z" transform="translate(0 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<g id="Group_5" data-name="Group 5" transform="translate(5.073 0)">
<rect id="Rectangle_52" data-name="Rectangle 52" width="2.537" height="2.537" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
<rect id="Rectangle_53" data-name="Rectangle 53" width="2.537" height="2.537" rx="1" transform="translate(3.006 0)" fill="#4a4a4a"/>
<rect id="Rectangle_54" data-name="Rectangle 54" width="2.537" height="2.537" rx="1" transform="translate(6.012 0)" fill="#4a4a4a"/>
<rect id="Rectangle_55" data-name="Rectangle 55" width="2.537" height="2.537" rx="1" transform="translate(9.018 0)" fill="#4a4a4a"/>
<rect id="Rectangle_56" data-name="Rectangle 56" width="2.537" height="2.537" rx="1" transform="translate(12.025 0)" fill="#4a4a4a"/>
<rect id="Rectangle_57" data-name="Rectangle 57" width="2.537" height="2.537" rx="1" transform="translate(15.031 0)" fill="#4a4a4a"/>
<rect id="Rectangle_58" data-name="Rectangle 58" width="2.537" height="2.537" rx="1" transform="translate(18.037 0)" fill="#4a4a4a"/>
<rect id="Rectangle_59" data-name="Rectangle 59" width="2.537" height="2.537" rx="1" transform="translate(21.042 0)" fill="#4a4a4a"/>
<rect id="Rectangle_60" data-name="Rectangle 60" width="2.537" height="2.537" rx="1" transform="translate(24.049 0)" fill="#4a4a4a"/>
<rect id="Rectangle_61" data-name="Rectangle 61" width="2.537" height="2.537" rx="1" transform="translate(27.055 0)" fill="#4a4a4a"/>
<rect id="Rectangle_62" data-name="Rectangle 62" width="2.537" height="2.537" rx="1" transform="translate(30.061 0)" fill="#4a4a4a"/>
</g>
<path id="Path_55" data-name="Path 55" d="M.52,0H3.8a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.017V.52A.519.519,0,0,1,.519,0Z" transform="translate(38.234 0)" fill="#4a4a4a" fill-rule="evenodd"/>
</g>
<g id="Group_7" data-name="Group 7" transform="translate(0.728 14.084)">
<rect id="Rectangle_63" data-name="Rectangle 63" width="2.537" height="2.537" rx="1" transform="translate(0 0)" fill="#4a4a4a"/>
<rect id="Rectangle_64" data-name="Rectangle 64" width="2.537" height="2.537" rx="1" transform="translate(3.006 0)" fill="#4a4a4a"/>
<rect id="Rectangle_65" data-name="Rectangle 65" width="2.537" height="2.537" rx="1" transform="translate(6.012 0)" fill="#4a4a4a"/>
<rect id="Rectangle_66" data-name="Rectangle 66" width="2.537" height="2.537" rx="1" transform="translate(9.018 0)" fill="#4a4a4a"/>
<path id="Path_56" data-name="Path 56" d="M.519,0H14.981A.519.519,0,0,1,15.5.519v1.5a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,2.018V.519A.519.519,0,0,1,.519,0Zm15.97,0h1.874a.519.519,0,0,1,.519.519v1.5a.519.519,0,0,1-.519.519H16.489a.519.519,0,0,1-.519-.519V.519A.519.519,0,0,1,16.489,0Z" transform="translate(12.024 0)" fill="#4a4a4a" fill-rule="evenodd"/>
<rect id="Rectangle_67" data-name="Rectangle 67" width="2.537" height="2.537" rx="1" transform="translate(31.376 0)" fill="#4a4a4a"/>
<rect id="Rectangle_68" data-name="Rectangle 68" width="2.537" height="2.537" rx="1" transform="translate(34.382 0)" fill="#4a4a4a"/>
<rect id="Rectangle_69" data-name="Rectangle 69" width="2.537" height="2.537" rx="1" transform="translate(40.018 0)" fill="#4a4a4a"/>
<path id="Path_57" data-name="Path 57" d="M2.537,0V.561a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,.561V0Z" transform="translate(39.736 1.08) rotate(180)" fill="#4a4a4a"/>
<path id="Path_58" data-name="Path 58" d="M2.537,0V.561a.519.519,0,0,1-.519.519H.519A.519.519,0,0,1,0,.561V0Z" transform="translate(37.2 1.456)" fill="#4a4a4a"/>
</g>
<rect id="Rectangle_70" data-name="Rectangle 70" width="42.273" height="1.127" rx="0.564" transform="translate(0.915 0.556)" fill="#4a4a4a"/>
<rect id="Rectangle_71" data-name="Rectangle 71" width="2.37" height="0.752" rx="0.376" transform="translate(1.949 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_72" data-name="Rectangle 72" width="2.37" height="0.752" rx="0.376" transform="translate(5.193 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_73" data-name="Rectangle 73" width="2.37" height="0.752" rx="0.376" transform="translate(7.688 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_74" data-name="Rectangle 74" width="2.37" height="0.752" rx="0.376" transform="translate(10.183 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_75" data-name="Rectangle 75" width="2.37" height="0.752" rx="0.376" transform="translate(12.679 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_76" data-name="Rectangle 76" width="2.37" height="0.752" rx="0.376" transform="translate(15.797 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_77" data-name="Rectangle 77" width="2.37" height="0.752" rx="0.376" transform="translate(18.292 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_78" data-name="Rectangle 78" width="2.37" height="0.752" rx="0.376" transform="translate(20.788 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_79" data-name="Rectangle 79" width="2.37" height="0.752" rx="0.376" transform="translate(23.283 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_80" data-name="Rectangle 80" width="2.37" height="0.752" rx="0.376" transform="translate(26.402 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_81" data-name="Rectangle 81" width="2.37" height="0.752" rx="0.376" transform="translate(28.897 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_82" data-name="Rectangle 82" width="2.37" height="0.752" rx="0.376" transform="translate(31.393 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_83" data-name="Rectangle 83" width="2.37" height="0.752" rx="0.376" transform="translate(34.512 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_84" data-name="Rectangle 84" width="2.37" height="0.752" rx="0.376" transform="translate(37.007 0.744)" fill="#d8d8d8" opacity="0.136"/>
<rect id="Rectangle_85" data-name="Rectangle 85" width="2.37" height="0.752" rx="0.376" transform="translate(39.502 0.744)" fill="#d8d8d8" opacity="0.136"/>
</g>
<path id="Path_59" data-name="Path 59" d="M123.779,148.389a2.583,2.583,0,0,0-.332.033c-.02-.078-.038-.156-.06-.234a2.594,2.594,0,1,0-2.567-4.455q-.086-.088-.174-.175a2.593,2.593,0,1,0-4.461-2.569c-.077-.022-.154-.04-.231-.06a2.6,2.6,0,1,0-5.128,0c-.077.02-.154.038-.231.06a2.594,2.594,0,1,0-4.461,2.569,10.384,10.384,0,1,0,17.314,9.992,2.592,2.592,0,1,0,.332-5.161" transform="translate(-51.054 -75.262)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_60" data-name="Path 60" d="M83,113.389h20.779V103H83Z" transform="translate(-41.443 -58.444)" fill="#3ecc5f" fill-rule="evenodd"/>
<path id="Path_61" data-name="Path 61" d="M123.389,108.944a1.3,1.3,0,1,0,0-2.6,1.338,1.338,0,0,0-.166.017c-.01-.039-.019-.078-.03-.117a1.3,1.3,0,0,0-.5-2.5,1.285,1.285,0,0,0-.783.269q-.043-.044-.087-.087a1.285,1.285,0,0,0,.263-.776,1.3,1.3,0,0,0-2.493-.509,5.195,5.195,0,1,0,0,10,1.3,1.3,0,0,0,2.493-.509,1.285,1.285,0,0,0-.263-.776q.044-.043.087-.087a1.285,1.285,0,0,0,.783.269,1.3,1.3,0,0,0,.5-2.5c.011-.038.02-.078.03-.117a1.335,1.335,0,0,0,.166.017" transform="translate(-55.859 -57.894)" fill="#44d860" fill-rule="evenodd"/>
<path id="Path_62" data-name="Path 62" d="M141.8,38.745a1.41,1.41,0,0,1-.255-.026,1.309,1.309,0,0,1-.244-.073,1.349,1.349,0,0,1-.224-.119,1.967,1.967,0,0,1-.2-.161,1.52,1.52,0,0,1-.161-.2,1.282,1.282,0,0,1-.218-.722,1.41,1.41,0,0,1,.026-.255,1.5,1.5,0,0,1,.072-.244,1.364,1.364,0,0,1,.12-.223,1.252,1.252,0,0,1,.358-.358,1.349,1.349,0,0,1,.224-.119,1.309,1.309,0,0,1,.244-.073,1.2,1.2,0,0,1,.509,0,1.262,1.262,0,0,1,.468.192,1.968,1.968,0,0,1,.2.161,1.908,1.908,0,0,1,.161.2,1.322,1.322,0,0,1,.12.223,1.361,1.361,0,0,1,.1.5,1.317,1.317,0,0,1-.379.919,1.968,1.968,0,0,1-.2.161,1.346,1.346,0,0,1-.223.119,1.332,1.332,0,0,1-.5.1m10.389-.649a1.326,1.326,0,0,1-.92-.379,1.979,1.979,0,0,1-.161-.2,1.282,1.282,0,0,1-.218-.722,1.326,1.326,0,0,1,.379-.919,1.967,1.967,0,0,1,.2-.161,1.351,1.351,0,0,1,.224-.119,1.308,1.308,0,0,1,.244-.073,1.2,1.2,0,0,1,.509,0,1.262,1.262,0,0,1,.468.192,1.967,1.967,0,0,1,.2.161,1.326,1.326,0,0,1,.379.919,1.461,1.461,0,0,1-.026.255,1.323,1.323,0,0,1-.073.244,1.847,1.847,0,0,1-.119.223,1.911,1.911,0,0,1-.161.2,1.967,1.967,0,0,1-.2.161,1.294,1.294,0,0,1-.722.218" transform="translate(-69.074 -26.006)" fill-rule="evenodd"/>
</g>
<g id="React-icon" transform="translate(906.3 541.56)">
<path id="Path_330" data-name="Path 330" d="M263.668,117.179c0-5.827-7.3-11.35-18.487-14.775,2.582-11.4,1.434-20.477-3.622-23.382a7.861,7.861,0,0,0-4.016-1v4a4.152,4.152,0,0,1,2.044.466c2.439,1.4,3.5,6.724,2.672,13.574-.2,1.685-.52,3.461-.914,5.272a86.9,86.9,0,0,0-11.386-1.954,87.469,87.469,0,0,0-7.459-8.965c5.845-5.433,11.332-8.41,15.062-8.41V78h0c-4.931,0-11.386,3.514-17.913,9.611-6.527-6.061-12.982-9.539-17.913-9.539v4c3.712,0,9.216,2.959,15.062,8.356a84.687,84.687,0,0,0-7.405,8.947,83.732,83.732,0,0,0-11.4,1.972c-.412-1.793-.717-3.532-.932-5.2-.843-6.85.2-12.175,2.618-13.592a3.991,3.991,0,0,1,2.062-.466v-4h0a8,8,0,0,0-4.052,1c-5.039,2.9-6.168,11.96-3.568,23.328-11.153,3.443-18.415,8.947-18.415,14.757,0,5.828,7.3,11.35,18.487,14.775-2.582,11.4-1.434,20.477,3.622,23.382a7.882,7.882,0,0,0,4.034,1c4.931,0,11.386-3.514,17.913-9.611,6.527,6.061,12.982,9.539,17.913,9.539a8,8,0,0,0,4.052-1c5.039-2.9,6.168-11.96,3.568-23.328C256.406,128.511,263.668,122.988,263.668,117.179Zm-23.346-11.96c-.663,2.313-1.488,4.7-2.421,7.083-.735-1.434-1.506-2.869-2.349-4.3-.825-1.434-1.7-2.833-2.582-4.2C235.517,104.179,237.974,104.645,240.323,105.219Zm-8.212,19.1c-1.4,2.421-2.833,4.716-4.321,6.85-2.672.233-5.379.359-8.1.359-2.708,0-5.415-.126-8.069-.341q-2.232-3.2-4.339-6.814-2.044-3.523-3.73-7.136c1.112-2.4,2.367-4.805,3.712-7.154,1.4-2.421,2.833-4.716,4.321-6.85,2.672-.233,5.379-.359,8.1-.359,2.708,0,5.415.126,8.069.341q2.232,3.2,4.339,6.814,2.044,3.523,3.73,7.136C234.692,119.564,233.455,121.966,232.11,124.315Zm5.792-2.331c.968,2.4,1.793,4.805,2.474,7.136-2.349.574-4.823,1.058-7.387,1.434.879-1.381,1.757-2.8,2.582-4.25C236.4,124.871,237.167,123.419,237.9,121.984ZM219.72,141.116a73.921,73.921,0,0,1-4.985-5.738c1.614.072,3.263.126,4.931.126,1.685,0,3.353-.036,4.985-.126A69.993,69.993,0,0,1,219.72,141.116ZM206.38,130.555c-2.546-.377-5-.843-7.352-1.417.663-2.313,1.488-4.7,2.421-7.083.735,1.434,1.506,2.869,2.349,4.3S205.5,129.192,206.38,130.555ZM219.63,93.241a73.924,73.924,0,0,1,4.985,5.738c-1.614-.072-3.263-.126-4.931-.126-1.686,0-3.353.036-4.985.126A69.993,69.993,0,0,1,219.63,93.241ZM206.362,103.8c-.879,1.381-1.757,2.8-2.582,4.25-.825,1.434-1.6,2.869-2.331,4.3-.968-2.4-1.793-4.805-2.474-7.136C201.323,104.663,203.8,104.179,206.362,103.8Zm-16.227,22.449c-6.348-2.708-10.454-6.258-10.454-9.073s4.106-6.383,10.454-9.073c1.542-.663,3.228-1.255,4.967-1.811a86.122,86.122,0,0,0,4.034,10.92,84.9,84.9,0,0,0-3.981,10.866C193.38,127.525,191.694,126.915,190.134,126.252Zm9.647,25.623c-2.439-1.4-3.5-6.724-2.672-13.574.2-1.686.52-3.461.914-5.272a86.9,86.9,0,0,0,11.386,1.954,87.465,87.465,0,0,0,7.459,8.965c-5.845,5.433-11.332,8.41-15.062,8.41A4.279,4.279,0,0,1,199.781,151.875Zm42.532-13.663c.843,6.85-.2,12.175-2.618,13.592a3.99,3.99,0,0,1-2.062.466c-3.712,0-9.216-2.959-15.062-8.356a84.689,84.689,0,0,0,7.405-8.947,83.731,83.731,0,0,0,11.4-1.972A50.194,50.194,0,0,1,242.313,138.212Zm6.9-11.96c-1.542.663-3.228,1.255-4.967,1.811a86.12,86.12,0,0,0-4.034-10.92,84.9,84.9,0,0,0,3.981-10.866c1.775.556,3.461,1.165,5.039,1.829,6.348,2.708,10.454,6.258,10.454,9.073C259.67,119.994,255.564,123.562,249.216,126.252Z" fill="#61dafb"/>
<path id="Path_331" data-name="Path 331" d="M320.8,78.4Z" transform="translate(-119.082 -0.328)" fill="#61dafb"/>
<circle id="Ellipse_112" data-name="Ellipse 112" cx="8.194" cy="8.194" r="8.194" transform="translate(211.472 108.984)" fill="#61dafb"/>
<path id="Path_332" data-name="Path 332" d="M520.5,78.1Z" transform="translate(-282.975 -0.082)" fill="#61dafb"/>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 35 KiB

View File

@@ -0,0 +1,40 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1129" height="663" viewBox="0 0 1129 663">
<title>Focus on What Matters</title>
<circle cx="321" cy="321" r="321" fill="#f2f2f2" />
<ellipse cx="559" cy="635.49998" rx="514" ry="27.50002" fill="#3f3d56" />
<ellipse cx="558" cy="627" rx="460" ry="22" opacity="0.2" />
<rect x="131" y="152.5" width="840" height="50" fill="#3f3d56" />
<path d="M166.5,727.3299A21.67009,21.67009,0,0,0,188.1701,749H984.8299A21.67009,21.67009,0,0,0,1006.5,727.3299V296h-840Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
<path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
<path d="M984.8299,236H188.1701A21.67009,21.67009,0,0,0,166.5,257.6701V296h840V257.6701A21.67009,21.67009,0,0,0,984.8299,236Z" transform="translate(-35.5 -118.5)" opacity="0.2" />
<circle cx="181" cy="147.5" r="13" fill="#3f3d56" />
<circle cx="217" cy="147.5" r="13" fill="#3f3d56" />
<circle cx="253" cy="147.5" r="13" fill="#3f3d56" />
<rect x="168" y="213.5" width="337" height="386" rx="5.33505" fill="#606060" />
<rect x="603" y="272.5" width="284" height="22" rx="5.47638" fill="#2e8555" />
<rect x="537" y="352.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
<rect x="537" y="396.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
<rect x="537" y="440.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
<rect x="537" y="484.5" width="416" height="15" rx="5.47638" fill="#2e8555" />
<rect x="865" y="552.5" width="88" height="26" rx="7.02756" fill="#3ecc5f" />
<path d="M1088.60287,624.61594a30.11371,30.11371,0,0,0,3.98291-15.266c0-13.79652-8.54358-24.98081-19.08256-24.98081s-19.08256,11.18429-19.08256,24.98081a30.11411,30.11411,0,0,0,3.98291,15.266,31.248,31.248,0,0,0,0,30.53213,31.248,31.248,0,0,0,0,30.53208,31.248,31.248,0,0,0,0,30.53208,30.11408,30.11408,0,0,0-3.98291,15.266c0,13.79652,8.54353,24.98081,19.08256,24.98081s19.08256-11.18429,19.08256-24.98081a30.11368,30.11368,0,0,0-3.98291-15.266,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53208,31.248,31.248,0,0,0,0-30.53213Z" transform="translate(-35.5 -118.5)" fill="#3f3d56" />
<ellipse cx="1038.00321" cy="460.31783" rx="19.08256" ry="24.9808" fill="#3f3d56" />
<ellipse cx="1038.00321" cy="429.78574" rx="19.08256" ry="24.9808" fill="#3f3d56" />
<path d="M1144.93871,339.34489a91.61081,91.61081,0,0,0,7.10658-10.46092l-50.141-8.23491,54.22885.4033a91.566,91.566,0,0,0,1.74556-72.42605l-72.75449,37.74139,67.09658-49.32086a91.41255,91.41255,0,1,0-150.971,102.29805,91.45842,91.45842,0,0,0-10.42451,16.66946l65.0866,33.81447-69.40046-23.292a91.46011,91.46011,0,0,0,14.73837,85.83669,91.40575,91.40575,0,1,0,143.68892,0,91.41808,91.41808,0,0,0,0-113.02862Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M981.6885,395.8592a91.01343,91.01343,0,0,0,19.56129,56.51431,91.40575,91.40575,0,1,0,143.68892,0C1157.18982,436.82067,981.6885,385.60008,981.6885,395.8592Z" transform="translate(-35.5 -118.5)" opacity="0.1" />
<path d="M365.62,461.43628H477.094v45.12043H365.62Z" transform="translate(-35.5 -118.5)" fill="#fff" fill-rule="evenodd" />
<path d="M264.76252,608.74122a26.50931,26.50931,0,0,1-22.96231-13.27072,26.50976,26.50976,0,0,0,22.96231,39.81215H291.304V608.74122Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M384.17242,468.57061l92.92155-5.80726V449.49263a26.54091,26.54091,0,0,0-26.54143-26.54143H331.1161l-3.31768-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622-3.31767-5.74622a3.83043,3.83043,0,0,0-6.63536,0l-3.31768,5.74622L301.257,417.205a3.83043,3.83043,0,0,0-6.63536,0L291.304,422.9512c-.02919,0-.05573.004-.08625.004l-5.49674-5.49541a3.8293,3.8293,0,0,0-6.4071,1.71723l-1.81676,6.77338L270.607,424.1031a3.82993,3.82993,0,0,0-4.6912,4.69253l1.84463,6.89148-6.77072,1.81411a3.8315,3.8315,0,0,0-1.71988,6.40975l5.49673,5.49673c0,.02787-.004.05574-.004.08493l-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74621,3.31768L259.0163,466.081a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31767a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768L259.0163,558.976a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768-5.74622,3.31768a3.83042,3.83042,0,0,0,0,6.63535l5.74622,3.31768-5.74622,3.31768a3.83043,3.83043,0,0,0,0,6.63536l5.74622,3.31768A26.54091,26.54091,0,0,0,291.304,635.28265H450.55254A26.5409,26.5409,0,0,0,477.094,608.74122V502.5755l-92.92155-5.80727a14.12639,14.12639,0,0,1,0-28.19762" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M424.01111,635.28265h39.81214V582.19979H424.01111Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M490.36468,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15393-.59852A6.62668,6.62668,0,1,0,482.80568,590.21q-.2203-.22491-.44457-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39414-.10218-.59056-.15262a6.63957,6.63957,0,1,0-13.10086,0c-.1964.05042-.39414.09687-.59056.15262a6.62767,6.62767,0,1,0-11.39688,6.56369,26.52754,26.52754,0,1,0,44.23127,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
<path d="M437.28182,555.65836H477.094V529.11693H437.28182Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M490.36468,545.70532a3.31768,3.31768,0,0,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
<path d="M317.84538,466.081a3.31768,3.31768,0,0,1-3.31767-3.31768,9.953,9.953,0,1,0-19.90608,0,3.31768,3.31768,0,1,1-6.63535,0,16.58839,16.58839,0,1,1,33.17678,0,3.31768,3.31768,0,0,1-3.31768,3.31768" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
<path d="M370.92825,635.28265h79.62429A26.5409,26.5409,0,0,0,477.094,608.74122v-92.895H397.46968a26.54091,26.54091,0,0,0-26.54143,26.54143Z" transform="translate(-35.5 -118.5)" fill="#ffff50" fill-rule="evenodd" />
<path d="M457.21444,556.98543H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,1,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0-66.10674H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.29459H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414m0,26.54143H390.80778a1.32707,1.32707,0,0,1,0-2.65414h66.40666a1.32707,1.32707,0,0,1,0,2.65414M477.094,474.19076c-.01592,0-.0292-.008-.04512-.00663-4.10064.13934-6.04083,4.24132-7.75274,7.86024-1.78623,3.78215-3.16771,6.24122-5.43171,6.16691-2.50685-.09024-3.94007-2.92222-5.45825-5.91874-1.74377-3.44243-3.73438-7.34667-7.91333-7.20069-4.04227.138-5.98907,3.70784-7.70631,6.857-1.82738,3.35484-3.07084,5.39455-5.46887,5.30033-2.55727-.09289-3.91619-2.39536-5.48877-5.06013-1.75306-2.96733-3.77951-6.30359-7.8775-6.18946-3.97326.13669-5.92537,3.16507-7.64791,5.83912-1.82207,2.82666-3.09872,4.5492-5.52725,4.447-2.61832-.09289-3.9706-2.00388-5.53522-4.21611-1.757-2.4856-3.737-5.299-7.82308-5.16231-3.88567.13271-5.83779,2.61434-7.559,4.80135-1.635,2.07555-2.9116,3.71846-5.61218,3.615a1.32793,1.32793,0,1,0-.09555,2.65414c4.00377.134,6.03154-2.38873,7.79257-4.6275,1.562-1.9853,2.91027-3.69855,5.56441-3.78879,2.55594-.10882,3.75429,1.47968,5.56707,4.04093,1.7212,2.43385,3.67465,5.19416,7.60545,5.33616,4.11789.138,6.09921-2.93946,7.8536-5.66261,1.56861-2.43385,2.92221-4.53461,5.50734-4.62352,2.37944-.08892,3.67466,1.79154,5.50072,4.885,1.72121,2.91557,3.67069,6.21865,7.67977,6.36463,4.14709.14332,6.14965-3.47693,7.89475-6.68181,1.51155-2.77092,2.93814-5.38791,5.46621-5.4755,2.37944-.05573,3.62025,2.11668,5.45558,5.74622,1.71459,3.388,3.65875,7.22591,7.73019,7.37321l.22429.004c4.06614,0,5.99571-4.08074,7.70364-7.68905,1.51154-3.19825,2.94211-6.21069,5.3972-6.33411Z" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
<path d="M344.38682,635.28265h53.08286V582.19979H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M424.01111,602.10586a6.60242,6.60242,0,0,0-.848.08493c-.05042-.19906-.09821-.39945-.15394-.59852A6.62667,6.62667,0,1,0,416.45211,590.21q-.2203-.22491-.44458-.44589a6.62391,6.62391,0,1,0-11.39689-6.56369c-.1964-.05575-.39413-.10218-.59054-.15262a6.63957,6.63957,0,1,0-13.10084,0c-.19641.05042-.39414.09687-.59055.15262a6.62767,6.62767,0,1,0-11.39689,6.56369,26.52755,26.52755,0,1,0,44.2313,25.52756,6.6211,6.6211,0,1,0,.848-13.18579" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
<path d="M344.38682,555.65836h53.08286V529.11693H344.38682Z" transform="translate(-35.5 -118.5)" fill="#3ecc5f" fill-rule="evenodd" />
<path d="M410.74039,545.70532a3.31768,3.31768,0,1,0,0-6.63536,3.41133,3.41133,0,0,0-.42333.04247c-.02655-.09953-.04911-.19907-.077-.29859a3.319,3.319,0,0,0-1.278-6.37923,3.28174,3.28174,0,0,0-2.00122.68742q-.10947-.11346-.22294-.22295a3.282,3.282,0,0,0,.67149-1.98265,3.31768,3.31768,0,0,0-6.37-1.2992,13.27078,13.27078,0,1,0,0,25.54082,3.31768,3.31768,0,0,0,6.37-1.2992,3.282,3.282,0,0,0-.67149-1.98265q.11347-.10947.22294-.22294a3.28174,3.28174,0,0,0,2.00122.68742,3.31768,3.31768,0,0,0,1.278-6.37923c.02786-.0982.05042-.19907.077-.29859a3.41325,3.41325,0,0,0,.42333.04246" transform="translate(-35.5 -118.5)" fill="#44d860" fill-rule="evenodd" />
<path d="M424.01111,447.8338a3.60349,3.60349,0,0,1-.65028-.06636,3.34415,3.34415,0,0,1-.62372-.18579,3.44679,3.44679,0,0,1-.572-.30522,5.02708,5.02708,0,0,1-.50429-.4114,3.88726,3.88726,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.60248,3.60248,0,0,1,.06636-.65027,3.82638,3.82638,0,0,1,.18447-.62373,3.48858,3.48858,0,0,1,.30656-.57064,3.197,3.197,0,0,1,.91436-.91568,3.44685,3.44685,0,0,1,.572-.30523,3.344,3.344,0,0,1,.62372-.18578,3.06907,3.06907,0,0,1,1.30053,0,3.22332,3.22332,0,0,1,1.19436.491,5.02835,5.02835,0,0,1,.50429.41139,4.8801,4.8801,0,0,1,.41139.50429,3.38246,3.38246,0,0,1,.30522.57064,3.47806,3.47806,0,0,1,.25215,1.274A3.36394,3.36394,0,0,1,426.36,446.865a5.02708,5.02708,0,0,1-.50429.4114,3.3057,3.3057,0,0,1-1.84463.55737m26.54143-1.65884a3.38754,3.38754,0,0,1-2.35024-.96877,5.04185,5.04185,0,0,1-.41007-.50428,3.27532,3.27532,0,0,1-.55737-1.84463,3.38659,3.38659,0,0,1,.96744-2.34892,5.02559,5.02559,0,0,1,.50429-.41139,3.44685,3.44685,0,0,1,.572-.30523,3.3432,3.3432,0,0,1,.62373-.18579,3.06952,3.06952,0,0,1,1.30052,0,3.22356,3.22356,0,0,1,1.19436.491,5.02559,5.02559,0,0,1,.50429.41139,3.38792,3.38792,0,0,1,.96876,2.34892,3.72635,3.72635,0,0,1-.06636.65026,3.37387,3.37387,0,0,1-.18579.62373,4.71469,4.71469,0,0,1-.30522.57064,4.8801,4.8801,0,0,1-.41139.50429,5.02559,5.02559,0,0,1-.50429.41139,3.30547,3.30547,0,0,1-1.84463.55737" transform="translate(-35.5 -118.5)" fill-rule="evenodd" />
</svg>

After

Width:  |  Height:  |  Size: 12 KiB

View File

Before

Width:  |  Height:  |  Size: 31 KiB

After

Width:  |  Height:  |  Size: 31 KiB