Compare commits
64 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
987fce7f07 | ||
|
|
657593be09 | ||
|
|
0afba7e3e3 | ||
|
|
ac00bb9029 | ||
|
|
67cb444d82 | ||
|
|
1914a29163 | ||
|
|
11201bc7c7 | ||
|
|
3a8b5257c0 | ||
|
|
00bb4e92dc | ||
|
|
7481c2ba0e | ||
|
|
9d336e257c | ||
|
|
2027171cb9 | ||
|
|
e06baf0d29 | ||
|
|
5d6a68a5bb | ||
|
|
41a5bb70bf | ||
|
|
c2ec62ba08 | ||
|
|
64361fc9ec | ||
|
|
ec55024734 | ||
|
|
df5c451a12 | ||
|
|
16c39a0a28 | ||
|
|
5e45b2cdd2 | ||
|
|
39210cf0c6 | ||
|
|
2e0e801533 | ||
|
|
0b9785a5d4 | ||
|
|
9070597c17 | ||
|
|
a5f986f145 | ||
|
|
1911afe3ee | ||
|
|
8b2145913c | ||
|
|
e75878d248 | ||
|
|
154d7cca78 | ||
|
|
3c018295b0 | ||
|
|
c8b8a4df11 | ||
|
|
edf74dc110 | ||
|
|
f128e708a0 | ||
|
|
8d67fab958 | ||
|
|
ba355d7f62 | ||
|
|
0d0e322af8 | ||
|
|
9eb2ba57fd | ||
|
|
44e4d6f8b0 | ||
|
|
b5a647ea30 | ||
|
|
14c6efb761 | ||
|
|
2ea8faeea8 | ||
|
|
9f79dfa936 | ||
|
|
1fb2258a77 | ||
|
|
5a46e08759 | ||
|
|
885fe14309 | ||
|
|
94d043d0fd | ||
|
|
981a033a1d | ||
|
|
e3a8f1e153 | ||
|
|
2cefc1e80a | ||
|
|
275649329a | ||
|
|
581400d44d | ||
|
|
b0733dcd87 | ||
|
|
148b748efb | ||
|
|
9c52368ab2 | ||
|
|
729dd9c41f | ||
|
|
4b49d6004c | ||
|
|
7fd27634d4 | ||
|
|
ea64fc4677 | ||
|
|
376cd28e0c | ||
|
|
31c47c6468 | ||
|
|
2e34a1514c | ||
|
|
dae99e839d | ||
|
|
877901ccff |
1
.github/workflows/maven-publish.yml
vendored
@@ -58,7 +58,6 @@ jobs:
|
||||
git config --global user.email "koujalgi.amith@gmail.com"
|
||||
git config --global user.name "amithkoujalgi"
|
||||
mvn -B -ntp -DskipTests -Pci-cd -Darguments="-DskipTests -Pci-cd" release:clean release:prepare release:perform
|
||||
# mvn clean -Punit-tests release:clean release:prepare release:perform -B -Darguments="-DskipTests -Dgpg.passphrase=${{ secrets.GPG_PASSPHRASE }}"
|
||||
env:
|
||||
MAVEN_USERNAME: ${{ secrets.OSSRH_USERNAME }}
|
||||
MAVEN_PASSWORD: ${{ secrets.OSSRH_PASSWORD }}
|
||||
|
||||
62
.github/workflows/publish-docs.yml
vendored
Normal file
@@ -0,0 +1,62 @@
|
||||
# Simple workflow for deploying static content to GitHub Pages
|
||||
name: Deploy Docs to GH Pages
|
||||
|
||||
on:
|
||||
# Runs on pushes targeting the default branch
|
||||
push:
|
||||
branches: [ "main" ]
|
||||
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
|
||||
permissions:
|
||||
contents: read
|
||||
pages: write
|
||||
id-token: write
|
||||
packages: write
|
||||
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
|
||||
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
|
||||
concurrency:
|
||||
group: "pages"
|
||||
cancel-in-progress: false
|
||||
|
||||
jobs:
|
||||
# Single deploy job since we're just deploying
|
||||
deploy:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
environment:
|
||||
name: github-pages
|
||||
url: ${{ steps.deployment.outputs.page_url }}
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
- name: Set up JDK 11
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
java-version: '11'
|
||||
distribution: 'adopt-hotspot'
|
||||
server-id: github # Value of the distributionManagement/repository/id field of the pom.xml
|
||||
settings-path: ${{ github.workspace }} # location for the settings.xml file
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
- name: Use Node.js
|
||||
uses: actions/setup-node@v3
|
||||
with:
|
||||
node-version: '20.x'
|
||||
- run: cd docs && npm ci
|
||||
- run: cd docs && npm run build
|
||||
|
||||
- name: Build with Maven
|
||||
run: mvn --file pom.xml -U clean package && cp -r ./target/apidocs/. ./docs/build/apidocs
|
||||
|
||||
- name: Setup Pages
|
||||
uses: actions/configure-pages@v3
|
||||
- name: Upload artifact
|
||||
uses: actions/upload-pages-artifact@v2
|
||||
with:
|
||||
# Upload entire repository
|
||||
path: './docs/build/.'
|
||||
- name: Deploy to GitHub Pages
|
||||
id: deployment
|
||||
uses: actions/deploy-pages@v2
|
||||
2
.github/workflows/publish-javadoc.yml
vendored
@@ -4,7 +4,7 @@ name: Deploy Javadoc content to Pages
|
||||
on:
|
||||
# Runs on pushes targeting the default branch
|
||||
push:
|
||||
branches: [ "main" ]
|
||||
branches: [ "none" ]
|
||||
|
||||
# Allows you to run this workflow manually from the Actions tab
|
||||
workflow_dispatch:
|
||||
|
||||
14
Makefile
@@ -7,13 +7,7 @@ ut:
|
||||
it:
|
||||
mvn clean verify -Pintegration-tests
|
||||
|
||||
#mvn -B clean install -Punit-tests -Dgpg.passphrase="${GPG_PASSPHRASE}" -e
|
||||
#
|
||||
#release:
|
||||
# mvn -B clean install -Punit-tests release:clean release:prepare release:perform -Dgpg.passphrase="${GPG_PASSPHRASE}" -e
|
||||
#
|
||||
#update-version:
|
||||
# mvn versions:set -DnewVersion=1.0.1
|
||||
#
|
||||
#deploy:
|
||||
# mvn clean deploy -Punit-tests -Dgpg.passphrase="$GPG_PASSPHRASE" -e
|
||||
list-releases:
|
||||
curl 'https://central.sonatype.com/api/internal/browse/component/versions?sortField=normalizedVersion&sortDirection=asc&page=0&size=12&filter=namespace%3Aio.github.amithkoujalgi%2Cname%3Aollama4j' \
|
||||
--compressed \
|
||||
--silent | jq '.components[].version'
|
||||
20
docs/.gitignore
vendored
Normal file
@@ -0,0 +1,20 @@
|
||||
# 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*
|
||||
41
docs/README.md
Normal file
@@ -0,0 +1,41 @@
|
||||
# Website
|
||||
|
||||
This website is built using [Docusaurus](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
docs/babel.config.js
Normal file
@@ -0,0 +1,3 @@
|
||||
module.exports = {
|
||||
presets: [require.resolve('@docusaurus/core/lib/babel/preset')],
|
||||
};
|
||||
9
docs/blog/2023-12-01-welcome/index.md
Normal file
@@ -0,0 +1,9 @@
|
||||
---
|
||||
slug: welcome
|
||||
title: Welcome
|
||||
authors: [ amith ]
|
||||
tags: [ Java, AI, LLM, GenAI, GenerativeAI, Ollama, Ollama4J, OpenSource, Developers
|
||||
]
|
||||
---
|
||||
|
||||
Welcome Java Developers!
|
||||
66
docs/blog/2023-12-22-release-post.md
Normal file
@@ -0,0 +1,66 @@
|
||||
---
|
||||
slug: release-post
|
||||
title: Release
|
||||
authors: [ amith ]
|
||||
tags: [ Java, AI, LLM, GenAI, GenerativeAI, Ollama, Ollama4j, OpenSource, Developers
|
||||
]
|
||||
---
|
||||
|
||||
Hey there, my fellow Java Developers! 🚀
|
||||
|
||||
I am glad to announce the release of Ollama4j, a library that unites Ollama (an LLM manager and runner) and your Java
|
||||
applications! 🌐🚀
|
||||
|
||||
👉 GitHub Repository: Ollama4j on GitHub (https://github.com/amithkoujalgi/ollama4j)
|
||||
|
||||
🌟 Key Features:
|
||||
|
||||
- Easy integration with Ollama, enabling the execution of large language models locally.
|
||||
- Clean and simple APIs, focused on seamless interaction with Ollama.
|
||||
- Empowers Java developers to harness the full capabilities of Ollama.
|
||||
- Provides APIs to perform operations such as listing, pulling, deleting models, and creating custom models.
|
||||
- Provides APIs to ask questions (generate completions) to the LLMs in synchronous and asynchronous modes.
|
||||
- Ability to ask questions along with image files or image URLs! 🤩
|
||||
- Open-source and primed for collaborative contributions from the community!
|
||||
|
||||
🦙 What is Ollama?
|
||||
|
||||
Ollama is an advanced AI tool that allows users to easily set up and run large language models locally (in CPU and GPU
|
||||
modes). With Ollama, users can leverage powerful language models such as Llama 2 and even customize and create their own
|
||||
models.
|
||||
|
||||
For more details about Ollama, check these out:
|
||||
|
||||
- https://ollama.ai/
|
||||
- https://www.linkedin.com/company/ollama/
|
||||
|
||||
👨💻 Why Ollama4j?
|
||||
|
||||
As a Java developer passionate about harnessing the latest advancements in AI, I realized the need for a simple and
|
||||
efficient way to integrate Ollama into Java applications. That's why I authored Ollama4j!
|
||||
|
||||
🔧 How to Get Started:
|
||||
|
||||
Visit the GitHub repository: Ollama4j on GitHub.
|
||||
|
||||
Follow the easy setup instructions in the README to integrate Ollama into your Java projects.
|
||||
|
||||
Start unlocking the potential of large language models in your applications!
|
||||
|
||||
🙏 Contributions Welcome:
|
||||
|
||||
I invite the Java developer community to explore, use, and contribute to Ollama4j. Your feedback, suggestions, and
|
||||
contributions will help this library get better.
|
||||
|
||||
I am excited about the possibilities that Ollama4j opens up for Java developers. Whether you're working on natural
|
||||
language processing, chatbots, or any application that can benefit from advanced language models, Ollama4j is here to
|
||||
elevate your projects.
|
||||
|
||||
I look forward to seeing the incredible applications/projects you'll build with Ollama4j! 🌟
|
||||
|
||||
Find the full API spec here: https://amithkoujalgi.github.io/ollama4j/
|
||||
|
||||
Find the Javadoc here: https://amithkoujalgi.github.io/ollama4j/apidocs/
|
||||
|
||||
Ollama4j Docs is powered by [Docusaurus](https://docusaurus.io).
|
||||
|
||||
5
docs/blog/authors.yml
Normal file
@@ -0,0 +1,5 @@
|
||||
amith:
|
||||
name: Amith Koujalgi
|
||||
title: Maintainer of Ollama4j
|
||||
url: https://github.com/amithkoujalgi
|
||||
image_url: https://github.com/amithkoujalgi.png
|
||||
3
docs/build.sh
Executable file
@@ -0,0 +1,3 @@
|
||||
#!/usr/bin/env bash
|
||||
npm i
|
||||
npm run build
|
||||
8
docs/docs/apis-ask/_category_.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"label": "APIs - Ask",
|
||||
"position": 10,
|
||||
"link": {
|
||||
"type": "generated-index",
|
||||
"description": "Details of APIs to interact with LLMs."
|
||||
}
|
||||
}
|
||||
42
docs/docs/apis-ask/ask-async.md
Normal file
@@ -0,0 +1,42 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# Ask - Async
|
||||
|
||||
This API lets you ask questions to the LLMs in a asynchronous way.
|
||||
These APIs correlate to
|
||||
the [completion](https://github.com/jmorganca/ollama/blob/main/docs/api.md#generate-a-completion) APIs.
|
||||
|
||||
```java
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
String prompt = "Who are you?";
|
||||
|
||||
OllamaAsyncResultCallback callback = ollamaAPI.askAsync(OllamaModelType.LLAMA2, prompt);
|
||||
|
||||
while (!callback.isComplete() || !callback.getStream().isEmpty()) {
|
||||
// poll for data from the response stream
|
||||
String result = callback.getStream().poll();
|
||||
if (response != null) {
|
||||
System.out.print(result.getResponse());
|
||||
}
|
||||
Thread.sleep(100);
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You will get a response similar to:
|
||||
|
||||
> I am LLaMA, an AI assistant developed by Meta AI that can understand and respond to human input in a conversational
|
||||
> manner. I am trained on a massive dataset of text from the internet and can generate human-like responses to a wide
|
||||
> range of topics and questions. I can be used to create chatbots, virtual assistants, and other applications that
|
||||
> require
|
||||
> natural language understanding and generation capabilities.
|
||||
44
docs/docs/apis-ask/ask-with-image-files.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# Ask - With Image Files
|
||||
|
||||
This API lets you ask questions along with the image files to the LLMs.
|
||||
These APIs correlate to
|
||||
the [completion](https://github.com/jmorganca/ollama/blob/main/docs/api.md#generate-a-completion) APIs.
|
||||
|
||||
:::caution
|
||||
|
||||
Executing this on Ollama server running in CPU-mode will take longer to generate response. Hence, GPU-mode is
|
||||
recommended.
|
||||
|
||||
:::
|
||||
|
||||
## Ask (Sync)
|
||||
|
||||
If you have this image downloaded and you pass the path to the downloaded image to the following code:
|
||||
|
||||

|
||||
|
||||
```java
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
String host = "http://localhost:11434/";
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
ollamaAPI.setRequestTimeoutSeconds(10);
|
||||
|
||||
OllamaResult result = ollamaAPI.askWithImageFiles(OllamaModelType.LLAVA,
|
||||
"What's in this image?",
|
||||
List.of(
|
||||
new File("/path/to/image")));
|
||||
System.out.println(result.getResponse());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You will get a response similar to:
|
||||
|
||||
> This image features a white boat with brown cushions, where a dog is sitting on the back of the boat. The dog seems to
|
||||
> be enjoying its time outdoors, perhaps on a lake.
|
||||
44
docs/docs/apis-ask/ask-with-image-urls.md
Normal file
@@ -0,0 +1,44 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
---
|
||||
|
||||
# Ask - With Image URLs
|
||||
|
||||
This API lets you ask questions along with the image files to the LLMs.
|
||||
These APIs correlate to
|
||||
the [completion](https://github.com/jmorganca/ollama/blob/main/docs/api.md#generate-a-completion) APIs.
|
||||
|
||||
:::caution
|
||||
|
||||
Executing this on Ollama server running in CPU-mode will take longer to generate response. Hence, GPU-mode is
|
||||
recommended.
|
||||
|
||||
:::
|
||||
|
||||
## Ask (Sync)
|
||||
|
||||
Passing the link of this image the following code:
|
||||
|
||||

|
||||
|
||||
```java
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
String host = "http://localhost:11434/";
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
ollamaAPI.setRequestTimeoutSeconds(10);
|
||||
|
||||
OllamaResult result = ollamaAPI.askWithImageURLs(OllamaModelType.LLAVA,
|
||||
"What's in this image?",
|
||||
List.of(
|
||||
"https://t3.ftcdn.net/jpg/02/96/63/80/360_F_296638053_0gUVA4WVBKceGsIr7LNqRWSnkusi07dq.jpg"));
|
||||
System.out.println(result.getResponse());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You will get a response similar to:
|
||||
|
||||
> This image features a white boat with brown cushions, where a dog is sitting on the back of the boat. The dog seems to
|
||||
> be enjoying its time outdoors, perhaps on a lake.
|
||||
106
docs/docs/apis-ask/ask.md
Normal file
@@ -0,0 +1,106 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Ask - Sync
|
||||
|
||||
This API lets you ask questions to the LLMs in a synchronous way.
|
||||
These APIs correlate to
|
||||
the [completion](https://github.com/jmorganca/ollama/blob/main/docs/api.md#generate-a-completion) APIs.
|
||||
|
||||
## Try asking a question about the model.
|
||||
|
||||
```java
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
OllamaResult result = ollamaAPI.ask(OllamaModelType.LLAMA2, "Who are you?");
|
||||
|
||||
System.out.println(result.getResponse());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You will get a response similar to:
|
||||
|
||||
> I am LLaMA, an AI assistant developed by Meta AI that can understand and respond to human input in a conversational
|
||||
> manner. I am trained on a massive dataset of text from the internet and can generate human-like responses to a wide
|
||||
> range of topics and questions. I can be used to create chatbots, virtual assistants, and other applications that
|
||||
> require
|
||||
> natural language understanding and generation capabilities.
|
||||
|
||||
## Try asking a question from general topics.
|
||||
|
||||
```java
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
String prompt = "List all cricket world cup teams of 2019.";
|
||||
|
||||
OllamaResult result = ollamaAPI.ask(OllamaModelType.LLAMA2, prompt);
|
||||
|
||||
System.out.println(result.getResponse());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You'd then get a response from the model:
|
||||
|
||||
> The 2019 ICC Cricket World Cup was held in England and Wales from May 30 to July 14, 2019. The
|
||||
> following teams
|
||||
> participated in the tournament:
|
||||
>
|
||||
> 1. Afghanistan
|
||||
> 2. Australia
|
||||
> 3. Bangladesh
|
||||
> 4. England
|
||||
> 5. India
|
||||
> 6. New Zealand
|
||||
> 7. Pakistan
|
||||
> 8. South Africa
|
||||
> 9. Sri Lanka
|
||||
> 10. West Indies
|
||||
>
|
||||
> These teams competed in a round-robin format, with the top four teams advancing to the
|
||||
> semi-finals. The tournament was
|
||||
> won by the England cricket team, who defeated New Zealand in the final.
|
||||
|
||||
## Try asking for a Database query for your data schema.
|
||||
|
||||
```java
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
String host = "http://localhost:11434/";
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
String prompt = SamplePrompts.getSampleDatabasePromptWithQuestion(
|
||||
"List all customer names who have bought one or more products");
|
||||
OllamaResult result = ollamaAPI.ask(OllamaModelType.SQLCODER, prompt);
|
||||
System.out.println(result.getResponse());
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
_Note: Here I've used
|
||||
a [sample prompt](https://github.com/amithkoujalgi/ollama4j/blob/main/src/main/resources/sample-db-prompt-template.txt)
|
||||
containing a database schema from within this library for demonstration purposes._
|
||||
|
||||
You'd then get a response from the model:
|
||||
|
||||
```sql
|
||||
SELECT customers.name
|
||||
FROM sales
|
||||
JOIN customers ON sales.customer_id = customers.customer_id
|
||||
GROUP BY customers.name;
|
||||
```
|
||||
46
docs/docs/apis-ask/generate-embeddings.md
Normal file
@@ -0,0 +1,46 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
---
|
||||
|
||||
# Generate Embeddings
|
||||
|
||||
Generate embeddings from a model.
|
||||
|
||||
Parameters:
|
||||
|
||||
- `model`: name of model to generate embeddings from
|
||||
- `prompt`: text to generate embeddings for
|
||||
|
||||
```java
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
List<Double> embeddings = ollamaAPI.generateEmbeddings(OllamaModelType.LLAMA2,
|
||||
"Here is an article about llamas...");
|
||||
|
||||
embeddings.forEach(System.out::println);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
You will get a response similar to:
|
||||
|
||||
```json
|
||||
[
|
||||
0.5670403838157654,
|
||||
0.009260174818336964,
|
||||
0.23178744316101074,
|
||||
-0.2916173040866852,
|
||||
-0.8924556970596313,
|
||||
0.8785552978515625,
|
||||
-0.34576427936553955,
|
||||
0.5742510557174683,
|
||||
-0.04222835972905159,
|
||||
-0.137906014919281
|
||||
]
|
||||
```
|
||||
8
docs/docs/apis-extras/_category_.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"label": "APIs - Extras",
|
||||
"position": 10,
|
||||
"link": {
|
||||
"type": "generated-index",
|
||||
"description": "Details of APIs to handle bunch of extra stuff."
|
||||
}
|
||||
}
|
||||
24
docs/docs/apis-extras/basic-auth.md
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# Set Basic Authentication
|
||||
|
||||
This API lets you set the basic authentication for the Ollama client. This would help in scenarios where
|
||||
Ollama server would be setup behind a gateway/reverse proxy with basic auth.
|
||||
|
||||
After configuring basic authentication, all subsequent requests will include the Basic Auth header.
|
||||
|
||||
```java
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
ollamaAPI.setBasicAuth("username", "password");
|
||||
}
|
||||
}
|
||||
```
|
||||
20
docs/docs/apis-extras/ping.md
Normal file
@@ -0,0 +1,20 @@
|
||||
---
|
||||
sidebar_position: 3
|
||||
---
|
||||
|
||||
# Ping
|
||||
|
||||
This API lets you check the reachability of Ollama server.
|
||||
|
||||
```java
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
ollamaAPI.ping();
|
||||
}
|
||||
}
|
||||
```
|
||||
21
docs/docs/apis-extras/request-timeout.md
Normal file
@@ -0,0 +1,21 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# Set Request Timeout
|
||||
|
||||
This API lets you set the request timeout for the Ollama client.
|
||||
|
||||
```java
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
ollamaAPI.setRequestTimeoutSeconds(10);
|
||||
}
|
||||
}
|
||||
```
|
||||
23
docs/docs/apis-extras/verbosity.md
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Set Verbosity
|
||||
|
||||
This API lets you set the verbosity of the Ollama client.
|
||||
|
||||
## Try asking a question about the model.
|
||||
|
||||
```java
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
ollamaAPI.setVerbose(true);
|
||||
}
|
||||
}
|
||||
```
|
||||
8
docs/docs/apis-model-management/_category_.json
Normal file
@@ -0,0 +1,8 @@
|
||||
{
|
||||
"label": "APIs - Model Management",
|
||||
"position": 4,
|
||||
"link": {
|
||||
"type": "generated-index",
|
||||
"description": "Details of APIs to manage LLMs."
|
||||
}
|
||||
}
|
||||
23
docs/docs/apis-model-management/create-model.md
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
sidebar_position: 4
|
||||
---
|
||||
|
||||
# Create Model
|
||||
|
||||
This API lets you create a custom model on the Ollama server.
|
||||
|
||||
```java title="CreateModel.java"
|
||||
public class CreateModel {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
ollamaAPI.createModel("mycustommodel", "/path/to/modelfile/on/ollama-server");
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Once created, you can see it when you use [list models](./list-models) API.
|
||||
26
docs/docs/apis-model-management/delete-model.md
Normal file
@@ -0,0 +1,26 @@
|
||||
---
|
||||
sidebar_position: 5
|
||||
---
|
||||
|
||||
# Delete Model
|
||||
|
||||
This API lets you create a delete a model from the Ollama server.
|
||||
|
||||
```java title="DeleteModel.java"
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
ollamaAPI.setVerbose(false);
|
||||
|
||||
ollamaAPI.deleteModel("mycustommodel", true);
|
||||
}
|
||||
}
|
||||
|
||||
```
|
||||
|
||||
Once deleted, you can verify it using [list models](./list-models) API.
|
||||
34
docs/docs/apis-model-management/get-model-details.md
Normal file
30
docs/docs/apis-model-management/list-models.md
Normal file
@@ -0,0 +1,30 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# List Models
|
||||
|
||||
This API lets you list available models on the Ollama server.
|
||||
|
||||
```java title="ListModels.java"
|
||||
public class ListModels {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
List<Model> models = ollamaAPI.listModels();
|
||||
|
||||
models.forEach(model -> System.out.println(model.getName()));
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
If you have any models already downloaded on Ollama server, you would have them listed as follows:
|
||||
|
||||
```bash
|
||||
llama2:latest
|
||||
sqlcoder:latest
|
||||
```
|
||||
23
docs/docs/apis-model-management/pull-model.md
Normal file
@@ -0,0 +1,23 @@
|
||||
---
|
||||
sidebar_position: 2
|
||||
---
|
||||
|
||||
# Pull Model
|
||||
|
||||
This API lets you pull a model on the Ollama server.
|
||||
|
||||
```java title="PullModel.java"
|
||||
public class Main {
|
||||
|
||||
public static void main(String[] args) {
|
||||
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
ollamaAPI.pullModel(OllamaModelType.LLAMA2);
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Once downloaded, you can see them when you use [list models](./list-models) API.
|
||||
105
docs/docs/intro.md
Normal file
@@ -0,0 +1,105 @@
|
||||
---
|
||||
sidebar_position: 1
|
||||
---
|
||||
|
||||
# Intro
|
||||
|
||||
Let's get started with **Ollama4j**.
|
||||
|
||||
## Getting Started
|
||||
|
||||
### What you'll need
|
||||
|
||||
- **[Ollama](https://ollama.ai/download)**
|
||||
- **[Oracle JDK](https://www.oracle.com/java/technologies/javase/jdk11-archive-downloads.html)** or
|
||||
**[Open JDK](https://jdk.java.net/archive/)** 11.0 or above.
|
||||
- **[Maven](https://maven.apache.org/download.cgi)**
|
||||
|
||||
### Start Ollama server
|
||||
|
||||
The easiest way of getting started with Ollama server is with [Docker](https://docs.docker.com/get-started/overview/).
|
||||
But if you choose to run the
|
||||
Ollama server directly, **[download](https://ollama.ai/download)** the distribution of your choice
|
||||
and follow the installation process.
|
||||
|
||||
#### With Docker
|
||||
|
||||
##### Run in CPU mode:
|
||||
|
||||
```bash
|
||||
docker run -it -v ~/ollama:/root/.ollama -p 11434:11434 ollama/ollama
|
||||
```
|
||||
|
||||
##### Run in GPU mode:
|
||||
|
||||
```bash
|
||||
docker run -it --gpus=all -v ~/ollama:/root/.ollama -p 11434:11434 ollama/ollama
|
||||
```
|
||||
|
||||
You can type this command into Command Prompt, Powershell, Terminal, or any other integrated
|
||||
terminal of your code editor.
|
||||
|
||||
The command runs the Ollama server locally at **http://localhost:11434/**.
|
||||
|
||||
### Setup your project
|
||||
|
||||
Get started by **creating a new Maven project** on your favorite IDE.
|
||||
|
||||
Add the dependency to your project's `pom.xml`.
|
||||
|
||||
```xml
|
||||
|
||||
<dependency>
|
||||
<groupId>io.github.amithkoujalgi</groupId>
|
||||
<artifactId>ollama4j</artifactId>
|
||||
<version>1.0.27</version>
|
||||
</dependency>
|
||||
```
|
||||
|
||||
Find the latest version of the library [here](https://central.sonatype.com/artifact/io.github.amithkoujalgi/ollama4j).
|
||||
|
||||
You might want to include an implementation of [SL4J](https://www.slf4j.org/) logger in your `pom.xml` file. For
|
||||
example,
|
||||
|
||||
Use `slf4j-jdk14` implementation:
|
||||
|
||||
```xml
|
||||
|
||||
<dependency>
|
||||
<groupId>org.slf4j</groupId>
|
||||
<artifactId>slf4j-jdk14</artifactId>
|
||||
<version>2.0.9</version> <!--Replace with appropriate version-->
|
||||
</dependency>
|
||||
```
|
||||
|
||||
or use `logback-classic` implementation:
|
||||
|
||||
```xml
|
||||
|
||||
<dependency>
|
||||
<groupId>ch.qos.logback</groupId>
|
||||
<artifactId>logback-classic</artifactId>
|
||||
<version>1.3.11</version> <!--Replace with appropriate version-->
|
||||
</dependency>
|
||||
```
|
||||
|
||||
or use other suitable implementations.
|
||||
|
||||
Create a new Java class in your project and add this code.
|
||||
|
||||
```java
|
||||
public class OllamaAPITest {
|
||||
|
||||
public static void main(String[] args) {
|
||||
String host = "http://localhost:11434/";
|
||||
|
||||
OllamaAPI ollamaAPI = new OllamaAPI(host);
|
||||
|
||||
ollamaAPI.setVerbose(true);
|
||||
|
||||
boolean isOllamaServerReachable = ollamaAPI.ping();
|
||||
|
||||
System.out.println("Is Ollama server alive: " + isOllamaServerReachable);
|
||||
}
|
||||
}
|
||||
```
|
||||
138
docs/docusaurus.config.js
Normal file
@@ -0,0 +1,138 @@
|
||||
// @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: 'Ollama4j',
|
||||
tagline: 'Java library for interacting with Ollama.',
|
||||
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: '/ollama4j/',
|
||||
|
||||
// GitHub pages deployment config.
|
||||
// If you aren't using GitHub pages, you don't need these.
|
||||
organizationName: 'amithkoujalgi', // Usually your GitHub org/user name.
|
||||
projectName: 'ollama4j', // Usually your repo name.
|
||||
|
||||
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: 'en',
|
||||
locales: ['en'],
|
||||
},
|
||||
|
||||
presets: [
|
||||
[
|
||||
'classic',
|
||||
/** @type {import('@docusaurus/preset-classic').Options} */
|
||||
({
|
||||
docs: {
|
||||
sidebarPath: './sidebars.js',
|
||||
// Please change this to your repo.
|
||||
// Remove this to remove the "edit this page" links.
|
||||
editUrl:
|
||||
'https://github.com/amithkoujalgi/ollama4j/blob/main/docs',
|
||||
},
|
||||
blog: {
|
||||
showReadingTime: true,
|
||||
// Please change this to your repo.
|
||||
// Remove this to remove the "edit this page" links.
|
||||
editUrl:
|
||||
'https://github.com/amithkoujalgi/ollama4j/blob/main/docs',
|
||||
},
|
||||
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: 'Ollama4j',
|
||||
logo: {
|
||||
alt: 'Ollama4j Logo',
|
||||
src: 'img/logo.svg',
|
||||
},
|
||||
items: [
|
||||
{
|
||||
type: 'docSidebar',
|
||||
sidebarId: 'tutorialSidebar',
|
||||
position: 'left',
|
||||
label: 'Usage',
|
||||
},
|
||||
{to: 'https://amithkoujalgi.github.io/ollama4j/apidocs/', label: 'Javadoc', position: 'left'},
|
||||
{to: '/blog', label: 'Blog', position: 'left'},
|
||||
{
|
||||
href: 'https://github.com/amithkoujalgi/ollama4j',
|
||||
label: 'GitHub',
|
||||
position: 'right',
|
||||
},
|
||||
],
|
||||
},
|
||||
footer: {
|
||||
style: 'dark',
|
||||
links: [
|
||||
{
|
||||
title: 'Docs',
|
||||
items: [
|
||||
{
|
||||
label: 'Tutorial',
|
||||
to: '/docs/intro',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'Community',
|
||||
items: [
|
||||
{
|
||||
label: 'Stack Overflow',
|
||||
href: 'https://stackoverflow.com/questions/tagged/ollama4j',
|
||||
},
|
||||
{
|
||||
label: 'Twitter',
|
||||
href: 'https://twitter.com/ollama4j',
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
title: 'More',
|
||||
items: [
|
||||
{
|
||||
label: 'Blog',
|
||||
to: '/blog',
|
||||
},
|
||||
{
|
||||
label: 'GitHub',
|
||||
href: 'https://github.com/amithkoujalgi/ollama4j',
|
||||
},
|
||||
],
|
||||
},
|
||||
],
|
||||
copyright: `Ollama4j Documentation ${new Date().getFullYear()}. Built with Docusaurus.`,
|
||||
},
|
||||
prism: {
|
||||
theme: prismThemes.github,
|
||||
darkTheme: prismThemes.dracula,
|
||||
},
|
||||
}),
|
||||
};
|
||||
|
||||
export default config;
|
||||
14640
docs/package-lock.json
generated
Normal file
44
docs/package.json
Normal file
@@ -0,0 +1,44 @@
|
||||
{
|
||||
"name": "ollama-4-j",
|
||||
"version": "0.0.0",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"docusaurus": "docusaurus",
|
||||
"start": "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": {
|
||||
"@docusaurus/core": "3.0.1",
|
||||
"@docusaurus/preset-classic": "3.0.1",
|
||||
"@mdx-js/react": "^3.0.0",
|
||||
"clsx": "^2.0.0",
|
||||
"prism-react-renderer": "^2.3.0",
|
||||
"react": "^18.0.0",
|
||||
"react-dom": "^18.0.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@docusaurus/module-type-aliases": "3.0.1",
|
||||
"@docusaurus/types": "3.0.1"
|
||||
},
|
||||
"browserslist": {
|
||||
"production": [
|
||||
">0.5%",
|
||||
"not dead",
|
||||
"not op_mini all"
|
||||
],
|
||||
"development": [
|
||||
"last 3 chrome version",
|
||||
"last 3 firefox version",
|
||||
"last 5 safari version"
|
||||
]
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=18.0"
|
||||
}
|
||||
}
|
||||
@@ -1,36 +0,0 @@
|
||||
Understanding publishing:
|
||||
https://dzone.com/articles/how-to-publish-artifacts-to-maven-central
|
||||
|
||||
GPG Signing setup
|
||||
|
||||
## GPG Setup
|
||||
|
||||
https://central.sonatype.org/publish/requirements/gpg/#listing-keys
|
||||
|
||||
### Steps
|
||||
|
||||
- Create key: `gpg --gen-key` and then list keys to verify: `gpg --list-keys`
|
||||
- Distributing Your Public Key:
|
||||
|
||||
```
|
||||
gpg --keyserver pool.sks-keyservers.net --send-keys CA925CD6C9E8D064FF05B4728190C4130ABA0F98
|
||||
gpg --keyserver pgp.key-server.io --send-keys CA925CD6C9E8D064FF05B4728190C4130ABA0F98
|
||||
gpg --keyserver keyserver.ubuntu.com --send-keys CA925CD6C9E8D064FF05B4728190C4130ABA0F98
|
||||
gpg --keyserver pgp.mit.edu --send-keys CA925CD6C9E8D064FF05B4728190C4130ABA0F98
|
||||
gpg --keyserver keys.gnupg.net --send-keys CA925CD6C9E8D064FF05B4728190C4130ABA0F98
|
||||
```
|
||||
|
||||
- Now other people can import your public key from the key server to their local
|
||||
machines: `gpg --keyserver keyserver.ubuntu.com --recv-keys CA925CD6C9E8D064FF05B4728190C4130ABA0F98`
|
||||
|
||||
Export for later use:
|
||||
|
||||
```shell
|
||||
gpg --armor --export-secret-keys 88AA0C903A513340A0F3094326257A6F6F5F24A9 > ~/ollama4j/mvn-publish/private.gpg
|
||||
```
|
||||
|
||||
## Maven publish
|
||||
|
||||
https://central.sonatype.org/publish/publish-maven/
|
||||
|
||||
### Steps
|
||||
5
docs/run.sh
Executable file
@@ -0,0 +1,5 @@
|
||||
#!/usr/bin/env bash
|
||||
npm i
|
||||
|
||||
# dev mode
|
||||
npm run start
|
||||
33
docs/sidebars.js
Normal 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;
|
||||
62
docs/src/components/HomepageFeatures/index.js
Normal file
@@ -0,0 +1,62 @@
|
||||
import clsx from 'clsx';
|
||||
import Heading from '@theme/Heading';
|
||||
import styles from './styles.module.css';
|
||||
|
||||
const FeatureList = [
|
||||
{
|
||||
title: 'Easy LLM Integration',
|
||||
Svg: require('@site/static/img/undraw_docusaurus_mountain.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Easy integration with Ollama, enabling the execution of large language models locally.
|
||||
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Developer-Friendly',
|
||||
Svg: require('@site/static/img/undraw_docusaurus_tree.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Clean and simple <code>APIs</code>, focused on seamless interaction with Ollama.
|
||||
</>
|
||||
),
|
||||
},
|
||||
{
|
||||
title: 'Powered by Java',
|
||||
Svg: require('@site/static/img/undraw_docusaurus_react.svg').default,
|
||||
description: (
|
||||
<>
|
||||
Empowers Java developers to harness the full capabilities of Ollama.
|
||||
</>
|
||||
),
|
||||
},
|
||||
];
|
||||
|
||||
function Feature({Svg, title, description}) {
|
||||
return (
|
||||
<div className={clsx('col col--4')}>
|
||||
<div className="text--center">
|
||||
<Svg className={styles.featureSvg} role="img" />
|
||||
</div>
|
||||
<div className="text--center padding-horiz--md">
|
||||
<Heading as="h3">{title}</Heading>
|
||||
<p>{description}</p>
|
||||
</div>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
|
||||
export default function HomepageFeatures() {
|
||||
return (
|
||||
<section className={styles.features}>
|
||||
<div className="container">
|
||||
<div className="row">
|
||||
{FeatureList.map((props, idx) => (
|
||||
<Feature key={idx} {...props} />
|
||||
))}
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
);
|
||||
}
|
||||
11
docs/src/components/HomepageFeatures/styles.module.css
Normal file
@@ -0,0 +1,11 @@
|
||||
.features {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
padding: 2rem 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.featureSvg {
|
||||
height: 200px;
|
||||
width: 200px;
|
||||
}
|
||||
30
docs/src/css/custom.css
Normal 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);
|
||||
}
|
||||
40
docs/src/pages/index.js
Normal file
@@ -0,0 +1,40 @@
|
||||
import clsx from 'clsx';
|
||||
import Link from '@docusaurus/Link';
|
||||
import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
|
||||
import Layout from '@theme/Layout';
|
||||
import HomepageFeatures from '@site/src/components/HomepageFeatures';
|
||||
|
||||
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>
|
||||
<img src="img/logo.svg" alt="Ollama4j Logo" className={styles.logo} style={{maxWidth: '20vh'}}/>
|
||||
<p className="hero__subtitle">{siteConfig.tagline}</p>
|
||||
<div className={styles.buttons}>
|
||||
<Link
|
||||
className="button button--secondary button--lg"
|
||||
to="/docs/intro">
|
||||
Getting Started
|
||||
</Link>
|
||||
</div>
|
||||
</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/>
|
||||
<main>
|
||||
<HomepageFeatures/>
|
||||
</main>
|
||||
</Layout>);
|
||||
}
|
||||
23
docs/src/pages/index.module.css
Normal 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;
|
||||
}
|
||||
7
docs/src/pages/markdown-page.md
Normal file
@@ -0,0 +1,7 @@
|
||||
---
|
||||
title: Markdown page example
|
||||
---
|
||||
|
||||
# Markdown page example
|
||||
|
||||
You don't need React to write simple standalone pages.
|
||||
0
docs/static/.nojekyll
vendored
Normal file
BIN
docs/static/img/docusaurus-social-card.jpg
vendored
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
docs/static/img/docusaurus.png
vendored
Normal file
|
After Width: | Height: | Size: 5.0 KiB |
BIN
docs/static/img/favicon.ico
vendored
Normal file
|
After Width: | Height: | Size: 15 KiB |
997
docs/static/img/logo.svg
vendored
Normal file
@@ -0,0 +1,997 @@
|
||||
<svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||
width="100%" viewBox="0 0 452 626" enable-background="new 0 0 452 626" xml:space="preserve">
|
||||
<path fill="#FEFEFE" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M453.000000,172.000000
|
||||
C453.000000,324.000000 453.000000,475.500000 453.000000,627.000000
|
||||
C302.333344,627.000000 151.666672,627.000000 1.000000,627.000000
|
||||
C1.000000,418.333344 1.000000,209.666672 1.000000,1.000000
|
||||
C151.666672,1.000000 302.333344,1.000000 453.000000,1.000000
|
||||
C453.000000,57.833332 453.000000,114.666664 453.000000,172.000000
|
||||
M84.028053,393.322449
|
||||
C83.384384,392.190155 82.740715,391.057831 81.674141,389.388641
|
||||
C80.802788,387.589966 79.931435,385.791290 78.979706,383.217987
|
||||
C78.830223,382.193207 78.680740,381.168457 79.211594,379.870819
|
||||
C78.441444,377.938232 77.671303,376.005676 76.812462,374.215210
|
||||
C76.812462,374.215210 76.647430,374.186401 76.973671,373.285034
|
||||
C76.590546,365.645538 75.618927,357.981232 75.940254,350.371460
|
||||
C76.741119,331.405548 82.253365,313.830963 92.617485,297.769623
|
||||
C97.025253,290.938904 96.475342,283.876709 91.198715,279.005066
|
||||
C78.423065,267.209961 74.109749,251.716476 73.139450,235.444382
|
||||
C71.973801,215.896286 78.028862,197.982742 90.090782,182.428818
|
||||
C101.315453,167.954514 115.670410,158.157211 134.178162,155.874054
|
||||
C140.515533,155.092270 147.056351,155.788574 153.494400,156.050644
|
||||
C158.244003,156.243958 162.395172,155.137680 164.161224,150.445236
|
||||
C176.456848,117.775826 220.521179,96.778435 254.951309,110.592094
|
||||
C273.242065,117.930511 287.870972,129.076309 296.642670,147.071106
|
||||
C300.826782,155.654663 302.852386,156.998413 312.043640,155.662018
|
||||
C329.400574,153.138351 344.629944,158.319366 358.222992,168.651062
|
||||
C374.417389,180.959961 384.232941,197.541626 387.604309,217.457413
|
||||
C391.342957,239.542877 387.681763,260.251465 372.873718,277.966705
|
||||
C366.868317,285.151154 365.754486,290.128052 370.589783,297.820068
|
||||
C380.456207,313.515564 386.038513,330.472168 387.060211,348.944763
|
||||
C388.203552,369.616760 384.423615,388.963318 371.701721,405.929657
|
||||
C370.582031,407.422852 370.128693,409.415680 369.156036,412.067352
|
||||
C369.234100,417.265717 369.312134,422.464111 369.125854,428.423218
|
||||
C369.307739,429.397766 369.221893,430.540802 369.712799,431.320862
|
||||
C374.792511,439.392426 379.126221,447.784576 380.224609,457.409882
|
||||
C381.159149,465.599304 382.514496,473.851654 382.264130,482.032715
|
||||
C382.034668,489.531799 379.894287,496.970642 378.621002,504.440308
|
||||
C377.993927,508.119110 379.174957,510.172180 383.319550,510.096436
|
||||
C390.650452,509.962463 397.988953,510.171967 405.315948,509.955780
|
||||
C406.834259,509.911011 408.971466,509.024048 409.670166,507.842957
|
||||
C410.891266,505.778839 411.484070,503.228821 411.878296,500.807190
|
||||
C416.261047,473.884644 413.699829,447.906311 401.345032,423.216827
|
||||
C400.580872,421.689758 400.674408,419.193756 401.362976,417.570099
|
||||
C404.909973,409.205811 409.605743,401.243958 412.367218,392.649017
|
||||
C417.975433,375.193695 419.173767,357.238953 416.897278,338.910950
|
||||
C414.929382,323.067810 410.664154,308.053436 403.543945,293.858185
|
||||
C402.309479,291.397034 402.337830,289.947479 403.717407,287.668213
|
||||
C409.853485,277.530884 414.585663,266.829285 417.023132,255.099640
|
||||
C419.414673,243.590927 419.981537,232.134415 418.800720,220.438522
|
||||
C417.038361,202.982010 412.465454,186.307236 402.514008,171.942856
|
||||
C395.960114,162.482651 386.950592,154.743759 379.320160,145.990402
|
||||
C377.973846,144.445969 377.363831,141.657150 377.507690,139.516495
|
||||
C378.297546,127.766296 380.238586,116.036354 380.200470,104.304604
|
||||
C380.166199,93.761627 378.195129,83.211807 376.884613,72.689156
|
||||
C374.864380,56.468525 369.322693,41.604122 359.447601,28.447065
|
||||
C347.885315,13.042048 328.695618,9.548378 313.728760,20.546566
|
||||
C302.718689,28.637171 296.367950,40.255608 292.319153,52.873642
|
||||
C288.495239,64.790840 285.972961,77.125694 282.786560,89.636307
|
||||
C281.728912,89.149498 280.086487,88.476044 278.519012,87.658875
|
||||
C267.387054,81.855431 255.631439,77.483955 243.179901,76.411026
|
||||
C228.426987,75.139786 213.532364,75.173859 199.477219,81.187950
|
||||
C195.445267,82.913185 191.609116,85.096024 187.039963,87.409706
|
||||
C185.517532,88.139969 183.995117,88.870232 181.640503,89.273247
|
||||
C181.076416,89.449928 180.512344,89.626617 179.750717,89.104050
|
||||
C179.286575,88.562805 178.822433,88.021568 178.403229,86.779953
|
||||
C178.280228,85.854477 178.157227,84.928993 178.395538,83.604683
|
||||
C177.896805,83.088760 177.398056,82.572838 176.685577,81.409119
|
||||
C176.630936,80.730492 176.576294,80.051865 176.960648,78.797684
|
||||
C176.709839,78.204300 176.459030,77.610916 176.007385,76.414719
|
||||
C175.954910,75.995293 175.902451,75.575867 176.264999,74.490211
|
||||
C175.849304,73.660492 175.433609,72.830765 174.768875,71.298279
|
||||
C174.466293,69.580925 174.163727,67.863571 174.227936,65.526169
|
||||
C173.850906,65.019577 173.473877,64.512985 172.854462,63.470425
|
||||
C172.785080,63.085686 172.715714,62.700943 173.010712,61.661789
|
||||
C172.314041,60.005325 171.617386,58.348862 170.556885,56.037312
|
||||
C170.337494,55.061695 170.118103,54.086079 170.186188,52.404636
|
||||
C169.183838,49.916843 168.181473,47.429050 167.112350,44.178394
|
||||
C163.580078,34.403221 157.690826,26.242882 149.180649,20.384657
|
||||
C141.991806,15.436010 134.072617,11.946379 124.898354,14.326028
|
||||
C110.770477,17.990557 102.129440,27.828142 95.971077,40.326843
|
||||
C90.741524,50.940479 87.607124,62.120296 85.745552,73.876877
|
||||
C82.927361,91.674881 80.890259,109.365974 83.908562,127.320709
|
||||
C84.783783,132.527115 87.079094,138.393234 85.540413,142.860626
|
||||
C83.920807,147.562973 78.674400,151.149567 74.692162,154.881668
|
||||
C57.430939,171.058670 47.458839,190.959152 44.085915,214.243805
|
||||
C40.320992,240.234619 43.917156,264.894196 58.092773,287.427032
|
||||
C59.942730,290.367645 59.926754,292.492737 58.494541,295.553497
|
||||
C46.295830,321.623016 41.936687,348.865662 46.780624,377.406982
|
||||
C49.218697,391.772522 54.294636,405.131378 61.580219,417.735687
|
||||
C62.395935,419.146942 62.137901,421.651398 61.518700,423.332397
|
||||
C59.528576,428.735168 56.721302,433.857391 54.976612,439.326263
|
||||
C49.929848,455.145660 48.280193,471.459442 49.268887,487.994568
|
||||
C49.472752,491.403992 50.940212,494.737854 52.000786,498.037598
|
||||
C52.000786,498.037598 52.141964,497.912567 51.786953,498.590393
|
||||
C52.425430,500.407654 53.063911,502.224915 53.701969,504.834595
|
||||
C53.903355,505.870911 54.104740,506.907196 53.721775,508.035797
|
||||
C53.851608,508.542664 53.981441,509.049500 54.111290,509.556396
|
||||
C54.425308,509.285828 54.739330,509.015259 55.882069,508.977844
|
||||
C63.945946,509.104126 72.009705,509.277893 80.073845,509.297089
|
||||
C81.092964,509.299530 82.114014,508.490265 83.835052,507.995300
|
||||
C83.619720,506.305725 83.404381,504.616119 82.922226,502.331299
|
||||
C82.889275,501.900543 82.856323,501.469818 83.443771,500.751770
|
||||
C82.643730,499.158417 81.843697,497.565094 80.906509,496.075348
|
||||
C80.906509,496.075348 80.745781,496.136322 81.050255,495.397430
|
||||
C81.003296,494.600006 80.956337,493.802582 81.371849,492.650238
|
||||
C81.077583,491.692230 80.783318,490.734253 80.320518,489.195831
|
||||
C80.291107,488.794952 80.261703,488.394104 80.764938,487.362152
|
||||
C80.576195,481.576630 80.387451,475.791077 80.183067,469.395386
|
||||
C80.256805,468.995850 80.330544,468.596313 81.007416,467.926117
|
||||
C80.996033,466.283783 80.984657,464.641418 80.988174,462.201477
|
||||
C80.886604,461.427216 80.785034,460.652924 80.878166,459.454620
|
||||
C80.878166,459.454620 81.088028,459.037811 81.792862,458.971375
|
||||
C82.090530,456.960693 82.388206,454.950012 82.661469,452.204620
|
||||
C82.859047,451.501251 83.056625,450.797913 83.944946,450.005859
|
||||
C84.995773,446.779480 86.046600,443.553101 87.184296,439.777924
|
||||
C87.391747,439.478699 87.599197,439.179474 88.500618,438.983063
|
||||
C89.243309,437.307098 89.986000,435.631134 90.871284,433.308929
|
||||
C91.099716,432.935242 91.328140,432.561584 92.156654,432.273102
|
||||
C92.402473,431.507263 92.648293,430.741455 93.007027,429.327637
|
||||
C93.231262,428.956329 93.455498,428.585022 94.367706,428.216797
|
||||
C95.515411,424.498169 97.368416,420.812531 97.544228,417.048492
|
||||
C97.648399,414.818268 95.105270,412.464417 93.426132,410.056519
|
||||
C93.426132,410.056519 93.105278,409.931610 93.296898,409.263428
|
||||
C92.675713,408.682281 92.054527,408.101135 91.289909,406.986969
|
||||
C91.041679,406.495941 90.793449,406.004913 90.807411,404.793732
|
||||
C89.187851,402.545105 87.568283,400.296448 85.548523,397.551147
|
||||
C85.006523,396.387878 84.464523,395.224640 84.028053,393.322449
|
||||
M238.704788,430.769623
|
||||
C225.614304,415.102051 211.716629,400.304688 193.951843,388.365540
|
||||
C194.397675,392.088226 194.996338,394.719116 194.981903,397.346619
|
||||
C194.880341,415.820526 194.728973,434.294952 194.444962,452.766907
|
||||
C194.115402,474.202911 190.144241,494.365631 175.516769,511.381409
|
||||
C172.988541,514.322327 172.781799,519.793396 172.680847,524.123291
|
||||
C172.594635,527.821350 174.081863,531.590942 175.080978,535.272461
|
||||
C177.421707,543.897827 176.378571,551.729858 170.212524,558.583130
|
||||
C168.437653,560.555786 166.729553,562.654541 165.373871,564.924194
|
||||
C162.840958,569.164673 164.322479,573.284607 169.046417,574.770142
|
||||
C171.258484,575.465759 173.765152,575.224609 175.950989,575.393616
|
||||
C175.950989,580.094604 175.795319,585.251099 175.985687,590.394775
|
||||
C176.310593,599.173157 181.884720,602.863953 189.833038,599.048218
|
||||
C194.566330,596.775818 198.751190,593.311340 203.054657,590.205444
|
||||
C208.854935,586.019409 214.232239,581.167786 220.322083,577.478271
|
||||
C234.627289,568.811646 246.313293,571.031738 256.815735,584.070618
|
||||
C260.987000,589.249207 264.495270,594.957397 268.574249,600.215942
|
||||
C272.782379,605.640869 277.620483,606.983093 283.359100,603.309326
|
||||
C286.582703,601.245544 289.721069,597.563171 290.808685,593.976562
|
||||
C292.712677,587.697815 293.627930,580.953857 293.868591,574.365051
|
||||
C294.863953,547.117310 288.966675,521.135132 278.468567,496.108521
|
||||
C274.422760,486.463593 275.001465,477.135834 279.253845,467.597565
|
||||
C281.355743,462.882965 282.522644,457.622284 283.297943,452.485748
|
||||
C283.936432,448.255554 283.334015,443.843964 283.354462,439.513092
|
||||
C283.379517,434.208038 285.202240,429.833008 289.716736,426.652985
|
||||
C295.510742,422.571716 297.029449,416.534576 296.497925,409.903992
|
||||
C296.233734,406.608063 295.403839,403.340729 294.640045,400.105255
|
||||
C293.097107,393.569122 293.417755,387.245361 296.245911,381.081055
|
||||
C297.144135,379.123383 297.960480,377.096710 298.522583,375.022552
|
||||
C299.846466,370.137695 297.229156,367.162811 292.208710,367.749664
|
||||
C287.076477,368.349579 284.355347,371.765656 282.760803,376.259735
|
||||
C281.377350,380.158875 280.210754,384.135010 278.948334,388.077118
|
||||
C278.493713,388.077820 278.039124,388.078522 277.584503,388.079254
|
||||
C276.526917,384.292572 275.421356,380.518463 274.425690,376.715576
|
||||
C273.501343,373.185089 273.035675,369.493347 271.742432,366.111877
|
||||
C270.365845,362.512512 266.838562,360.993866 263.557739,362.364105
|
||||
C261.530121,363.210938 259.387695,366.264893 259.189301,368.496277
|
||||
C258.768158,373.233368 259.487274,378.089325 259.928894,382.879028
|
||||
C260.192261,385.735413 260.815979,388.558624 261.277679,391.396729
|
||||
C260.828674,391.558228 260.379639,391.719727 259.930634,391.881195
|
||||
C257.462006,387.085114 255.028595,382.270416 252.511154,377.500061
|
||||
C251.067886,374.765198 249.422287,372.070312 245.619095,373.292999
|
||||
C241.971878,374.465485 239.393066,376.840057 239.672379,380.920197
|
||||
C239.862701,383.700409 240.338394,386.659271 241.524673,389.136902
|
||||
C245.430740,397.294739 249.718521,405.269745 253.747864,413.097748
|
||||
C250.644165,414.562683 246.317841,415.800598 243.145325,418.430420
|
||||
C241.479568,419.811279 240.915283,423.897827 241.602615,426.251862
|
||||
C242.053848,427.797363 246.071442,429.779144 247.730911,429.236908
|
||||
C254.664597,426.971069 260.430786,428.599213 266.054321,432.611725
|
||||
C267.495361,433.640015 269.588715,433.739441 271.066010,434.735046
|
||||
C273.126404,436.123566 276.170074,437.708557 276.539459,439.640381
|
||||
C277.648865,445.442352 278.310760,451.497650 277.907013,457.368866
|
||||
C277.575287,462.192261 273.777802,465.197876 268.928558,466.225769
|
||||
C264.201569,467.227722 262.276031,463.903351 260.005219,460.611725
|
||||
C253.199844,450.746674 246.123001,441.068878 238.704788,430.769623
|
||||
M154.621170,247.411545
|
||||
C156.249237,239.272903 153.315323,232.959564 146.511917,228.594666
|
||||
C135.823425,221.737289 122.780060,227.430878 118.151245,240.764862
|
||||
C115.191765,249.290085 117.906853,257.811768 124.995628,262.246887
|
||||
C132.876831,267.177795 141.256744,266.470551 147.597290,259.504211
|
||||
C150.507172,256.307129 152.173431,251.978165 154.621170,247.411545
|
||||
M342.601624,235.803604
|
||||
C336.956207,226.722107 326.795410,223.281433 318.256866,227.559906
|
||||
C309.340973,232.027466 306.012299,241.199265 309.653748,251.264969
|
||||
C312.956024,260.393127 322.273987,266.535522 330.407257,264.945709
|
||||
C344.775848,262.137024 350.027557,250.146881 342.601624,235.803604
|
||||
M234.497452,342.851105
|
||||
C253.566727,343.657532 271.469879,340.207092 287.171722,328.559448
|
||||
C310.519226,311.240326 316.081909,280.706909 300.605438,256.338226
|
||||
C288.073700,236.606140 269.423523,226.137390 247.238831,222.487762
|
||||
C222.618088,218.437363 199.244995,222.800171 178.870041,238.376236
|
||||
C163.531158,250.102356 153.864807,265.409180 153.691620,284.912689
|
||||
C153.411209,316.492493 179.166718,337.251831 207.131546,341.601624
|
||||
C215.776138,342.946228 224.701584,342.485168 234.497452,342.851105
|
||||
z"/>
|
||||
<path fill="#040404" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M81.088028,459.037811
|
||||
C81.088028,459.037811 80.878166,459.454620 80.426918,459.758057
|
||||
C79.577690,463.537842 79.179718,467.014221 78.755219,470.918884
|
||||
C78.786705,476.904144 78.844734,482.461151 78.638916,488.255005
|
||||
C79.165306,491.040039 79.955544,493.588196 80.745789,496.136322
|
||||
C80.745781,496.136322 80.906509,496.075348 80.820312,496.340576
|
||||
C80.764984,497.074768 80.795845,497.543762 80.614609,498.175201
|
||||
C80.846085,498.944885 81.289658,499.552124 81.864838,500.383362
|
||||
C82.272087,500.751251 82.547729,500.895142 82.823372,501.039062
|
||||
C82.856323,501.469818 82.889275,501.900543 82.864288,503.024963
|
||||
C82.915634,505.164795 83.024902,506.610931 83.134178,508.057068
|
||||
C82.114014,508.490265 81.092964,509.299530 80.073845,509.297089
|
||||
C72.009705,509.277893 63.945946,509.104126 55.541321,508.602112
|
||||
C54.902428,508.132111 54.604279,508.037811 54.306129,507.943512
|
||||
C54.104740,506.907196 53.903355,505.870911 54.018414,504.290222
|
||||
C53.603893,501.801422 52.872929,499.856995 52.141964,497.912567
|
||||
C52.141964,497.912567 52.000786,498.037598 52.083740,497.622467
|
||||
C52.093033,486.219025 51.317581,475.179047 52.121506,464.255310
|
||||
C53.150429,450.274414 56.220573,436.570068 63.658657,424.366791
|
||||
C65.526611,421.302124 65.433167,419.138184 63.544727,416.253418
|
||||
C54.717529,402.768921 49.744976,387.735748 48.103249,371.881927
|
||||
C45.307518,344.884155 48.776821,318.757507 61.291477,294.222534
|
||||
C62.084080,292.668640 61.991234,289.819855 61.066147,288.364105
|
||||
C52.251549,274.493134 46.808193,259.574677 45.248268,243.132401
|
||||
C42.852757,217.882736 47.534954,194.193985 61.992100,173.306381
|
||||
C68.736389,163.562241 77.874924,155.485794 85.780846,146.523407
|
||||
C86.925201,145.226135 88.094681,143.039856 87.813805,141.533173
|
||||
C83.612144,118.994171 83.886810,96.443306 87.584114,73.926888
|
||||
C89.888298,59.894482 94.077393,46.452618 101.668411,34.208534
|
||||
C116.050591,11.010487 142.423965,10.012201 158.193069,32.259693
|
||||
C161.068115,36.315899 163.428421,40.736950 166.008514,45.367081
|
||||
C167.293350,48.199883 168.596024,50.655174 169.898697,53.110466
|
||||
C170.118103,54.086079 170.337494,55.061695 170.516022,56.656281
|
||||
C171.198898,58.955570 171.922623,60.635887 172.646332,62.316200
|
||||
C172.715714,62.700943 172.785080,63.085686 172.705475,63.822990
|
||||
C172.991394,64.832443 173.426270,65.489326 173.861160,66.146217
|
||||
C174.163727,67.863571 174.466293,69.580925 174.618439,71.788315
|
||||
C174.928665,73.237709 175.389328,74.197075 175.849991,75.156441
|
||||
C175.902451,75.575867 175.954910,75.995293 175.846039,76.773323
|
||||
C175.963669,77.879028 176.242661,78.626129 176.521637,79.373238
|
||||
C176.576294,80.051865 176.630936,80.730492 176.591492,82.007233
|
||||
C176.576050,83.044731 176.654709,83.484108 176.576355,84.245636
|
||||
C176.527023,85.869171 176.424057,87.236214 176.803345,88.452919
|
||||
C177.161438,89.601616 178.111786,91.518448 178.651947,91.468811
|
||||
C179.971619,91.347542 181.204727,90.284454 182.472687,89.600502
|
||||
C183.995117,88.870232 185.517532,88.139969 187.682526,87.421600
|
||||
C199.862427,82.564972 211.695221,78.741302 224.268723,77.799339
|
||||
C244.137772,76.310799 262.499237,81.442329 279.876282,90.738556
|
||||
C284.705017,93.321793 285.663574,92.699104 286.591431,87.283226
|
||||
C288.048218,78.779991 289.343262,70.212616 291.482635,61.871384
|
||||
C294.604065,49.701283 299.713043,38.361351 307.894592,28.601389
|
||||
C321.889679,11.906353 344.252258,12.365029 357.757874,29.431511
|
||||
C365.912079,39.735626 370.523163,51.638264 373.411957,64.135040
|
||||
C379.017395,88.383919 380.067780,112.966293 375.620728,137.494095
|
||||
C374.579224,143.238708 376.206207,146.487579 380.126709,149.736679
|
||||
C400.188812,166.362946 411.718201,187.683655 415.828918,213.379791
|
||||
C420.016449,239.556335 415.923798,263.955994 402.109955,286.707825
|
||||
C401.013214,288.514221 400.408813,291.716217 401.261047,293.432892
|
||||
C407.217255,305.430206 411.527740,317.885925 413.647644,331.131470
|
||||
C417.956573,358.055206 416.688477,384.467468 403.418610,408.774658
|
||||
C398.867920,417.110443 398.507538,422.926819 402.683075,431.558014
|
||||
C412.522888,451.897675 412.483154,474.064392 410.774536,496.141907
|
||||
C410.521210,499.415100 409.471771,502.678253 408.392456,505.808807
|
||||
C407.997925,506.953125 406.467255,508.473480 405.418396,508.502502
|
||||
C397.329834,508.726166 389.232300,508.625641 380.583740,508.625641
|
||||
C380.751251,505.841766 380.335083,503.517059 381.094543,501.677795
|
||||
C385.174316,491.798065 385.213715,481.471588 384.451660,471.169434
|
||||
C383.285370,455.402435 379.373352,440.444733 369.390198,427.662476
|
||||
C369.312134,422.464111 369.234100,417.265717 369.591858,411.585693
|
||||
C378.529846,401.643585 383.981934,390.485779 386.750061,378.250336
|
||||
C391.087433,359.078522 390.324127,339.872467 383.795532,321.287689
|
||||
C380.908813,313.070160 376.545563,305.342773 372.531128,297.558655
|
||||
C369.061798,290.831512 369.099243,284.694824 373.451782,279.933136
|
||||
C385.207153,267.072601 390.345306,251.555588 390.990601,234.540543
|
||||
C391.698395,215.876160 386.211761,198.788010 375.462585,183.588516
|
||||
C366.633759,171.104446 354.927002,162.243713 340.503571,156.683228
|
||||
C329.846130,152.574600 319.002258,152.920975 308.040192,153.393570
|
||||
C303.576660,153.585983 300.326080,152.697845 299.000610,147.683426
|
||||
C298.257538,144.872162 296.497681,142.276016 294.936188,139.743042
|
||||
C279.399597,114.540398 242.774384,96.847366 211.309784,107.230194
|
||||
C190.407791,114.127548 173.315369,125.894386 163.943314,146.311646
|
||||
C161.179047,152.333710 157.892578,153.781937 152.206726,153.371094
|
||||
C142.886841,152.697678 133.562439,152.564117 124.542236,155.585190
|
||||
C94.260124,165.727325 76.557159,191.353058 72.041077,220.073395
|
||||
C70.376244,230.660965 70.916847,241.205658 73.803696,251.693512
|
||||
C76.625580,261.945374 80.586334,271.384705 88.392426,278.884735
|
||||
C93.718521,284.001953 94.731979,290.720947 90.756561,296.967590
|
||||
C77.313744,318.090393 72.271309,341.206696 74.216591,365.965424
|
||||
C74.435547,368.752228 75.809227,371.448273 76.647430,374.186401
|
||||
C76.647430,374.186401 76.812462,374.215210 76.697754,374.486023
|
||||
C76.660233,375.504852 76.737404,376.252869 76.596680,377.204956
|
||||
C76.873169,378.311310 77.367561,379.213654 78.023911,380.252869
|
||||
C78.185860,380.389740 78.531258,380.143677 78.531258,380.143677
|
||||
C78.680740,381.168457 78.830223,382.193207 78.722519,383.768188
|
||||
C79.531815,386.969818 80.598312,389.621246 81.737183,392.632812
|
||||
C83.174011,395.357147 84.538460,397.721344 85.972809,400.431213
|
||||
C87.543549,402.355896 89.044395,403.934875 90.545227,405.513885
|
||||
C90.793449,406.004913 91.041679,406.495941 91.224251,407.604248
|
||||
C91.807487,408.791534 92.456383,409.361572 93.105286,409.931610
|
||||
C93.105278,409.931610 93.426132,410.056519 93.553352,410.530670
|
||||
C96.694374,416.741272 95.423264,422.477478 93.679718,428.213684
|
||||
C93.455498,428.585022 93.231262,428.956329 92.626465,429.662476
|
||||
C92.016121,430.727539 91.786346,431.457703 91.556564,432.187897
|
||||
C91.328140,432.561584 91.099716,432.935242 90.458389,433.668884
|
||||
C89.299217,435.645966 88.552940,437.263123 87.806664,438.880249
|
||||
C87.599197,439.179474 87.391747,439.478699 86.830666,440.128723
|
||||
C85.880585,441.595398 85.284126,442.711304 84.389313,443.909637
|
||||
C83.728355,445.328064 83.365753,446.664062 82.957626,448.363831
|
||||
C83.026131,449.183258 83.140167,449.638916 83.254196,450.094543
|
||||
C83.056625,450.797913 82.859047,451.501251 82.415634,452.566895
|
||||
C81.983971,453.217468 81.798141,453.505768 81.344223,453.843994
|
||||
C81.031883,454.595093 80.987633,455.296234 80.905113,456.385132
|
||||
C80.940575,457.527832 81.014305,458.282837 81.088028,459.037811
|
||||
M346.639221,70.840302
|
||||
C344.635559,65.215714 343.129150,59.339684 340.456360,54.053432
|
||||
C338.622345,50.426132 335.167023,47.618595 332.436462,44.444618
|
||||
C329.659210,47.612175 326.095215,50.377460 324.235626,54.014240
|
||||
C314.115509,73.805855 312.400696,95.373947 312.214203,117.085426
|
||||
C312.183044,120.713676 313.497894,125.205994 318.707092,125.839920
|
||||
C328.550537,127.037773 338.395508,128.223099 348.769745,129.477722
|
||||
C349.020416,128.056488 349.429626,126.150459 349.685059,124.224052
|
||||
C352.032440,106.522598 350.351135,89.039009 346.639221,70.840302
|
||||
M113.492012,89.731453
|
||||
C111.794785,103.116592 111.746040,116.437302 114.398529,129.551453
|
||||
C123.742180,128.277740 132.434082,126.908836 141.171570,125.959351
|
||||
C148.311752,125.183441 151.529449,122.364624 150.970123,115.314209
|
||||
C149.971970,102.732277 149.011307,90.101509 146.990555,77.660789
|
||||
C145.313797,67.337700 141.982315,57.297325 135.651627,48.651859
|
||||
C131.469238,42.940208 129.319321,43.092106 125.336067,49.049961
|
||||
C124.967010,49.601967 124.647690,50.188084 124.319611,50.766495
|
||||
C117.620155,62.578022 114.967781,75.529541 113.492012,89.731453
|
||||
z"/>
|
||||
<path fill="#090808" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M238.928452,431.043823
|
||||
C246.123001,441.068878 253.199844,450.746674 260.005219,460.611725
|
||||
C262.276031,463.903351 264.201569,467.227722 268.928558,466.225769
|
||||
C273.777802,465.197876 277.575287,462.192261 277.907013,457.368866
|
||||
C278.310760,451.497650 277.648865,445.442352 276.539459,439.640381
|
||||
C276.170074,437.708557 273.126404,436.123566 271.066010,434.735046
|
||||
C269.588715,433.739441 267.495361,433.640015 266.054321,432.611725
|
||||
C260.430786,428.599213 254.664597,426.971069 247.730911,429.236908
|
||||
C246.071442,429.779144 242.053848,427.797363 241.602615,426.251862
|
||||
C240.915283,423.897827 241.479568,419.811279 243.145325,418.430420
|
||||
C246.317841,415.800598 250.644165,414.562683 253.747864,413.097748
|
||||
C249.718521,405.269745 245.430740,397.294739 241.524673,389.136902
|
||||
C240.338394,386.659271 239.862701,383.700409 239.672379,380.920197
|
||||
C239.393066,376.840057 241.971878,374.465485 245.619095,373.292999
|
||||
C249.422287,372.070312 251.067886,374.765198 252.511154,377.500061
|
||||
C255.028595,382.270416 257.462006,387.085114 259.930634,391.881195
|
||||
C260.379639,391.719727 260.828674,391.558228 261.277679,391.396729
|
||||
C260.815979,388.558624 260.192261,385.735413 259.928894,382.879028
|
||||
C259.487274,378.089325 258.768158,373.233368 259.189301,368.496277
|
||||
C259.387695,366.264893 261.530121,363.210938 263.557739,362.364105
|
||||
C266.838562,360.993866 270.365845,362.512512 271.742432,366.111877
|
||||
C273.035675,369.493347 273.501343,373.185089 274.425690,376.715576
|
||||
C275.421356,380.518463 276.526917,384.292572 277.584503,388.079254
|
||||
C278.039124,388.078522 278.493713,388.077820 278.948334,388.077118
|
||||
C280.210754,384.135010 281.377350,380.158875 282.760803,376.259735
|
||||
C284.355347,371.765656 287.076477,368.349579 292.208710,367.749664
|
||||
C297.229156,367.162811 299.846466,370.137695 298.522583,375.022552
|
||||
C297.960480,377.096710 297.144135,379.123383 296.245911,381.081055
|
||||
C293.417755,387.245361 293.097107,393.569122 294.640045,400.105255
|
||||
C295.403839,403.340729 296.233734,406.608063 296.497925,409.903992
|
||||
C297.029449,416.534576 295.510742,422.571716 289.716736,426.652985
|
||||
C285.202240,429.833008 283.379517,434.208038 283.354462,439.513092
|
||||
C283.334015,443.843964 283.936432,448.255554 283.297943,452.485748
|
||||
C282.522644,457.622284 281.355743,462.882965 279.253845,467.597565
|
||||
C275.001465,477.135834 274.422760,486.463593 278.468567,496.108521
|
||||
C288.966675,521.135132 294.863953,547.117310 293.868591,574.365051
|
||||
C293.627930,580.953857 292.712677,587.697815 290.808685,593.976562
|
||||
C289.721069,597.563171 286.582703,601.245544 283.359100,603.309326
|
||||
C277.620483,606.983093 272.782379,605.640869 268.574249,600.215942
|
||||
C264.495270,594.957397 260.987000,589.249207 256.815735,584.070618
|
||||
C246.313293,571.031738 234.627289,568.811646 220.322083,577.478271
|
||||
C214.232239,581.167786 208.854935,586.019409 203.054657,590.205444
|
||||
C198.751190,593.311340 194.566330,596.775818 189.833038,599.048218
|
||||
C181.884720,602.863953 176.310593,599.173157 175.985687,590.394775
|
||||
C175.795319,585.251099 175.950989,580.094604 175.950989,575.393616
|
||||
C173.765152,575.224609 171.258484,575.465759 169.046417,574.770142
|
||||
C164.322479,573.284607 162.840958,569.164673 165.373871,564.924194
|
||||
C166.729553,562.654541 168.437653,560.555786 170.212524,558.583130
|
||||
C176.378571,551.729858 177.421707,543.897827 175.080978,535.272461
|
||||
C174.081863,531.590942 172.594635,527.821350 172.680847,524.123291
|
||||
C172.781799,519.793396 172.988541,514.322327 175.516769,511.381409
|
||||
C190.144241,494.365631 194.115402,474.202911 194.444962,452.766907
|
||||
C194.728973,434.294952 194.880341,415.820526 194.981903,397.346619
|
||||
C194.996338,394.719116 194.397675,392.088226 193.951843,388.365540
|
||||
C211.716629,400.304688 225.614304,415.102051 238.928452,431.043823
|
||||
M228.385803,451.264862
|
||||
C227.576050,451.480164 226.766312,451.695465 225.209366,451.841797
|
||||
C222.756439,452.743103 220.303528,453.644409 217.170731,454.740448
|
||||
C214.683762,456.731873 212.196808,458.723328 209.074677,461.086914
|
||||
C206.395721,465.039581 204.903061,469.203491 206.694351,474.645966
|
||||
C207.032074,475.455811 207.369797,476.265686 207.787186,477.773773
|
||||
C209.189240,479.510315 210.591293,481.246826 212.329575,483.592102
|
||||
C215.219910,484.719025 218.110245,485.845917 221.635101,487.394684
|
||||
C233.391190,488.519379 243.870499,481.443024 246.378113,470.686554
|
||||
C248.007095,463.699005 245.677322,457.613983 239.541641,453.452820
|
||||
C237.706635,452.909149 235.871628,452.365509 233.414749,451.425751
|
||||
C231.940811,451.435333 230.466873,451.444916 228.385803,451.264862
|
||||
M284.566986,538.144775
|
||||
C278.475800,509.657806 267.102570,483.400177 251.528656,458.795929
|
||||
C253.722275,472.870728 249.048874,483.612915 236.402206,489.670532
|
||||
C223.666412,495.770905 212.155731,493.309204 202.572876,480.632416
|
||||
C200.825073,483.607727 198.779495,485.716156 198.288864,488.139435
|
||||
C193.799515,510.313446 189.164429,532.473022 185.458435,554.784119
|
||||
C183.615967,565.876221 183.302872,577.265198 182.940918,588.540527
|
||||
C182.783112,593.456177 185.634399,594.863464 189.859650,592.215210
|
||||
C194.192657,589.499329 197.933914,585.853333 202.021713,582.728943
|
||||
C207.955765,578.193481 213.564606,573.035156 220.032074,569.436279
|
||||
C233.242828,562.085083 246.359818,564.229187 256.986389,574.989197
|
||||
C261.165375,579.220703 264.537445,584.255859 268.212250,588.975464
|
||||
C269.948364,591.205139 271.362610,593.702515 273.221008,595.816284
|
||||
C276.735901,599.814148 282.047241,598.916016 283.939178,593.945984
|
||||
C284.933655,591.333618 285.557251,588.500061 285.850372,585.713928
|
||||
C287.493530,570.096130 287.983032,554.486694 284.566986,538.144775
|
||||
M177.712799,523.615601
|
||||
C178.496674,527.143372 179.280563,530.671082 180.064453,534.198853
|
||||
C180.681747,534.152527 181.299042,534.106262 181.916336,534.059998
|
||||
C183.261337,526.415588 184.606323,518.771179 185.951324,511.126770
|
||||
C185.390701,510.972260 184.830093,510.817749 184.269485,510.663269
|
||||
C180.384155,513.683533 178.762192,518.027527 177.712799,523.615601
|
||||
z"/>
|
||||
<path fill="#9C9C9C" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M369.258026,428.042847
|
||||
C379.373352,440.444733 383.285370,455.402435 384.451660,471.169434
|
||||
C385.213715,481.471588 385.174316,491.798065 381.094543,501.677795
|
||||
C380.335083,503.517059 380.751251,505.841766 380.583740,508.625641
|
||||
C389.232300,508.625641 397.329834,508.726166 405.418396,508.502502
|
||||
C406.467255,508.473480 407.997925,506.953125 408.392456,505.808807
|
||||
C409.471771,502.678253 410.521210,499.415100 410.774536,496.141907
|
||||
C412.483154,474.064392 412.522888,451.897675 402.683075,431.558014
|
||||
C398.507538,422.926819 398.867920,417.110443 403.418610,408.774658
|
||||
C416.688477,384.467468 417.956573,358.055206 413.647644,331.131470
|
||||
C411.527740,317.885925 407.217255,305.430206 401.261047,293.432892
|
||||
C400.408813,291.716217 401.013214,288.514221 402.109955,286.707825
|
||||
C415.923798,263.955994 420.016449,239.556335 415.828918,213.379791
|
||||
C411.718201,187.683655 400.188812,166.362946 380.126709,149.736679
|
||||
C376.206207,146.487579 374.579224,143.238708 375.620728,137.494095
|
||||
C380.067780,112.966293 379.017395,88.383919 373.411957,64.135040
|
||||
C370.523163,51.638264 365.912079,39.735626 357.757874,29.431511
|
||||
C344.252258,12.365029 321.889679,11.906353 307.894592,28.601389
|
||||
C299.713043,38.361351 294.604065,49.701283 291.482635,61.871384
|
||||
C289.343262,70.212616 288.048218,78.779991 286.591431,87.283226
|
||||
C285.663574,92.699104 284.705017,93.321793 279.876282,90.738556
|
||||
C262.499237,81.442329 244.137772,76.310799 224.268723,77.799339
|
||||
C211.695221,78.741302 199.862427,82.564972 188.004135,87.251266
|
||||
C191.609116,85.096024 195.445267,82.913185 199.477219,81.187950
|
||||
C213.532364,75.173859 228.426987,75.139786 243.179901,76.411026
|
||||
C255.631439,77.483955 267.387054,81.855431 278.519012,87.658875
|
||||
C280.086487,88.476044 281.728912,89.149498 282.786560,89.636307
|
||||
C285.972961,77.125694 288.495239,64.790840 292.319153,52.873642
|
||||
C296.367950,40.255608 302.718689,28.637171 313.728760,20.546566
|
||||
C328.695618,9.548378 347.885315,13.042048 359.447601,28.447065
|
||||
C369.322693,41.604122 374.864380,56.468525 376.884613,72.689156
|
||||
C378.195129,83.211807 380.166199,93.761627 380.200470,104.304604
|
||||
C380.238586,116.036354 378.297546,127.766296 377.507690,139.516495
|
||||
C377.363831,141.657150 377.973846,144.445969 379.320160,145.990402
|
||||
C386.950592,154.743759 395.960114,162.482651 402.514008,171.942856
|
||||
C412.465454,186.307236 417.038361,202.982010 418.800720,220.438522
|
||||
C419.981537,232.134415 419.414673,243.590927 417.023132,255.099640
|
||||
C414.585663,266.829285 409.853485,277.530884 403.717407,287.668213
|
||||
C402.337830,289.947479 402.309479,291.397034 403.543945,293.858185
|
||||
C410.664154,308.053436 414.929382,323.067810 416.897278,338.910950
|
||||
C419.173767,357.238953 417.975433,375.193695 412.367218,392.649017
|
||||
C409.605743,401.243958 404.909973,409.205811 401.362976,417.570099
|
||||
C400.674408,419.193756 400.580872,421.689758 401.345032,423.216827
|
||||
C413.699829,447.906311 416.261047,473.884644 411.878296,500.807190
|
||||
C411.484070,503.228821 410.891266,505.778839 409.670166,507.842957
|
||||
C408.971466,509.024048 406.834259,509.911011 405.315948,509.955780
|
||||
C397.988953,510.171967 390.650452,509.962463 383.319550,510.096436
|
||||
C379.174957,510.172180 377.993927,508.119110 378.621002,504.440308
|
||||
C379.894287,496.970642 382.034668,489.531799 382.264130,482.032715
|
||||
C382.514496,473.851654 381.159149,465.599304 380.224609,457.409882
|
||||
C379.126221,447.784576 374.792511,439.392426 369.712799,431.320862
|
||||
C369.221893,430.540802 369.307739,429.397766 369.258026,428.042847
|
||||
z"/>
|
||||
<path fill="#626262" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M76.810547,373.735718
|
||||
C75.809227,371.448273 74.435547,368.752228 74.216591,365.965424
|
||||
C72.271309,341.206696 77.313744,318.090393 90.756561,296.967590
|
||||
C94.731979,290.720947 93.718521,284.001953 88.392426,278.884735
|
||||
C80.586334,271.384705 76.625580,261.945374 73.803696,251.693512
|
||||
C70.916847,241.205658 70.376244,230.660965 72.041077,220.073395
|
||||
C76.557159,191.353058 94.260124,165.727325 124.542236,155.585190
|
||||
C133.562439,152.564117 142.886841,152.697678 152.206726,153.371094
|
||||
C157.892578,153.781937 161.179047,152.333710 163.943314,146.311646
|
||||
C173.315369,125.894386 190.407791,114.127548 211.309784,107.230194
|
||||
C242.774384,96.847366 279.399597,114.540398 294.936188,139.743042
|
||||
C296.497681,142.276016 298.257538,144.872162 299.000610,147.683426
|
||||
C300.326080,152.697845 303.576660,153.585983 308.040192,153.393570
|
||||
C319.002258,152.920975 329.846130,152.574600 340.503571,156.683228
|
||||
C354.927002,162.243713 366.633759,171.104446 375.462585,183.588516
|
||||
C386.211761,198.788010 391.698395,215.876160 390.990601,234.540543
|
||||
C390.345306,251.555588 385.207153,267.072601 373.451782,279.933136
|
||||
C369.099243,284.694824 369.061798,290.831512 372.531128,297.558655
|
||||
C376.545563,305.342773 380.908813,313.070160 383.795532,321.287689
|
||||
C390.324127,339.872467 391.087433,359.078522 386.750061,378.250336
|
||||
C383.981934,390.485779 378.529846,401.643585 369.696777,411.140228
|
||||
C370.128693,409.415680 370.582031,407.422852 371.701721,405.929657
|
||||
C384.423615,388.963318 388.203552,369.616760 387.060211,348.944763
|
||||
C386.038513,330.472168 380.456207,313.515564 370.589783,297.820068
|
||||
C365.754486,290.128052 366.868317,285.151154 372.873718,277.966705
|
||||
C387.681763,260.251465 391.342957,239.542877 387.604309,217.457413
|
||||
C384.232941,197.541626 374.417389,180.959961 358.222992,168.651062
|
||||
C344.629944,158.319366 329.400574,153.138351 312.043640,155.662018
|
||||
C302.852386,156.998413 300.826782,155.654663 296.642670,147.071106
|
||||
C287.870972,129.076309 273.242065,117.930511 254.951309,110.592094
|
||||
C220.521179,96.778435 176.456848,117.775826 164.161224,150.445236
|
||||
C162.395172,155.137680 158.244003,156.243958 153.494400,156.050644
|
||||
C147.056351,155.788574 140.515533,155.092270 134.178162,155.874054
|
||||
C115.670410,158.157211 101.315453,167.954514 90.090782,182.428818
|
||||
C78.028862,197.982742 71.973801,215.896286 73.139450,235.444382
|
||||
C74.109749,251.716476 78.423065,267.209961 91.198715,279.005066
|
||||
C96.475342,283.876709 97.025253,290.938904 92.617485,297.769623
|
||||
C82.253365,313.830963 76.741119,331.405548 75.940254,350.371460
|
||||
C75.618927,357.981232 76.590546,365.645538 76.810547,373.735718
|
||||
z"/>
|
||||
<path fill="#ACACAC" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M166.026367,44.989571
|
||||
C163.428421,40.736950 161.068115,36.315899 158.193069,32.259693
|
||||
C142.423965,10.012201 116.050591,11.010487 101.668411,34.208534
|
||||
C94.077393,46.452618 89.888298,59.894482 87.584114,73.926888
|
||||
C83.886810,96.443306 83.612144,118.994171 87.813805,141.533173
|
||||
C88.094681,143.039856 86.925201,145.226135 85.780846,146.523407
|
||||
C77.874924,155.485794 68.736389,163.562241 61.992100,173.306381
|
||||
C47.534954,194.193985 42.852757,217.882736 45.248268,243.132401
|
||||
C46.808193,259.574677 52.251549,274.493134 61.066147,288.364105
|
||||
C61.991234,289.819855 62.084080,292.668640 61.291477,294.222534
|
||||
C48.776821,318.757507 45.307518,344.884155 48.103249,371.881927
|
||||
C49.744976,387.735748 54.717529,402.768921 63.544727,416.253418
|
||||
C65.433167,419.138184 65.526611,421.302124 63.658657,424.366791
|
||||
C56.220573,436.570068 53.150429,450.274414 52.121506,464.255310
|
||||
C51.317581,475.179047 52.093033,486.219025 51.995979,497.656921
|
||||
C50.940212,494.737854 49.472752,491.403992 49.268887,487.994568
|
||||
C48.280193,471.459442 49.929848,455.145660 54.976612,439.326263
|
||||
C56.721302,433.857391 59.528576,428.735168 61.518700,423.332397
|
||||
C62.137901,421.651398 62.395935,419.146942 61.580219,417.735687
|
||||
C54.294636,405.131378 49.218697,391.772522 46.780624,377.406982
|
||||
C41.936687,348.865662 46.295830,321.623016 58.494541,295.553497
|
||||
C59.926754,292.492737 59.942730,290.367645 58.092773,287.427032
|
||||
C43.917156,264.894196 40.320992,240.234619 44.085915,214.243805
|
||||
C47.458839,190.959152 57.430939,171.058670 74.692162,154.881668
|
||||
C78.674400,151.149567 83.920807,147.562973 85.540413,142.860626
|
||||
C87.079094,138.393234 84.783783,132.527115 83.908562,127.320709
|
||||
C80.890259,109.365974 82.927361,91.674881 85.745552,73.876877
|
||||
C87.607124,62.120296 90.741524,50.940479 95.971077,40.326843
|
||||
C102.129440,27.828142 110.770477,17.990557 124.898354,14.326028
|
||||
C134.072617,11.946379 141.991806,15.436010 149.180649,20.384657
|
||||
C157.690826,26.242882 163.580078,34.403221 166.857208,44.575039
|
||||
C166.410172,44.977642 166.218277,44.983604 166.026367,44.989571
|
||||
z"/>
|
||||
<path fill="#0D0D0D" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M154.512405,247.787018
|
||||
C152.173431,251.978165 150.507172,256.307129 147.597290,259.504211
|
||||
C141.256744,266.470551 132.876831,267.177795 124.995628,262.246887
|
||||
C117.906853,257.811768 115.191765,249.290085 118.151245,240.764862
|
||||
C122.780060,227.430878 135.823425,221.737289 146.511917,228.594666
|
||||
C153.315323,232.959564 156.249237,239.272903 154.512405,247.787018
|
||||
z"/>
|
||||
<path fill="#0D0D0D" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M342.733887,236.152222
|
||||
C350.027557,250.146881 344.775848,262.137024 330.407257,264.945709
|
||||
C322.273987,266.535522 312.956024,260.393127 309.653748,251.264969
|
||||
C306.012299,241.199265 309.340973,232.027466 318.256866,227.559906
|
||||
C326.795410,223.281433 336.956207,226.722107 342.733887,236.152222
|
||||
z"/>
|
||||
<path fill="#939393" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M233.997955,342.850952
|
||||
C224.701584,342.485168 215.776138,342.946228 207.131546,341.601624
|
||||
C179.166718,337.251831 153.411209,316.492493 153.691620,284.912689
|
||||
C153.864807,265.409180 163.531158,250.102356 178.870041,238.376236
|
||||
C199.244995,222.800171 222.618088,218.437363 247.238831,222.487762
|
||||
C269.423523,226.137390 288.073700,236.606140 300.605438,256.338226
|
||||
C316.081909,280.706909 310.519226,311.240326 287.171722,328.559448
|
||||
C271.469879,340.207092 253.566727,343.657532 233.997955,342.850952
|
||||
M217.649796,340.900574
|
||||
C224.975922,340.903290 232.309677,340.693848 239.626434,340.957001
|
||||
C251.496933,341.383942 262.651642,338.810181 273.593201,334.334290
|
||||
C307.750580,320.361511 318.189636,278.916809 294.385864,250.807678
|
||||
C281.701477,235.829117 265.409271,227.414459 246.041260,224.447693
|
||||
C217.175339,220.026001 191.864212,226.942841 171.237839,248.000687
|
||||
C153.900864,265.700348 149.830078,293.490631 164.846436,314.248718
|
||||
C177.571472,331.839386 195.669067,339.293976 217.649796,340.900574
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M78.902763,488.018127
|
||||
C78.844734,482.461151 78.786705,476.904144 78.993301,470.829102
|
||||
C79.571526,470.209229 79.885117,470.107391 80.198715,470.005554
|
||||
C80.387451,475.791077 80.576195,481.576630 80.166168,487.682251
|
||||
C79.345848,488.007599 79.124306,488.012848 78.902763,488.018127
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M94.023712,428.215240
|
||||
C95.423264,422.477478 96.694374,416.741272 93.716537,410.585480
|
||||
C95.105270,412.464417 97.648399,414.818268 97.544228,417.048492
|
||||
C97.368416,420.812531 95.515411,424.498169 94.023712,428.215240
|
||||
z"/>
|
||||
<path fill="#9C9C9C" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M182.056595,89.436874
|
||||
C181.204727,90.284454 179.971619,91.347542 178.651947,91.468811
|
||||
C178.111786,91.518448 177.161438,89.601616 176.803345,88.452919
|
||||
C176.424057,87.236214 176.527023,85.869171 176.901520,84.266769
|
||||
C177.600555,83.978340 177.817383,83.990929 178.034225,84.003517
|
||||
C178.157227,84.928993 178.280228,85.854477 178.301117,87.440895
|
||||
C178.782089,88.668991 179.365173,89.236145 179.948257,89.803299
|
||||
C180.512344,89.626617 181.076416,89.449928 182.056595,89.436874
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M83.599571,450.050201
|
||||
C83.140167,449.638916 83.026131,449.183258 83.255493,448.196777
|
||||
C83.961807,446.386353 84.324730,445.106750 84.687653,443.827179
|
||||
C85.284126,442.711304 85.880585,441.595398 86.787231,440.403107
|
||||
C86.046600,443.553101 84.995773,446.779480 83.599571,450.050201
|
||||
z"/>
|
||||
<path fill="#505050" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M80.190887,469.700470
|
||||
C79.885117,470.107391 79.571526,470.209229 79.019836,470.400818
|
||||
C79.179718,467.014221 79.577690,463.537842 80.329567,459.970062
|
||||
C80.785034,460.652924 80.886604,461.427216 80.740387,462.898987
|
||||
C80.463165,465.129944 80.433723,466.663361 80.404282,468.196777
|
||||
C80.330544,468.596313 80.256805,468.995850 80.190887,469.700470
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M90.676323,405.153809
|
||||
C89.044395,403.934875 87.543549,402.355896 86.039352,400.094543
|
||||
C86.006905,398.957367 85.977814,398.502594 85.948715,398.047821
|
||||
C87.568283,400.296448 89.187851,402.545105 90.676323,405.153809
|
||||
z"/>
|
||||
<path fill="#626262" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M81.664810,392.272705
|
||||
C80.598312,389.621246 79.531815,386.969818 78.762703,384.155487
|
||||
C79.931435,385.791290 80.802788,387.589966 81.833023,389.974182
|
||||
C82.073318,390.979858 82.154747,391.399994 82.093407,391.933350
|
||||
C81.950645,392.046600 81.664810,392.272705 81.664810,392.272705
|
||||
z"/>
|
||||
<path fill="#505050" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M78.638916,488.255005
|
||||
C79.124306,488.012848 79.345848,488.007599 79.899841,487.997772
|
||||
C80.261703,488.394104 80.291107,488.794952 80.237816,489.803101
|
||||
C80.406540,491.275299 80.657959,492.140228 80.909378,493.005157
|
||||
C80.956337,493.802582 81.003296,494.600006 80.898026,495.766876
|
||||
C79.955544,493.588196 79.165306,491.040039 78.638916,488.255005
|
||||
z"/>
|
||||
<path fill="#9C9C9C" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M166.008514,45.367081
|
||||
C166.218277,44.983604 166.410172,44.977642 166.890594,44.956467
|
||||
C168.181473,47.429050 169.183838,49.916843 170.042450,52.757553
|
||||
C168.596024,50.655174 167.293350,48.199883 166.008514,45.367081
|
||||
z"/>
|
||||
<path fill="#626262" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M85.748627,397.799500
|
||||
C85.977814,398.502594 86.006905,398.957367 85.969452,399.748840
|
||||
C84.538460,397.721344 83.174011,395.357147 81.737183,392.632812
|
||||
C81.664810,392.272705 81.950645,392.046600 82.271973,392.159119
|
||||
C83.036377,392.868225 83.479454,393.464813 83.922531,394.061371
|
||||
C84.464523,395.224640 85.006523,396.387878 85.748627,397.799500
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M81.440445,459.004578
|
||||
C81.014305,458.282837 80.940575,457.527832 81.176331,456.203644
|
||||
C81.527969,455.020966 81.570137,454.407532 81.612305,453.794067
|
||||
C81.798141,453.505768 81.983971,453.217468 82.427841,452.934265
|
||||
C82.388206,454.950012 82.090530,456.960693 81.440445,459.004578
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M76.814575,377.000916
|
||||
C76.737404,376.252869 76.660233,375.504852 76.742111,374.414948
|
||||
C77.671303,376.005676 78.441444,377.938232 78.871429,380.007263
|
||||
C78.531258,380.143677 78.185860,380.389740 78.109619,379.901398
|
||||
C77.627113,378.609009 77.220848,377.804962 76.814575,377.000916
|
||||
z"/>
|
||||
<path fill="#505050" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M51.964458,498.251465
|
||||
C52.872929,499.856995 53.603893,501.801422 54.018623,503.894012
|
||||
C53.063911,502.224915 52.425430,500.407654 51.964458,498.251465
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M88.153641,438.931641
|
||||
C88.552940,437.263123 89.299217,435.645966 90.387085,433.992004
|
||||
C89.986000,435.631134 89.243309,437.307098 88.153641,438.931641
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M83.484619,508.026184
|
||||
C83.024902,506.610931 82.915634,505.164795 82.997704,503.322601
|
||||
C83.404381,504.616119 83.619720,506.305725 83.484619,508.026184
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M80.826706,498.012756
|
||||
C80.795845,497.543762 80.764984,497.074768 80.888893,496.288757
|
||||
C81.843697,497.565094 82.643730,499.158417 83.133575,500.895416
|
||||
C82.547729,500.895142 82.272087,500.751251 81.943939,500.067261
|
||||
C81.536530,499.022369 81.181618,498.517578 80.826706,498.012756
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M80.705849,468.061462
|
||||
C80.433723,466.663361 80.463165,465.129944 80.732941,463.297791
|
||||
C80.984657,464.641418 80.996033,466.283783 80.705849,468.061462
|
||||
z"/>
|
||||
<path fill="#9C9C9C" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M172.828522,61.988998
|
||||
C171.922623,60.635887 171.198898,58.955570 170.697952,56.983826
|
||||
C171.617386,58.348862 172.314041,60.005325 172.828522,61.988998
|
||||
z"/>
|
||||
<path fill="#9C9C9C" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M176.057495,74.823326
|
||||
C175.389328,74.197075 174.928665,73.237709 174.742981,72.139694
|
||||
C175.433609,72.830765 175.849304,73.660492 176.057495,74.823326
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M83.975296,393.691895
|
||||
C83.479454,393.464813 83.036377,392.868225 82.414734,392.045898
|
||||
C82.154747,391.399994 82.073318,390.979858 82.044464,390.242615
|
||||
C82.740715,391.057831 83.384384,392.190155 83.975296,393.691895
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M81.140617,492.827698
|
||||
C80.657959,492.140228 80.406540,491.275299 80.322083,490.093323
|
||||
C80.783318,490.734253 81.077583,491.692230 81.140617,492.827698
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M91.856613,432.230499
|
||||
C91.786346,431.457703 92.016121,430.727539 92.570007,429.986481
|
||||
C92.648293,430.741455 92.402473,431.507263 91.856613,432.230499
|
||||
z"/>
|
||||
<path fill="#ACACAC" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M179.849487,89.453674
|
||||
C179.365173,89.236145 178.782089,88.668991 178.278656,87.791084
|
||||
C178.822433,88.021568 179.286575,88.562805 179.849487,89.453674
|
||||
z"/>
|
||||
<path fill="#B6B6B6" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M54.013954,507.989655
|
||||
C54.604279,508.037811 54.902428,508.132111 55.126961,508.485535
|
||||
C54.739330,509.015259 54.425308,509.285828 54.111282,509.556396
|
||||
C53.981441,509.049500 53.851608,508.542664 54.013954,507.989655
|
||||
z"/>
|
||||
<path fill="#9C9C9C" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M176.741150,79.085464
|
||||
C176.242661,78.626129 175.963669,77.879028 175.946442,77.074722
|
||||
C176.459030,77.610916 176.709839,78.204300 176.741150,79.085464
|
||||
z"/>
|
||||
<path fill="#ACACAC" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M178.214874,83.804100
|
||||
C177.817383,83.990929 177.600555,83.978340 177.058533,83.944611
|
||||
C176.654709,83.484108 176.576050,83.044731 176.698349,82.331131
|
||||
C177.398056,82.572838 177.896805,83.088760 178.214874,83.804100
|
||||
z"/>
|
||||
<path fill="#9C9C9C" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M174.044556,65.836197
|
||||
C173.426270,65.489326 172.991394,64.832443 172.826675,64.090973
|
||||
C173.473877,64.512985 173.850906,65.019577 174.044556,65.836197
|
||||
z"/>
|
||||
<path fill="#505050" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M93.201096,409.597534
|
||||
C92.456383,409.361572 91.807487,408.791534 91.295967,407.870728
|
||||
C92.054527,408.101135 92.675713,408.682281 93.201096,409.597534
|
||||
z"/>
|
||||
<path fill="#F4F4F4" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M346.713715,71.250641
|
||||
C350.351135,89.039009 352.032440,106.522598 349.685059,124.224052
|
||||
C349.429626,126.150459 349.020416,128.056488 348.769745,129.477722
|
||||
C338.395508,128.223099 328.550537,127.037773 318.707092,125.839920
|
||||
C313.497894,125.205994 312.183044,120.713676 312.214203,117.085426
|
||||
C312.400696,95.373947 314.115509,73.805855 324.235626,54.014240
|
||||
C326.095215,50.377460 329.659210,47.612175 332.436462,44.444618
|
||||
C335.167023,47.618595 338.622345,50.426132 340.456360,54.053432
|
||||
C343.129150,59.339684 344.635559,65.215714 346.713715,71.250641
|
||||
z"/>
|
||||
<path fill="#F5F5F5" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M113.545265,89.286819
|
||||
C114.967781,75.529541 117.620155,62.578022 124.319611,50.766495
|
||||
C124.647690,50.188084 124.967010,49.601967 125.336067,49.049961
|
||||
C129.319321,43.092106 131.469238,42.940208 135.651627,48.651859
|
||||
C141.982315,57.297325 145.313797,67.337700 146.990555,77.660789
|
||||
C149.011307,90.101509 149.971970,102.732277 150.970123,115.314209
|
||||
C151.529449,122.364624 148.311752,125.183441 141.171570,125.959351
|
||||
C132.434082,126.908836 123.742180,128.277740 114.398529,129.551453
|
||||
C111.746040,116.437302 111.794785,103.116592 113.545265,89.286819
|
||||
z"/>
|
||||
<path fill="#505050" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M84.389297,443.909637
|
||||
C84.324730,445.106750 83.961807,446.386353 83.301018,447.832977
|
||||
C83.365753,446.664062 83.728355,445.328064 84.389297,443.909637
|
||||
z"/>
|
||||
<path fill="#626262" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M76.596680,377.204956
|
||||
C77.220848,377.804962 77.627113,378.609009 77.947670,379.764526
|
||||
C77.367561,379.213654 76.873169,378.311310 76.596680,377.204956
|
||||
z"/>
|
||||
<path fill="#505050" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M80.614609,498.175201
|
||||
C81.181618,498.517578 81.536530,499.022369 81.812332,499.843292
|
||||
C81.289658,499.552124 80.846085,498.944885 80.614609,498.175201
|
||||
z"/>
|
||||
<path fill="#505050" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M81.344223,453.843994
|
||||
C81.570137,454.407532 81.527969,455.020966 81.214584,455.815918
|
||||
C80.987633,455.296234 81.031883,454.595093 81.344223,453.843994
|
||||
z"/>
|
||||
<path fill="#FDFDFD" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M284.667389,538.559143
|
||||
C287.983032,554.486694 287.493530,570.096130 285.850372,585.713928
|
||||
C285.557251,588.500061 284.933655,591.333618 283.939178,593.945984
|
||||
C282.047241,598.916016 276.735901,599.814148 273.221008,595.816284
|
||||
C271.362610,593.702515 269.948364,591.205139 268.212250,588.975464
|
||||
C264.537445,584.255859 261.165375,579.220703 256.986389,574.989197
|
||||
C246.359818,564.229187 233.242828,562.085083 220.032074,569.436279
|
||||
C213.564606,573.035156 207.955765,578.193481 202.021713,582.728943
|
||||
C197.933914,585.853333 194.192657,589.499329 189.859650,592.215210
|
||||
C185.634399,594.863464 182.783112,593.456177 182.940918,588.540527
|
||||
C183.302872,577.265198 183.615967,565.876221 185.458435,554.784119
|
||||
C189.164429,532.473022 193.799515,510.313446 198.288864,488.139435
|
||||
C198.779495,485.716156 200.825073,483.607727 202.572876,480.632416
|
||||
C212.155731,493.309204 223.666412,495.770905 236.402206,489.670532
|
||||
C249.048874,483.612915 253.722275,472.870728 251.528656,458.795929
|
||||
C267.102570,483.400177 278.475800,509.657806 284.667389,538.559143
|
||||
z"/>
|
||||
<path fill="#F16A65" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M217.850616,454.545746
|
||||
C220.303528,453.644409 222.756439,452.743103 225.625885,452.242401
|
||||
C230.153702,457.789215 231.345139,463.211853 227.357086,468.967224
|
||||
C223.059250,475.169708 217.140869,476.274628 210.240158,474.236084
|
||||
C209.155441,473.915619 207.937622,474.045776 206.781342,473.967560
|
||||
C204.903061,469.203491 206.395721,465.039581 209.469391,461.291656
|
||||
C210.149719,462.418610 210.271347,463.437653 210.748856,464.246582
|
||||
C213.005554,468.069458 216.324860,469.191132 219.188370,467.207428
|
||||
C222.364349,465.007294 222.758316,461.198639 220.171570,457.683838
|
||||
C219.400406,456.635986 218.624405,455.591675 217.850616,454.545746
|
||||
z"/>
|
||||
<path fill="#E21F26" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M239.990173,454.002136
|
||||
C245.677322,457.613983 248.007095,463.699005 246.378113,470.686554
|
||||
C243.870499,481.443024 233.391190,488.519379 221.516464,486.914001
|
||||
C223.222702,485.306030 225.020966,484.132812 226.877121,483.059692
|
||||
C233.948486,478.971313 239.137390,473.498993 239.816376,464.923248
|
||||
C240.103165,461.300995 239.945709,457.643585 239.990173,454.002136
|
||||
z"/>
|
||||
<path fill="#EB2A30" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M239.765900,453.727478
|
||||
C239.945709,457.643585 240.103165,461.300995 239.816376,464.923248
|
||||
C239.137390,473.498993 233.948486,478.971313 226.877121,483.059692
|
||||
C225.020966,484.132812 223.222702,485.306030 221.199219,486.703064
|
||||
C218.110245,485.845917 215.219910,484.719025 212.330795,482.976013
|
||||
C213.176376,481.952057 214.043335,481.150146 214.861618,481.197113
|
||||
C223.512863,481.693146 231.724442,477.024109 233.686325,468.804993
|
||||
C234.971054,463.422729 233.998291,457.501617 234.036621,451.821838
|
||||
C235.871628,452.365509 237.706635,452.909149 239.765900,453.727478
|
||||
z"/>
|
||||
<path fill="#E9383B" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M233.725693,451.623779
|
||||
C233.998291,457.501617 234.971054,463.422729 233.686325,468.804993
|
||||
C231.724442,477.024109 223.512863,481.693146 214.861618,481.197113
|
||||
C214.043335,481.150146 213.176376,481.952057 212.162689,482.671631
|
||||
C210.591293,481.246826 209.189240,479.510315 208.159653,477.437561
|
||||
C219.158279,480.797668 228.066940,476.250122 231.498383,467.134491
|
||||
C233.722183,461.226990 231.914169,456.343781 228.992935,451.454498
|
||||
C230.466873,451.444916 231.940811,451.435333 233.725693,451.623779
|
||||
z"/>
|
||||
<path fill="#EA4848" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M228.689362,451.359680
|
||||
C231.914169,456.343781 233.722183,461.226990 231.498383,467.134491
|
||||
C228.066940,476.250122 219.158279,480.797668 208.119812,477.088440
|
||||
C207.369797,476.265686 207.032074,475.455811 206.737854,474.306763
|
||||
C207.937622,474.045776 209.155441,473.915619 210.240158,474.236084
|
||||
C217.140869,476.274628 223.059250,475.169708 227.357086,468.967224
|
||||
C231.345139,463.211853 230.153702,457.789215 225.999481,452.276886
|
||||
C226.766312,451.695465 227.576050,451.480164 228.689362,451.359680
|
||||
z"/>
|
||||
<path fill="#E7E7E7" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M177.753693,523.184937
|
||||
C178.762192,518.027527 180.384155,513.683533 184.269485,510.663269
|
||||
C184.830093,510.817749 185.390701,510.972260 185.951324,511.126770
|
||||
C184.606323,518.771179 183.261337,526.415588 181.916336,534.059998
|
||||
C181.299042,534.106262 180.681747,534.152527 180.064453,534.198853
|
||||
C179.280563,530.671082 178.496674,527.143372 177.753693,523.184937
|
||||
z"/>
|
||||
<path fill="#F9B5A4" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M217.510681,454.643097
|
||||
C218.624405,455.591675 219.400406,456.635986 220.171570,457.683838
|
||||
C222.758316,461.198639 222.364349,465.007294 219.188370,467.207428
|
||||
C216.324860,469.191132 213.005554,468.069458 210.748856,464.246582
|
||||
C210.271347,463.437653 210.149719,462.418610 209.786987,461.105591
|
||||
C212.196808,458.723328 214.683762,456.731873 217.510681,454.643097
|
||||
z"/>
|
||||
<path fill="#090909" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M217.173126,340.895081
|
||||
C195.669067,339.293976 177.571472,331.839386 164.846436,314.248718
|
||||
C149.830078,293.490631 153.900864,265.700348 171.237839,248.000687
|
||||
C191.864212,226.942841 217.175339,220.026001 246.041260,224.447693
|
||||
C265.409271,227.414459 281.701477,235.829117 294.385864,250.807678
|
||||
C318.189636,278.916809 307.750580,320.361511 273.593201,334.334290
|
||||
C262.651642,338.810181 251.496933,341.383942 239.626434,340.957001
|
||||
C232.309677,340.693848 224.975922,340.903290 217.173126,340.895081
|
||||
M248.863983,243.486237
|
||||
C246.738068,243.088089 244.624680,242.598099 242.484299,242.305939
|
||||
C220.435745,239.296371 200.650711,244.157486 184.905121,260.469727
|
||||
C167.044998,278.972595 171.675644,304.356171 194.527725,316.211639
|
||||
C204.709946,321.494049 215.542725,322.906158 226.895706,322.683563
|
||||
C239.516617,322.436096 252.097687,323.301788 264.241119,318.319489
|
||||
C291.865479,306.985626 297.394165,278.226868 275.686523,257.827209
|
||||
C268.235504,250.825119 259.322937,246.585129 248.863983,243.486237
|
||||
z"/>
|
||||
<path fill="#F7F7F7" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M249.265869,243.579742
|
||||
C259.322937,246.585129 268.235504,250.825119 275.686523,257.827209
|
||||
C297.394165,278.226868 291.865479,306.985626 264.241119,318.319489
|
||||
C252.097687,323.301788 239.516617,322.436096 226.895706,322.683563
|
||||
C215.542725,322.906158 204.709946,321.494049 194.527725,316.211639
|
||||
C171.675644,304.356171 167.044998,278.972595 184.905121,260.469727
|
||||
C200.650711,244.157486 220.435745,239.296371 242.484299,242.305939
|
||||
C244.624680,242.598099 246.738068,243.088089 249.265869,243.579742
|
||||
M215.929169,269.461121
|
||||
C212.866943,274.500000 213.005280,278.213623 217.885361,281.533173
|
||||
C222.707077,284.812988 224.323486,288.051453 222.631241,293.867249
|
||||
C221.097626,299.137817 224.643890,302.876923 230.113647,303.217468
|
||||
C237.223434,303.660065 240.553314,300.322723 239.261734,293.231262
|
||||
C238.356491,288.260956 238.673706,284.395416 243.843781,282.114655
|
||||
C244.840103,281.675140 246.108597,280.619324 246.248154,279.696136
|
||||
C246.714813,276.609406 247.945084,272.656799 246.567413,270.550079
|
||||
C245.205322,268.467194 241.091278,267.946442 238.064728,267.306610
|
||||
C236.857285,267.051361 235.371307,268.605194 233.936417,268.813110
|
||||
C232.033310,269.088806 229.788010,269.449341 228.163483,268.719299
|
||||
C224.105011,266.895447 220.314651,265.927124 215.929169,269.461121
|
||||
z"/>
|
||||
<path fill="#121212" opacity="1.000000" stroke="none"
|
||||
d="
|
||||
M216.173950,269.151733
|
||||
C220.314651,265.927124 224.105011,266.895447 228.163483,268.719299
|
||||
C229.788010,269.449341 232.033310,269.088806 233.936417,268.813110
|
||||
C235.371307,268.605194 236.857285,267.051361 238.064728,267.306610
|
||||
C241.091278,267.946442 245.205322,268.467194 246.567413,270.550079
|
||||
C247.945084,272.656799 246.714813,276.609406 246.248154,279.696136
|
||||
C246.108597,280.619324 244.840103,281.675140 243.843781,282.114655
|
||||
C238.673706,284.395416 238.356491,288.260956 239.261734,293.231262
|
||||
C240.553314,300.322723 237.223434,303.660065 230.113647,303.217468
|
||||
C224.643890,302.876923 221.097626,299.137817 222.631241,293.867249
|
||||
C224.323486,288.051453 222.707077,284.812988 217.885361,281.533173
|
||||
C213.005280,278.213623 212.866943,274.500000 216.173950,269.151733
|
||||
z"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 55 KiB |
171
docs/static/img/undraw_docusaurus_mountain.svg
vendored
Normal 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 |
170
docs/static/img/undraw_docusaurus_react.svg
vendored
Normal 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 |
40
docs/static/img/undraw_docusaurus_tree.svg
vendored
Normal 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 |
4
pom.xml
@@ -4,7 +4,7 @@
|
||||
|
||||
<groupId>io.github.amithkoujalgi</groupId>
|
||||
<artifactId>ollama4j</artifactId>
|
||||
<version>1.0.19</version>
|
||||
<version>1.0.32</version>
|
||||
|
||||
<name>Ollama4j</name>
|
||||
<description>Java library for interacting with Ollama API.</description>
|
||||
@@ -39,7 +39,7 @@
|
||||
<connection>scm:git:git@github.com:amithkoujalgi/ollama4j.git</connection>
|
||||
<developerConnection>scm:git:https://github.com/amithkoujalgi/ollama4j.git</developerConnection>
|
||||
<url>https://github.com/amithkoujalgi/ollama4j</url>
|
||||
<tag>v1.0.19</tag>
|
||||
<tag>v1.0.32</tag>
|
||||
</scm>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -17,6 +17,7 @@ import java.net.URI;
|
||||
import java.net.URISyntaxException;
|
||||
import java.net.URL;
|
||||
import java.net.http.HttpClient;
|
||||
import java.net.http.HttpConnectTimeoutException;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.net.http.HttpResponse;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
@@ -36,6 +37,7 @@ public class OllamaAPI {
|
||||
private final String host;
|
||||
private long requestTimeoutSeconds = 3;
|
||||
private boolean verbose = true;
|
||||
private BasicAuth basicAuth;
|
||||
|
||||
/**
|
||||
* Instantiates the Ollama API.
|
||||
@@ -50,6 +52,11 @@ public class OllamaAPI {
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Set request timeout in seconds. Default is 3 seconds.
|
||||
*
|
||||
* @param requestTimeoutSeconds the request timeout in seconds
|
||||
*/
|
||||
public void setRequestTimeoutSeconds(long requestTimeoutSeconds) {
|
||||
this.requestTimeoutSeconds = requestTimeoutSeconds;
|
||||
}
|
||||
@@ -63,6 +70,47 @@ public class OllamaAPI {
|
||||
this.verbose = verbose;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set basic authentication for accessing Ollama server that's behind a reverse-proxy/gateway.
|
||||
*
|
||||
* @param username the username
|
||||
* @param password the password
|
||||
*/
|
||||
public void setBasicAuth(String username, String password) {
|
||||
this.basicAuth = new BasicAuth(username, password);
|
||||
}
|
||||
|
||||
/**
|
||||
* API to check the reachability of Ollama server.
|
||||
*
|
||||
* @return true if the server is reachable, false otherwise.
|
||||
*/
|
||||
public boolean ping() {
|
||||
String url = this.host + "/api/tags";
|
||||
HttpClient httpClient = HttpClient.newHttpClient();
|
||||
HttpRequest httpRequest = null;
|
||||
try {
|
||||
httpRequest =
|
||||
getRequestBuilderDefault(new URI(url))
|
||||
.header("Accept", "application/json")
|
||||
.header("Content-type", "application/json")
|
||||
.GET()
|
||||
.build();
|
||||
} catch (URISyntaxException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
HttpResponse<String> response = null;
|
||||
try {
|
||||
response = httpClient.send(httpRequest, HttpResponse.BodyHandlers.ofString());
|
||||
} catch (HttpConnectTimeoutException e) {
|
||||
return false;
|
||||
} catch (IOException | InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
int statusCode = response.statusCode();
|
||||
return statusCode == 200;
|
||||
}
|
||||
|
||||
/**
|
||||
* List available models from Ollama server.
|
||||
*
|
||||
@@ -73,11 +121,9 @@ public class OllamaAPI {
|
||||
String url = this.host + "/api/tags";
|
||||
HttpClient httpClient = HttpClient.newHttpClient();
|
||||
HttpRequest httpRequest =
|
||||
HttpRequest.newBuilder()
|
||||
.uri(new URI(url))
|
||||
getRequestBuilderDefault(new URI(url))
|
||||
.header("Accept", "application/json")
|
||||
.header("Content-type", "application/json")
|
||||
.timeout(Duration.ofSeconds(requestTimeoutSeconds))
|
||||
.GET()
|
||||
.build();
|
||||
HttpResponse<String> response =
|
||||
@@ -104,12 +150,10 @@ public class OllamaAPI {
|
||||
String url = this.host + "/api/pull";
|
||||
String jsonData = new ModelRequest(modelName).toString();
|
||||
HttpRequest request =
|
||||
HttpRequest.newBuilder()
|
||||
.uri(new URI(url))
|
||||
getRequestBuilderDefault(new URI(url))
|
||||
.POST(HttpRequest.BodyPublishers.ofString(jsonData))
|
||||
.header("Accept", "application/json")
|
||||
.header("Content-type", "application/json")
|
||||
.timeout(Duration.ofSeconds(requestTimeoutSeconds))
|
||||
.build();
|
||||
HttpClient client = HttpClient.newHttpClient();
|
||||
HttpResponse<InputStream> response =
|
||||
@@ -140,15 +184,13 @@ public class OllamaAPI {
|
||||
* @return the model details
|
||||
*/
|
||||
public ModelDetail getModelDetails(String modelName)
|
||||
throws IOException, OllamaBaseException, InterruptedException {
|
||||
throws IOException, OllamaBaseException, InterruptedException, URISyntaxException {
|
||||
String url = this.host + "/api/show";
|
||||
String jsonData = new ModelRequest(modelName).toString();
|
||||
HttpRequest request =
|
||||
HttpRequest.newBuilder()
|
||||
.uri(URI.create(url))
|
||||
getRequestBuilderDefault(new URI(url))
|
||||
.header("Accept", "application/json")
|
||||
.header("Content-type", "application/json")
|
||||
.timeout(Duration.ofSeconds(requestTimeoutSeconds))
|
||||
.POST(HttpRequest.BodyPublishers.ofString(jsonData))
|
||||
.build();
|
||||
HttpClient client = HttpClient.newHttpClient();
|
||||
@@ -170,15 +212,13 @@ public class OllamaAPI {
|
||||
* @param modelFilePath the path to model file that exists on the Ollama server.
|
||||
*/
|
||||
public void createModelWithFilePath(String modelName, String modelFilePath)
|
||||
throws IOException, InterruptedException, OllamaBaseException {
|
||||
throws IOException, InterruptedException, OllamaBaseException, URISyntaxException {
|
||||
String url = this.host + "/api/create";
|
||||
String jsonData = new CustomModelFilePathRequest(modelName, modelFilePath).toString();
|
||||
HttpRequest request =
|
||||
HttpRequest.newBuilder()
|
||||
.uri(URI.create(url))
|
||||
getRequestBuilderDefault(new URI(url))
|
||||
.header("Accept", "application/json")
|
||||
.header("Content-Type", "application/json")
|
||||
.timeout(Duration.ofSeconds(requestTimeoutSeconds))
|
||||
.POST(HttpRequest.BodyPublishers.ofString(jsonData, StandardCharsets.UTF_8))
|
||||
.build();
|
||||
HttpClient client = HttpClient.newHttpClient();
|
||||
@@ -206,15 +246,13 @@ public class OllamaAPI {
|
||||
* @param modelFileContents the path to model file that exists on the Ollama server.
|
||||
*/
|
||||
public void createModelWithModelFileContents(String modelName, String modelFileContents)
|
||||
throws IOException, InterruptedException, OllamaBaseException {
|
||||
throws IOException, InterruptedException, OllamaBaseException, URISyntaxException {
|
||||
String url = this.host + "/api/create";
|
||||
String jsonData = new CustomModelFileContentsRequest(modelName, modelFileContents).toString();
|
||||
HttpRequest request =
|
||||
HttpRequest.newBuilder()
|
||||
.uri(URI.create(url))
|
||||
getRequestBuilderDefault(new URI(url))
|
||||
.header("Accept", "application/json")
|
||||
.header("Content-Type", "application/json")
|
||||
.timeout(Duration.ofSeconds(requestTimeoutSeconds))
|
||||
.POST(HttpRequest.BodyPublishers.ofString(jsonData, StandardCharsets.UTF_8))
|
||||
.build();
|
||||
HttpClient client = HttpClient.newHttpClient();
|
||||
@@ -236,20 +274,17 @@ public class OllamaAPI {
|
||||
* Delete a model from Ollama server.
|
||||
*
|
||||
* @param modelName the name of the model to be deleted.
|
||||
* @param ignoreIfNotPresent - ignore errors if the specified model is not present on Ollama
|
||||
* server.
|
||||
* @param ignoreIfNotPresent ignore errors if the specified model is not present on Ollama server.
|
||||
*/
|
||||
public void deleteModel(String modelName, boolean ignoreIfNotPresent)
|
||||
throws IOException, InterruptedException, OllamaBaseException {
|
||||
throws IOException, InterruptedException, OllamaBaseException, URISyntaxException {
|
||||
String url = this.host + "/api/delete";
|
||||
String jsonData = new ModelRequest(modelName).toString();
|
||||
HttpRequest request =
|
||||
HttpRequest.newBuilder()
|
||||
.uri(URI.create(url))
|
||||
getRequestBuilderDefault(new URI(url))
|
||||
.method("DELETE", HttpRequest.BodyPublishers.ofString(jsonData, StandardCharsets.UTF_8))
|
||||
.header("Accept", "application/json")
|
||||
.header("Content-type", "application/json")
|
||||
.timeout(Duration.ofSeconds(requestTimeoutSeconds))
|
||||
.build();
|
||||
HttpClient client = HttpClient.newHttpClient();
|
||||
HttpResponse<String> response = client.send(request, HttpResponse.BodyHandlers.ofString());
|
||||
@@ -272,17 +307,14 @@ public class OllamaAPI {
|
||||
*/
|
||||
public List<Double> generateEmbeddings(String model, String prompt)
|
||||
throws IOException, InterruptedException, OllamaBaseException {
|
||||
String url = this.host + "/api/embeddings";
|
||||
URI uri = URI.create(this.host + "/api/embeddings");
|
||||
String jsonData = new ModelEmbeddingsRequest(model, prompt).toString();
|
||||
HttpClient httpClient = HttpClient.newHttpClient();
|
||||
HttpRequest request =
|
||||
HttpRequest.newBuilder()
|
||||
.uri(URI.create(url))
|
||||
HttpRequest.Builder requestBuilder =
|
||||
getRequestBuilderDefault(uri)
|
||||
.header("Accept", "application/json")
|
||||
.header("Content-type", "application/json")
|
||||
.timeout(Duration.ofSeconds(requestTimeoutSeconds))
|
||||
.POST(HttpRequest.BodyPublishers.ofString(jsonData))
|
||||
.build();
|
||||
.POST(HttpRequest.BodyPublishers.ofString(jsonData));
|
||||
HttpRequest request = requestBuilder.build();
|
||||
HttpResponse<String> response = httpClient.send(request, HttpResponse.BodyHandlers.ofString());
|
||||
int statusCode = response.statusCode();
|
||||
String responseBody = response.body();
|
||||
@@ -300,7 +332,7 @@ public class OllamaAPI {
|
||||
*
|
||||
* @param model the ollama model to ask the question to
|
||||
* @param promptText the prompt/question text
|
||||
* @return OllamaResult - that includes response text and time taken for response
|
||||
* @return OllamaResult that includes response text and time taken for response
|
||||
*/
|
||||
public OllamaResult ask(String model, String promptText)
|
||||
throws OllamaBaseException, IOException, InterruptedException {
|
||||
@@ -319,10 +351,11 @@ public class OllamaAPI {
|
||||
*/
|
||||
public OllamaAsyncResultCallback askAsync(String model, String promptText) {
|
||||
OllamaRequestModel ollamaRequestModel = new OllamaRequestModel(model, promptText);
|
||||
HttpClient httpClient = HttpClient.newHttpClient();
|
||||
|
||||
URI uri = URI.create(this.host + "/api/generate");
|
||||
OllamaAsyncResultCallback ollamaAsyncResultCallback =
|
||||
new OllamaAsyncResultCallback(httpClient, uri, ollamaRequestModel, requestTimeoutSeconds);
|
||||
new OllamaAsyncResultCallback(
|
||||
getRequestBuilderDefault(uri), ollamaRequestModel, requestTimeoutSeconds);
|
||||
ollamaAsyncResultCallback.start();
|
||||
return ollamaAsyncResultCallback;
|
||||
}
|
||||
@@ -334,7 +367,7 @@ public class OllamaAPI {
|
||||
* @param model the ollama model to ask the question to
|
||||
* @param promptText the prompt/question text
|
||||
* @param imageFiles the list of image files to use for the question
|
||||
* @return OllamaResult - that includes response text and time taken for response
|
||||
* @return OllamaResult that includes response text and time taken for response
|
||||
*/
|
||||
public OllamaResult askWithImageFiles(String model, String promptText, List<File> imageFiles)
|
||||
throws OllamaBaseException, IOException, InterruptedException {
|
||||
@@ -353,7 +386,7 @@ public class OllamaAPI {
|
||||
* @param model the ollama model to ask the question to
|
||||
* @param promptText the prompt/question text
|
||||
* @param imageURLs the list of image URLs to use for the question
|
||||
* @return OllamaResult - that includes response text and time taken for response
|
||||
* @return OllamaResult that includes response text and time taken for response
|
||||
*/
|
||||
public OllamaResult askWithImageURLs(String model, String promptText, List<String> imageURLs)
|
||||
throws OllamaBaseException, IOException, InterruptedException, URISyntaxException {
|
||||
@@ -392,14 +425,13 @@ public class OllamaAPI {
|
||||
long startTime = System.currentTimeMillis();
|
||||
HttpClient httpClient = HttpClient.newHttpClient();
|
||||
URI uri = URI.create(this.host + "/api/generate");
|
||||
HttpRequest request =
|
||||
HttpRequest.newBuilder(uri)
|
||||
HttpRequest.Builder requestBuilder =
|
||||
getRequestBuilderDefault(uri)
|
||||
.POST(
|
||||
HttpRequest.BodyPublishers.ofString(
|
||||
Utils.getObjectMapper().writeValueAsString(ollamaRequestModel)))
|
||||
.header("Content-Type", "application/json")
|
||||
.timeout(Duration.ofSeconds(requestTimeoutSeconds))
|
||||
.build();
|
||||
Utils.getObjectMapper().writeValueAsString(ollamaRequestModel)));
|
||||
HttpRequest request = requestBuilder.build();
|
||||
logger.debug("Ask model '" + ollamaRequestModel + "' ...");
|
||||
HttpResponse<InputStream> response =
|
||||
httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream());
|
||||
int statusCode = response.statusCode();
|
||||
@@ -410,9 +442,16 @@ public class OllamaAPI {
|
||||
String line;
|
||||
while ((line = reader.readLine()) != null) {
|
||||
if (statusCode == 404) {
|
||||
logger.warn("Status code: 404 (Not Found)");
|
||||
OllamaErrorResponseModel ollamaResponseModel =
|
||||
Utils.getObjectMapper().readValue(line, OllamaErrorResponseModel.class);
|
||||
responseBuffer.append(ollamaResponseModel.getError());
|
||||
} else if (statusCode == 401) {
|
||||
logger.warn("Status code: 401 (Unauthorized)");
|
||||
OllamaErrorResponseModel ollamaResponseModel =
|
||||
Utils.getObjectMapper()
|
||||
.readValue("{\"error\":\"Unauthorized\"}", OllamaErrorResponseModel.class);
|
||||
responseBuffer.append(ollamaResponseModel.getError());
|
||||
} else {
|
||||
OllamaResponseModel ollamaResponseModel =
|
||||
Utils.getObjectMapper().readValue(line, OllamaResponseModel.class);
|
||||
@@ -423,10 +462,47 @@ public class OllamaAPI {
|
||||
}
|
||||
}
|
||||
if (statusCode != 200) {
|
||||
logger.error("Status code " + statusCode);
|
||||
throw new OllamaBaseException(responseBuffer.toString());
|
||||
} else {
|
||||
long endTime = System.currentTimeMillis();
|
||||
return new OllamaResult(responseBuffer.toString().trim(), endTime - startTime, statusCode);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Get default request builder.
|
||||
*
|
||||
* @param uri URI to get a HttpRequest.Builder
|
||||
* @return HttpRequest.Builder
|
||||
*/
|
||||
private HttpRequest.Builder getRequestBuilderDefault(URI uri) {
|
||||
HttpRequest.Builder requestBuilder =
|
||||
HttpRequest.newBuilder(uri)
|
||||
.header("Content-Type", "application/json")
|
||||
.timeout(Duration.ofSeconds(requestTimeoutSeconds));
|
||||
if (isBasicAuthCredentialsSet()) {
|
||||
requestBuilder.header("Authorization", getBasicAuthHeaderValue());
|
||||
}
|
||||
return requestBuilder;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get basic authentication header value.
|
||||
*
|
||||
* @return basic authentication header value (encoded credentials)
|
||||
*/
|
||||
private String getBasicAuthHeaderValue() {
|
||||
String credentialsToEncode = basicAuth.getUsername() + ":" + basicAuth.getPassword();
|
||||
return "Basic " + Base64.getEncoder().encodeToString(credentialsToEncode.getBytes());
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if Basic Auth credentials set.
|
||||
*
|
||||
* @return true when Basic Auth credentials set
|
||||
*/
|
||||
private boolean isBasicAuthCredentialsSet() {
|
||||
return basicAuth != null;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,13 @@
|
||||
package io.github.amithkoujalgi.ollama4j.core.models;
|
||||
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
|
||||
@Data
|
||||
@NoArgsConstructor
|
||||
@AllArgsConstructor
|
||||
public class BasicAuth {
|
||||
private String username;
|
||||
private String password;
|
||||
}
|
||||
@@ -6,7 +6,6 @@ import java.io.BufferedReader;
|
||||
import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.InputStreamReader;
|
||||
import java.net.URI;
|
||||
import java.net.http.HttpClient;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.net.http.HttpResponse;
|
||||
@@ -14,30 +13,44 @@ import java.nio.charset.StandardCharsets;
|
||||
import java.time.Duration;
|
||||
import java.util.LinkedList;
|
||||
import java.util.Queue;
|
||||
import lombok.Data;
|
||||
import lombok.EqualsAndHashCode;
|
||||
import lombok.Getter;
|
||||
|
||||
@Data
|
||||
@EqualsAndHashCode(callSuper = true)
|
||||
@SuppressWarnings("unused")
|
||||
public class OllamaAsyncResultCallback extends Thread {
|
||||
private final HttpClient client;
|
||||
private final URI uri;
|
||||
private final HttpRequest.Builder requestBuilder;
|
||||
private final OllamaRequestModel ollamaRequestModel;
|
||||
private final Queue<String> queue = new LinkedList<>();
|
||||
private String result;
|
||||
private boolean isDone;
|
||||
private boolean succeeded;
|
||||
|
||||
/**
|
||||
* -- GETTER -- Returns the status of the request. Indicates if the request was successful or a
|
||||
* failure. If the request was a failure, the `getResponse()` method will return the error
|
||||
* message.
|
||||
*/
|
||||
@Getter private boolean succeeded;
|
||||
|
||||
private long requestTimeoutSeconds;
|
||||
|
||||
private int httpStatusCode;
|
||||
private long responseTime = 0;
|
||||
/**
|
||||
* -- GETTER -- Returns the HTTP response status code for the request that was made to Ollama
|
||||
* server.
|
||||
*/
|
||||
@Getter private int httpStatusCode;
|
||||
|
||||
/** -- GETTER -- Returns the response time in milliseconds. */
|
||||
@Getter private long responseTime = 0;
|
||||
|
||||
public OllamaAsyncResultCallback(
|
||||
HttpClient client,
|
||||
URI uri,
|
||||
HttpRequest.Builder requestBuilder,
|
||||
OllamaRequestModel ollamaRequestModel,
|
||||
long requestTimeoutSeconds) {
|
||||
this.client = client;
|
||||
this.requestBuilder = requestBuilder;
|
||||
this.ollamaRequestModel = ollamaRequestModel;
|
||||
this.uri = uri;
|
||||
this.isDone = false;
|
||||
this.result = "";
|
||||
this.queue.add("");
|
||||
@@ -46,10 +59,11 @@ public class OllamaAsyncResultCallback extends Thread {
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
HttpClient httpClient = HttpClient.newHttpClient();
|
||||
try {
|
||||
long startTime = System.currentTimeMillis();
|
||||
HttpRequest request =
|
||||
HttpRequest.newBuilder(uri)
|
||||
requestBuilder
|
||||
.POST(
|
||||
HttpRequest.BodyPublishers.ofString(
|
||||
Utils.getObjectMapper().writeValueAsString(ollamaRequestModel)))
|
||||
@@ -57,7 +71,7 @@ public class OllamaAsyncResultCallback extends Thread {
|
||||
.timeout(Duration.ofSeconds(requestTimeoutSeconds))
|
||||
.build();
|
||||
HttpResponse<InputStream> response =
|
||||
client.send(request, HttpResponse.BodyHandlers.ofInputStream());
|
||||
httpClient.send(request, HttpResponse.BodyHandlers.ofInputStream());
|
||||
int statusCode = response.statusCode();
|
||||
this.httpStatusCode = statusCode;
|
||||
|
||||
@@ -108,25 +122,6 @@ public class OllamaAsyncResultCallback extends Thread {
|
||||
return isDone;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the HTTP response status code for the request that was made to Ollama server.
|
||||
*
|
||||
* @return int - the status code for the request
|
||||
*/
|
||||
public int getHttpStatusCode() {
|
||||
return httpStatusCode;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the status of the request. Indicates if the request was successful or a failure. If the
|
||||
* request was a failure, the `getResponse()` method will return the error message.
|
||||
*
|
||||
* @return boolean - status
|
||||
*/
|
||||
public boolean isSucceeded() {
|
||||
return succeeded;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the final response when the execution completes. Does not return intermediate results.
|
||||
*
|
||||
@@ -140,15 +135,6 @@ public class OllamaAsyncResultCallback extends Thread {
|
||||
return queue;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the response time in milliseconds.
|
||||
*
|
||||
* @return long - response time in milliseconds.
|
||||
*/
|
||||
public long getResponseTime() {
|
||||
return responseTime;
|
||||
}
|
||||
|
||||
public void setRequestTimeoutSeconds(long requestTimeoutSeconds) {
|
||||
this.requestTimeoutSeconds = requestTimeoutSeconds;
|
||||
}
|
||||
|
||||
@@ -3,7 +3,7 @@ package io.github.amithkoujalgi.ollama4j.core.utils;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
public class Utils {
|
||||
public static ObjectMapper getObjectMapper() {
|
||||
return new ObjectMapper();
|
||||
}
|
||||
public static ObjectMapper getObjectMapper() {
|
||||
return new ObjectMapper();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,12 +11,13 @@ import io.github.amithkoujalgi.ollama4j.core.types.OllamaModelType;
|
||||
import java.io.IOException;
|
||||
import java.net.URISyntaxException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.mockito.Mockito;
|
||||
|
||||
class TestMockedAPIs {
|
||||
@Test
|
||||
void testMockPullModel() {
|
||||
void testPullModel() {
|
||||
OllamaAPI ollamaAPI = Mockito.mock(OllamaAPI.class);
|
||||
String model = OllamaModelType.LLAMA2;
|
||||
try {
|
||||
@@ -49,7 +50,7 @@ class TestMockedAPIs {
|
||||
doNothing().when(ollamaAPI).createModelWithModelFileContents(model, modelFilePath);
|
||||
ollamaAPI.createModelWithModelFileContents(model, modelFilePath);
|
||||
verify(ollamaAPI, times(1)).createModelWithModelFileContents(model, modelFilePath);
|
||||
} catch (IOException | OllamaBaseException | InterruptedException e) {
|
||||
} catch (IOException | OllamaBaseException | InterruptedException | URISyntaxException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
@@ -62,7 +63,7 @@ class TestMockedAPIs {
|
||||
doNothing().when(ollamaAPI).deleteModel(model, true);
|
||||
ollamaAPI.deleteModel(model, true);
|
||||
verify(ollamaAPI, times(1)).deleteModel(model, true);
|
||||
} catch (IOException | OllamaBaseException | InterruptedException e) {
|
||||
} catch (IOException | OllamaBaseException | InterruptedException | URISyntaxException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
@@ -75,7 +76,7 @@ class TestMockedAPIs {
|
||||
when(ollamaAPI.getModelDetails(model)).thenReturn(new ModelDetail());
|
||||
ollamaAPI.getModelDetails(model);
|
||||
verify(ollamaAPI, times(1)).getModelDetails(model);
|
||||
} catch (IOException | OllamaBaseException | InterruptedException e) {
|
||||
} catch (IOException | OllamaBaseException | InterruptedException | URISyntaxException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
@@ -108,13 +109,43 @@ class TestMockedAPIs {
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testAskWithImageFiles() {
|
||||
OllamaAPI ollamaAPI = Mockito.mock(OllamaAPI.class);
|
||||
String model = OllamaModelType.LLAMA2;
|
||||
String prompt = "some prompt text";
|
||||
try {
|
||||
when(ollamaAPI.askWithImageFiles(model, prompt, Collections.emptyList()))
|
||||
.thenReturn(new OllamaResult("", 0, 200));
|
||||
ollamaAPI.askWithImageFiles(model, prompt, Collections.emptyList());
|
||||
verify(ollamaAPI, times(1)).askWithImageFiles(model, prompt, Collections.emptyList());
|
||||
} catch (IOException | OllamaBaseException | InterruptedException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testAskWithImageURLs() {
|
||||
OllamaAPI ollamaAPI = Mockito.mock(OllamaAPI.class);
|
||||
String model = OllamaModelType.LLAMA2;
|
||||
String prompt = "some prompt text";
|
||||
try {
|
||||
when(ollamaAPI.askWithImageURLs(model, prompt, Collections.emptyList()))
|
||||
.thenReturn(new OllamaResult("", 0, 200));
|
||||
ollamaAPI.askWithImageURLs(model, prompt, Collections.emptyList());
|
||||
verify(ollamaAPI, times(1)).askWithImageURLs(model, prompt, Collections.emptyList());
|
||||
} catch (IOException | OllamaBaseException | InterruptedException | URISyntaxException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
@Test
|
||||
void testAskAsync() {
|
||||
OllamaAPI ollamaAPI = Mockito.mock(OllamaAPI.class);
|
||||
String model = OllamaModelType.LLAMA2;
|
||||
String prompt = "some prompt text";
|
||||
when(ollamaAPI.askAsync(model, prompt))
|
||||
.thenReturn(new OllamaAsyncResultCallback(null, null, null, 3));
|
||||
.thenReturn(new OllamaAsyncResultCallback(null, null, 3));
|
||||
ollamaAPI.askAsync(model, prompt);
|
||||
verify(ollamaAPI, times(1)).askAsync(model, prompt);
|
||||
}
|
||||
|
||||