mirror of
https://github.com/InsanusMokrassar/TelegramBotAPI.git
synced 2025-11-17 20:40:20 +00:00
Compare commits
476 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 35e28c00cb | |||
| 1913f1a900 | |||
| cbfd34098d | |||
| e5618f4705 | |||
| c9f2166e7d | |||
| eb960290c6 | |||
| 100f8b564a | |||
| 8e1ad9ffbc | |||
| 8875e2a986 | |||
| 7478b151eb | |||
| 959136479e | |||
| a52a62837e | |||
| 17dd694044 | |||
| 34fcfe2e20 | |||
| 64862ecd2d | |||
| c9edbbf7af | |||
| a2f9a5a432 | |||
| 8337da34ca | |||
| f45956b554 | |||
| bec1255d67 | |||
| 39ca29279f | |||
| 70b592baad | |||
| 403aa684a8 | |||
| e10e257c80 | |||
| 5e7bc96b44 | |||
| 79d0eda61d | |||
| 9916b3f469 | |||
| 2bac5f0eed | |||
|
|
01eb072caa | ||
| 496af479b0 | |||
| 386e91e28b | |||
| 91dbcecefc | |||
| 2d743e4c19 | |||
| 8804a24013 | |||
| 8b5244d8df | |||
| 034901a479 | |||
| 7043647584 | |||
| acd9505a5d | |||
| 46c33d5ec4 | |||
| 89dc7a4b2a | |||
| e4f305b3ec | |||
| d56c132201 | |||
| d336e177dd | |||
| 15e29286fb | |||
| 314ceed78e | |||
| 3fa3aa50d9 | |||
| 571296b9a0 | |||
| 3f13e5d062 | |||
| 1874023c05 | |||
| dc0fda2066 | |||
| c0d4a4f01b | |||
| 603762bc22 | |||
| 4db82d6ce2 | |||
| 9bf8f56254 | |||
| 9c926a2265 | |||
| 747854f4f4 | |||
| dcfb14553d | |||
| 6eaa9d699b | |||
| 6788c4d1dd | |||
| 6420737a82 | |||
| 4c36750431 | |||
| fd022742aa | |||
| 0472e35752 | |||
| 768d00eedd | |||
| e9347075ed | |||
|
|
3da74b0c66 | ||
|
|
8b79c5c76b | ||
|
|
a1b471d2ca | ||
|
|
e2c7125f6c | ||
| ec8df3c31c | |||
| 94a35349aa | |||
| 046402454f | |||
| c3978f2dab | |||
| 1019fd4d19 | |||
| 76a9fd1a55 | |||
| aec4c7323a | |||
| 7bdfd5cf69 | |||
| ce95a60fbc | |||
| 3c17a67b01 | |||
| 35bf5b9e9d | |||
| 0087d02b5f | |||
| 212d8946c8 | |||
| 319e43901a | |||
| da01955507 | |||
| 095382040c | |||
| 5545708d38 | |||
| 5d06d86549 | |||
| c081e5c457 | |||
| 555c2ffa04 | |||
| bcee64c103 | |||
| 44a35bd26e | |||
| 1f5c719294 | |||
| 6013c3ba86 | |||
| d4551490f7 | |||
| cc0498a89a | |||
| 0b78c0382f | |||
| c91426a910 | |||
| 5d1c59ff75 | |||
| d2228e274c | |||
| 790959ea49 | |||
| ce9f7f35dc | |||
| 4f984d1dbc | |||
| c83da6be70 | |||
|
|
710438489c | ||
| 6f650f6d6c | |||
| 2d15e13ae6 | |||
| d60ee7b8a5 | |||
| 8f882e9825 | |||
| 48e946c2d0 | |||
| 1758d80020 | |||
| 63b2bd61b5 | |||
| ff2c70fc76 | |||
| e3bfc4472a | |||
| 1cff6f616f | |||
| 1dfe4bf276 | |||
| e4b09032cd | |||
| e8e54a0aea | |||
| 8f85b4cba3 | |||
| 46d65a271d | |||
| e088329ce1 | |||
| 8d9ebb754b | |||
| c0a43077ad | |||
| 1811a63a13 | |||
| cba0e30710 | |||
| ff0b7faa48 | |||
| 975898660c | |||
| cfb7f35d20 | |||
| 147889a66a | |||
| ed9ed715a0 | |||
| a9a3f55c8d | |||
| 58943f2504 | |||
| 5f7633a57e | |||
| 65cfc3220d | |||
| 36d30ef91b | |||
| 41e5c579a2 | |||
| bbf63c51ec | |||
| fb91199f83 | |||
| d76c09ffb2 | |||
| acfb7066d2 | |||
| 7507c107b4 | |||
| 2acb177ad6 | |||
| b5a14077fd | |||
| 5f60bf003f | |||
| f9b2c4c403 | |||
| c909774403 | |||
| 670cfcca13 | |||
| 130e00b62b | |||
| ca4beee95f | |||
| ca784e67df | |||
| 835b8b34f9 | |||
| e6430a729c | |||
| 6c4c9f2fc6 | |||
| 310a7e6e82 | |||
| 7375894645 | |||
| 69973c597b | |||
| 22e8b06fda | |||
| 7ede53fdbb | |||
| ca9051920d | |||
| b477e8d585 | |||
| 8ae2f57d55 | |||
| 1fb2ecf15f | |||
| 6073d914d5 | |||
| 16f55d70af | |||
| b484a31a4a | |||
| 0a162c4129 | |||
| 648f1b488b | |||
| 5fbde4bc06 | |||
| 2a276d9272 | |||
| 9ae252717d | |||
| 456143a266 | |||
| 0bcc98e126 | |||
| ab9ceba41c | |||
| 7cd5666e88 | |||
| 35dcd6ada7 | |||
| ec37df82a9 | |||
| 220cb47615 | |||
| d79b8a337a | |||
| cef6a6f741 | |||
| 9471df1f2d | |||
| f121e5f9c3 | |||
| 7f4fe318c5 | |||
| dbf5c2dbb2 | |||
| 105415873d | |||
| ff32fd1dfc | |||
| 006251ed07 | |||
| 9307582654 | |||
| fe11a2119e | |||
| c31403c1a2 | |||
| 0260e7bedc | |||
| fa43a55f26 | |||
| e9e1f4b9cf | |||
| e7b5b9184d | |||
| 81aa3f2307 | |||
| a9fe584504 | |||
| 4c8861ba79 | |||
| 0ec18cbf06 | |||
| 7008f312dc | |||
| 85317a510e | |||
| d629aa206e | |||
| 6394e1a52b | |||
| 23dca3d307 | |||
| 3032aa8474 | |||
| db19b69ca0 | |||
| f3827f81a7 | |||
| 0532dbb1ae | |||
| efc2681da8 | |||
| 735ed9fd86 | |||
| e856dc4754 | |||
| 0706ff1f95 | |||
| 336b830b0b | |||
| 1a638fe0a5 | |||
| 45467e5bd7 | |||
| 8419b0ab6a | |||
| 49573607fb | |||
| 35fe48db35 | |||
| 590db3e672 | |||
| ea40474c47 | |||
| 7354389f2d | |||
| 1f20ae16aa | |||
| 095c91bf39 | |||
| dc173d752c | |||
| a1788e35b2 | |||
| ea224fd765 | |||
| 7f51544bb9 | |||
| dfb22b0e89 | |||
| e675e841da | |||
| dea43aad8e | |||
| 52e25e934d | |||
| acc067585d | |||
| 47aa1a0795 | |||
| b40cc0c1ea | |||
| b5632626ad | |||
| 67fafdac00 | |||
| 738e628a89 | |||
| 420b846466 | |||
| 05e8c9c90d | |||
| e776c5182f | |||
| be5b3745b9 | |||
| 0de1d9cfda | |||
| 01da98d2fe | |||
| e985100c21 | |||
| 671faabef9 | |||
| bb9c9e22a2 | |||
| 42228f0eaa | |||
| dafd0a8ece | |||
| bee9d82372 | |||
| ec6cf0f029 | |||
| 9cee22165d | |||
| a58aad1198 | |||
| aa78d99179 | |||
| 603efe9259 | |||
| 21e3e10222 | |||
| 34eb6eb4bf | |||
| 565a724b9c | |||
| e87c4a0126 | |||
| 9b16d5d82b | |||
| 9747c8bff1 | |||
| 3ee84700f4 | |||
| 04a463f42c | |||
| 668a201789 | |||
| b336b17eef | |||
| 76b25d719a | |||
| a4d077dd17 | |||
| 469712150b | |||
| fad27ede78 | |||
| 1de90412b3 | |||
| 215c8793e1 | |||
| 54835f97d1 | |||
| 923e929670 | |||
| 37488e92e6 | |||
| 830ca8122d | |||
| fbb2758bdb | |||
| a5c3e06f1c | |||
| c6fb50c4a6 | |||
| 976c0b86dc | |||
| fee5d8f925 | |||
| 808746e12d | |||
| 3fb80dd475 | |||
| db8ea0da94 | |||
| fbdfb714a3 | |||
| 1facfbc2b7 | |||
| 914a0662a9 | |||
| eda3003b7d | |||
| 459942de36 | |||
| 17f64f9b48 | |||
| 3f896c2240 | |||
| 94f8c971c5 | |||
| c43109c063 | |||
| f6058e29b4 | |||
| 3a37311331 | |||
| 9fe1472e64 | |||
| f1480c40a7 | |||
| 88eebdc448 | |||
| 8c76283db5 | |||
| 7668c48081 | |||
| 35d2135f73 | |||
| 1cb0e096be | |||
| 31f7c7f31b | |||
| 82d3b3bc48 | |||
| b3734a5c2a | |||
| 55b8736d50 | |||
| 3334fd3ca6 | |||
|
|
e2416b405a | ||
| 14f012fbfa | |||
| 1ff55057f2 | |||
| 71b5e33dbc | |||
| 08d9d183f4 | |||
| 7183634fd6 | |||
| cf9f270651 | |||
| bd87938e9c | |||
| ba76eaeb90 | |||
| d8492ae168 | |||
| 0db85232d3 | |||
| bcf2325be8 | |||
| 51174a13de | |||
| dfc1fa4d7e | |||
| 10a1d1cb38 | |||
| 6c39dc4d06 | |||
| 4877b8958e | |||
| db9c460e66 | |||
| 2bd5d53b2a | |||
| 577436843d | |||
| 048aa93044 | |||
| 4e49de0dd7 | |||
| 9dc5a7624d | |||
| 21a15db031 | |||
| a6aa4b8758 | |||
| e85d5df03e | |||
| 6833640c48 | |||
| c22c1bb144 | |||
| 8293d6683c | |||
| 7e6e892c45 | |||
| 43ac09a79b | |||
| ee1f115d77 | |||
| 7d85b6fb88 | |||
| 013944c5c9 | |||
| 55ed3e165b | |||
| 9c0106d229 | |||
| 9cd2a6220c | |||
| 033ec8f2da | |||
| 274afe8efc | |||
| e60630b331 | |||
| f6692a22d1 | |||
| 53257ff131 | |||
| ec70813e49 | |||
| 54589ed17b | |||
| 1d3736c44e | |||
| 8ef7acab2d | |||
| c3fca5c6c4 | |||
| 84d2c88032 | |||
| b7ec2f2b86 | |||
| 97d6d3ad13 | |||
| 3dd428c7d9 | |||
| 688de1053b | |||
| a4fae36b22 | |||
| 909a7fd26a | |||
| 041232e260 | |||
| d4c409107a | |||
| a0db95d929 | |||
| fb34b0bec1 | |||
| d18863b7b3 | |||
| c5c8a743e6 | |||
| 89881a7349 | |||
| 865edf385f | |||
| c85faa73c0 | |||
| 6b3f836096 | |||
| 574ffbc44d | |||
| a0120afb08 | |||
| 0b4b4950c2 | |||
| b3391330a0 | |||
| 518dee46b3 | |||
| c9de4bc79e | |||
| badb138bc1 | |||
| 4b980d3f44 | |||
| b11da02c8b | |||
| 71c0b688e8 | |||
| d61aa8b50e | |||
| be64287c42 | |||
| e7027047cb | |||
| 944d15f326 | |||
| ba2c4cbb30 | |||
| 244a1e5175 | |||
| 9c9a938d94 | |||
| a2a403045b | |||
| 6858af14f8 | |||
| 779009c2a6 | |||
| b22d8a5a25 | |||
| 54e3c43999 | |||
| f8a312acb3 | |||
| a51e68be04 | |||
| 39dab0b970 | |||
| b42a6ca0cf | |||
| a34e67722b | |||
| c0e660c8d3 | |||
| 7cca12930c | |||
| 5da60b4ac2 | |||
| 51dac40e45 | |||
| 51fc33960a | |||
| b89b798eb6 | |||
| a9326bb374 | |||
| edad64c6e3 | |||
| 8c06322586 | |||
| 9684e55c12 | |||
| d7d92cd83f | |||
| 7229d96ce7 | |||
| c32ab031dd | |||
| a8d7104145 | |||
| ff550fafde | |||
| 1dbb0e669d | |||
| 723818f04f | |||
| 0c107bc512 | |||
| 945df1bc5f | |||
| 239d740587 | |||
| 5fdcf252b2 | |||
| a17ae07e50 | |||
| 8bbfa2ee24 | |||
| 4b908f9975 | |||
| 542fcef6da | |||
| 0959c0b0d7 | |||
| 34f606545e | |||
| 0e33b123e9 | |||
| d6bbb0cadc | |||
| 8fd6a09763 | |||
| aa333d7c58 | |||
| fe8c3392fa | |||
| c2c7ac0d1e | |||
| 04e4407b96 | |||
| 60a30f972f | |||
| 9ed1500bee | |||
| 7d0009039f | |||
| e43ad41d2f | |||
| c7d5fdd2e0 | |||
| e7bdc85279 | |||
| dcfa198c8c | |||
| a846d0031c | |||
| 0dd632eb46 | |||
| dfe5595fd3 | |||
| 945dd05cfd | |||
| 09c623c1d7 | |||
| 269a4dd707 | |||
| 2399dc0d0a | |||
| 3a0be49cc5 | |||
| 28898ea2d4 | |||
| 679f282bd2 | |||
| 02fa83c92a | |||
| 69f81785bf | |||
| 86f1e3ea36 | |||
| be4043f3c2 | |||
| b4d0ca507b | |||
| cc433d4091 | |||
| f8ffd5fec3 | |||
| 799eadd7a7 | |||
| bc7cfc0d32 | |||
| 4ca8125637 | |||
| 5475f27a24 | |||
| 6d425cc0f6 | |||
| ff3ef6e957 | |||
| 28eecfa3ef | |||
| 56663d8e73 | |||
| 2fd842746b | |||
| 5e5dc105a5 | |||
| 6cf836708d | |||
| 5e6ff01940 | |||
| 2cfabb1c2a | |||
| de1d6aa70c | |||
| 90d5833021 | |||
| 527b718f55 | |||
| 2eb2d25662 | |||
| 9c25254937 | |||
| 601958a513 | |||
| ab6688bbaa | |||
| 4f2a8e49bc | |||
| 0ce9080efc | |||
| f2701b920f | |||
| a3b29f7db5 | |||
| 43a36072f1 |
5
.github/FUNDING.yml
vendored
Normal file
5
.github/FUNDING.yml
vendored
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
# These are supported funding model platforms
|
||||||
|
|
||||||
|
patreon: InsanusMokrassar
|
||||||
|
|
||||||
|
custom: ['https://paypal.me/InsanusMokrassar?locale.x=ru_RU']
|
||||||
10
.github/labeler.yml
vendored
Normal file
10
.github/labeler.yml
vendored
Normal file
@@ -0,0 +1,10 @@
|
|||||||
|
api: "TelegramBotAPI-extensions-api/**"
|
||||||
|
utils: "TelegramBotAPI-extensions-utils/**"
|
||||||
|
core: "TelegramBotAPI/**" # currently not work
|
||||||
|
|
||||||
|
code: "**/*.kt"
|
||||||
|
gradle: "**/*.gradle"
|
||||||
|
versions: "**/gradle.properties"
|
||||||
|
markdown:
|
||||||
|
- "**/*.md"
|
||||||
|
- "!CHANGELOG.md"
|
||||||
13
.github/workflows/greetings.yml
vendored
Normal file
13
.github/workflows/greetings.yml
vendored
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
name: Greetings
|
||||||
|
|
||||||
|
on: [pull_request, issues]
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
greeting:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/first-interaction@v1
|
||||||
|
with:
|
||||||
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
issue-message: 'Welcome with your first issue'
|
||||||
|
pr-message: 'Welcome with your first PullRequest'
|
||||||
18
.github/workflows/label.yml
vendored
Normal file
18
.github/workflows/label.yml
vendored
Normal file
@@ -0,0 +1,18 @@
|
|||||||
|
# This workflow will triage pull requests and apply a label based on the
|
||||||
|
# paths that are modified in the pull request.
|
||||||
|
#
|
||||||
|
# To use this workflow, you will need to set up a .github/labeler.yml
|
||||||
|
# file with configuration. For more information, see:
|
||||||
|
# https://github.com/actions/labeler/blob/master/README.md
|
||||||
|
|
||||||
|
name: "Pull Request Labeler"
|
||||||
|
on:
|
||||||
|
- pull_request
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
triage:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/labeler@v2
|
||||||
|
with:
|
||||||
|
repo-token: "${{ secrets.GITHUB_TOKEN }}"
|
||||||
1
.github/write-good.yml
vendored
Normal file
1
.github/write-good.yml
vendored
Normal file
@@ -0,0 +1 @@
|
|||||||
|
spellchecker: true
|
||||||
3
.gitignore
vendored
3
.gitignore
vendored
@@ -8,3 +8,6 @@ settings.xml
|
|||||||
.gradle/
|
.gradle/
|
||||||
build/
|
build/
|
||||||
out/
|
out/
|
||||||
|
|
||||||
|
local.properties
|
||||||
|
secret.gradle
|
||||||
|
|||||||
13
.travis.yml
Normal file
13
.travis.yml
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
language: java
|
||||||
|
install: true
|
||||||
|
|
||||||
|
os: linux
|
||||||
|
dist: trusty
|
||||||
|
jdk: oraclejdk8
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
include:
|
||||||
|
- stage: build
|
||||||
|
script: ./gradlew build -s -x jvmTest -x jsIrTest -x jsIrBrowserTest -x jsIrNodeTest -x jsLegacyTest -x jsLegacyBrowserTest -x jsLegacyNodeTest
|
||||||
|
- state: test
|
||||||
|
script: ./gradlew allTests
|
||||||
610
CHANGELOG.md
610
CHANGELOG.md
@@ -1,5 +1,583 @@
|
|||||||
# TelegramBotAPI changelog
|
# TelegramBotAPI changelog
|
||||||
|
|
||||||
|
## 0.29.0
|
||||||
|
|
||||||
|
* **THIS VERSION CONTAINS BREAKING CHANGES**
|
||||||
|
* ***PROJECT PACKAGES WERE CHANGED***
|
||||||
|
* Packages in the whole project were changed `com.github.insanusmokrassar.TelegramBotAPI` -> `dev.inmo.tgbotapi`
|
||||||
|
* Project group in repositories were changed: `com.github.insanusmokrassar` -> `dev.inmo`
|
||||||
|
* Migration ([Examples migration](https://github.com/InsanusMokrassar/TelegramBotAPI-examples/pull/11)):
|
||||||
|
1. Change implementation in your gradle files:
|
||||||
|
* `implementation "com.github.insanusmokrassar:TelegramBotAPI-core:*"` -> `implementation "dev.inmo:tgbotapi.core:*"`
|
||||||
|
* `implementation "com.github.insanusmokrassar:TelegramBotAPI-extensions-utils:*"` -> `implementation "dev.inmo:tgbotapi.extensions.utils:*"`
|
||||||
|
* `implementation "com.github.insanusmokrassar:TelegramBotAPI-extensions-api:*"` -> `implementation "dev.inmo:tgbotapi.extensions.api:*"`
|
||||||
|
* `implementation "com.github.insanusmokrassar:TelegramBotAPI:*"` -> `implementation "dev.inmo:tgbotapi:*"`
|
||||||
|
2. Replace packages `com.github.insanusmokrassar.TelegramBotAPI` in the whole project by `dev.inmo.tgbotapi`
|
||||||
|
|
||||||
|
|
||||||
|
* `TelegramBotAPI-core`:
|
||||||
|
* Now in forward info you can get `ForwardFromSupergroupInfo`
|
||||||
|
* **BREAKING CHANGE** `SendVoice` factory function has changed its signature: now it have now `thumb`
|
||||||
|
(according to the [documentation](https://core.telegram.org/bots/api#sendvoice))
|
||||||
|
* `TelegramBotAPI-extensions-api`:
|
||||||
|
* ALL REQUESTS EXECUTOR USAGES WERE REPLACED WITH `TelegramBot` TYPEALIAS. It should not bring any break changes
|
||||||
|
* Internal changes of `sendRegularPoll` and `sendQuizPoll` extensions
|
||||||
|
* Variable `defaultLivePeriodDelayMillis` now is public
|
||||||
|
* All `send` extensions for `TelegramBot` got their `reply` variations (issue [#144](https://github.com/InsanusMokrassar/TelegramBotAPI/issues/144))
|
||||||
|
* A lot of `send` extensions for `TelegramBot` got their variation with `Chat` instead of `ChatIdentifier`
|
||||||
|
|
||||||
|
## 0.28.0
|
||||||
|
|
||||||
|
* **THIS VERSION CONTAINS BREAKING CHANGES**
|
||||||
|
* ***PROJECT PACKAGES WERE CHANGED***
|
||||||
|
* Project `TelegramBotAPI` -> `TelegramBotAPI-core`
|
||||||
|
* Project `TelegramBotAPI-all` -> `TelegramBotAPI`
|
||||||
|
|
||||||
|
* `Common`:
|
||||||
|
* Version updates:
|
||||||
|
* `Kotlin`: `1.3.72` -> `1.4.0`
|
||||||
|
* `Coroutines`: `1.3.8` -> `1.3.9`
|
||||||
|
* `Serialization`: `0.20.0` -> `1.0.0-RC`
|
||||||
|
* `Klock`: `1.11.14` -> `1.12.0`
|
||||||
|
* `UUID`: `0.1.1` -> `0.2.1`
|
||||||
|
* `Ktor`: `1.3.2` -> `1.4.0`
|
||||||
|
* `buildMimeType` function now is cache-oriented getter which will save already got mime types into internal map
|
||||||
|
* All deprecations from previous versions were removed
|
||||||
|
* `TelegramBotAPI-core`:
|
||||||
|
* Typealias `TelegramBot` was added
|
||||||
|
* Fully rebuilt `KtorCallFactory` interface to be able to handle custom answers from telegram bot api system
|
||||||
|
* New implementation of `KtorCallFactory` was added: `DownloadFileRequestCallFactory`
|
||||||
|
* `DownloadFile` request was added
|
||||||
|
* All included `KtorCallFactory` realizations (except of abstract) now are objects:
|
||||||
|
* `MultipartRequestCallFactory`
|
||||||
|
* `SimpleRequestCallFactory`
|
||||||
|
* `MediaGroupMemberInputMedia` members now will not have `arguments` property due to redundancy and buggy of that
|
||||||
|
* Field `media` now is common for all `InputMedia` objects
|
||||||
|
* `TelegramBotAPI-extensions-api`:
|
||||||
|
* Extensions `TelegramBot#downloadFile` were added
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* All extensions for media groups (except of `mediaGroupId`) have changed their context: `List<MediaGroupMessage>`
|
||||||
|
-> `List<CommonMessage<MediaGroupContent>>`
|
||||||
|
* `forwardInfo`
|
||||||
|
* `replyTo`
|
||||||
|
* `chat`
|
||||||
|
* `createResend` (several extensions)
|
||||||
|
* Several extensions for downloading of files:
|
||||||
|
* `HttpClient#loadFile`
|
||||||
|
* `PathedFile#download`
|
||||||
|
|
||||||
|
### 0.28.4
|
||||||
|
|
||||||
|
* `Common`:
|
||||||
|
* Version updates:
|
||||||
|
* `Ktor`: `1.4.0` -> `1.4.1`
|
||||||
|
* `TelegramBotAPI-core`
|
||||||
|
* Interface `GroupEventMessage` has been added ([#140](https://github.com/InsanusMokrassar/TelegramBotAPI/pull/140))
|
||||||
|
* Old `GroupEventMessage` was renamed to `CommonGroupEventMessage` ([#140](https://github.com/InsanusMokrassar/TelegramBotAPI/pull/140))
|
||||||
|
* Interface `SupergroupEventMessage` has been added ([#140](https://github.com/InsanusMokrassar/TelegramBotAPI/pull/140))
|
||||||
|
* Old `SupergroupEventMessage` was renamed to `CommonSupergroupEventMessage` ([#140](https://github.com/InsanusMokrassar/TelegramBotAPI/pull/140))
|
||||||
|
* Any `GroupEventMessage` now have `from` field ([#140](https://github.com/InsanusMokrassar/TelegramBotAPI/pull/140))
|
||||||
|
* `TelegramBotAPI-extensions-utils`
|
||||||
|
* Extensions `Flow<ChatEventMessage>#onlyGroupEvents` and `Flow<ChatEventMessage>#onlySupergroupEvents` now returns
|
||||||
|
`CommonGroupEventMessage` and `CommonSupergroupEventMessage`
|
||||||
|
|
||||||
|
### 0.28.3
|
||||||
|
|
||||||
|
* Common:
|
||||||
|
* Version updates:
|
||||||
|
* `Klock`: `0.12.0` -> `0.12.1`
|
||||||
|
* `Kotlin serialization`: `1.0.0-RC` -> `1.0.0-RC2` (dependency `kotlinx-serialization-core` was replaced with
|
||||||
|
`kotlinx-serialization-json` due to [kotlinx.serialization library update](https://github.com/Kotlin/kotlinx.serialization/blob/master/CHANGELOG.md#100-rc2--2020-09-21))
|
||||||
|
* `TelegramBotAPI-core`:
|
||||||
|
* All `InlineQueryResult` has changed their type of id for more obvious relation between `InlineQueryResult#id` and
|
||||||
|
`ChosenInlineResult#resultId`: `String` -> `InlineQueryIdentifier`
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* Several extensions for updates flows based on `InlineQueryUpdate` has been added:
|
||||||
|
* `Flow<InlineQueryUpdate>#onlyBaseInlineQueriesWithUpdates`
|
||||||
|
* `Flow<InlineQueryUpdate>#onlyBaseInlineQueries`
|
||||||
|
* `Flow<InlineQueryUpdate>#onlyLocationInlineQueriesWithUpdates`
|
||||||
|
* `Flow<InlineQueryUpdate>#onlyLocationInlineQueries`
|
||||||
|
* Several extensions for updates flows based on `ChosenInlineResultUpdate` has been added:
|
||||||
|
* `Flow<ChosenInlineResultUpdate>.onlyBaseChosenInlineResultsWithUpdates`
|
||||||
|
* `Flow<ChosenInlineResultUpdate>.onlyBaseChosenInlineResults`
|
||||||
|
* `Flow<ChosenInlineResultUpdate>.onlyLocationChosenInlineResultsWithUpdates`
|
||||||
|
* `Flow<ChosenInlineResultUpdate>.onlyLocationChosenInlineResults`
|
||||||
|
|
||||||
|
### 0.28.2
|
||||||
|
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* Several commands shortcuts for `Flow<ContentMessage<TextContent>>` has been added:
|
||||||
|
* `filterExactCommands`
|
||||||
|
* `filterCommandsInsideTextMessages`
|
||||||
|
* `filterCommandsWithArgs`
|
||||||
|
* Extension `Flow<BaseSentMessageUpdate>.filterCommandsWithArgs` has changed its signature: now it will also have
|
||||||
|
original message paired with list of text sources
|
||||||
|
* Shortcut method `commonMessages` for `onlyCommonMessages`
|
||||||
|
* Shortcuts `onlySentViaBot` and `withoutSentViaBot` now are extensions for any `Flow` with types which implementing
|
||||||
|
`ContentMessage`
|
||||||
|
|
||||||
|
### 0.28.1
|
||||||
|
|
||||||
|
* Common:
|
||||||
|
* Versions updates:
|
||||||
|
* `Kotlin`: `1.4.0` -> `1.4.10`
|
||||||
|
* `UUID`: `0.2.1` -> `0.2.2`
|
||||||
|
* `TelegramBotAPI-core`:
|
||||||
|
* `ExceptionHandler` has changed its incoming type: `Exception` -> `Throwable`
|
||||||
|
* `handleSafely` has changed its signature
|
||||||
|
* `executeUnsafe` has changed its signature
|
||||||
|
|
||||||
|
## 0.27.0
|
||||||
|
|
||||||
|
* `Common`:
|
||||||
|
* Versions updates:
|
||||||
|
* `Kotlin`: `1.3.71` -> `1.3.72`
|
||||||
|
* `Klock`: `1.10.3` -> `1.10.5`
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* Typealias `LongSeconds` was added for correct explanation of seconds in `Long` primitive type
|
||||||
|
* Several new fields was added:
|
||||||
|
* `explanationField`
|
||||||
|
* `explanationEntitiesField`
|
||||||
|
* `openPeriodField`
|
||||||
|
* `closeDateField`
|
||||||
|
* Extension `List<TextPart>#justTextSources` was added for mapping of `List<TextPart>` to `List<TextSource>`
|
||||||
|
* Field `SendPoll#closeInfo` was added
|
||||||
|
* Range `openPeriodPollSecondsLimit` was added and used in all `SendPoll` requests for checking income data
|
||||||
|
* `SendQuizPoll` now able to use fields `caption` and `parseMode` for `explanation` functionality
|
||||||
|
* `quizPollExplanationLimit` was added for checking `QuizPoll` explanation size
|
||||||
|
* Field `TextLinkTextSource#url` was added
|
||||||
|
* Field `TextMentionTextSource#user` was added
|
||||||
|
* Sealed class `ScheduledCloseInfo` was added
|
||||||
|
* Class `ExactScheduledCloseInfo` was added for cases with `close_date`
|
||||||
|
* Class `ApproximateScheduledCloseInfo` was added for cases with `open_period`
|
||||||
|
* Field `Poll#scheduledCloseInfo` was added
|
||||||
|
* Sealed class `MultipleAnswersPoll` was added
|
||||||
|
* Class `RegularPoll` now extends `MultipleAnswersPoll`
|
||||||
|
* `Dice` class was replaced into new package
|
||||||
|
* Sealed class `DiceAnimationType` was added
|
||||||
|
* Field `Dice#animationType` was added as `emoji` API representation
|
||||||
|
* `SendDice` now receive `animationType` as second parameter
|
||||||
|
* For `List<TextSource>` was added several extensions:
|
||||||
|
* `toMarkdownCaptions`
|
||||||
|
* `toMarkdownTexts`
|
||||||
|
* `toMarkdownV2Captions`
|
||||||
|
* `toMarkdownV2Texts`
|
||||||
|
* `toHtmlCaptions`
|
||||||
|
* `toHtmlTexts`
|
||||||
|
* `TelegramBotAPI-extensions-api`:
|
||||||
|
* All `RequestsExecutor#sendDice` extensions now accept `DiceAnimationType?` as second parameter
|
||||||
|
* All `RequestsExecutor#sendRegularPoll` extensions now accept `ScheduledCloseInfo` fourth parameter
|
||||||
|
* All `RequestsExecutor#sendQuizPoll` extensions now accept additional parameters `caption: String` and
|
||||||
|
`parseMode: ParseMode` for `explanation` functionality and `closeInfo: ScheduledCloseInfo?` for autoclose poll
|
||||||
|
functionality
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* Several shortcuts for `ScheduledCloseInfo` was added:
|
||||||
|
* `closePollExactAt`
|
||||||
|
* `closePollExactAfter`
|
||||||
|
* `closePollAfter`
|
||||||
|
|
||||||
|
### 0.27.11
|
||||||
|
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* Extension `String#filenameFromUrl` was created
|
||||||
|
* Extension `PathedFile#filename` was created
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* `Flow<Iterable<T>>.flatMap` extension was added
|
||||||
|
* Extensions for `FlowUpdatesFilter` were added:
|
||||||
|
* `FlowsUpdatesFilter#allSentMessagesFlow` (combination of `messageFlow` and `channelPostFlow`)
|
||||||
|
* `FlowsUpdatesFilter#allSentMediaGroupsFlow` (combination of `messageMediaGroupFlow` and `channelPostMediaGroupFlow`)
|
||||||
|
* `FlowsUpdatesFilter#sentMessages`
|
||||||
|
* `FlowsUpdatesFilter#sentMessagesWithMediaGroups`
|
||||||
|
* `FlowsUpdatesFilter#photoMessagesWithMediaGroups`
|
||||||
|
* `FlowsUpdatesFilter#imageMessagesWithMediaGroups`
|
||||||
|
* `FlowsUpdatesFilter#videoMessagesWithMediaGroups`
|
||||||
|
* `FlowsUpdatesFilter#mediaGroupMessages`
|
||||||
|
* `FlowsUpdatesFilter#mediaGroupPhotosMessages`
|
||||||
|
* `FlowsUpdatesFilter#mediaGroupVideosMessages`
|
||||||
|
* A lot of extensions like `Flow<BaseSentMessageUpdate>#textMessages` were added:
|
||||||
|
* `Flow<BaseSentMessageUpdate>#animationMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#audioMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#contactMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#diceMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#documentMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#gameMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#invoiceMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#locationMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#photoMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#imageMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#pollMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#stickerMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#textMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#venueMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#videoMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#videoNoteMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#voiceMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#mediaGroupMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#mediaGroupPhotosMessages`
|
||||||
|
* `Flow<BaseSentMessageUpdate>#mediaGroupVideosMessages`
|
||||||
|
|
||||||
|
### 0.27.10
|
||||||
|
|
||||||
|
* `TelegramBotAPI-extensions-api`:
|
||||||
|
* Function `telegramBot(TelegramAPIUrlsKeeper)` was added
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* Extension `Route#includeWebhookHandlingInRouteWithFlows` was added
|
||||||
|
* A lot of extensions like `FlowsUpdatesFilter#textMessages` were added:
|
||||||
|
* `FlowsUpdatesFilter#animationMessages`
|
||||||
|
* `FlowsUpdatesFilter#audioMessages`
|
||||||
|
* `FlowsUpdatesFilter#contactMessages`
|
||||||
|
* `FlowsUpdatesFilter#diceMessages`
|
||||||
|
* `FlowsUpdatesFilter#documentMessages`
|
||||||
|
* `FlowsUpdatesFilter#gameMessages`
|
||||||
|
* `FlowsUpdatesFilter#invoiceMessages`
|
||||||
|
* `FlowsUpdatesFilter#locationMessages`
|
||||||
|
* `FlowsUpdatesFilter#photoMessages`
|
||||||
|
* `FlowsUpdatesFilter#imageMessages`
|
||||||
|
* `FlowsUpdatesFilter#pollMessages`
|
||||||
|
* `FlowsUpdatesFilter#stickerMessages`
|
||||||
|
* `FlowsUpdatesFilter#textMessages`
|
||||||
|
* `FlowsUpdatesFilter#venueMessages`
|
||||||
|
* `FlowsUpdatesFilter#videoMessages`
|
||||||
|
* `FlowsUpdatesFilter#videoNoteMessages`
|
||||||
|
* `FlowsUpdatesFilter#voiceMessages`
|
||||||
|
|
||||||
|
### 0.27.9
|
||||||
|
|
||||||
|
* `Common`
|
||||||
|
* Versions updates:
|
||||||
|
* `Gradle Wrapper`: `6.5-all` -> `6.5.1-bin`
|
||||||
|
* `Coroutines`: `1.3.7` -> `1.3.8`
|
||||||
|
* `Klock`: `1.11.3` -> `1.11.14`
|
||||||
|
* `UUID`: `0.1.0` -> `0.1.1`
|
||||||
|
|
||||||
|
### 0.27.8
|
||||||
|
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* `UnknownUpdateType` was renamed to `UnknownUpdate`
|
||||||
|
* Refactoring and optimization of `FlowsUpdatesFilter`
|
||||||
|
* `Venue` type was replaced to a new package: `com.github.insanusmokrassar.TelegramBotAPI.types.venue.Venue`
|
||||||
|
* `Venue` type now implements `Locationed` and delegate realisation to its `location` field
|
||||||
|
* `FoursquareId` and `FoursquareType` typealiases were added
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* Several new functions `makeLinkToMessage` was added
|
||||||
|
* `Foursquare` data class was added
|
||||||
|
* Extension `Venue#foursquare` was added
|
||||||
|
* Factory function `Venue` with `Foursquare` parameter was added
|
||||||
|
|
||||||
|
### 0.27.7
|
||||||
|
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* Operator function `unaryPlus` was added to `RowBuilder`. Now it is possible to write `row { +button }`
|
||||||
|
* Function `flatMatrix` was added for single-row columns
|
||||||
|
* Operator extension `RowBuilder#plus` was added to be able to write things like `row { this + button }`
|
||||||
|
* `TelegramBotAPI-extensions-api`:
|
||||||
|
* Extensions `RequestsExecutor#sendVenue` with `Location` args were added
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* Function `InlineKeyboardMarkup` for flat keyboards was added
|
||||||
|
* Function `ReplyKeyboardMarkup` for flat keyboards was added
|
||||||
|
|
||||||
|
### 0.27.6
|
||||||
|
|
||||||
|
* `Common`:
|
||||||
|
* Versions:
|
||||||
|
* `Kotlin Coroutines`: `1.3.6` -> `1.3.7`
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* Interface `PossiblySentViaBot` has been added
|
||||||
|
* Additional interface `PossiblySentViaBotCommonMessage` was added for more explicit typing declaration for
|
||||||
|
compiler
|
||||||
|
* Currently, only `ChannelMessage` and `CommonMessageImpl` are implementing the interface
|
||||||
|
`PossiblySentViaBotCommonMessage`. It could be changed in future
|
||||||
|
* Factory `buildMimeType` was added
|
||||||
|
* `BuiltinMimeTypes` was added
|
||||||
|
* Abstraction `ThumbedWithMimeTypeInlineQueryResult` with `thumbMimeType` field was added
|
||||||
|
* `InlineQueryResultGif` and `InlineQueryResultMpeg4Gif` now extend `ThumbedWithMimeTypeInlineQueryResult`
|
||||||
|
instead of `ThumbedInlineQueryResult`
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* New extensions `onlyCommonMessages`, `onlySentViaBot` and `withoutSentViaBot` was added
|
||||||
|
|
||||||
|
### 0.27.5
|
||||||
|
|
||||||
|
* `Common`:
|
||||||
|
* Versions:
|
||||||
|
* `Klock`: `1.11.1` -> `1.11.3`
|
||||||
|
* `TelegramotAPI`:
|
||||||
|
* Fix: for sending requests caption and text lengths limits were updated
|
||||||
|
* New variant of `row` was added
|
||||||
|
* `makeLinkToMessage` extensions has been deprecated (replaced into `TelegramBotAPI-extensions-utils`)
|
||||||
|
* Next things was deprecated and replaced into `TelegramBotAPI-extensions-utils`:
|
||||||
|
* All `String` formatting public extensions and functions
|
||||||
|
* All extensions like `CaptionedInput#toHtmlCaptions`
|
||||||
|
* All helper extensions for `List<BaseMessageUpdate>`
|
||||||
|
* All `RequestsExecutor#executeAsync` and `RequestsExecutor#executeUnsafe`
|
||||||
|
* `BotCommand` now more strictly check commands which passed to it
|
||||||
|
* Regex `BotCommandNameRegex` was added
|
||||||
|
* `TelegramBotAPI-extensions-api`:
|
||||||
|
* A lot of `RequesstExecutor#getChat` extensions was added for more explicit types showing
|
||||||
|
* New `RequesstExecutor#setMyCommands` extension was added
|
||||||
|
* New field `BotBuilder#ktorClientEngineFactory` introduced
|
||||||
|
* Field `BotBuilder#ktorClientEngine` now is deprecated
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* `safely` function was introduced. It is in `PreviewFeature` state currently
|
||||||
|
* `makeLinkToMessage` extensions has been added
|
||||||
|
* `makeLinkToAddStickerSet` function and its variations were added
|
||||||
|
* Next tools was added from `TelegramBotAPI`:
|
||||||
|
* All `String` formatting extensions and functions
|
||||||
|
* All extensions like `CaptionedInput#toHtmlCaptions`
|
||||||
|
* All helper extensions for `List<BaseMessageUpdate>`
|
||||||
|
* Several new extensions for `SentMediaGroupUpdate` were added:
|
||||||
|
* `SentMediaGroupUpdate#forwardInfo`
|
||||||
|
* `SentMediaGroupUpdate#replyTo`
|
||||||
|
* `SentMediaGroupUpdate#chat`
|
||||||
|
* `SentMediaGroupUpdate#mediaGroupId`
|
||||||
|
* Several `List<MediaGroupMessage>.createResend` extensions were added
|
||||||
|
* `RequestsExecutor#executeAsync` and `RequestsExecutor#executeUnsafe`
|
||||||
|
|
||||||
|
### 0.27.4
|
||||||
|
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* Several extensions for updates was added:
|
||||||
|
* `onlyBaseMessageUpdates`
|
||||||
|
* `onlySentMessageUpdates`
|
||||||
|
* `onlyEditMessageUpdates`
|
||||||
|
* `onlyMediaGroupsUpdates`
|
||||||
|
* `onlySentMediaGroupUpdates`
|
||||||
|
* `onlyEditMediaGroupUpdates`
|
||||||
|
* Renames in chat filters extensions:
|
||||||
|
* `filterBaseMessageUpdates` -> `filterBaseMessageUpdatesByChatId` and `filterBaseMessageUpdatesByChat`
|
||||||
|
* `filterSentMediaGroupUpdates` -> `filterSentMediaGroupUpdatesByChatId` and `filterSentMediaGroupUpdatesByChat`
|
||||||
|
|
||||||
|
### 0.27.3
|
||||||
|
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* `UpdateDeserializationStrategy` is publicly available now
|
||||||
|
* All `setWebhook` extensions was marked as deprecated, renamed and replaced into `TelegramBotAPI-extensions-utils`
|
||||||
|
* Typealias `ExceptionHandler` was added - it will be used for `handleSafely`
|
||||||
|
* `SetWebhook` factories signatures was changed (backward compatibility was not broken)
|
||||||
|
* `executeUnsafe` now working differently
|
||||||
|
* Now it is possible to pass exceptions handler into `executeUnsafe`
|
||||||
|
* `BasketballDiceAnimationType` was added
|
||||||
|
* `UnknownDiceAnimationType` now is deprecated due to renaming - currently it is typealias for `CustomDiceAnimationType`
|
||||||
|
* `CustomDiceAnimationType` now is `data` class instead of common class
|
||||||
|
* `FlowsUpdatesFilter` will use size 64 by default for internal broadcast channels
|
||||||
|
* `TelegramBotAPI-extensions-api`:
|
||||||
|
* Long Polling extensions now are deprecated in this project. It was replaced into `TelegramBotAPI-extensions-utils`
|
||||||
|
* Several `telegramBot` functions was renamed into `telegramBotWithCustomClientConfig`
|
||||||
|
* Add one more `setWebhookInfo` realisation
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* Extension `toTelegramUpdate` was added
|
||||||
|
* Long Polling extensions were added
|
||||||
|
* Updates utils were added
|
||||||
|
* New extensions `startListenWebhooks`, `setWebhookInfoAndStartListenWebhooks` and `includeWebhookHandlingInRoute` was added
|
||||||
|
* New extension `CoroutineScope#updateHandlerWithMediaGroupsAdaptation` was added
|
||||||
|
* New extension `flowsUpdatesFilter` was added
|
||||||
|
* `TelegramBotAPI-all`:
|
||||||
|
* Project was created
|
||||||
|
|
||||||
|
### 0.27.2
|
||||||
|
|
||||||
|
* `Common`:
|
||||||
|
* Versions:
|
||||||
|
* Coroutines: `1.3.5` -> `1.3.6`
|
||||||
|
* Klock: `1.10.5` -> `1.11.1`
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* Expected class `MimeType` was added
|
||||||
|
* Field `MimeTyped#mimeType` now typed by `MimeType` instead of `String`
|
||||||
|
* `MediaGroupMemberInputMedia` children now can be deserialized (but only those ones who are declared inside library)
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* Chat events splitters added:
|
||||||
|
* Extension `Flow<ChatEventMessage>#onlyChannelEvents` was added
|
||||||
|
* Extension `Flow<ChatEventMessage>#onlyGroupEvents` was added
|
||||||
|
* Extension `Flow<ChatEventMessage>#onlySupergroupEvents` was added
|
||||||
|
|
||||||
|
### 0.27.1
|
||||||
|
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* Interface `Explained` and subsinterfaces `ExplainedInput` and `ExplainedOutput` was added
|
||||||
|
* Class `QuizPoll` now implement `ExplainedInput`
|
||||||
|
* In `QuizPoll#caption` and `QuizPoll#captionEntities` are deprecated now
|
||||||
|
* Class `SendQuizPoll` now implement `ExplainedOutput`
|
||||||
|
* In `SendQuizPoll#caption` is deprecated now
|
||||||
|
* `explanationLimit` range was added as future replacement of `quizPollExplanationLimit`
|
||||||
|
* `quizPollExplanationLimit` now is deprecated
|
||||||
|
* Extensions `toMarkdownExplanations`, `toMarkdownV2Explanations` and `toHtmlExplanations` was added
|
||||||
|
* Typealias `FullTextSourcesList` was added
|
||||||
|
* All extensions `fullEntitiesList` now return `FullTextSourcesList`
|
||||||
|
* All extensions of `List<TextSource>` now are extensions for `FullTextSourcesList`
|
||||||
|
* `TelegramBotAPI-extensions-api`:
|
||||||
|
* `sendQuizPoll` now is using `explanation` parameter instead of `caption`
|
||||||
|
|
||||||
|
## 0.26.0
|
||||||
|
|
||||||
|
* `Common`:
|
||||||
|
* Versions updates:
|
||||||
|
* `Klock`: `1.10.0` -> `1.10.3`
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* Request `SendDice` was added (calling [sendDice](https://core.telegram.org/bots/api#senddice))
|
||||||
|
* Class `Dice` was added (type [dice](https://core.telegram.org/bots/api#dice))
|
||||||
|
* Class `DiceContent` was added (for including it in [message](https://core.telegram.org/bots/api#message) object)
|
||||||
|
* `BotCommand` was added
|
||||||
|
* `GetMyCommands` request was added
|
||||||
|
* `SetMyCommands` request was added
|
||||||
|
* `GetMe` now is object instead of class
|
||||||
|
* `GetMe` was replaced into package `com.github.insanusmokrassar.TelegramBotAPI.requests.bot.GetMe`
|
||||||
|
* `CreateNewStickerSet` renamed to `CreateStaticNewStickerSet`
|
||||||
|
* `CreateNewAnimatedStickerSet` request was added (it handle work with `tgs_sticker`)
|
||||||
|
* `StickerSet#thumb` was added
|
||||||
|
* `AddStickerToSet` renamed to `AddStaticStickerToSet`
|
||||||
|
* `AddAnimatedStickerToSet` request was added
|
||||||
|
* `SetStickerSetThumb` request was added
|
||||||
|
* Most of sticker actions now implements `StandardStickerSetAction` instead of `StickerSetAction`
|
||||||
|
* `getUpdatesLimit` was added to be ensure in get updates limit
|
||||||
|
* `GetUpdates` now will check count of requesting updates and throw exception if it is not in range `1 .. 100`
|
||||||
|
* `GetUpdates#limit` now is not nullable and by default set up to 100
|
||||||
|
* `TelegramBotAPI-extensions-api`:
|
||||||
|
* Extensions `sendDice` was added
|
||||||
|
* Extension `getMyCommands` request was added
|
||||||
|
* Extension `setMyCommands` request was added
|
||||||
|
* Extension `getMe` was replaced into package `com.github.insanusmokrassar.TelegramBotAPI.extensions.api.bot.GetMeKt.getMe`
|
||||||
|
* **All extensions `createNewStickerSet` was renamed to `createNewStaticStickerSet`**
|
||||||
|
* Extensions `createNewAnimatedStickerSet` was added
|
||||||
|
* **All extensions `addStickerToSet` was renamed to `addStaticStickerToSet`**
|
||||||
|
* Extensions `addAnimatedStickerToSet` was added
|
||||||
|
* Extensions `setStickerSetThumb` was added
|
||||||
|
* Extension `startGettingUpdates` now will drop `SentMediaGroupUpdate` in case if it is the last in updates group
|
||||||
|
and size of retrieved updates is equal to 100 (max count of retrieved updates)
|
||||||
|
* Extensions `getUpdates` now will receive only not nullable `limit` parameter
|
||||||
|
|
||||||
|
### 0.26.4
|
||||||
|
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* Now any getting of updates will return `UnknownUpdateType` when inside of deserialization will be
|
||||||
|
`SerializationException` or `NotImplemented` error
|
||||||
|
* `CallbackGame` currently is an object
|
||||||
|
* It is possible to use `CallbackGame` for now
|
||||||
|
* `CallbackGameInlineKeyboardButton` now will not accept `callbackGame` as income object
|
||||||
|
* Now it is possible to pass exception handler in webhook
|
||||||
|
|
||||||
|
### 0.26.3
|
||||||
|
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* `CallbackGameInlineKeyboardButton` was added
|
||||||
|
([Issue-79](https://github.com/InsanusMokrassar/TelegramBotAPI/issues/79),
|
||||||
|
[PR-80](https://github.com/InsanusMokrassar/TelegramBotAPI/pull/80))
|
||||||
|
* `UnknownInlineKeyboardButton` was added. It is unavailable for creating, but you can receive it, for example, in
|
||||||
|
`InlineQueryResult`
|
||||||
|
* `Update` now will be created even if was `SerializationException` inside of creating the update instance - in this
|
||||||
|
case will be created `UnknownUpdateType`
|
||||||
|
* `UnknownUpdateType$rawJson` value now is included (`JsonElement`)
|
||||||
|
* **EXPERIMENTALLY** `BaseEditMessageUpdate#data` now is `CommonMessage<*>`
|
||||||
|
* Suspend inline function `handleSafely` was added
|
||||||
|
* `KtorRequestsExecutor` now use `handleSafely` instead of `try` with `supervisorScope`
|
||||||
|
* `UpdatesPolling` now use `handleSafely` instead of `try` with `supervisorScope`
|
||||||
|
|
||||||
|
### 0.26.2
|
||||||
|
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* Now `EditMediaGroupUpdate` also extends `BaseEditMessageUpdate`
|
||||||
|
* **EXPERIMENTALLY** Now all `TextSource` realisations will contain `source` field as a property inside of them
|
||||||
|
* `TelegramBotAPI-extensions-api`:
|
||||||
|
* `startGettingFlowsUpdates` extension which do not require filter (but return a new one) was added
|
||||||
|
* `TelegramBotAPI-extensions-utils`:
|
||||||
|
* Subproject was added
|
||||||
|
* `filterBaseMessageUpdates`, `filterSentMediaGroupUpdates` and `filterEditMediaGroupUpdates` extensions was added
|
||||||
|
* `filterCommandsWithArgs`, `filterExactCommands` and `filterCommandsInsideTextMessages` extensions was added
|
||||||
|
* `asContentMessagesFlow`, `asChatEventsFlow` and `asUnknownMessagesFlow` extensions was added
|
||||||
|
* `withContentType` extension was added
|
||||||
|
* `onlyAnimationContentMessages` extension was added
|
||||||
|
* `onlyAudioContentMessages` extension was added
|
||||||
|
* `onlyContactContentMessages` extension was added
|
||||||
|
* `onlyDiceContentMessages` extension was added
|
||||||
|
* `onlyDocumentContentMessages` extension was added
|
||||||
|
* `onlyGameContentMessages` extension was added
|
||||||
|
* `onlyInvoiceContentMessages` extension was added
|
||||||
|
* `onlyLocationContentMessages` extension was added
|
||||||
|
* `onlyPhotoContentMessages` extension was added
|
||||||
|
* `onlyPollContentMessages` extension was added
|
||||||
|
* `onlyStickerContentMessages` extension was added
|
||||||
|
* `onlyTextContentMessages` extension was added
|
||||||
|
* `onlyVenueContentMessages` extension was added
|
||||||
|
* `onlyVideoContentMessages` extension was added
|
||||||
|
* `onlyVideoNoteContentMessages` extension was added
|
||||||
|
* `onlyVoiceContentMessages` extension was added
|
||||||
|
|
||||||
|
### 0.26.1
|
||||||
|
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* `BotCommand` now will check and throw error in case when command or description lengths is/are incorrect
|
||||||
|
* `StorageFile` now is common for all platforms
|
||||||
|
* JavaScript realization was removed due to its redundancy
|
||||||
|
* JVM realization was replaced with `fun` factory
|
||||||
|
* `StorageFile` now able to accept any factory of `Input`
|
||||||
|
* `StorageFileInfo` was added to avoid strange collisions with throws in `StorageFile`
|
||||||
|
* Fixes issue with `hashTag` for markdown
|
||||||
|
* `InvalidPhotoDimensionsException` was added for cases when `PHOTO_INVALID_DIMENSION` answer received
|
||||||
|
* Other fixes
|
||||||
|
|
||||||
|
## 0.25.0
|
||||||
|
|
||||||
|
* Common:
|
||||||
|
* Versions updates:
|
||||||
|
* `Kotlin`: `1.3.61` -> `1.3.70`
|
||||||
|
* `Kotlin coroutines`: `1.3.3` -> `1.3.5`
|
||||||
|
* `Kotlin serialization`: `0.14.0` -> `0.20.0`
|
||||||
|
* `Ktor`: `1.3.1` -> `1.3.2`
|
||||||
|
* `Klock`: `1.8.7` -> `1.10.0`
|
||||||
|
* `UUID`: `0.0.7` -> `0.1.0`
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* `Bot` implementations (as and `Bot` itself) now have not nullable `username`
|
||||||
|
* `File#toInputFile` extension now will throw error when file does not exists
|
||||||
|
* `InlineKeyboardMarkup` will check that `PayInlineKeyboardButton` is the first in case if it is exists in
|
||||||
|
`keyboard`
|
||||||
|
* `makeLinkToMessage` now is not `PreviewFeature`
|
||||||
|
* All deprecations was removed
|
||||||
|
* `RequestException` now extends `io.ktor.utils.io.errors.IOException` instead of `kotlinx.io.IOException`
|
||||||
|
* `Any#toJson` now is NOT `inline`
|
||||||
|
* `FlowsUpdatesFilter` now as marked my annotation `FlowPreview`
|
||||||
|
* `PathedFile#fullUrl` now is not `inline` function
|
||||||
|
* `SimpleRequest#json` now is not `inline` and `internal` function
|
||||||
|
* `FlowsUpdatesFilter` now have two additional flows: `pollAnswerFlow`, `unknownUpdateTypeFlow`
|
||||||
|
* `ExtendedUser` (`typealias`) was added as a `PreviewFeature`
|
||||||
|
|
||||||
|
### 0.25.1
|
||||||
|
|
||||||
|
* Update kotlin: `1.3.70` -> `1.3.71`
|
||||||
|
* Fix of error inside of update utils for media groups
|
||||||
|
|
||||||
|
## 0.24.0
|
||||||
|
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* All suspend functions for `RequestsExecutor` was removed (due to replacement into
|
||||||
|
[TelegramBotAPI extensions project](TelegramBotAPI-extensions-api/README.md))
|
||||||
|
* `ForwardFromChannelInfo#channelChat` now is `ChannelChat` instead of `Chat`
|
||||||
|
* `TelegramBotAPI-extensions-api`:
|
||||||
|
* Most part of sending media messages functions was removed and replaced with their `InputFile` args analogs
|
||||||
|
|
||||||
|
### 0.24.1
|
||||||
|
|
||||||
|
* `TelegramBotAPI`:
|
||||||
|
* `UpdateReceiver` was replaced to the package `com.github.insanusmokrassar.TelegramBotAPI.updateshandlers`
|
||||||
|
* All functions inside `com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.UpdatesPolling` are deprecated
|
||||||
|
and will be removed in some soon versions. Their replacement are able inside `TelegramBotAPI-extensions-api`
|
||||||
|
* `UpdatesFilter` is interface for now
|
||||||
|
* Previous `UpdatesFilter` class was renamed to `SimpleUpdatesFilter` and for backward compatibility was added
|
||||||
|
builder function `UpdatesFilter`, which will be removed in near releases
|
||||||
|
* `FlowsUpdatesFilter` now implements `UpdatesFilter`
|
||||||
|
* `BaseSentMessageUpdate` and `BaseEditMessageUpdate` interfaces was added
|
||||||
|
* `EditChannelPostUpdate` now is implementing `BaseEditMessageUpdate` interface
|
||||||
|
* `EditMessageUpdate` now is implementing `BaseEditMessageUpdate` interface
|
||||||
|
* `ChannelPostUpdate` now is implementing `BaseSentMessageUpdate` interface
|
||||||
|
* `MessageUpdate` now is implementing `BaseSentMessageUpdate` interface
|
||||||
|
* `UpdatesPoller` and all its usages, childs and childs usages now are deprecated
|
||||||
|
* `GetUpdates#timeout` type now is `Seconds` (in fact it is `Int` as previously)
|
||||||
|
* `KtorRequestsExecutor` now is using a copy of incoming `HttpClient` object and install `HttpTimeout` feature
|
||||||
|
* `AbstractRequestCallFactory` now setting up a custom delay in case if request is `GetUpdates`
|
||||||
|
* `TelegramBotAPI-extensions-api`:
|
||||||
|
* All functions from `com.github.insanusmokrassar.TelegramBotAPI.utils.extensions.UpdatesPolling` now available
|
||||||
|
in package `com.github.insanusmokrassar.TelegramBotAPI.extensions.api.updates.UpdatesPolling`
|
||||||
|
* Now new method of getting updates available: `startGettingUpdates` with `UpdatesFilter` as incoming first
|
||||||
|
parameter
|
||||||
|
* `startGettingUpdates` with `receiver` and `allowedUpdates` parameters now will handle updates by itself
|
||||||
|
|
||||||
## 0.23.0 TelegramBotAPI 4.6
|
## 0.23.0 TelegramBotAPI 4.6
|
||||||
|
|
||||||
* `Poll` now is sealed class
|
* `Poll` now is sealed class
|
||||||
@@ -35,6 +613,38 @@
|
|||||||
* `GetMe` now return `ExtendedBot` object
|
* `GetMe` now return `ExtendedBot` object
|
||||||
* Now extension `javaLocale` is extension for `CommonUser`
|
* Now extension `javaLocale` is extension for `CommonUser`
|
||||||
|
|
||||||
|
### 0.23.1
|
||||||
|
|
||||||
|
* Versions updates:
|
||||||
|
* Klock `1.8.6` -> `1.8.7`
|
||||||
|
* Ktor `1.3.0` -> `1.3.1`
|
||||||
|
* Now it is possible to get updates by polling with custom executor engine
|
||||||
|
* `CommonMultipartFileRequest` now is internal
|
||||||
|
* Added `LiveLocation` class for more useful tracking live locations
|
||||||
|
* `InvoiceOfPayment` is renamed to `InvoiceContent` and now is `MessageContent` instead of `PaymentInfo`
|
||||||
|
* `SendInvoice` now return `ContentMessage<InvoiceContent>`
|
||||||
|
* `paymentInfo` inside of `CommonMessageImpl` now can be set only to `SuccessfulPaymentInfo`
|
||||||
|
* Added `RecordVideoNoteAction` and `UploadVideoNoteAction` for `record_video_note` and `upload_video_note` actions
|
||||||
|
* For most part of messages was added `RequestsExecutor` extensions for more useful way of usage
|
||||||
|
* `toInputFile` extensions now will return more exact types
|
||||||
|
* Now it is possible to send broadcast channels size for `FlowsUpdatesFilter`
|
||||||
|
|
||||||
|
### 0.23.2
|
||||||
|
|
||||||
|
* Fixes in `InputMedia` - `media` field was not included to serialization
|
||||||
|
|
||||||
|
### 0.23.3 Project separating prepare version
|
||||||
|
|
||||||
|
__API Extensions__
|
||||||
|
|
||||||
|
* Project created
|
||||||
|
* For `SendPhoto` was added new functions for uploading of `MultipartFile`
|
||||||
|
* `deleteWebhook` extension for `RequestsExecutor` was added
|
||||||
|
|
||||||
|
__Telegram Bot API__
|
||||||
|
|
||||||
|
* All `RequestsExecutor` extensions related to Telegram Bots API was replaced into `API Extensions` project
|
||||||
|
|
||||||
## 0.22.0
|
## 0.22.0
|
||||||
|
|
||||||
* **`KtorCallFactory` must return `HttpStatement` instead of `HttpClientCall`**
|
* **`KtorCallFactory` must return `HttpStatement` instead of `HttpClientCall`**
|
||||||
|
|||||||
4
LICENSE
4
LICENSE
@@ -178,7 +178,7 @@
|
|||||||
APPENDIX: How to apply the Apache License to your work.
|
APPENDIX: How to apply the Apache License to your work.
|
||||||
|
|
||||||
To apply the Apache License to your work, attach the following
|
To apply the Apache License to your work, attach the following
|
||||||
boilerplate notice, with the fields enclosed by brackets "{}"
|
boilerplate notice, with the fields enclosed by brackets "[]"
|
||||||
replaced with your own identifying information. (Don't include
|
replaced with your own identifying information. (Don't include
|
||||||
the brackets!) The text should be enclosed in the appropriate
|
the brackets!) The text should be enclosed in the appropriate
|
||||||
comment syntax for the file format. We also recommend that a
|
comment syntax for the file format. We also recommend that a
|
||||||
@@ -186,7 +186,7 @@
|
|||||||
same "printed page" as the copyright notice for easier
|
same "printed page" as the copyright notice for easier
|
||||||
identification within third-party archives.
|
identification within third-party archives.
|
||||||
|
|
||||||
Copyright 2018 Insanus
|
Copyright [yyyy] [name of copyright owner]
|
||||||
|
|
||||||
Licensed under the Apache License, Version 2.0 (the "License");
|
Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
you may not use this file except in compliance with the License.
|
you may not use this file except in compliance with the License.
|
||||||
|
|||||||
289
README.md
289
README.md
@@ -1,192 +1,137 @@
|
|||||||
# TelegramBotAPI
|
# TelegramBotAPI
|
||||||
|
|
||||||
[ ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI/_latestVersion)
|
| Common info | [](https://github.com/KotlinBy/awesome-kotlin) [](https://travis-ci.com/InsanusMokrassar/TelegramBotAPI) [Small survey](https://forms.gle/tnjuExdSKEr32ygKA)|
|
||||||
[](https://jenkins.insanusmokrassar.com/job/TelegramBotAPI_master__publishing/)
|
| -------------------------------------:|:------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||||
|
| Useful links | [](https://t.me/InMoTelegramBotAPI) [](https://tgbotapi.inmo.dev/docs/index.html) [Examples](https://github.com/InsanusMokrassar/TelegramBotAPI-examples/), [Mini tutorial](https://bookstack.inmo.dev/books/telegrambotapi/chapter/introduction-tutorial) |
|
||||||
|
| TelegramBotAPI Core status | [](https://bintray.com/insanusmokrassar/TelegramBotAPI/tgbotapi.core/_latestVersion) [](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.core) |
|
||||||
|
| TelegramBotAPI Extensions status | [](https://bintray.com/insanusmokrassar/TelegramBotAPI/tgbotapi.extensions.api/_latestVersion) [](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.extensions.api) |
|
||||||
|
| TelegramBotAPI Util Extensions status | [](https://bintray.com/insanusmokrassar/TelegramBotAPI/tgbotapi.extensions.utils/_latestVersion) [](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi.extensions.utils) |
|
||||||
|
| TelegramBotAPI All status | [](https://bintray.com/insanusmokrassar/TelegramBotAPI/tgbotapi/_latestVersion) [](https://maven-badges.herokuapp.com/maven-central/dev.inmo/tgbotapi) |
|
||||||
|
|
||||||
## What is it?
|
**At the time of publication of version `0.28.0` there are errors in serialization plugins like
|
||||||
|
[kotlinx.serialization#1004](https://github.com/Kotlin/kotlinx.serialization/issues/1004). It is possible, that both JVM
|
||||||
|
and JS version may work improperly in some cases with `kotlinx.serialization` version `1.0.0-RC`**
|
||||||
|
|
||||||
Library for Object-Oriented and type-safe work with Telegram Bot API. Most part of some specific solves or unuseful
|
|
||||||
|
It is a complex of libraries for working with `TelegramBotAPI` in type-safe and strict way as much as it possible. In
|
||||||
|
the list of this complex currently next projects:
|
||||||
|
|
||||||
|
* [TelegramBotAPI Core](tgbotapi.core/README.md) - core of library. In fact it is independent library and can be used alone
|
||||||
|
without any additional library
|
||||||
|
* [TelegramBotAPI API Extensions](tgbotapi.extensions.api/README.md) - contains extensions (mostly for
|
||||||
|
`RequestsExecutor`), which allows to use the core library in more pleasant way
|
||||||
|
* [TelegramBotAPI Util Extensions](tgbotapi.extensions.utils/README.md) - contains extensions for more comfortable
|
||||||
|
work with commands, updates and other different things
|
||||||
|
* [TelegramBotAPI](tgbotapi/README.md) - concentration of all previously mentioned libraries
|
||||||
|
|
||||||
|
Most part of some specific solves or unuseful
|
||||||
moments are describing by official [Telegram Bot API](https://core.telegram.org/bots/api).
|
moments are describing by official [Telegram Bot API](https://core.telegram.org/bots/api).
|
||||||
|
|
||||||
## Compatibility
|
## JavaScript notes
|
||||||
|
|
||||||
This version compatible with [23th of January 2020 update of TelegramBotAPI (version 4.6)](https://core.telegram.org/bots/api#january-23-2020).
|
### Versions before `0.28.0`
|
||||||
There is Telegram Passport API exception of implemented functionality, which was presented in
|
|
||||||
[August 2018 update of TelegramBotAPI](https://core.telegram.org/bots/api#august-27-2018) update. It will be implemented
|
|
||||||
as soon as possible. All APIs that are not included are presented
|
|
||||||
[wiki](https://github.com/InsanusMokrassar/TelegramBotAPI/wiki/Not-included-API).
|
|
||||||
|
|
||||||
## How to implement library?
|
In case if you are want to use this library inside of browser, you will need additional settings (thanks for help to [Alexander Nozik](https://research.jetbrains.org/researchers/altavir)):
|
||||||
|
|
||||||
Common ways to implement this library are presented here. In some cases it will require additional steps
|
<details>
|
||||||
like inserting of additional libraries (like `kotlin stdlib`). In the examples will be used variable
|
<summary>Gradle build script help (for versions before 0.28.0)</summary>
|
||||||
`telegrambotapi.version`, which must be set up by developer. Available versions are presented on
|
|
||||||
[bintray](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI), next version is last published:
|
|
||||||
|
|
||||||
[ ](https://bintray.com/insanusmokrassar/StandardRepository/TelegramBotAPI/_latestVersion)
|
|
||||||
|
|
||||||
Currently, last versions of library can be available from the Maven repository with errors (for the reason difficult in publishing
|
|
||||||
of signed artifacts in Bintray). You can:
|
|
||||||
|
|
||||||
* Use earlier version (available version you can find
|
|
||||||
[here](https://mvnrepository.com/artifact/com.github.insanusmokrassar/TelegramBotAPI))
|
|
||||||
* Add `jCenter` repository in build config
|
|
||||||
|
|
||||||
### Maven
|
|
||||||
|
|
||||||
Dependency config presented here:
|
|
||||||
|
|
||||||
```xml
|
|
||||||
<dependency>
|
|
||||||
<groupId>com.github.insanusmokrassar</groupId>
|
|
||||||
<artifactId>TelegramBotAPI</artifactId>
|
|
||||||
<version>${telegrambotapi.version}</version>
|
|
||||||
</dependency>
|
|
||||||
```
|
|
||||||
|
|
||||||
### Gradle
|
|
||||||
|
|
||||||
To use last versions you will need to add one line in repositories block of your `build.gradle`:
|
|
||||||
|
|
||||||
`jcenter()` or `mavenCentral()`
|
|
||||||
|
|
||||||
And add next line to your dependencies block:
|
|
||||||
|
|
||||||
```groovy
|
|
||||||
implementation "com.github.insanusmokrassar:TelegramBotAPI:$telegrambotapi_version"
|
|
||||||
```
|
|
||||||
|
|
||||||
or for old gradle:
|
|
||||||
|
|
||||||
```groovy
|
|
||||||
compile "com.github.insanusmokrassar:TelegramBotAPI:$telegrambotapi_version"
|
|
||||||
```
|
|
||||||
|
|
||||||
## How to work with library?
|
|
||||||
|
|
||||||
For now, this library have no some API god-object. Instead of this, this library has several
|
|
||||||
important objects:
|
|
||||||
|
|
||||||
* [RequestsExecutor](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/bot/RequestsExecutor.kt)
|
|
||||||
* [Requests](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests)
|
|
||||||
* [Types](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types)
|
|
||||||
|
|
||||||
### Types
|
|
||||||
|
|
||||||
Types declare different objects representation. For example, `Chat` for now represented as
|
|
||||||
interface and has several realisations:
|
|
||||||
|
|
||||||
* PrivateChat
|
|
||||||
* GroupChat
|
|
||||||
* SupergroupChat
|
|
||||||
* ChannelChat
|
|
||||||
|
|
||||||
Instead of common garbage with all information as in original [Chat](https://core.telegram.org/bots/api#chat),
|
|
||||||
here it was separated for more obvious difference between chats types and their possible content.
|
|
||||||
|
|
||||||
The same principle work with a lot of others things in this Telegram bot API.
|
|
||||||
|
|
||||||
### Requests
|
|
||||||
|
|
||||||
Requests usually are very simple objects, but some of them are using their own
|
|
||||||
build factories. For example, the next code show, how to get information about bot:
|
|
||||||
|
|
||||||
```kotlin
|
|
||||||
val requestsExecutor: RequestsExecutor = ...
|
|
||||||
requestsExecutor.execute(GetMe())
|
|
||||||
```
|
|
||||||
|
|
||||||
The result type of [GetMe](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/requests/GetMe.kt)
|
|
||||||
request is
|
|
||||||
[ExtendedBot](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/types/User.kt).
|
|
||||||
|
|
||||||
### RequestsExecutor
|
|
||||||
|
|
||||||
It is base object which can be used to execute requests in API. For now by default included Ktor
|
|
||||||
realisation of `RequestsExecutor`, but it is possible, that in future it will be extracted in separated
|
|
||||||
project. How to create `RequestsExecutor`:
|
|
||||||
|
|
||||||
```kotlin
|
|
||||||
val requestsExecutor = KtorRequestsExecutor(TOKEN)
|
|
||||||
```
|
|
||||||
|
|
||||||
Here `KtorRequestsExecutor` - default realisation with Ktor. `TOKEN` is just a token of bot which was retrieved
|
|
||||||
according to [instruction](https://core.telegram.org/bots#3-how-do-i-create-a-bot).
|
|
||||||
|
|
||||||
Besides, for correct usage of this, you must implement in your project both one of engines for client and server
|
|
||||||
Ktor libraries:
|
|
||||||
|
|
||||||
```groovy
|
```groovy
|
||||||
dependencies {
|
dependencies {
|
||||||
// ...
|
/* ... */
|
||||||
implementation "io.ktor:ktor-server-cio:$ktor_version"
|
|
||||||
implementation "io.ktor:ktor-client-okhttp:$ktor_version"
|
implementation "com.github.insanusmokrassar:TelegramBotAPI:$tgbot_api_version"
|
||||||
// ...
|
implementation "com.github.insanusmokrassar:TelegramBotAPI-extensions-api:$tgbot_api_version" // optional
|
||||||
|
implementation "com.github.insanusmokrassar:TelegramBotAPI-extensions-utils:$tgbot_api_version" // optional
|
||||||
|
|
||||||
|
/* Block of dependencies for correct building in browser */
|
||||||
|
implementation(npm("fs"))
|
||||||
|
implementation(npm("bufferutil"))
|
||||||
|
implementation(npm("utf-8-validate"))
|
||||||
|
implementation(npm("abort-controller"))
|
||||||
|
implementation(npm("text-encoding"))
|
||||||
|
}
|
||||||
|
|
||||||
|
/* ... */
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
target {
|
||||||
|
browser {
|
||||||
|
/* Block for fix of exception in absence of some functionality, https://github.com/ktorio/ktor/issues/1339 */
|
||||||
|
dceTask {
|
||||||
|
dceOptions {
|
||||||
|
keep("ktor-ktor-io.\$\$importsForInline\$\$.ktor-ktor-io.io.ktor.utils.io")
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
It is able to avoid using of `server` dependency in case if will not be used `Webhook`s. In this case,
|
</details>
|
||||||
dependencies list will be simplify:
|
|
||||||
|
## Ok, where should I start?
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
In most cases, the most simple way will be to implement [TelegramBotAPI](TelegramBotAPI/README.md) - it contains
|
||||||
|
all necessary tools for comfort usage of this library. If you want to exclude some libraries, you can implement just
|
||||||
|
[TelegramBotAPI API Extensions](tgbotapi.extensions.api/README.md),
|
||||||
|
[TelegramBotAPI Util Extensions](tgbotapi.extensions.utils/README.md) or even
|
||||||
|
[TelegramBotAPI Core](tgbotapi.core/README.md).
|
||||||
|
|
||||||
|
If you want to dive deeper in the core of library or develop something for it - welcome to learn more from
|
||||||
|
[TelegramBotAPI Core](tgbotapi.core/README.md) and our [Telegram Chat](https://teleg.one/InMoTelegramBotAPIChat).
|
||||||
|
|
||||||
|
Anyway, all libraries are very typical inside of them. Examples:
|
||||||
|
|
||||||
|
* In `TelegramBotAPI` common request look like `requestsExecutor.execute(SomeRequest())`
|
||||||
|
* `tgbotapi.extensions.api` typical syntax look like `requestsExecutor.someRequest()` (in most cases it would be
|
||||||
|
better to use `bot` name instead of `requestsExecutor`)
|
||||||
|
* `tgbotapi.extensions.utils` will look like `filter.filterBaseMessageUpdates(chatId).filterExactCommands(Regex("^.*$"))...`
|
||||||
|
|
||||||
|
## Build instruction
|
||||||
|
|
||||||
|
If you want to build this project or to contribute, there are several recommendations:
|
||||||
|
|
||||||
|
### Build
|
||||||
|
|
||||||
|
In case if you want to just build project, run next command:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./gradlew clean build
|
||||||
|
```
|
||||||
|
|
||||||
|
On windows:
|
||||||
|
|
||||||
|
```
|
||||||
|
gradlew.bat clean build
|
||||||
|
```
|
||||||
|
|
||||||
|
### Publishing for work with your version locally
|
||||||
|
|
||||||
|
In case, if you want to work in your other projects using your modification (or some state) of this library,
|
||||||
|
you can use next code:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
./gradlew clean build publishToMavenLocal
|
||||||
|
```
|
||||||
|
|
||||||
|
On windows:
|
||||||
|
|
||||||
|
```
|
||||||
|
gradlew.bat clean build publishToMavenLocal
|
||||||
|
```
|
||||||
|
|
||||||
|
But you must remember, that in this case your local maven repo must be the first one from
|
||||||
|
your project retrieving libraries:
|
||||||
|
|
||||||
```groovy
|
```groovy
|
||||||
dependencies {
|
repositories {
|
||||||
// ...
|
mavenLocal() // that must be the first one
|
||||||
implementation "io.ktor:ktor-client-okhttp:$ktor_version"
|
jcenter()
|
||||||
// ...
|
mavenCentral()
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
Here was used `okhttp` realisation of client, but there are several others engines for Ktor. More information
|
Besides, for your own version you can change variable `library_version` in the file [gradle.properties](./gradle.properties).
|
||||||
available on ktor.io site for [client](https://ktor.io/clients/http-client/engines.html) and [server](https://ktor.io/quickstart/artifacts.html)
|
|
||||||
engines.
|
|
||||||
|
|
||||||
## Getting updates
|
|
||||||
|
|
||||||
In this library currently realised two ways to get updates from telegram:
|
|
||||||
|
|
||||||
* Polling - in this case bot will request updates from time to time (you can set up delay between requests)
|
|
||||||
* Webhook via reverse proxy or something like this
|
|
||||||
|
|
||||||
### Updates filters
|
|
||||||
|
|
||||||
Currently webhook method contains `UpdatesFilter` as necessary argument for getting updates.
|
|
||||||
`UpdatesFilter` will sort updates and throw their into different callbacks. Currently supporting
|
|
||||||
separate getting updates for media groups - they are accumulating with debounce in one second
|
|
||||||
(for being sure that all objects of media group was received).
|
|
||||||
|
|
||||||
Updates polling also support `UpdatesFilter` but it is not required to use it and you can get updates directly
|
|
||||||
in `UpdateReceiver`, which you will provide to `startGettingOfUpdates` method
|
|
||||||
|
|
||||||
### Webhook set up
|
|
||||||
|
|
||||||
If you wish to use webhook method, you will need:
|
|
||||||
|
|
||||||
* White IP - your IP address or host, which available for calling. [TelegramBotAPI](https://core.telegram.org/bots/api#setwebhook)
|
|
||||||
recommend to use some unique address for each bot which you are using
|
|
||||||
* SSL certificate. Usually you can obtain the certificate using your domain provider, [Let'sEncrypt](https://letsencrypt.org/) or [create it](https://core.telegram.org/bots/self-signed)
|
|
||||||
* Nginx or something like this
|
|
||||||
|
|
||||||
Template for Nginx server config you can find in [this gist](https://gist.github.com/InsanusMokrassar/fcc6e09cebd07e46e8f0fdec234750c4#file-nginxssl-conf).
|
|
||||||
|
|
||||||
For webhook you can provide `File` with public part of certificate, `URL` where bot will be available and inner `PORT` which
|
|
||||||
will be used to start receiving of updates. Actually, you can skip passing of `File` when you have something like
|
|
||||||
nginx for proxy forwarding.
|
|
||||||
|
|
||||||
In case of using `nginx` with reverse-proxy config, setting up of Webhook will look like:
|
|
||||||
|
|
||||||
```kotlin
|
|
||||||
requestsExecutor.setWebhook(
|
|
||||||
WEBHOOK_URL,
|
|
||||||
INTERNAL_PORT,
|
|
||||||
filter,
|
|
||||||
ENGINE_FACTORY
|
|
||||||
)
|
|
||||||
```
|
|
||||||
|
|
||||||
Here:
|
|
||||||
|
|
||||||
* `WEBHOOK_URL` - the url which will be used by Telegram system to send updates
|
|
||||||
* `INTERNAL_PORT` - the port which will be used in bot for listening of updates
|
|
||||||
* `filter` - instance of [UpdatesFilter](https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/src/commonMain/kotlin/com/github/insanusmokrassar/TelegramBotAPI/updateshandlers/UpdatesFilter.kt),
|
|
||||||
which will be used to filter incoming updates
|
|
||||||
* `ENGINE_FACTORY` - used factory name, for example, `CIO` in case of usage `io.ktor:ktor-server-cio` as server engine
|
|
||||||
|
|||||||
125
TelegramBotAPI.minder
Normal file
125
TelegramBotAPI.minder
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<minder version="1.11.1">
|
||||||
|
<theme name="default" label="Default" index="-1"/>
|
||||||
|
<styles>
|
||||||
|
<style level="0" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
<style level="1" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
<style level="2" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
<style level="3" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
<style level="4" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
<style level="5" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
<style level="6" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
<style level="7" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
<style level="8" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
<style level="9" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
<style level="10" isset="true" branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="200" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true" connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
</styles>
|
||||||
|
<drawarea x="-320.56697591145837" y="-10.028254191080691" scale="0.75"/>
|
||||||
|
<images/>
|
||||||
|
<nodes>
|
||||||
|
<node id="0" posx="748.88964843749955" posy="119.42341613769531" width="472" height="168" side="top" fold="false" treesize="603" layout="Downwards" group="false">
|
||||||
|
<style branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="439" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true"/>
|
||||||
|
<nodename posx="764.88964843749955" posy="135.42341613769531" maxwidth="488.96484375">
|
||||||
|
<text data="tgbotapi.core Root project with API. It is not recommended to use its requests directly and better to use at least tgbotapi.extensions.api"/>
|
||||||
|
</nodename>
|
||||||
|
<nodenote></nodenote>
|
||||||
|
<nodes>
|
||||||
|
<node id="1" posx="781.88964843749955" posy="387.42341613769531" width="406" height="145" side="bottom" fold="false" treesize="603" color="#68b723" colorroot="true" layout="Downwards" group="false">
|
||||||
|
<style branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="none" nodewidth="394" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true"/>
|
||||||
|
<nodename posx="797.88964843749955" posy="403.42341613769531" maxwidth="419.451171875">
|
||||||
|
<text data="TelegramBotAPI extensions Family of projects which are fully based on TelegramBotAPI and extend its functionality"/>
|
||||||
|
</nodename>
|
||||||
|
<nodenote></nodenote>
|
||||||
|
<nodes>
|
||||||
|
<node id="2" posx="683.38964843749955" posy="632.42341613769531" width="296" height="191" side="bottom" fold="false" treesize="296" color="#68b723" colorroot="true" layout="Downwards" group="false">
|
||||||
|
<style branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="203" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true"/>
|
||||||
|
<nodename posx="699.38964843749955" posy="648.42341613769531" maxwidth="295.90315755208337">
|
||||||
|
<text data="tgbotapi.extensions.api Extensions project for make requests more look like in the Telegram Bot API and give opportunity to use it's easier"/>
|
||||||
|
</nodename>
|
||||||
|
<nodenote></nodenote>
|
||||||
|
</node>
|
||||||
|
<node id="3" posx="979.38964843749955" posy="632.42341613769531" width="307" height="168" side="bottom" fold="false" treesize="307" color="#68b723" colorroot="true" layout="Downwards" group="false">
|
||||||
|
<style branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="286" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true"/>
|
||||||
|
<nodename posx="995.38964843749955" posy="648.42341613769531" maxwidth="299.252197265625">
|
||||||
|
<text data="tgbotapi.extensions.utils Extensions project with utils things which will make easier different operations"/>
|
||||||
|
</nodename>
|
||||||
|
<nodenote></nodenote>
|
||||||
|
</node>
|
||||||
|
</nodes>
|
||||||
|
</node>
|
||||||
|
</nodes>
|
||||||
|
</node>
|
||||||
|
<node id="4" posx="815.52319335937455" posy="948.04447937011719" width="329" height="213" side="top" fold="false" treesize="329" layout="Downwards" group="false">
|
||||||
|
<style branchmargin="100" linktype="curved" linkwidth="5" linkarrow="true" linkdash="solid" nodeborder="bracket" nodewidth="388" nodeborderwidth="3" nodefill="false" nodemargin="11" nodepadding="5" nodefont="Roboto Mono 14" nodemarkup="true"/>
|
||||||
|
<nodename posx="831.52319335937455" posy="964.04447937011719" maxwidth="394.3671875">
|
||||||
|
<text data="tgbotapi Here included all available TelegramBotAPI libraries: * tgbotapi.core * tgbotapi.extensions.api * tgbotapi.extensions.utils">
|
||||||
|
<color>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="67" end="68" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="84" end="85" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
<range start="111" end="112" extra="rgb(255,0,0)"/>
|
||||||
|
</color>
|
||||||
|
</text>
|
||||||
|
</nodename>
|
||||||
|
<nodenote></nodenote>
|
||||||
|
</node>
|
||||||
|
</nodes>
|
||||||
|
<groups/>
|
||||||
|
<connections>
|
||||||
|
<connection from_id="2" to_id="4" drag_x="905.70642089843705" drag_y="891.23394775390625" color="#777777">
|
||||||
|
<style connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
<title></title>
|
||||||
|
<note></note>
|
||||||
|
</connection>
|
||||||
|
<connection from_id="3" to_id="4" drag_x="1056.456420898437" drag_y="885.48394775390625" color="#777777">
|
||||||
|
<style connectiondash="dotted" connectionlwidth="2" connectionarrow="fromto" connectionpadding="3" connectionfont="Sans 10" connectiontwidth="100"/>
|
||||||
|
<title></title>
|
||||||
|
<note></note>
|
||||||
|
</connection>
|
||||||
|
</connections>
|
||||||
|
<stickers/>
|
||||||
|
</minder>
|
||||||
20
badges/chat.svg
Normal file
20
badges/chat.svg
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="104" height="20">
|
||||||
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
|
</linearGradient>
|
||||||
|
<clipPath id="a">
|
||||||
|
<rect width="104" height="20" rx="3" fill="#fff"/>
|
||||||
|
</clipPath>
|
||||||
|
<g clip-path="url(#a)">
|
||||||
|
<path fill="#555" d="M0 0h65v20H0z"/>
|
||||||
|
<path fill="#007ec6" d="M35 0h69v20H35z"/>
|
||||||
|
<path fill="url(#b)" d="M0 0h104v20H0z"/>
|
||||||
|
</g>
|
||||||
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
|
||||||
|
<text x="175" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)">Talk</text>
|
||||||
|
<text x="175" y="140" transform="scale(.1)">Talk</text>
|
||||||
|
<text x="690" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)">Telegram</text>
|
||||||
|
<text x="690" y="140" transform="scale(.1)">Telegram</text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1018 B |
20
badges/kdocs.svg
Normal file
20
badges/kdocs.svg
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="104" height="20">
|
||||||
|
<linearGradient id="b" x2="0" y2="100%">
|
||||||
|
<stop offset="0" stop-color="#bbb" stop-opacity=".1"/>
|
||||||
|
<stop offset="1" stop-opacity=".1"/>
|
||||||
|
</linearGradient>
|
||||||
|
<clipPath id="a">
|
||||||
|
<rect width="104" height="20" rx="3" fill="#fff"/>
|
||||||
|
</clipPath>
|
||||||
|
<g clip-path="url(#a)">
|
||||||
|
<path fill="#555" d="M0 0h65v20H0z"/>
|
||||||
|
<path fill="#007ec6" d="M45 0h69v20H45z"/>
|
||||||
|
<path fill="url(#b)" d="M0 0h104v20H0z"/>
|
||||||
|
</g>
|
||||||
|
<g fill="#fff" text-anchor="middle" font-family="DejaVu Sans,Verdana,Geneva,sans-serif" font-size="110">
|
||||||
|
<text x="225" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)">Open</text>
|
||||||
|
<text x="225" y="140" transform="scale(.1)">Open</text>
|
||||||
|
<text x="740" y="150" fill="#010101" fill-opacity=".3" transform="scale(.1)">KDocs</text>
|
||||||
|
<text x="740" y="140" transform="scale(.1)">KDocs</text>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 1012 B |
77
build.gradle
77
build.gradle
@@ -3,79 +3,46 @@ buildscript {
|
|||||||
mavenLocal()
|
mavenLocal()
|
||||||
jcenter()
|
jcenter()
|
||||||
mavenCentral()
|
mavenCentral()
|
||||||
|
maven { url "https://plugins.gradle.org/m2/" }
|
||||||
}
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
||||||
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:$gradle_bintray_plugin_version"
|
classpath "com.jfrog.bintray.gradle:gradle-bintray-plugin:$gradle_bintray_plugin_version"
|
||||||
|
classpath "com.github.breadmoirai:github-release:$github_release_plugin_version"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id "org.jetbrains.kotlin.multiplatform" version "$kotlin_version"
|
id "org.jetbrains.kotlin.multiplatform" version "$kotlin_version" apply false
|
||||||
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version"
|
id "org.jetbrains.kotlin.plugin.serialization" version "$kotlin_version" apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
project.version = "0.23.0"
|
private String getCurrentVersionChangelog() {
|
||||||
project.group = "com.github.insanusmokrassar"
|
OutputStream changelogDataOS = new ByteArrayOutputStream()
|
||||||
|
exec {
|
||||||
|
standardOutput = changelogDataOS
|
||||||
|
commandLine './changelog_info_retriever', "$library_version", 'CHANGELOG.md'
|
||||||
|
}
|
||||||
|
|
||||||
apply from: "publish.gradle"
|
return changelogDataOS.toString().trim()
|
||||||
|
|
||||||
repositories {
|
|
||||||
mavenLocal()
|
|
||||||
jcenter()
|
|
||||||
mavenCentral()
|
|
||||||
maven { url "https://kotlin.bintray.com/kotlinx" }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
kotlin {
|
if (new File(projectDir, "secret.gradle").exists()) {
|
||||||
jvm()
|
apply from: './secret.gradle'
|
||||||
js()
|
apply plugin: "com.github.breadmoirai.github-release"
|
||||||
|
|
||||||
sourceSets {
|
githubRelease {
|
||||||
commonMain {
|
token "${project.property('GITHUB_RELEASE_TOKEN')}"
|
||||||
dependencies {
|
|
||||||
implementation kotlin('stdlib')
|
|
||||||
api "org.jetbrains.kotlinx:kotlinx-coroutines-core-common:$kotlin_coroutines_version"
|
|
||||||
api "org.jetbrains.kotlinx:kotlinx-serialization-runtime-common:$kotlin_serialisation_runtime_version"
|
|
||||||
|
|
||||||
api "com.soywiz.korlibs.klock:klock:$klock_version"
|
owner "InsanusMokrassar"
|
||||||
api "com.benasher44:uuid:$uuid_version"
|
repo "TelegramBotAPI"
|
||||||
|
|
||||||
api "io.ktor:ktor-client-core:$ktor_version"
|
tagName "$library_version"
|
||||||
}
|
releaseName "$library_version"
|
||||||
}
|
targetCommitish "$library_version"
|
||||||
commonTest {
|
|
||||||
dependencies {
|
|
||||||
implementation kotlin('test-common')
|
|
||||||
implementation kotlin('test-annotations-common')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
jvmMain {
|
body getCurrentVersionChangelog()
|
||||||
dependencies {
|
|
||||||
api "org.jetbrains.kotlinx:kotlinx-serialization-runtime:$kotlin_serialisation_runtime_version"
|
|
||||||
|
|
||||||
api "io.ktor:ktor-client:$ktor_version"
|
|
||||||
api "io.ktor:ktor-server:$ktor_version"
|
|
||||||
|
|
||||||
api "io.ktor:ktor-server-host-common:$ktor_version"
|
|
||||||
api "io.ktor:ktor-client-cio:$ktor_version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
jvmTest {
|
|
||||||
dependencies {
|
|
||||||
implementation kotlin('test-junit')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
jsMain {
|
|
||||||
dependencies {
|
|
||||||
api "org.jetbrains.kotlinx:kotlinx-serialization-runtime-js:$kotlin_serialisation_runtime_version"
|
|
||||||
api "org.jetbrains.kotlinx:kotlinx-coroutines-core-js:$kotlin_coroutines_version"
|
|
||||||
api "io.ktor:ktor-client-js:$ktor_version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
24
changelog_info_retriever
Executable file
24
changelog_info_retriever
Executable file
@@ -0,0 +1,24 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
function parse() {
|
||||||
|
version=$1
|
||||||
|
|
||||||
|
while IFS= read -r line && [ -z "`echo $line | grep -e "^#\+ $version"`" ]
|
||||||
|
do
|
||||||
|
: # do nothing
|
||||||
|
done
|
||||||
|
|
||||||
|
while IFS= read -r line && [ -z "`echo $line | grep -e "^#\+"`" ]
|
||||||
|
do
|
||||||
|
echo "$line"
|
||||||
|
done
|
||||||
|
}
|
||||||
|
|
||||||
|
version=$1
|
||||||
|
file=$2
|
||||||
|
|
||||||
|
if [ -n "$file" ]; then
|
||||||
|
parse $version < "$file"
|
||||||
|
else
|
||||||
|
parse $version
|
||||||
|
fi
|
||||||
96
docs/build.gradle
Normal file
96
docs/build.gradle
Normal file
@@ -0,0 +1,96 @@
|
|||||||
|
buildscript {
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
jcenter()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
||||||
|
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
|
||||||
|
classpath "org.jetbrains.dokka:dokka-gradle-plugin:$dokka_version"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
plugins {
|
||||||
|
id "org.jetbrains.kotlin.multiplatform"
|
||||||
|
id "org.jetbrains.kotlin.plugin.serialization"
|
||||||
|
id "org.jetbrains.dokka" version "$dokka_version"
|
||||||
|
}
|
||||||
|
|
||||||
|
repositories {
|
||||||
|
mavenLocal()
|
||||||
|
jcenter()
|
||||||
|
mavenCentral()
|
||||||
|
}
|
||||||
|
|
||||||
|
kotlin {
|
||||||
|
jvm()
|
||||||
|
js(BOTH) {
|
||||||
|
browser()
|
||||||
|
nodejs()
|
||||||
|
}
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
commonMain {
|
||||||
|
dependencies {
|
||||||
|
implementation kotlin('stdlib')
|
||||||
|
|
||||||
|
project.parent.subprojects.forEach {
|
||||||
|
if (it != project) {
|
||||||
|
api it
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Closure includeSourcesInDokka(String... approximateNames) {
|
||||||
|
return {
|
||||||
|
parent.subprojects.forEach {
|
||||||
|
if (it != project) {
|
||||||
|
File srcDir = new File(it.projectDir.absolutePath, "src")
|
||||||
|
if (srcDir.exists() && srcDir.isDirectory()) {
|
||||||
|
srcDir.eachFile { file ->
|
||||||
|
if (approximateNames.any { file.name.contains(it) } && file.isDirectory()) {
|
||||||
|
String pathToSrc = file.absolutePath
|
||||||
|
sourceRoot {
|
||||||
|
path = pathToSrc
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
dokka {
|
||||||
|
outputFormat = 'html'
|
||||||
|
|
||||||
|
switch (true) {
|
||||||
|
case project.hasProperty("DOKKA_PATH"):
|
||||||
|
outputDirectory = project.property("DOKKA_PATH").toString()
|
||||||
|
break
|
||||||
|
case System.getenv("DOKKA_PATH") != null:
|
||||||
|
outputDirectory = System.getenv("DOKKA_PATH")
|
||||||
|
break
|
||||||
|
}
|
||||||
|
|
||||||
|
multiplatform {
|
||||||
|
global {
|
||||||
|
skipDeprecated = true
|
||||||
|
|
||||||
|
sourceLink {
|
||||||
|
path = "./"
|
||||||
|
url = "https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/"
|
||||||
|
lineSuffix = "#L"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
common(includeSourcesInDokka("commonMain"))
|
||||||
|
js(includeSourcesInDokka("jsMain"/*, "commonMain"*/))
|
||||||
|
jvm(includeSourcesInDokka("jvmMain"/*, "commonMain"*/))
|
||||||
|
}
|
||||||
|
}
|
||||||
3
docs/gradle.properties
Normal file
3
docs/gradle.properties
Normal file
@@ -0,0 +1,3 @@
|
|||||||
|
dokka_version=0.10.1
|
||||||
|
|
||||||
|
org.gradle.jvmargs=-Xmx1024m
|
||||||
@@ -1,9 +1,21 @@
|
|||||||
|
org.gradle.jvmargs=-Xmx1024m
|
||||||
kotlin.code.style=official
|
kotlin.code.style=official
|
||||||
kotlin_version=1.3.61
|
org.gradle.parallel=true
|
||||||
kotlin_coroutines_version=1.3.3
|
kotlin.js.generate.externals=true
|
||||||
kotlin_serialisation_runtime_version=0.14.0
|
kotlin.incremental=true
|
||||||
klock_version=1.8.6
|
kotlin.incremental.js=true
|
||||||
uuid_version=0.0.7
|
|
||||||
ktor_version=1.3.0
|
|
||||||
|
|
||||||
gradle_bintray_plugin_version=1.8.4
|
kotlin_version=1.4.10
|
||||||
|
kotlin_coroutines_version=1.3.9
|
||||||
|
kotlin_serialisation_runtime_version=1.0.0-RC2
|
||||||
|
klock_version=1.12.1
|
||||||
|
uuid_version=0.2.2
|
||||||
|
ktor_version=1.4.1
|
||||||
|
|
||||||
|
javax_activation_version=1.1.1
|
||||||
|
|
||||||
|
library_group=dev.inmo
|
||||||
|
library_version=0.29.0
|
||||||
|
|
||||||
|
gradle_bintray_plugin_version=1.8.5
|
||||||
|
github_release_plugin_version=2.2.12
|
||||||
|
|||||||
3
gradle/wrapper/gradle-wrapper.properties
vendored
3
gradle/wrapper/gradle-wrapper.properties
vendored
@@ -1,6 +1,5 @@
|
|||||||
#Fri Nov 29 12:11:00 HKT 2019
|
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-bin.zip
|
||||||
|
|||||||
@@ -1,57 +0,0 @@
|
|||||||
apply plugin: 'maven-publish'
|
|
||||||
|
|
||||||
task javadocsJar(type: Jar) {
|
|
||||||
classifier = 'javadoc'
|
|
||||||
}
|
|
||||||
|
|
||||||
afterEvaluate {
|
|
||||||
project.publishing.publications.all {
|
|
||||||
// rename artifacts
|
|
||||||
groupId "${project.group}"
|
|
||||||
if (it.name.contains('kotlinMultiplatform')) {
|
|
||||||
artifactId = "${project.name}"
|
|
||||||
} else {
|
|
||||||
artifactId = "${project.name}-$name"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
publishing {
|
|
||||||
publications.all {
|
|
||||||
artifact javadocsJar
|
|
||||||
|
|
||||||
pom.withXml {
|
|
||||||
asNode().children().last() + {
|
|
||||||
resolveStrategy = Closure.DELEGATE_FIRST
|
|
||||||
|
|
||||||
description "Library for Object-Oriented and type-safe work with Telegram Bot API"
|
|
||||||
name "Telegram Bot API"
|
|
||||||
url "https://insanusmokrassar.github.io/TelegramBotAPI"
|
|
||||||
|
|
||||||
scm {
|
|
||||||
developerConnection "scm:git:[fetch=]https://github.com/insanusmokrassar/TelegramBotAPI.git[push=]https://github.com/insanusmokrassar/TelegramBotAPI.git"
|
|
||||||
url "https://github.com/insanusmokrassar/TelegramBotAPI.git"
|
|
||||||
}
|
|
||||||
|
|
||||||
developers {
|
|
||||||
|
|
||||||
developer {
|
|
||||||
id "InsanusMokrassar"
|
|
||||||
name "Ovsiannikov Aleksei"
|
|
||||||
email "ovsyannikov.alexey95@gmail.com"
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
licenses {
|
|
||||||
|
|
||||||
license {
|
|
||||||
name "Apache Software License 2.0"
|
|
||||||
url "https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/LICENSE"
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1 +0,0 @@
|
|||||||
{"bintrayConfig":{"repo":"StandardRepository","packageName":"${project.name}","packageVcs":"https://github.com/InsanusMokrassar/TelegramBotAPI"},"licenses":[{"id":"Apache-2.0","title":"Apache Software License 2.0","url":"https://github.com/InsanusMokrassar/TelegramBotAPI/blob/master/LICENSE"}],"mavenConfig":{"name":"Telegram Bot API","description":"Library for Object-Oriented and type-safe work with Telegram Bot API","url":"https://insanusmokrassar.github.io/TelegramBotAPI","vcsUrl":"https://github.com/insanusmokrassar/TelegramBotAPI.git","developers":[{"id":"InsanusMokrassar","name":"Ovsiannikov Aleksei","eMail":"ovsyannikov.alexey95@gmail.com"}]}}
|
|
||||||
5
renovate.json
Normal file
5
renovate.json
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"extends": [
|
||||||
|
"config:base"
|
||||||
|
]
|
||||||
|
}
|
||||||
811
resources/TelegramBotAPI-libraries-hierarchy.svg
Normal file
811
resources/TelegramBotAPI-libraries-hierarchy.svg
Normal file
@@ -0,0 +1,811 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="623pt" height="1061pt" viewBox="0 0 623 1061" version="1.1">
|
||||||
|
<defs>
|
||||||
|
<g>
|
||||||
|
<symbol overflow="visible" id="glyph0-0">
|
||||||
|
<path style="stroke:none;" d=""/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-1">
|
||||||
|
<path style="stroke:none;" d="M 5.578125 -12.5 L 5.578125 -10 L 9.34375 -10 L 9.34375 -8.703125 L 5.578125 -8.703125 L 5.578125 -3.375 C 5.578125 -2.988281 5.625 -2.671875 5.71875 -2.421875 C 5.820312 -2.179688 5.957031 -1.984375 6.125 -1.828125 C 6.289062 -1.679688 6.484375 -1.578125 6.703125 -1.515625 C 6.929688 -1.460938 7.171875 -1.4375 7.421875 -1.4375 C 7.597656 -1.4375 7.785156 -1.445312 7.984375 -1.46875 C 8.179688 -1.488281 8.367188 -1.515625 8.546875 -1.546875 C 8.734375 -1.578125 8.90625 -1.609375 9.0625 -1.640625 C 9.226562 -1.679688 9.363281 -1.710938 9.46875 -1.734375 L 9.703125 -0.53125 C 9.566406 -0.445312 9.394531 -0.375 9.1875 -0.3125 C 8.988281 -0.25 8.769531 -0.191406 8.53125 -0.140625 C 8.300781 -0.0976562 8.050781 -0.0625 7.78125 -0.03125 C 7.519531 -0.0078125 7.257812 0 7 0 C 6.5625 0 6.148438 -0.0625 5.765625 -0.1875 C 5.390625 -0.3125 5.0625 -0.507812 4.78125 -0.78125 C 4.5 -1.050781 4.28125 -1.398438 4.125 -1.828125 C 3.96875 -2.253906 3.890625 -2.769531 3.890625 -3.375 L 3.890625 -8.703125 L 1.296875 -8.703125 L 1.296875 -10 L 3.890625 -10 L 3.890625 -12.5 Z M 5.578125 -12.5 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-2">
|
||||||
|
<path style="stroke:none;" d="M 1.28125 -5.078125 C 1.28125 -5.804688 1.367188 -6.46875 1.546875 -7.0625 C 1.722656 -7.664062 1.976562 -8.179688 2.3125 -8.609375 C 2.65625 -9.046875 3.070312 -9.382812 3.5625 -9.625 C 4.050781 -9.875 4.601562 -10 5.21875 -10 C 5.820312 -10 6.351562 -9.890625 6.8125 -9.671875 C 7.269531 -9.460938 7.660156 -9.15625 7.984375 -8.75 L 8.0625 -10 L 9.59375 -10 L 9.59375 -0.15625 C 9.59375 0.5 9.488281 1.082031 9.28125 1.59375 C 9.082031 2.113281 8.800781 2.550781 8.4375 2.90625 C 8.070312 3.269531 7.632812 3.539062 7.125 3.71875 C 6.613281 3.90625 6.046875 4 5.421875 4 C 5.171875 4 4.878906 3.96875 4.546875 3.90625 C 4.222656 3.851562 3.890625 3.757812 3.546875 3.625 C 3.210938 3.488281 2.890625 3.3125 2.578125 3.09375 C 2.265625 2.875 1.992188 2.597656 1.765625 2.265625 L 2.640625 1.125 C 2.847656 1.40625 3.0625 1.640625 3.28125 1.828125 C 3.5 2.023438 3.71875 2.179688 3.9375 2.296875 C 4.164062 2.421875 4.390625 2.507812 4.609375 2.5625 C 4.835938 2.613281 5.066406 2.640625 5.296875 2.640625 C 5.703125 2.640625 6.0625 2.578125 6.375 2.453125 C 6.695312 2.328125 6.972656 2.140625 7.203125 1.890625 C 7.429688 1.648438 7.601562 1.351562 7.71875 1 C 7.84375 0.644531 7.90625 0.234375 7.90625 -0.234375 L 7.90625 -1.15625 C 7.582031 -0.78125 7.195312 -0.492188 6.75 -0.296875 C 6.300781 -0.0976562 5.785156 0 5.203125 0 C 4.597656 0 4.050781 -0.125 3.5625 -0.375 C 3.070312 -0.625 2.660156 -0.96875 2.328125 -1.40625 C 1.992188 -1.851562 1.734375 -2.375 1.546875 -2.96875 C 1.367188 -3.5625 1.28125 -4.203125 1.28125 -4.890625 Z M 2.96875 -4.890625 C 2.96875 -4.421875 3.015625 -3.976562 3.109375 -3.5625 C 3.210938 -3.144531 3.367188 -2.773438 3.578125 -2.453125 C 3.796875 -2.140625 4.070312 -1.890625 4.40625 -1.703125 C 4.75 -1.523438 5.148438 -1.4375 5.609375 -1.4375 C 5.898438 -1.4375 6.160156 -1.46875 6.390625 -1.53125 C 6.628906 -1.601562 6.84375 -1.695312 7.03125 -1.8125 C 7.21875 -1.9375 7.382812 -2.082031 7.53125 -2.25 C 7.675781 -2.425781 7.800781 -2.617188 7.90625 -2.828125 L 7.90625 -7.21875 C 7.800781 -7.414062 7.675781 -7.597656 7.53125 -7.765625 C 7.382812 -7.929688 7.21875 -8.070312 7.03125 -8.1875 C 6.84375 -8.300781 6.628906 -8.394531 6.390625 -8.46875 C 6.160156 -8.539062 5.910156 -8.578125 5.640625 -8.578125 C 5.160156 -8.578125 4.75 -8.484375 4.40625 -8.296875 C 4.070312 -8.109375 3.796875 -7.851562 3.578125 -7.53125 C 3.367188 -7.207031 3.210938 -6.832031 3.109375 -6.40625 C 3.015625 -5.988281 2.96875 -5.546875 2.96875 -5.078125 Z M 2.96875 -4.890625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-3">
|
||||||
|
<path style="stroke:none;" d="M 9.953125 -4.890625 C 9.953125 -4.203125 9.863281 -3.5625 9.6875 -2.96875 C 9.519531 -2.375 9.269531 -1.851562 8.9375 -1.40625 C 8.613281 -0.96875 8.207031 -0.625 7.71875 -0.375 C 7.238281 -0.125 6.6875 0 6.0625 0 C 5.425781 0 4.875 -0.113281 4.40625 -0.34375 C 3.945312 -0.570312 3.554688 -0.894531 3.234375 -1.3125 L 3.140625 0 L 1.59375 0 L 1.59375 -14 L 3.28125 -14 L 3.28125 -8.765625 C 3.601562 -9.160156 3.992188 -9.460938 4.453125 -9.671875 C 4.910156 -9.890625 5.441406 -10 6.046875 -10 C 6.679688 -10 7.238281 -9.875 7.71875 -9.625 C 8.207031 -9.382812 8.613281 -9.046875 8.9375 -8.609375 C 9.269531 -8.179688 9.519531 -7.664062 9.6875 -7.0625 C 9.863281 -6.46875 9.953125 -5.804688 9.953125 -5.078125 Z M 8.265625 -5.078125 C 8.265625 -5.546875 8.21875 -5.988281 8.125 -6.40625 C 8.03125 -6.832031 7.878906 -7.207031 7.671875 -7.53125 C 7.460938 -7.851562 7.191406 -8.109375 6.859375 -8.296875 C 6.523438 -8.484375 6.113281 -8.578125 5.625 -8.578125 C 5.332031 -8.578125 5.0625 -8.535156 4.8125 -8.453125 C 4.570312 -8.378906 4.359375 -8.273438 4.171875 -8.140625 C 3.984375 -8.015625 3.8125 -7.863281 3.65625 -7.6875 C 3.507812 -7.507812 3.382812 -7.316406 3.28125 -7.109375 L 3.28125 -2.921875 C 3.394531 -2.703125 3.523438 -2.503906 3.671875 -2.328125 C 3.816406 -2.148438 3.984375 -1.992188 4.171875 -1.859375 C 4.367188 -1.722656 4.585938 -1.617188 4.828125 -1.546875 C 5.078125 -1.472656 5.347656 -1.4375 5.640625 -1.4375 C 6.109375 -1.4375 6.503906 -1.523438 6.828125 -1.703125 C 7.160156 -1.890625 7.429688 -2.140625 7.640625 -2.453125 C 7.847656 -2.773438 8.003906 -3.144531 8.109375 -3.5625 C 8.210938 -3.976562 8.265625 -4.421875 8.265625 -4.890625 Z M 8.265625 -5.078125 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-4">
|
||||||
|
<path style="stroke:none;" d="M 1.109375 -5.09375 C 1.109375 -5.789062 1.210938 -6.4375 1.421875 -7.03125 C 1.628906 -7.625 1.925781 -8.140625 2.3125 -8.578125 C 2.695312 -9.023438 3.164062 -9.375 3.71875 -9.625 C 4.269531 -9.875 4.894531 -10 5.59375 -10 C 6.289062 -10 6.914062 -9.875 7.46875 -9.625 C 8.03125 -9.375 8.503906 -9.023438 8.890625 -8.578125 C 9.273438 -8.140625 9.566406 -7.625 9.765625 -7.03125 C 9.972656 -6.4375 10.078125 -5.789062 10.078125 -5.09375 L 10.078125 -4.890625 C 10.078125 -4.191406 9.972656 -3.546875 9.765625 -2.953125 C 9.566406 -2.367188 9.273438 -1.851562 8.890625 -1.40625 C 8.503906 -0.96875 8.03125 -0.625 7.46875 -0.375 C 6.914062 -0.125 6.296875 0 5.609375 0 C 4.910156 0 4.28125 -0.125 3.71875 -0.375 C 3.164062 -0.625 2.695312 -0.96875 2.3125 -1.40625 C 1.925781 -1.851562 1.628906 -2.367188 1.421875 -2.953125 C 1.210938 -3.546875 1.109375 -4.191406 1.109375 -4.890625 Z M 2.796875 -4.890625 C 2.796875 -4.421875 2.851562 -3.972656 2.96875 -3.546875 C 3.082031 -3.117188 3.253906 -2.742188 3.484375 -2.421875 C 3.722656 -2.097656 4.019531 -1.84375 4.375 -1.65625 C 4.726562 -1.46875 5.140625 -1.375 5.609375 -1.375 C 6.066406 -1.375 6.46875 -1.46875 6.8125 -1.65625 C 7.164062 -1.84375 7.457031 -2.097656 7.6875 -2.421875 C 7.925781 -2.742188 8.101562 -3.117188 8.21875 -3.546875 C 8.332031 -3.972656 8.390625 -4.421875 8.390625 -4.890625 L 8.390625 -5.09375 C 8.390625 -5.5625 8.332031 -6.007812 8.21875 -6.4375 C 8.101562 -6.863281 7.925781 -7.238281 7.6875 -7.5625 C 7.457031 -7.882812 7.164062 -8.140625 6.8125 -8.328125 C 6.46875 -8.523438 6.0625 -8.625 5.59375 -8.625 C 5.125 -8.625 4.710938 -8.523438 4.359375 -8.328125 C 4.015625 -8.140625 3.722656 -7.882812 3.484375 -7.5625 C 3.253906 -7.238281 3.082031 -6.863281 2.96875 -6.4375 C 2.851562 -6.007812 2.796875 -5.5625 2.796875 -5.09375 Z M 2.796875 -4.890625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-5">
|
||||||
|
<path style="stroke:none;" d="M 8.0625 -0.1875 C 8 -0.3125 7.945312 -0.46875 7.90625 -0.65625 C 7.863281 -0.851562 7.835938 -1.054688 7.828125 -1.265625 C 7.648438 -1.085938 7.457031 -0.921875 7.25 -0.765625 C 7.039062 -0.617188 6.8125 -0.488281 6.5625 -0.375 C 6.3125 -0.257812 6.039062 -0.164062 5.75 -0.09375 C 5.46875 -0.03125 5.164062 0 4.84375 0 C 4.320312 0 3.847656 -0.0703125 3.421875 -0.21875 C 3.003906 -0.363281 2.644531 -0.5625 2.34375 -0.8125 C 2.050781 -1.070312 1.820312 -1.375 1.65625 -1.71875 C 1.5 -2.070312 1.421875 -2.445312 1.421875 -2.84375 C 1.421875 -3.375 1.523438 -3.835938 1.734375 -4.234375 C 1.953125 -4.628906 2.257812 -4.957031 2.65625 -5.21875 C 3.050781 -5.476562 3.523438 -5.671875 4.078125 -5.796875 C 4.640625 -5.929688 5.265625 -6 5.953125 -6 L 7.796875 -6 L 7.796875 -6.75 C 7.796875 -7.050781 7.738281 -7.316406 7.625 -7.546875 C 7.519531 -7.773438 7.363281 -7.96875 7.15625 -8.125 C 6.957031 -8.289062 6.710938 -8.414062 6.421875 -8.5 C 6.140625 -8.59375 5.820312 -8.640625 5.46875 -8.640625 C 5.125 -8.640625 4.820312 -8.597656 4.5625 -8.515625 C 4.300781 -8.429688 4.078125 -8.320312 3.890625 -8.1875 C 3.710938 -8.0625 3.570312 -7.90625 3.46875 -7.71875 C 3.363281 -7.53125 3.3125 -7.332031 3.3125 -7.125 L 1.625 -7.125 C 1.625 -7.476562 1.710938 -7.828125 1.890625 -8.171875 C 2.078125 -8.515625 2.335938 -8.816406 2.671875 -9.078125 C 3.015625 -9.347656 3.425781 -9.566406 3.90625 -9.734375 C 4.382812 -9.910156 4.929688 -10 5.546875 -10 C 6.109375 -10 6.628906 -9.929688 7.109375 -9.796875 C 7.585938 -9.660156 8 -9.457031 8.34375 -9.1875 C 8.695312 -8.925781 8.972656 -8.59375 9.171875 -8.1875 C 9.378906 -7.78125 9.484375 -7.304688 9.484375 -6.765625 L 9.484375 -2.296875 C 9.484375 -1.972656 9.515625 -1.628906 9.578125 -1.265625 C 9.640625 -0.910156 9.722656 -0.597656 9.828125 -0.328125 L 9.828125 -0.1875 Z M 5.09375 -1.46875 C 5.414062 -1.46875 5.71875 -1.503906 6 -1.578125 C 6.289062 -1.660156 6.550781 -1.769531 6.78125 -1.90625 C 7.019531 -2.039062 7.222656 -2.191406 7.390625 -2.359375 C 7.566406 -2.535156 7.703125 -2.71875 7.796875 -2.90625 L 7.796875 -4.8125 L 6.234375 -4.8125 C 5.242188 -4.8125 4.472656 -4.671875 3.921875 -4.390625 C 3.378906 -4.109375 3.109375 -3.671875 3.109375 -3.078125 C 3.109375 -2.847656 3.148438 -2.632812 3.234375 -2.4375 C 3.316406 -2.238281 3.4375 -2.066406 3.59375 -1.921875 C 3.757812 -1.773438 3.96875 -1.660156 4.21875 -1.578125 C 4.46875 -1.503906 4.757812 -1.46875 5.09375 -1.46875 Z M 5.09375 -1.46875 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-6">
|
||||||
|
<path style="stroke:none;" d="M 9.90625 -4.890625 C 9.90625 -4.203125 9.820312 -3.5625 9.65625 -2.96875 C 9.488281 -2.375 9.238281 -1.851562 8.90625 -1.40625 C 8.582031 -0.96875 8.175781 -0.625 7.6875 -0.375 C 7.207031 -0.125 6.65625 0 6.03125 0 C 5.4375 0 4.90625 -0.0976562 4.4375 -0.296875 C 3.976562 -0.492188 3.585938 -0.769531 3.265625 -1.125 L 3.265625 4 L 1.578125 4 L 1.578125 -10 L 3.125 -10 L 3.203125 -8.9375 C 3.523438 -9.28125 3.921875 -9.539062 4.390625 -9.71875 C 4.859375 -9.90625 5.398438 -10 6.015625 -10 C 6.640625 -10 7.195312 -9.875 7.6875 -9.625 C 8.175781 -9.382812 8.582031 -9.046875 8.90625 -8.609375 C 9.238281 -8.179688 9.488281 -7.664062 9.65625 -7.0625 C 9.820312 -6.46875 9.90625 -5.804688 9.90625 -5.078125 Z M 8.21875 -5.171875 C 8.21875 -5.648438 8.164062 -6.101562 8.0625 -6.53125 C 7.957031 -6.96875 7.789062 -7.351562 7.5625 -7.6875 C 7.34375 -8.019531 7.0625 -8.28125 6.71875 -8.46875 C 6.382812 -8.664062 5.976562 -8.765625 5.5 -8.765625 C 4.96875 -8.765625 4.515625 -8.640625 4.140625 -8.390625 C 3.773438 -8.140625 3.484375 -7.816406 3.265625 -7.421875 L 3.265625 -2.6875 C 3.484375 -2.300781 3.773438 -1.984375 4.140625 -1.734375 C 4.503906 -1.492188 4.96875 -1.375 5.53125 -1.375 C 6 -1.375 6.398438 -1.472656 6.734375 -1.671875 C 7.078125 -1.867188 7.359375 -2.132812 7.578125 -2.46875 C 7.796875 -2.800781 7.957031 -3.179688 8.0625 -3.609375 C 8.164062 -4.046875 8.21875 -4.503906 8.21875 -4.984375 Z M 8.21875 -5.171875 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-7">
|
||||||
|
<path style="stroke:none;" d="M 1.84375 -10 L 6.890625 -10 L 6.890625 -1.453125 L 10.109375 -1.453125 L 10.109375 0 L 1.84375 0 L 1.84375 -1.453125 L 5.203125 -1.453125 L 5.203125 -8.546875 L 1.84375 -8.546875 Z M 4.984375 -12 C 4.984375 -12.28125 5.066406 -12.515625 5.234375 -12.703125 C 5.398438 -12.898438 5.65625 -13 6 -13 C 6.332031 -13 6.582031 -12.898438 6.75 -12.703125 C 6.925781 -12.515625 7.015625 -12.28125 7.015625 -12 C 7.015625 -11.726562 6.925781 -11.5 6.75 -11.3125 C 6.582031 -11.132812 6.332031 -11.046875 6 -11.046875 C 5.65625 -11.046875 5.398438 -11.132812 5.234375 -11.3125 C 5.066406 -11.5 4.984375 -11.726562 4.984375 -12 Z M 4.984375 -12 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-8">
|
||||||
|
<path style="stroke:none;" d="M 4.515625 -1.265625 C 4.515625 -1.441406 4.546875 -1.609375 4.609375 -1.765625 C 4.671875 -1.921875 4.753906 -2.054688 4.859375 -2.171875 C 4.972656 -2.296875 5.109375 -2.390625 5.265625 -2.453125 C 5.429688 -2.523438 5.625 -2.5625 5.84375 -2.5625 C 6.0625 -2.5625 6.253906 -2.523438 6.421875 -2.453125 C 6.585938 -2.390625 6.726562 -2.296875 6.84375 -2.171875 C 6.957031 -2.054688 7.039062 -1.921875 7.09375 -1.765625 C 7.15625 -1.609375 7.1875 -1.441406 7.1875 -1.265625 C 7.1875 -1.085938 7.15625 -0.921875 7.09375 -0.765625 C 7.039062 -0.609375 6.957031 -0.472656 6.84375 -0.359375 C 6.726562 -0.242188 6.585938 -0.15625 6.421875 -0.09375 C 6.253906 -0.03125 6.0625 0 5.84375 0 C 5.625 0 5.429688 -0.03125 5.265625 -0.09375 C 5.109375 -0.15625 4.972656 -0.242188 4.859375 -0.359375 C 4.753906 -0.472656 4.671875 -0.609375 4.609375 -0.765625 C 4.546875 -0.921875 4.515625 -1.085938 4.515625 -1.265625 Z M 4.515625 -1.265625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-9">
|
||||||
|
<path style="stroke:none;" d="M 5.9375 0 C 5.25 0 4.613281 -0.113281 4.03125 -0.34375 C 3.445312 -0.582031 2.945312 -0.910156 2.53125 -1.328125 C 2.125 -1.742188 1.804688 -2.238281 1.578125 -2.8125 C 1.347656 -3.382812 1.234375 -4 1.234375 -4.65625 L 1.234375 -5.046875 C 1.234375 -5.828125 1.359375 -6.519531 1.609375 -7.125 C 1.867188 -7.738281 2.207031 -8.257812 2.625 -8.6875 C 3.050781 -9.113281 3.53125 -9.4375 4.0625 -9.65625 C 4.601562 -9.882812 5.15625 -10 5.71875 -10 C 6.4375 -10 7.0625 -9.882812 7.59375 -9.65625 C 8.125 -9.425781 8.566406 -9.101562 8.921875 -8.6875 C 9.273438 -8.28125 9.535156 -7.796875 9.703125 -7.234375 C 9.878906 -6.679688 9.96875 -6.082031 9.96875 -5.4375 L 9.96875 -4.71875 L 2.921875 -4.71875 C 2.929688 -4.257812 3.015625 -3.828125 3.171875 -3.421875 C 3.328125 -3.015625 3.539062 -2.660156 3.8125 -2.359375 C 4.082031 -2.054688 4.40625 -1.816406 4.78125 -1.640625 C 5.164062 -1.460938 5.582031 -1.375 6.03125 -1.375 C 6.632812 -1.375 7.171875 -1.5 7.640625 -1.75 C 8.109375 -2.007812 8.5 -2.34375 8.8125 -2.75 L 9.84375 -1.921875 C 9.675781 -1.671875 9.46875 -1.425781 9.21875 -1.1875 C 8.976562 -0.957031 8.695312 -0.753906 8.375 -0.578125 C 8.050781 -0.410156 7.6875 -0.269531 7.28125 -0.15625 C 6.875 -0.0507812 6.425781 0 5.9375 0 Z M 5.71875 -8.625 C 5.382812 -8.625 5.0625 -8.566406 4.75 -8.453125 C 4.445312 -8.335938 4.175781 -8.171875 3.9375 -7.953125 C 3.695312 -7.742188 3.492188 -7.484375 3.328125 -7.171875 C 3.160156 -6.859375 3.039062 -6.5 2.96875 -6.09375 L 8.28125 -6.09375 L 8.28125 -6.203125 C 8.257812 -6.492188 8.195312 -6.785156 8.09375 -7.078125 C 7.988281 -7.367188 7.832031 -7.628906 7.625 -7.859375 C 7.414062 -8.085938 7.15625 -8.269531 6.84375 -8.40625 C 6.53125 -8.550781 6.15625 -8.625 5.71875 -8.625 Z M 5.71875 -8.625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-10">
|
||||||
|
<path style="stroke:none;" d="M 5.65625 -6.375 L 8.296875 -10 L 10.28125 -10 L 6.59375 -5.0625 L 10.375 0 L 8.421875 0 L 5.703125 -3.8125 L 2.96875 0 L 1 0 L 4.78125 -5.0625 L 1.109375 -10 L 3.046875 -10 Z M 5.65625 -6.375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-11">
|
||||||
|
<path style="stroke:none;" d="M 3.09375 -10 L 3.21875 -8.390625 C 3.570312 -8.898438 4.007812 -9.296875 4.53125 -9.578125 C 5.0625 -9.859375 5.648438 -10 6.296875 -10 C 6.804688 -10 7.269531 -9.925781 7.6875 -9.78125 C 8.113281 -9.632812 8.472656 -9.40625 8.765625 -9.09375 C 9.066406 -8.789062 9.296875 -8.398438 9.453125 -7.921875 C 9.617188 -7.453125 9.703125 -6.890625 9.703125 -6.234375 L 9.703125 0 L 8.015625 0 L 8.015625 -6.21875 C 8.015625 -6.644531 7.96875 -7.007812 7.875 -7.3125 C 7.78125 -7.625 7.632812 -7.875 7.4375 -8.0625 C 7.25 -8.25 7.015625 -8.382812 6.734375 -8.46875 C 6.460938 -8.550781 6.148438 -8.59375 5.796875 -8.59375 C 5.222656 -8.59375 4.722656 -8.453125 4.296875 -8.171875 C 3.867188 -7.890625 3.523438 -7.519531 3.265625 -7.0625 L 3.265625 0 L 1.59375 0 L 1.59375 -10 Z M 3.09375 -10 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-12">
|
||||||
|
<path style="stroke:none;" d="M 8.140625 -2.765625 C 8.140625 -2.960938 8.097656 -3.140625 8.015625 -3.296875 C 7.941406 -3.453125 7.8125 -3.59375 7.625 -3.71875 C 7.4375 -3.84375 7.1875 -3.960938 6.875 -4.078125 C 6.5625 -4.191406 6.175781 -4.289062 5.71875 -4.375 C 5.15625 -4.488281 4.640625 -4.625 4.171875 -4.78125 C 3.703125 -4.945312 3.300781 -5.140625 2.96875 -5.359375 C 2.644531 -5.578125 2.390625 -5.835938 2.203125 -6.140625 C 2.023438 -6.441406 1.9375 -6.789062 1.9375 -7.1875 C 1.9375 -7.570312 2.03125 -7.9375 2.21875 -8.28125 C 2.40625 -8.625 2.664062 -8.921875 3 -9.171875 C 3.34375 -9.429688 3.75 -9.632812 4.21875 -9.78125 C 4.695312 -9.925781 5.21875 -10 5.78125 -10 C 6.382812 -10 6.929688 -9.921875 7.421875 -9.765625 C 7.910156 -9.609375 8.320312 -9.390625 8.65625 -9.109375 C 9 -8.835938 9.265625 -8.519531 9.453125 -8.15625 C 9.640625 -7.789062 9.734375 -7.398438 9.734375 -6.984375 L 8.046875 -6.984375 C 8.046875 -7.179688 7.988281 -7.378906 7.875 -7.578125 C 7.769531 -7.773438 7.617188 -7.953125 7.421875 -8.109375 C 7.222656 -8.265625 6.984375 -8.390625 6.703125 -8.484375 C 6.429688 -8.578125 6.125 -8.625 5.78125 -8.625 C 5.425781 -8.625 5.113281 -8.582031 4.84375 -8.5 C 4.570312 -8.425781 4.34375 -8.320312 4.15625 -8.1875 C 3.976562 -8.0625 3.84375 -7.910156 3.75 -7.734375 C 3.664062 -7.566406 3.625 -7.390625 3.625 -7.203125 C 3.625 -7.015625 3.660156 -6.847656 3.734375 -6.703125 C 3.804688 -6.554688 3.929688 -6.421875 4.109375 -6.296875 C 4.285156 -6.179688 4.523438 -6.078125 4.828125 -5.984375 C 5.128906 -5.890625 5.507812 -5.796875 5.96875 -5.703125 C 6.582031 -5.578125 7.128906 -5.429688 7.609375 -5.265625 C 8.085938 -5.109375 8.488281 -4.914062 8.8125 -4.6875 C 9.144531 -4.457031 9.394531 -4.191406 9.5625 -3.890625 C 9.738281 -3.585938 9.828125 -3.238281 9.828125 -2.84375 C 9.828125 -2.414062 9.726562 -2.023438 9.53125 -1.671875 C 9.332031 -1.328125 9.054688 -1.03125 8.703125 -0.78125 C 8.347656 -0.53125 7.925781 -0.335938 7.4375 -0.203125 C 6.945312 -0.0664062 6.410156 0 5.828125 0 C 5.160156 0 4.5625 -0.0859375 4.03125 -0.265625 C 3.507812 -0.441406 3.066406 -0.675781 2.703125 -0.96875 C 2.347656 -1.257812 2.070312 -1.59375 1.875 -1.96875 C 1.6875 -2.351562 1.59375 -2.75 1.59375 -3.15625 L 3.28125 -3.15625 C 3.300781 -2.820312 3.390625 -2.539062 3.546875 -2.3125 C 3.710938 -2.082031 3.914062 -1.894531 4.15625 -1.75 C 4.394531 -1.613281 4.660156 -1.515625 4.953125 -1.453125 C 5.242188 -1.398438 5.535156 -1.375 5.828125 -1.375 C 6.535156 -1.375 7.09375 -1.5 7.5 -1.75 C 7.914062 -2 8.128906 -2.335938 8.140625 -2.765625 Z M 8.140625 -2.765625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-13">
|
||||||
|
<path style="stroke:none;" d="M 8.890625 -5.703125 L 3.34375 -5.703125 L 3.34375 -1.421875 L 9.8125 -1.421875 L 9.8125 0 L 1.65625 0 L 1.65625 -13 L 9.734375 -13 L 9.734375 -11.5625 L 3.34375 -11.5625 L 3.34375 -7.109375 L 8.890625 -7.109375 Z M 8.890625 -5.703125 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-14">
|
||||||
|
<path style="stroke:none;" d=""/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-15">
|
||||||
|
<path style="stroke:none;" d="M 8.046875 -10 C 8.203125 -10 8.363281 -10 8.53125 -10 C 8.707031 -10 8.875 -9.988281 9.03125 -9.96875 C 9.1875 -9.945312 9.328125 -9.914062 9.453125 -9.875 C 9.585938 -9.84375 9.695312 -9.8125 9.78125 -9.78125 L 9.5625 -8.140625 C 9.226562 -8.210938 8.910156 -8.265625 8.609375 -8.296875 C 8.316406 -8.328125 8.007812 -8.34375 7.6875 -8.34375 C 6.90625 -8.34375 6.269531 -8.164062 5.78125 -7.8125 C 5.289062 -7.457031 4.929688 -6.957031 4.703125 -6.3125 L 4.703125 0 L 3 0 L 3 -10 L 4.609375 -10 L 4.6875 -8.265625 C 5.082031 -8.796875 5.5625 -9.21875 6.125 -9.53125 C 6.6875 -9.84375 7.328125 -10 8.046875 -10 Z M 8.046875 -10 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-16">
|
||||||
|
<path style="stroke:none;" d="M 2.71875 -10 L 7.703125 -10 L 7.703125 0.03125 C 7.703125 0.664062 7.613281 1.226562 7.4375 1.71875 C 7.269531 2.207031 7.019531 2.617188 6.6875 2.953125 C 6.351562 3.296875 5.945312 3.554688 5.46875 3.734375 C 5 3.910156 4.457031 4 3.84375 4 C 3.5 4 3.175781 4 2.875 4 C 2.570312 4 2.253906 3.957031 1.921875 3.875 L 2.046875 2.484375 C 2.148438 2.492188 2.28125 2.507812 2.4375 2.53125 C 2.59375 2.5625 2.75 2.578125 2.90625 2.578125 C 3.070312 2.578125 3.226562 2.578125 3.375 2.578125 C 3.519531 2.578125 3.640625 2.578125 3.734375 2.578125 C 4.046875 2.578125 4.34375 2.535156 4.625 2.453125 C 4.90625 2.367188 5.144531 2.226562 5.34375 2.03125 C 5.550781 1.832031 5.710938 1.570312 5.828125 1.25 C 5.953125 0.925781 6.015625 0.523438 6.015625 0.046875 L 6.015625 -8.546875 L 2.71875 -8.546875 Z M 5.78125 -12.015625 C 5.78125 -12.285156 5.859375 -12.515625 6.015625 -12.703125 C 6.179688 -12.898438 6.4375 -13 6.78125 -13 C 7.125 -13 7.378906 -12.898438 7.546875 -12.703125 C 7.710938 -12.515625 7.796875 -12.285156 7.796875 -12.015625 C 7.796875 -11.742188 7.710938 -11.515625 7.546875 -11.328125 C 7.378906 -11.140625 7.125 -11.046875 6.78125 -11.046875 C 6.4375 -11.046875 6.179688 -11.140625 6.015625 -11.328125 C 5.859375 -11.515625 5.78125 -11.742188 5.78125 -12.015625 Z M 5.78125 -12.015625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-17">
|
||||||
|
<path style="stroke:none;" d="M 5.796875 -1.375 C 6.097656 -1.375 6.390625 -1.421875 6.671875 -1.515625 C 6.960938 -1.609375 7.21875 -1.738281 7.4375 -1.90625 C 7.664062 -2.070312 7.847656 -2.269531 7.984375 -2.5 C 8.128906 -2.726562 8.203125 -2.972656 8.203125 -3.234375 L 9.796875 -3.234375 C 9.796875 -2.804688 9.679688 -2.394531 9.453125 -2 C 9.234375 -1.613281 8.9375 -1.273438 8.5625 -0.984375 C 8.195312 -0.691406 7.773438 -0.453125 7.296875 -0.265625 C 6.816406 -0.0859375 6.316406 0 5.796875 0 C 5.046875 0 4.390625 -0.128906 3.828125 -0.390625 C 3.265625 -0.648438 2.796875 -1 2.421875 -1.4375 C 2.054688 -1.882812 1.773438 -2.394531 1.578125 -2.96875 C 1.390625 -3.550781 1.296875 -4.164062 1.296875 -4.8125 L 1.296875 -5.1875 C 1.296875 -5.832031 1.390625 -6.441406 1.578125 -7.015625 C 1.773438 -7.597656 2.054688 -8.109375 2.421875 -8.546875 C 2.796875 -8.992188 3.265625 -9.347656 3.828125 -9.609375 C 4.390625 -9.867188 5.046875 -10 5.796875 -10 C 6.378906 -10 6.910156 -9.910156 7.390625 -9.734375 C 7.878906 -9.554688 8.300781 -9.3125 8.65625 -9 C 9.019531 -8.6875 9.300781 -8.3125 9.5 -7.875 C 9.695312 -7.445312 9.796875 -6.988281 9.796875 -6.5 L 8.203125 -6.5 C 8.203125 -6.789062 8.140625 -7.0625 8.015625 -7.3125 C 7.890625 -7.570312 7.71875 -7.800781 7.5 -8 C 7.289062 -8.195312 7.035156 -8.347656 6.734375 -8.453125 C 6.441406 -8.566406 6.128906 -8.625 5.796875 -8.625 C 5.265625 -8.625 4.820312 -8.519531 4.46875 -8.3125 C 4.113281 -8.113281 3.828125 -7.847656 3.609375 -7.515625 C 3.390625 -7.191406 3.234375 -6.828125 3.140625 -6.421875 C 3.046875 -6.015625 3 -5.601562 3 -5.1875 L 3 -4.8125 C 3 -4.394531 3.046875 -3.976562 3.140625 -3.5625 C 3.234375 -3.15625 3.382812 -2.789062 3.59375 -2.46875 C 3.8125 -2.144531 4.097656 -1.878906 4.453125 -1.671875 C 4.816406 -1.472656 5.265625 -1.375 5.796875 -1.375 Z M 5.796875 -1.375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-18">
|
||||||
|
<path style="stroke:none;" d="M 4.109375 0 L 4.109375 -8.703125 L 1.390625 -8.703125 L 1.390625 -10 L 4.109375 -10 L 4.109375 -10.640625 C 4.109375 -11.210938 4.195312 -11.710938 4.375 -12.140625 C 4.5625 -12.578125 4.820312 -12.941406 5.15625 -13.234375 C 5.5 -13.535156 5.90625 -13.757812 6.375 -13.90625 C 6.851562 -14.050781 7.382812 -14.125 7.96875 -14.125 C 8.363281 -14.125 8.75 -14.085938 9.125 -14.015625 C 9.507812 -13.953125 9.90625 -13.867188 10.3125 -13.765625 L 10.109375 -12.421875 C 9.859375 -12.492188 9.566406 -12.554688 9.234375 -12.609375 C 8.910156 -12.660156 8.554688 -12.6875 8.171875 -12.6875 C 7.390625 -12.6875 6.796875 -12.515625 6.390625 -12.171875 C 5.992188 -11.835938 5.796875 -11.316406 5.796875 -10.609375 L 5.796875 -10 L 9.59375 -10 L 9.59375 -8.703125 L 5.796875 -8.703125 L 5.796875 0 Z M 4.109375 0 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-19">
|
||||||
|
<path style="stroke:none;" d="M 2.359375 -10 L 2.40625 -8.90625 C 2.601562 -9.25 2.863281 -9.515625 3.1875 -9.703125 C 3.519531 -9.898438 3.914062 -10 4.375 -10 C 5.28125 -10 5.882812 -9.65625 6.1875 -8.96875 C 6.382812 -9.28125 6.640625 -9.53125 6.953125 -9.71875 C 7.273438 -9.90625 7.664062 -10 8.125 -10 C 8.84375 -10 9.394531 -9.773438 9.78125 -9.328125 C 10.175781 -8.890625 10.375 -8.222656 10.375 -7.328125 L 10.375 0 L 8.765625 0 L 8.765625 -7.359375 C 8.765625 -8.179688 8.382812 -8.59375 7.625 -8.59375 C 7.425781 -8.59375 7.253906 -8.5625 7.109375 -8.5 C 6.960938 -8.445312 6.835938 -8.375 6.734375 -8.28125 C 6.640625 -8.1875 6.566406 -8.078125 6.515625 -7.953125 C 6.460938 -7.835938 6.425781 -7.710938 6.40625 -7.578125 L 6.40625 0 L 4.8125 0 L 4.8125 -7.375 C 4.8125 -7.769531 4.722656 -8.070312 4.546875 -8.28125 C 4.367188 -8.488281 4.085938 -8.59375 3.703125 -8.59375 C 3.347656 -8.59375 3.070312 -8.519531 2.875 -8.375 C 2.6875 -8.238281 2.546875 -8.054688 2.453125 -7.828125 L 2.453125 0 L 0.84375 0 L 0.84375 -10 Z M 2.359375 -10 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-20">
|
||||||
|
<path style="stroke:none;" d="M 4.546875 -4.640625 L 3.296875 -3.453125 L 3.296875 0 L 1.609375 0 L 1.609375 -14 L 3.296875 -14 L 3.296875 -5.515625 L 4.40625 -6.71875 L 7.640625 -10 L 9.6875 -10 L 5.703125 -5.828125 L 10.296875 0 L 8.15625 0 Z M 4.546875 -4.640625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-21">
|
||||||
|
<path style="stroke:none;" d="M 1.28125 -5.078125 C 1.28125 -5.804688 1.367188 -6.46875 1.546875 -7.0625 C 1.722656 -7.664062 1.976562 -8.179688 2.3125 -8.609375 C 2.65625 -9.046875 3.070312 -9.382812 3.5625 -9.625 C 4.0625 -9.875 4.628906 -10 5.265625 -10 C 5.847656 -10 6.359375 -9.898438 6.796875 -9.703125 C 7.242188 -9.503906 7.632812 -9.21875 7.96875 -8.84375 L 8.046875 -10 L 9.59375 -10 L 9.59375 4 L 7.90625 4 L 7.90625 -1.078125 C 7.570312 -0.734375 7.1875 -0.46875 6.75 -0.28125 C 6.3125 -0.09375 5.8125 0 5.25 0 C 4.613281 0 4.050781 -0.125 3.5625 -0.375 C 3.070312 -0.625 2.65625 -0.96875 2.3125 -1.40625 C 1.976562 -1.851562 1.722656 -2.375 1.546875 -2.96875 C 1.367188 -3.5625 1.28125 -4.203125 1.28125 -4.890625 Z M 2.96875 -4.890625 C 2.96875 -4.421875 3.019531 -3.972656 3.125 -3.546875 C 3.226562 -3.128906 3.390625 -2.757812 3.609375 -2.4375 C 3.828125 -2.113281 4.101562 -1.851562 4.4375 -1.65625 C 4.78125 -1.46875 5.1875 -1.375 5.65625 -1.375 C 6.195312 -1.375 6.648438 -1.492188 7.015625 -1.734375 C 7.378906 -1.972656 7.675781 -2.28125 7.90625 -2.65625 L 7.90625 -7.375 C 7.789062 -7.5625 7.65625 -7.726562 7.5 -7.875 C 7.351562 -8.019531 7.1875 -8.148438 7 -8.265625 C 6.820312 -8.378906 6.617188 -8.46875 6.390625 -8.53125 C 6.171875 -8.59375 5.929688 -8.625 5.671875 -8.625 C 5.203125 -8.625 4.796875 -8.523438 4.453125 -8.328125 C 4.117188 -8.128906 3.835938 -7.867188 3.609375 -7.546875 C 3.390625 -7.222656 3.226562 -6.847656 3.125 -6.421875 C 3.019531 -5.992188 2.96875 -5.546875 2.96875 -5.078125 Z M 2.96875 -4.890625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-22">
|
||||||
|
<path style="stroke:none;" d="M 7.984375 -1.359375 C 7.660156 -0.867188 7.25 -0.519531 6.75 -0.3125 C 6.257812 -0.101562 5.691406 0 5.046875 0 C 4.535156 0 4.066406 -0.078125 3.640625 -0.234375 C 3.222656 -0.398438 2.863281 -0.648438 2.5625 -0.984375 C 2.269531 -1.328125 2.039062 -1.757812 1.875 -2.28125 C 1.71875 -2.8125 1.640625 -3.441406 1.640625 -4.171875 L 1.640625 -10 L 3.328125 -10 L 3.328125 -4.15625 C 3.328125 -3.625 3.367188 -3.179688 3.453125 -2.828125 C 3.535156 -2.472656 3.660156 -2.191406 3.828125 -1.984375 C 4.003906 -1.773438 4.210938 -1.628906 4.453125 -1.546875 C 4.703125 -1.460938 4.988281 -1.421875 5.3125 -1.421875 C 6 -1.421875 6.550781 -1.554688 6.96875 -1.828125 C 7.394531 -2.109375 7.710938 -2.488281 7.921875 -2.96875 L 7.921875 -10 L 9.625 -10 L 9.625 0 L 8.09375 0 Z M 7.984375 -1.359375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-23">
|
||||||
|
<path style="stroke:none;" d="M 1.84375 -14 L 6.890625 -14 L 6.890625 -1.453125 L 10.109375 -1.453125 L 10.109375 0 L 1.84375 0 L 1.84375 -1.453125 L 5.203125 -1.453125 L 5.203125 -12.546875 L 1.84375 -12.546875 Z M 1.84375 -14 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-24">
|
||||||
|
<path style="stroke:none;" d="M 3.265625 -8.375 C 3.617188 -8.882812 4.054688 -9.28125 4.578125 -9.5625 C 5.097656 -9.851562 5.675781 -10 6.3125 -10 C 6.832031 -10 7.300781 -9.925781 7.71875 -9.78125 C 8.144531 -9.632812 8.503906 -9.398438 8.796875 -9.078125 C 9.097656 -8.765625 9.328125 -8.367188 9.484375 -7.890625 C 9.648438 -7.410156 9.734375 -6.84375 9.734375 -6.1875 L 9.734375 0 L 8.046875 0 L 8.046875 -6.21875 C 8.046875 -7.019531 7.851562 -7.613281 7.46875 -8 C 7.082031 -8.394531 6.53125 -8.59375 5.8125 -8.59375 C 5.269531 -8.59375 4.78125 -8.457031 4.34375 -8.1875 C 3.90625 -7.925781 3.546875 -7.578125 3.265625 -7.140625 L 3.265625 0 L 1.59375 0 L 1.59375 -14 L 3.265625 -14 Z M 3.265625 -8.375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-25">
|
||||||
|
<path style="stroke:none;" d="M 10.546875 -11.5625 L 6.4375 -11.5625 L 6.4375 0 L 4.796875 0 L 4.796875 -11.5625 L 0.6875 -11.5625 L 0.6875 -13 L 10.546875 -13 Z M 10.546875 -11.5625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-26">
|
||||||
|
<path style="stroke:none;" d="M 1.5625 0 L 1.5625 -13 L 5.515625 -13 C 6.066406 -13 6.601562 -12.925781 7.125 -12.78125 C 7.644531 -12.644531 8.109375 -12.425781 8.515625 -12.125 C 8.921875 -11.832031 9.242188 -11.457031 9.484375 -11 C 9.734375 -10.539062 9.851562 -9.984375 9.84375 -9.328125 C 9.84375 -8.972656 9.785156 -8.648438 9.671875 -8.359375 C 9.566406 -8.066406 9.421875 -7.800781 9.234375 -7.5625 C 9.054688 -7.320312 8.84375 -7.109375 8.59375 -6.921875 C 8.34375 -6.742188 8.078125 -6.597656 7.796875 -6.484375 C 8.148438 -6.390625 8.472656 -6.25 8.765625 -6.0625 C 9.054688 -5.882812 9.304688 -5.671875 9.515625 -5.421875 C 9.734375 -5.171875 9.898438 -4.890625 10.015625 -4.578125 C 10.140625 -4.265625 10.203125 -3.921875 10.203125 -3.546875 C 10.210938 -2.972656 10.09375 -2.460938 9.84375 -2.015625 C 9.601562 -1.578125 9.28125 -1.207031 8.875 -0.90625 C 8.46875 -0.613281 8 -0.390625 7.46875 -0.234375 C 6.9375 -0.078125 6.382812 0 5.8125 0 Z M 3.265625 -5.703125 L 3.265625 -1.421875 L 5.859375 -1.421875 C 6.210938 -1.421875 6.546875 -1.46875 6.859375 -1.5625 C 7.179688 -1.664062 7.460938 -1.804688 7.703125 -1.984375 C 7.941406 -2.171875 8.132812 -2.394531 8.28125 -2.65625 C 8.425781 -2.914062 8.5 -3.21875 8.5 -3.5625 C 8.5 -3.90625 8.429688 -4.207031 8.296875 -4.46875 C 8.171875 -4.726562 7.992188 -4.945312 7.765625 -5.125 C 7.535156 -5.3125 7.265625 -5.453125 6.953125 -5.546875 C 6.640625 -5.648438 6.304688 -5.703125 5.953125 -5.703125 Z M 3.265625 -7.109375 L 5.609375 -7.109375 C 5.929688 -7.109375 6.242188 -7.15625 6.546875 -7.25 C 6.847656 -7.351562 7.117188 -7.5 7.359375 -7.6875 C 7.597656 -7.882812 7.789062 -8.117188 7.9375 -8.390625 C 8.082031 -8.671875 8.15625 -8.992188 8.15625 -9.359375 C 8.15625 -9.742188 8.082031 -10.078125 7.9375 -10.359375 C 7.789062 -10.640625 7.597656 -10.867188 7.359375 -11.046875 C 7.117188 -11.222656 6.84375 -11.351562 6.53125 -11.4375 C 6.21875 -11.519531 5.898438 -11.5625 5.578125 -11.5625 L 3.265625 -11.5625 Z M 3.265625 -7.109375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-27">
|
||||||
|
<path style="stroke:none;" d="M 7.921875 -3.6875 L 3.484375 -3.6875 L 2.421875 0 L 0.734375 0 L 5.03125 -13 L 6.4375 -13 L 10.65625 0 L 8.96875 0 Z M 3.953125 -5.125 L 7.46875 -5.125 L 5.71875 -10.546875 Z M 3.953125 -5.125 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-28">
|
||||||
|
<path style="stroke:none;" d="M 3.421875 -5.71875 L 3.421875 0 L 1.734375 0 L 1.734375 -13 L 6.046875 -13 C 6.640625 -13 7.203125 -12.914062 7.734375 -12.75 C 8.265625 -12.59375 8.726562 -12.359375 9.125 -12.046875 C 9.53125 -11.742188 9.847656 -11.363281 10.078125 -10.90625 C 10.316406 -10.457031 10.4375 -9.941406 10.4375 -9.359375 C 10.4375 -8.773438 10.316406 -8.253906 10.078125 -7.796875 C 9.847656 -7.347656 9.53125 -6.96875 9.125 -6.65625 C 8.726562 -6.351562 8.265625 -6.117188 7.734375 -5.953125 C 7.203125 -5.796875 6.640625 -5.71875 6.046875 -5.71875 Z M 3.421875 -7.09375 L 6.046875 -7.09375 C 6.429688 -7.09375 6.785156 -7.144531 7.109375 -7.25 C 7.441406 -7.351562 7.726562 -7.5 7.96875 -7.6875 C 8.21875 -7.882812 8.410156 -8.117188 8.546875 -8.390625 C 8.679688 -8.660156 8.75 -8.976562 8.75 -9.34375 C 8.75 -9.6875 8.679688 -10 8.546875 -10.28125 C 8.410156 -10.570312 8.222656 -10.816406 7.984375 -11.015625 C 7.742188 -11.210938 7.457031 -11.363281 7.125 -11.46875 C 6.789062 -11.570312 6.429688 -11.625 6.046875 -11.625 L 3.421875 -11.625 Z M 3.421875 -7.09375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-29">
|
||||||
|
<path style="stroke:none;" d="M 1.59375 -13 L 9.609375 -13 L 9.609375 -11.53125 L 6.421875 -11.53125 L 6.421875 -1.453125 L 9.609375 -1.453125 L 9.609375 0 L 1.59375 0 L 1.59375 -1.453125 L 4.703125 -1.453125 L 4.703125 -11.53125 L 1.59375 -11.53125 Z M 1.59375 -13 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-30">
|
||||||
|
<path style="stroke:none;" d="M 1.265625 -5.078125 C 1.265625 -5.804688 1.359375 -6.46875 1.546875 -7.0625 C 1.734375 -7.664062 2 -8.179688 2.34375 -8.609375 C 2.6875 -9.046875 3.097656 -9.382812 3.578125 -9.625 C 4.066406 -9.875 4.613281 -10 5.21875 -10 C 5.800781 -10 6.3125 -9.898438 6.75 -9.703125 C 7.195312 -9.503906 7.582031 -9.21875 7.90625 -8.84375 L 7.90625 -14 L 9.59375 -14 L 9.59375 0 L 8.046875 0 L 7.96875 -1.046875 C 7.632812 -0.703125 7.238281 -0.441406 6.78125 -0.265625 C 6.332031 -0.0859375 5.804688 0 5.203125 0 C 4.597656 0 4.054688 -0.125 3.578125 -0.375 C 3.097656 -0.625 2.6875 -0.96875 2.34375 -1.40625 C 2 -1.851562 1.734375 -2.375 1.546875 -2.96875 C 1.359375 -3.5625 1.265625 -4.203125 1.265625 -4.890625 Z M 2.953125 -4.796875 C 2.953125 -4.316406 3.003906 -3.863281 3.109375 -3.4375 C 3.210938 -3.007812 3.367188 -2.628906 3.578125 -2.296875 C 3.796875 -1.972656 4.070312 -1.71875 4.40625 -1.53125 C 4.75 -1.34375 5.148438 -1.25 5.609375 -1.25 C 5.898438 -1.25 6.160156 -1.28125 6.390625 -1.34375 C 6.617188 -1.40625 6.828125 -1.5 7.015625 -1.625 C 7.203125 -1.75 7.367188 -1.894531 7.515625 -2.0625 C 7.660156 -2.238281 7.789062 -2.4375 7.90625 -2.65625 L 7.90625 -7.203125 C 7.6875 -7.597656 7.390625 -7.925781 7.015625 -8.1875 C 6.648438 -8.445312 6.191406 -8.578125 5.640625 -8.578125 C 5.160156 -8.578125 4.75 -8.476562 4.40625 -8.28125 C 4.070312 -8.09375 3.796875 -7.832031 3.578125 -7.5 C 3.367188 -7.164062 3.210938 -6.78125 3.109375 -6.34375 C 3.003906 -5.914062 2.953125 -5.460938 2.953125 -4.984375 Z M 2.953125 -4.796875 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-31">
|
||||||
|
<path style="stroke:none;" d="M 5.453125 -2.453125 L 5.609375 -1.84375 L 5.765625 -2.453125 L 8.53125 -10 L 10.25 -10 L 6.234375 0 L 4.953125 0 L 0.890625 -10 L 2.625 -10 Z M 5.453125 -2.453125 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-32">
|
||||||
|
<path style="stroke:none;" d="M 5.21875 -3.546875 L 5.65625 -2.34375 L 8.65625 -10 L 10.546875 -10 L 5.546875 1.515625 C 5.429688 1.765625 5.28125 2.035156 5.09375 2.328125 C 4.914062 2.617188 4.695312 2.882812 4.4375 3.125 C 4.1875 3.363281 3.890625 3.566406 3.546875 3.734375 C 3.210938 3.910156 2.820312 4 2.375 4 C 2.300781 4 2.210938 4 2.109375 4 C 2.015625 4 1.914062 3.988281 1.8125 3.96875 C 1.71875 3.957031 1.628906 3.941406 1.546875 3.921875 C 1.460938 3.910156 1.394531 3.898438 1.34375 3.890625 L 1.609375 2.5 C 1.648438 2.5 1.707031 2.5 1.78125 2.5 C 1.851562 2.5 1.929688 2.5 2.015625 2.5 C 2.097656 2.5 2.175781 2.5 2.25 2.5 C 2.320312 2.5 2.378906 2.5 2.421875 2.5 C 2.648438 2.5 2.859375 2.429688 3.046875 2.296875 C 3.242188 2.171875 3.414062 2.019531 3.5625 1.84375 C 3.707031 1.675781 3.832031 1.5 3.9375 1.3125 C 4.050781 1.125 4.132812 0.96875 4.1875 0.84375 L 4.875 -0.46875 L 0.625 -10 L 2.5 -10 Z M 5.21875 -3.546875 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-33">
|
||||||
|
<path style="stroke:none;" d="M 5.953125 -13 L 5.765625 -9.65625 L 4.5 -9.65625 L 4.515625 -12.84375 L 4.515625 -14 L 5.953125 -14 Z M 5.953125 -13 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-34">
|
||||||
|
<path style="stroke:none;" d="M 3.078125 -3.625 L 3.28125 -2.1875 L 3.53125 -3.625 L 5.109375 -10 L 6.1875 -10 L 7.765625 -3.625 L 8.015625 -2.046875 L 8.265625 -3.625 L 9.359375 -10 L 10.859375 -10 L 8.765625 0 L 7.4375 0 L 5.890625 -6.125 L 5.640625 -7.6875 L 5.390625 -6.125 L 3.859375 0 L 2.53125 0 L 0.4375 -10 L 1.9375 -10 Z M 3.078125 -3.625 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-35">
|
||||||
|
<path style="stroke:none;" d="M 8.96875 -5.6875 L 3.453125 -5.6875 L 3.453125 0 L 1.734375 0 L 1.734375 -13 L 9.890625 -13 L 9.890625 -11.5625 L 3.453125 -11.5625 L 3.453125 -7.125 L 8.96875 -7.125 Z M 8.96875 -5.6875 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-36">
|
||||||
|
<path style="stroke:none;" d="M 5.984375 -5.71875 L 3.328125 -5.71875 L 3.328125 0 L 1.65625 0 L 1.65625 -13 L 5.546875 -13 C 6.160156 -13 6.738281 -12.921875 7.28125 -12.765625 C 7.832031 -12.617188 8.3125 -12.394531 8.71875 -12.09375 C 9.132812 -11.789062 9.457031 -11.410156 9.6875 -10.953125 C 9.925781 -10.492188 10.046875 -9.953125 10.046875 -9.328125 C 10.046875 -8.929688 9.984375 -8.566406 9.859375 -8.234375 C 9.734375 -7.898438 9.5625 -7.597656 9.34375 -7.328125 C 9.125 -7.054688 8.863281 -6.816406 8.5625 -6.609375 C 8.257812 -6.398438 7.925781 -6.222656 7.5625 -6.078125 L 10.375 0 L 8.59375 0 Z M 3.328125 -7.09375 L 5.59375 -7.09375 C 5.96875 -7.09375 6.320312 -7.140625 6.65625 -7.234375 C 6.988281 -7.335938 7.28125 -7.484375 7.53125 -7.671875 C 7.78125 -7.867188 7.976562 -8.101562 8.125 -8.375 C 8.269531 -8.65625 8.34375 -8.972656 8.34375 -9.328125 C 8.34375 -9.710938 8.273438 -10.046875 8.140625 -10.328125 C 8.003906 -10.609375 7.8125 -10.84375 7.5625 -11.03125 C 7.3125 -11.226562 7.015625 -11.375 6.671875 -11.46875 C 6.328125 -11.570312 5.953125 -11.625 5.546875 -11.625 L 3.328125 -11.625 Z M 3.328125 -7.09375 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-37">
|
||||||
|
<path style="stroke:none;" d="M 9.90625 0 L 8.3125 0 L 8.3125 -5.703125 L 2.875 -5.703125 L 2.875 0 L 1.28125 0 L 1.28125 -13 L 2.875 -13 L 2.875 -7.109375 L 8.3125 -7.109375 L 8.3125 -13 L 9.90625 -13 Z M 9.90625 0 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-38">
|
||||||
|
<path style="stroke:none;" d="M 4.984375 -1.265625 C 4.984375 -1.441406 5.007812 -1.609375 5.0625 -1.765625 C 5.125 -1.921875 5.207031 -2.054688 5.3125 -2.171875 C 5.425781 -2.296875 5.5625 -2.390625 5.71875 -2.453125 C 5.882812 -2.523438 6.078125 -2.5625 6.296875 -2.5625 C 6.515625 -2.5625 6.707031 -2.523438 6.875 -2.453125 C 7.039062 -2.390625 7.179688 -2.296875 7.296875 -2.171875 C 7.410156 -2.054688 7.492188 -1.921875 7.546875 -1.765625 C 7.609375 -1.609375 7.640625 -1.441406 7.640625 -1.265625 C 7.640625 -1.085938 7.609375 -0.921875 7.546875 -0.765625 C 7.492188 -0.609375 7.410156 -0.472656 7.296875 -0.359375 C 7.179688 -0.242188 7.039062 -0.15625 6.875 -0.09375 C 6.707031 -0.03125 6.515625 0 6.296875 0 C 6.078125 0 5.882812 -0.03125 5.71875 -0.09375 C 5.5625 -0.15625 5.425781 -0.242188 5.3125 -0.359375 C 5.207031 -0.472656 5.125 -0.609375 5.0625 -0.765625 C 5.007812 -0.921875 4.984375 -1.085938 4.984375 -1.265625 Z M 4.984375 -8.6875 C 4.984375 -8.875 5.007812 -9.046875 5.0625 -9.203125 C 5.125 -9.359375 5.207031 -9.492188 5.3125 -9.609375 C 5.425781 -9.734375 5.5625 -9.828125 5.71875 -9.890625 C 5.882812 -9.960938 6.078125 -10 6.296875 -10 C 6.515625 -10 6.707031 -9.960938 6.875 -9.890625 C 7.039062 -9.828125 7.179688 -9.734375 7.296875 -9.609375 C 7.410156 -9.492188 7.492188 -9.359375 7.546875 -9.203125 C 7.609375 -9.046875 7.640625 -8.875 7.640625 -8.6875 C 7.640625 -8.519531 7.609375 -8.359375 7.546875 -8.203125 C 7.492188 -8.046875 7.410156 -7.910156 7.296875 -7.796875 C 7.179688 -7.679688 7.039062 -7.59375 6.875 -7.53125 C 6.707031 -7.46875 6.515625 -7.4375 6.296875 -7.4375 C 6.078125 -7.4375 5.882812 -7.46875 5.71875 -7.53125 C 5.5625 -7.59375 5.425781 -7.679688 5.3125 -7.796875 C 5.207031 -7.910156 5.125 -8.046875 5.0625 -8.203125 C 5.007812 -8.359375 4.984375 -8.519531 4.984375 -8.6875 Z M 4.984375 -8.6875 "/>
|
||||||
|
</symbol>
|
||||||
|
<symbol overflow="visible" id="glyph0-39">
|
||||||
|
<path style="stroke:none;" d="M 4.890625 -6.09375 L 1.453125 -6.953125 L 1.953125 -8.546875 L 5.28125 -7.171875 L 5.046875 -11 L 6.671875 -11 L 6.40625 -7.125 L 9.71875 -8.484375 L 10.21875 -6.875 L 6.734375 -6.015625 L 9.0625 -3.078125 L 7.734375 -2.078125 L 5.78125 -5.375 L 3.84375 -2.15625 L 2.515625 -3.125 Z M 4.890625 -6.09375 "/>
|
||||||
|
</symbol>
|
||||||
|
</g>
|
||||||
|
</defs>
|
||||||
|
<g id="surface46506">
|
||||||
|
<path style="fill:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(40.784314%,71.764706%,13.72549%);stroke-opacity:1;stroke-miterlimit:10;" d="M 984.889648 203.423416 C 984.889648 298.423416 984.889648 298.423416 984.889648 393.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||||
|
<path style="fill-rule:nonzero;fill:rgb(40.784314%,71.764706%,13.72549%);fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 984.889648 396.423416 L 992.920898 384.954666 L 976.858398 384.954666 Z M 984.889648 396.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||||
|
<path style="fill:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(40.784314%,71.764706%,13.72549%);stroke-opacity:1;stroke-miterlimit:10;" d="M 984.889648 521.423416 C 984.889648 579.923416 831.389648 579.923416 831.389648 638.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||||
|
<path style="fill-rule:nonzero;fill:rgb(40.784314%,71.764706%,13.72549%);fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 831.389648 641.423416 L 840.776367 631.036697 L 824.842773 629.048416 Z M 831.389648 641.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 21 534 L 295 534 L 295 703 L 21 703 Z M 21 534 "/>
|
||||||
|
<path style="fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(40.784314%,71.764706%,13.72549%);stroke-opacity:1;stroke-miterlimit:10;" d="M 694.389648 653.423416 L 694.389648 643.423416 L 968.389648 643.423416 L 968.389648 653.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="26" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="37" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="48" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="59" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="70" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="81" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="92" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="103" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="114" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="125" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-10" x="136" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="147" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="158" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="169" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="180" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="191" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="202" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="213" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="224" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="235" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="246" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="257" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="268" y="557"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-13" x="26" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-10" x="37" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="48" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="59" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="70" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="81" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="92" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="103" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="114" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="125" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="136" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="147" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="158" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="169" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-16" x="180" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="191" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-17" x="202" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="213" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="224" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-18" x="235" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="246" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="257" y="601.875977"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-19" x="26" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="37" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-20" x="48" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="59" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="70" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="81" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="92" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-21" x="103" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-22" x="114" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="125" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="136" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="147" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="158" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="169" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-19" x="180" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="191" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="202" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="213" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="224" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="235" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="246" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="257" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-20" x="268" y="624.875977"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-23" x="26" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="37" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-20" x="48" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="59" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="70" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="81" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="92" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="103" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="114" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-24" x="125" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="136" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="147" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-25" x="158" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="169" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="180" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="191" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="202" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="213" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="224" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-19" x="235" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="246" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-26" x="257" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="268" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="279" y="647.875977"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-27" x="26" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-28" x="37" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-29" x="48" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="59" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="70" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="81" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-30" x="92" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="103" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="114" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="125" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-31" x="136" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="147" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="158" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="169" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="180" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="191" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="202" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="213" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="224" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-22" x="235" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="246" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="257" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="268" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-32" x="279" y="670.875977"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="26" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="37" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="48" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-22" x="59" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="70" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="81" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="92" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="103" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="114" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-33" x="125" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="136" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="147" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="158" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="169" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="180" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="191" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="202" y="693.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="213" y="693.875977"/>
|
||||||
|
</g>
|
||||||
|
<path style="fill:none;stroke-width:5;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(40.784314%,71.764706%,13.72549%);stroke-opacity:1;stroke-miterlimit:10;" d="M 984.889648 521.423416 C 984.889648 579.923416 1132.889648 579.923416 1132.889648 638.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||||
|
<path style="fill-rule:nonzero;fill:rgb(40.784314%,71.764706%,13.72549%);fill-opacity:1;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1132.889648 641.423416 L 1139.491211 629.079666 L 1123.545898 630.997635 Z M 1132.889648 641.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 317 534 L 602 534 L 602 680 L 317 680 Z M 317 534 "/>
|
||||||
|
<path style="fill:none;stroke-width:3;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(40.784314%,71.764706%,13.72549%);stroke-opacity:1;stroke-miterlimit:10;" d="M 990.389648 653.423416 L 990.389648 643.423416 L 1275.389648 643.423416 L 1275.389648 653.423416 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="322" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="333" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="344" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="355" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="366" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="377" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="388" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="399" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="410" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="421" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-10" x="432" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="443" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="454" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="465" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="476" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="487" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="498" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="509" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="520" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="531" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-22" x="542" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="553" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="564" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="575" y="557"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="586" y="557"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-13" x="322" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-10" x="333" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="344" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="355" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="366" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="377" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="388" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="399" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="410" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="421" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="432" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="443" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="454" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="465" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-16" x="476" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="487" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-17" x="498" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="509" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="520" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-34" x="531" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="542" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="553" y="601.875977"/>
|
||||||
|
<use xlink:href="#glyph0-24" x="564" y="601.875977"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-22" x="322" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="333" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="344" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="355" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="366" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="377" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="388" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-24" x="399" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="410" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="421" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="432" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="443" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="454" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-34" x="465" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-24" x="476" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="487" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-17" x="498" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-24" x="509" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="520" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-34" x="531" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="542" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="553" y="624.875977"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="564" y="624.875977"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-19" x="322" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="333" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-20" x="344" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="355" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="366" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="377" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="388" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="399" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="410" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="421" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="432" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="443" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-30" x="454" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="465" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-18" x="476" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-18" x="487" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="498" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="509" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="520" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="531" y="647.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="542" y="647.875977"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-4" x="322" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="333" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="344" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="355" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="366" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="377" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="388" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="399" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="410" y="670.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="421" y="670.875977"/>
|
||||||
|
</g>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 119.5 289 L 503.5 289 L 503.5 412 L 119.5 412 Z M 119.5 289 "/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-25" x="124.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="135.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="146.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="157.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="168.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="179.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="190.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-19" x="201.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-26" x="212.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="223.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="234.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-27" x="245.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-28" x="256.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-29" x="267.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="278.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="289.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-10" x="300.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="311.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="322.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="333.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="344.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="355.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="366.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="377.5" y="312"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="388.5" y="312"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-35" x="124.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="135.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-19" x="146.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="157.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="168.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-32" x="179.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="190.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="201.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-18" x="212.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="223.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="234.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="245.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="256.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-16" x="267.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="278.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-17" x="289.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="300.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="311.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="322.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-34" x="333.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-24" x="344.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="355.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-17" x="366.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-24" x="377.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="388.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="399.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="410.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="421.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="432.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-18" x="443.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-22" x="454.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="465.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="476.5" y="356.875977"/>
|
||||||
|
<use xlink:href="#glyph0-32" x="487.5" y="356.875977"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-3" x="124.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="135.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="146.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="157.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-30" x="168.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="179.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="190.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="201.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="212.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-25" x="223.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="234.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="245.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="256.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="267.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="278.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="289.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-19" x="300.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-26" x="311.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="322.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="333.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-27" x="344.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-28" x="355.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-29" x="366.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="377.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="388.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="399.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-30" x="410.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="421.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="432.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-10" x="443.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="454.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="465.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="476.5" y="379.875977"/>
|
||||||
|
<use xlink:href="#glyph0-30" x="487.5" y="379.875977"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-7" x="124.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="135.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="146.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="157.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-18" x="168.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-22" x="179.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="190.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-17" x="201.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="212.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="223.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="234.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="245.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="256.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="267.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="278.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="289.5" y="402.875977"/>
|
||||||
|
<use xlink:href="#glyph0-32" x="300.5" y="402.875977"/>
|
||||||
|
</g>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(83.137255%,83.137255%,83.137255%);fill-opacity:1;" d="M 86.5 21 L 536.5 21 L 536.5 167 L 86.5 167 Z M 86.5 21 "/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="91.5" y="44"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="102.5" y="44"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="113.5" y="44"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="124.5" y="44"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="135.5" y="44"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="146.5" y="44"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="157.5" y="44"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="168.5" y="44"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="179.5" y="44"/>
|
||||||
|
<use xlink:href="#glyph0-17" x="190.5" y="44"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="201.5" y="44"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="212.5" y="44"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="223.5" y="44"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-36" x="91.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="102.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="113.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="124.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="135.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="146.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="157.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="168.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-16" x="179.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="190.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-17" x="201.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="212.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="223.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-34" x="234.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="245.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="256.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-24" x="267.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="278.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-27" x="289.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-28" x="300.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-29" x="311.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="322.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="333.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-29" x="344.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="355.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="366.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="377.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="388.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="399.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="410.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="421.5" y="88.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="432.5" y="88.875977"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-15" x="91.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="102.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-17" x="113.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="124.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-19" x="135.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-19" x="146.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="157.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="168.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-30" x="179.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="190.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-30" x="201.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="212.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="223.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="234.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="245.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-22" x="256.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="267.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="278.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="289.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="300.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="311.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="322.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="333.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="344.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="355.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-21" x="366.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-22" x="377.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="388.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="399.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="410.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="421.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="432.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-30" x="443.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="454.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="465.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="476.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-17" x="487.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="498.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="509.5" y="111.875977"/>
|
||||||
|
<use xlink:href="#glyph0-32" x="520.5" y="111.875977"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-5" x="91.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="102.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-30" x="113.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="124.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="135.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="146.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="157.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="168.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="179.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="190.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="201.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="212.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="223.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="234.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-22" x="245.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="256.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="267.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="278.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="289.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="300.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="311.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="322.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="333.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="344.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="355.5" y="134.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="366.5" y="134.875977"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="91.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="102.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="113.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="124.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="135.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="146.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="157.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="168.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="179.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="190.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-10" x="201.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="212.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="223.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="234.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="245.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="256.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="267.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="278.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="289.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="300.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="311.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="322.5" y="157.875977"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="333.5" y="157.875977"/>
|
||||||
|
</g>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(83.137255%,83.137255%,83.137255%);fill-opacity:1;" d="M 153.132812 849.621094 L 460.132812 849.621094 L 460.132812 1040.621094 L 153.132812 1040.621094 Z M 153.132812 849.621094 "/>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-1" x="158.132812" y="872.621094"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="169.132812" y="872.621094"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="180.132812" y="872.621094"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="191.132812" y="872.621094"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="202.132812" y="872.621094"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="213.132812" y="872.621094"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="224.132812" y="872.621094"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="235.132812" y="872.621094"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-37" x="158.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="169.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="180.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="191.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="202.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="213.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="224.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-17" x="235.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="246.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-22" x="257.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-30" x="268.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="279.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-30" x="290.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="301.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="312.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="323.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="334.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="345.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="356.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-31" x="367.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="378.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="389.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="400.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="411.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="422.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="433.132812" y="917.49707"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="444.132812" y="917.49707"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-25" x="158.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="169.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="180.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="191.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="202.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="213.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="224.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-19" x="235.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-26" x="246.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="257.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="268.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-27" x="279.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-28" x="290.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-29" x="301.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-14" x="312.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="323.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="334.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="345.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="356.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="367.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="378.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="389.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="400.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="411.132812" y="940.49707"/>
|
||||||
|
<use xlink:href="#glyph0-38" x="422.132812" y="940.49707"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(100%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-39" x="158.132812" y="985.373047"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-14" x="169.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="180.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="191.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="202.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="213.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="224.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="235.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="246.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="257.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="268.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-17" x="279.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="290.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-15" x="301.132812" y="985.373047"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="312.132812" y="985.373047"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(100%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-39" x="158.132812" y="1008.373047"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-14" x="169.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="180.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="191.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="202.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="213.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="224.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="235.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="246.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="257.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="268.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="279.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-10" x="290.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="301.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="312.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="323.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="334.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="345.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="356.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="367.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="378.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="389.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="400.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="411.132812" y="1008.373047"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="422.132812" y="1008.373047"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(100%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-39" x="158.132812" y="1031.373047"/>
|
||||||
|
</g>
|
||||||
|
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
|
||||||
|
<use xlink:href="#glyph0-14" x="169.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="180.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-2" x="191.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-3" x="202.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="213.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="224.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-5" x="235.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-6" x="246.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="257.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="268.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="279.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-10" x="290.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="301.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-9" x="312.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="323.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="334.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="345.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-4" x="356.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-11" x="367.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="378.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-8" x="389.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-22" x="400.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-1" x="411.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-7" x="422.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-23" x="433.132812" y="1031.373047"/>
|
||||||
|
<use xlink:href="#glyph0-12" x="444.132812" y="1031.373047"/>
|
||||||
|
</g>
|
||||||
|
<path style="fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(46.666667%,46.666667%,46.666667%);stroke-opacity:1;stroke-dasharray:2,8;stroke-miterlimit:10;" d="M 877.31543 816.423416 C 896.026367 869.962479 915.170898 916.16951 934.745117 955.04451 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(46.666667%,46.666667%,46.666667%);fill-opacity:1;" d="M 261.355469 845.621094 L 263.226562 832.757812 L 249.90625 839.464844 Z M 261.355469 845.621094 "/>
|
||||||
|
<path style="fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:miter;stroke:rgb(46.666667%,46.666667%,46.666667%);stroke-opacity:1;stroke-dasharray:2,8;stroke-miterlimit:10;" d="M 1082.803711 793.423416 C 1066.94043 862.298416 1047.674805 916.16951 1025.006836 955.04451 " transform="matrix(1,0,0,1,-673.389648,-109.423416)"/>
|
||||||
|
<path style=" stroke:none;fill-rule:nonzero;fill:rgb(46.666667%,46.666667%,46.666667%);fill-opacity:1;" d="M 351.617188 845.621094 L 363.421875 840.175781 L 350.539062 832.664062 Z M 351.617188 845.621094 "/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 80 KiB |
@@ -1 +1,5 @@
|
|||||||
rootProject.name = 'TelegramBotAPI'
|
include ":tgbotapi.core"
|
||||||
|
include ":tgbotapi.extensions.api"
|
||||||
|
include ":tgbotapi.extensions.utils"
|
||||||
|
include ":tgbotapi"
|
||||||
|
include ":docs"
|
||||||
|
|||||||
@@ -1,18 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.fullListOfSubSource
|
|
||||||
|
|
||||||
interface Captioned {
|
|
||||||
val caption: String?
|
|
||||||
}
|
|
||||||
|
|
||||||
interface CaptionedOutput : Captioned {
|
|
||||||
val parseMode: ParseMode?
|
|
||||||
}
|
|
||||||
|
|
||||||
interface CaptionedInput : Captioned {
|
|
||||||
val captionEntities: List<TextPart>
|
|
||||||
}
|
|
||||||
|
|
||||||
fun CaptionedInput.fullEntitiesList() = caption ?.fullListOfSubSource(captionEntities) ?.map { it.source } ?: emptyList()
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
|
|
||||||
|
|
||||||
interface MimeTyped {
|
|
||||||
val mimeType: String? // TODO::replace by something like enum or interface
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
|
|
||||||
|
|
||||||
interface Performerable {
|
|
||||||
val performer: String?
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts
|
|
||||||
|
|
||||||
interface Titled {
|
|
||||||
val title: String?
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
|
|
||||||
|
|
||||||
interface ChatRequest {
|
|
||||||
val chatId: ChatIdentifier
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
|
||||||
|
|
||||||
interface DisableNotification {
|
|
||||||
val disableNotification: Boolean
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineMessageIdentifier
|
|
||||||
|
|
||||||
interface InlineMessageAction {
|
|
||||||
val inlineMessageId: InlineMessageIdentifier
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier
|
|
||||||
|
|
||||||
interface MessageAction: ChatRequest {
|
|
||||||
val messageId: MessageIdentifier
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.KeyboardMarkup
|
|
||||||
|
|
||||||
interface ReplyMarkup {
|
|
||||||
val replyMarkup: KeyboardMarkup?
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.MessageIdentifier
|
|
||||||
|
|
||||||
interface ReplyMessageId {
|
|
||||||
val replyToMessageId: MessageIdentifier?
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.TelegramDate
|
|
||||||
|
|
||||||
interface UntilDate {
|
|
||||||
val untilDate: TelegramDate?
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.bot
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper
|
|
||||||
|
|
||||||
abstract class BaseRequestsExecutor(
|
|
||||||
protected val telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper
|
|
||||||
) : RequestsExecutor
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import io.ktor.client.statement.HttpStatement
|
|
||||||
|
|
||||||
interface KtorCallFactory {
|
|
||||||
suspend fun <T: Any> prepareCall(
|
|
||||||
client: HttpClient,
|
|
||||||
baseUrl: String,
|
|
||||||
request: Request<T>
|
|
||||||
) : HttpStatement?
|
|
||||||
}
|
|
||||||
@@ -1,87 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.bot.BaseRequestsExecutor
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.base.MultipartRequestCallFactory
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.base.SimpleRequestCallFactory
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions.newRequestException
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.EmptyLimiter
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.bot.settings.limiters.RequestLimiter
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.Response
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.RetryAfterError
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.TelegramAPIUrlsKeeper
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import io.ktor.client.call.receive
|
|
||||||
import io.ktor.client.features.ClientRequestException
|
|
||||||
import io.ktor.client.statement.HttpStatement
|
|
||||||
import io.ktor.client.statement.readText
|
|
||||||
import kotlinx.coroutines.delay
|
|
||||||
import kotlinx.serialization.json.Json
|
|
||||||
|
|
||||||
class KtorRequestsExecutor(
|
|
||||||
telegramAPIUrlsKeeper: TelegramAPIUrlsKeeper,
|
|
||||||
private val client: HttpClient = HttpClient(),
|
|
||||||
callsFactories: List<KtorCallFactory> = emptyList(),
|
|
||||||
excludeDefaultFactories: Boolean = false,
|
|
||||||
private val requestsLimiter: RequestLimiter = EmptyLimiter,
|
|
||||||
private val jsonFormatter: Json = Json.nonstrict
|
|
||||||
) : BaseRequestsExecutor(telegramAPIUrlsKeeper) {
|
|
||||||
private val callsFactories: List<KtorCallFactory> = callsFactories.run {
|
|
||||||
if (!excludeDefaultFactories) {
|
|
||||||
asSequence().plus(SimpleRequestCallFactory()).plus(MultipartRequestCallFactory()).toList()
|
|
||||||
} else {
|
|
||||||
this
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override suspend fun <T : Any> execute(request: Request<T>): T {
|
|
||||||
return requestsLimiter.limit {
|
|
||||||
var statement: HttpStatement? = null
|
|
||||||
for (factory in callsFactories) {
|
|
||||||
statement = factory.prepareCall(
|
|
||||||
client,
|
|
||||||
telegramAPIUrlsKeeper.commonAPIUrl,
|
|
||||||
request
|
|
||||||
)
|
|
||||||
if (statement != null) {
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
try {
|
|
||||||
val response = statement ?.execute() ?: throw IllegalArgumentException("Can't execute request: $request")
|
|
||||||
val content = response.receive<String>()
|
|
||||||
val responseObject = jsonFormatter.parse(Response.serializer(), content)
|
|
||||||
|
|
||||||
(responseObject.result?.let {
|
|
||||||
jsonFormatter.fromJson(request.resultDeserializer, it)
|
|
||||||
} ?: responseObject.parameters?.let {
|
|
||||||
val error = it.error
|
|
||||||
if (error is RetryAfterError) {
|
|
||||||
delay(error.leftToRetry)
|
|
||||||
execute(request)
|
|
||||||
} else {
|
|
||||||
null
|
|
||||||
}
|
|
||||||
} ?: response.let {
|
|
||||||
throw newRequestException(
|
|
||||||
responseObject,
|
|
||||||
content,
|
|
||||||
"Can't get result object from $content"
|
|
||||||
)
|
|
||||||
})
|
|
||||||
} catch (e: ClientRequestException) {
|
|
||||||
val content = e.response.readText()
|
|
||||||
val responseObject = jsonFormatter.parse(Response.serializer(), content)
|
|
||||||
throw newRequestException(
|
|
||||||
responseObject,
|
|
||||||
content,
|
|
||||||
"Can't get result object from $content"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
override fun close() {
|
|
||||||
client.close()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.base
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.bot.Ktor.KtorCallFactory
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
|
|
||||||
import io.ktor.client.HttpClient
|
|
||||||
import io.ktor.client.request.*
|
|
||||||
import io.ktor.client.statement.HttpStatement
|
|
||||||
import io.ktor.http.ContentType
|
|
||||||
import io.ktor.http.HttpMethod
|
|
||||||
import kotlin.collections.set
|
|
||||||
|
|
||||||
abstract class AbstractRequestCallFactory : KtorCallFactory {
|
|
||||||
private val methodsCache: MutableMap<String, String> = mutableMapOf()
|
|
||||||
override suspend fun <T : Any> prepareCall(
|
|
||||||
client: HttpClient,
|
|
||||||
baseUrl: String,
|
|
||||||
request: Request<T>
|
|
||||||
): HttpStatement? {
|
|
||||||
val preparedBody = prepareCallBody(client, baseUrl, request) ?: return null
|
|
||||||
|
|
||||||
return HttpStatement(
|
|
||||||
HttpRequestBuilder().apply {
|
|
||||||
url(
|
|
||||||
methodsCache[request.method()] ?: "$baseUrl/${request.method()}".also {
|
|
||||||
methodsCache[request.method()] = it
|
|
||||||
}
|
|
||||||
)
|
|
||||||
method = HttpMethod.Post
|
|
||||||
accept(ContentType.Application.Json)
|
|
||||||
|
|
||||||
body = preparedBody
|
|
||||||
},
|
|
||||||
client
|
|
||||||
)
|
|
||||||
}
|
|
||||||
|
|
||||||
protected abstract fun <T : Any> prepareCallBody(
|
|
||||||
client: HttpClient,
|
|
||||||
baseUrl: String,
|
|
||||||
request: Request<T>
|
|
||||||
): Any?
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.bot
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.Request
|
|
||||||
import io.ktor.utils.io.core.Closeable
|
|
||||||
|
|
||||||
interface RequestsExecutor : Closeable {
|
|
||||||
/**
|
|
||||||
* @throws com.github.insanusmokrassar.TelegramBotAPI.bot.exceptions.RequestException
|
|
||||||
*/
|
|
||||||
suspend fun <T : Any> execute(request: Request<T>): T
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.bot
|
|
||||||
|
|
||||||
import io.ktor.utils.io.core.Closeable
|
|
||||||
import kotlinx.coroutines.CoroutineScope
|
|
||||||
import kotlinx.coroutines.Dispatchers
|
|
||||||
|
|
||||||
interface UpdatesPoller : Closeable {
|
|
||||||
fun start(scope: CoroutineScope = CoroutineScope(Dispatchers.Default))
|
|
||||||
}
|
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ALL_UPDATES_LIST
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.UpdateIdentifier
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.Update
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.update.abstracts.UpdateSerializerWithoutDeserialization
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.internal.ArrayListSerializer
|
|
||||||
|
|
||||||
private val updatesListSerializer = ArrayListSerializer(
|
|
||||||
UpdateSerializerWithoutDeserialization
|
|
||||||
)
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class GetUpdates(
|
|
||||||
val offset: UpdateIdentifier? = null,// set `last update id + 1` to receive next part of updates
|
|
||||||
val limit: Int? = null,
|
|
||||||
val timeout: Int? = null,
|
|
||||||
val allowed_updates: List<String>? = ALL_UPDATES_LIST
|
|
||||||
): SimpleRequest<List<Update>> {
|
|
||||||
override fun method(): String = "getUpdates"
|
|
||||||
|
|
||||||
override val resultDeserializer: DeserializationStrategy<List<Update>>
|
|
||||||
get() = updatesListSerializer
|
|
||||||
|
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
|
||||||
get() = serializer()
|
|
||||||
}
|
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.StorageFile
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.internal.StringDescriptor
|
|
||||||
|
|
||||||
@Serializable(InputFileSerializer::class)
|
|
||||||
sealed class InputFile {
|
|
||||||
abstract val fileId: String
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO:: add checks for file url/file id regex
|
|
||||||
/**
|
|
||||||
* Contains file id or file url
|
|
||||||
*/
|
|
||||||
@Serializable(InputFileSerializer::class)
|
|
||||||
data class FileId(
|
|
||||||
override val fileId: String
|
|
||||||
) : InputFile()
|
|
||||||
|
|
||||||
fun String.toInputFile(): InputFile = FileId(this)
|
|
||||||
|
|
||||||
@Serializer(InputFile::class)
|
|
||||||
internal object InputFileSerializer : KSerializer<InputFile> {
|
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName(FileId::class.toString())
|
|
||||||
override fun serialize(encoder: Encoder, obj: InputFile) = encoder.encodeString(obj.fileId)
|
|
||||||
override fun deserialize(decoder: Decoder): FileId = FileId(decoder.decodeString())
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO:: add checks for files size
|
|
||||||
/**
|
|
||||||
* Contains info about file for sending
|
|
||||||
*/
|
|
||||||
@Serializable(InputFileSerializer::class)
|
|
||||||
data class MultipartFile (
|
|
||||||
val file: StorageFile,
|
|
||||||
val mimeType: String = file.contentType,
|
|
||||||
val filename: String = file.fileName
|
|
||||||
) : InputFile() {
|
|
||||||
override val fileId: String = file.generateCustomName()
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.utils.toJsonWithoutNulls
|
|
||||||
import kotlinx.serialization.SerializationStrategy
|
|
||||||
import kotlinx.serialization.json.JsonObject
|
|
||||||
|
|
||||||
interface SimpleRequest<T: Any> : Request<T> {
|
|
||||||
val requestSerializer: SerializationStrategy<*>
|
|
||||||
}
|
|
||||||
|
|
||||||
@Suppress("UNCHECKED_CAST")
|
|
||||||
inline fun <T: Any, K: SimpleRequest<T>> K.json(): JsonObject = toJsonWithoutNulls(requestSerializer as SerializationStrategy<K>)
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.answers.payments.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.PreCheckoutQueryId
|
|
||||||
import kotlinx.serialization.KSerializer
|
|
||||||
import kotlinx.serialization.internal.BooleanSerializer
|
|
||||||
|
|
||||||
interface AnswerPreCheckoutQuery : SimpleRequest<Boolean> {
|
|
||||||
override fun method(): String = "answerPreCheckoutQuery"
|
|
||||||
override val resultDeserializer: KSerializer<Boolean>
|
|
||||||
get() = BooleanSerializer
|
|
||||||
|
|
||||||
val preCheckoutQueryId: PreCheckoutQueryId
|
|
||||||
val isOk: Boolean
|
|
||||||
}
|
|
||||||
@@ -1,15 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.answers.payments.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ShippingQueryIdentifier
|
|
||||||
import kotlinx.serialization.DeserializationStrategy
|
|
||||||
import kotlinx.serialization.internal.BooleanSerializer
|
|
||||||
|
|
||||||
interface AnswerShippingQuery : SimpleRequest<Boolean> {
|
|
||||||
override fun method(): String = "answerShippingQuery"
|
|
||||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
|
||||||
get() = BooleanSerializer
|
|
||||||
|
|
||||||
val shippingQueryId: ShippingQueryIdentifier
|
|
||||||
val isOk: Boolean
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.internal.StringSerializer
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class ExportChatInviteLink(
|
|
||||||
@SerialName(chatIdField)
|
|
||||||
override val chatId: ChatIdentifier
|
|
||||||
): ChatRequest, SimpleRequest<String> {
|
|
||||||
override fun method(): String = "exportChatInviteLink"
|
|
||||||
override val resultDeserializer: DeserializationStrategy<String>
|
|
||||||
get() = StringSerializer
|
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
|
||||||
get() = serializer()
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.internal.BooleanSerializer
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class LeaveChat(
|
|
||||||
@SerialName(chatIdField)
|
|
||||||
override val chatId: ChatIdentifier
|
|
||||||
): ChatRequest, SimpleRequest<Boolean> {
|
|
||||||
override fun method(): String = "leaveChat"
|
|
||||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
|
||||||
get() = BooleanSerializer
|
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
|
||||||
get() = serializer()
|
|
||||||
}
|
|
||||||
@@ -1,9 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.UserId
|
|
||||||
|
|
||||||
interface ChatMemberRequest<T: Any> : ChatRequest, SimpleRequest<T> {
|
|
||||||
val userId: UserId
|
|
||||||
}
|
|
||||||
@@ -1,21 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.get
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chat.ExtendedChatSerializer
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chat.abstracts.extended.ExtendedChat
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class GetChat(
|
|
||||||
@SerialName(chatIdField)
|
|
||||||
override val chatId: ChatIdentifier
|
|
||||||
): ChatRequest, SimpleRequest<ExtendedChat> {
|
|
||||||
override fun method(): String = "getChat"
|
|
||||||
override val resultDeserializer: DeserializationStrategy<ExtendedChat>
|
|
||||||
get() = ExtendedChatSerializer
|
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
|
||||||
get() = serializer()
|
|
||||||
}
|
|
||||||
@@ -1,26 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.get
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.AdministratorChatMember
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.AdministratorChatMemberSerializerWithoutDeserialization
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.internal.ArrayListSerializer
|
|
||||||
|
|
||||||
private val chatMembersListSerializer = ArrayListSerializer(
|
|
||||||
AdministratorChatMemberSerializerWithoutDeserialization
|
|
||||||
)
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class GetChatAdministrators(
|
|
||||||
@SerialName(chatIdField)
|
|
||||||
override val chatId: ChatIdentifier
|
|
||||||
): ChatRequest, SimpleRequest<List<AdministratorChatMember>> {
|
|
||||||
override fun method(): String = "getChatAdministrators"
|
|
||||||
override val resultDeserializer: DeserializationStrategy<List<AdministratorChatMember>>
|
|
||||||
get() = chatMembersListSerializer
|
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
|
||||||
get() = serializer()
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.get
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.internal.IntSerializer
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class GetChatMembersCount(
|
|
||||||
@SerialName(chatIdField)
|
|
||||||
override val chatId: ChatIdentifier
|
|
||||||
): ChatRequest, SimpleRequest<Int> {
|
|
||||||
override fun method(): String = "getChatMembersCount"
|
|
||||||
override val resultDeserializer: DeserializationStrategy<Int>
|
|
||||||
get() = IntSerializer
|
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
|
||||||
get() = serializer()
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.modify
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.internal.BooleanSerializer
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class DeleteChatPhoto(
|
|
||||||
@SerialName(chatIdField)
|
|
||||||
override val chatId: ChatIdentifier
|
|
||||||
): ChatRequest, SimpleRequest<Boolean> {
|
|
||||||
override fun method(): String = "deleteChatPhoto"
|
|
||||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
|
||||||
get() = BooleanSerializer
|
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
|
||||||
get() = serializer()
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.modify
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.internal.BooleanSerializer
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class UnpinChatMessage(
|
|
||||||
@SerialName(chatIdField)
|
|
||||||
override val chatId: ChatIdentifier
|
|
||||||
): ChatRequest, SimpleRequest<Boolean> {
|
|
||||||
override fun method(): String = "unpinChatMessage"
|
|
||||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
|
||||||
get() = BooleanSerializer
|
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
|
||||||
get() = serializer()
|
|
||||||
}
|
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.chat.stickers
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatIdentifier
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.chatIdField
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.internal.BooleanSerializer
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class DeleteChatStickerSet(
|
|
||||||
@SerialName(chatIdField)
|
|
||||||
override val chatId: ChatIdentifier
|
|
||||||
): ChatRequest, SimpleRequest<Boolean> {
|
|
||||||
override fun method(): String = "deleteChatStickerSet"
|
|
||||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
|
||||||
get() = BooleanSerializer
|
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
|
||||||
get() = serializer()
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.MessageAction
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.ContentMessage
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.content.abstracts.MessageContent
|
|
||||||
|
|
||||||
interface EditChatMessage<MT: MessageContent> : SimpleRequest<ContentMessage<MT>>, MessageAction
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineMessageIdentifier
|
|
||||||
import kotlinx.serialization.DeserializationStrategy
|
|
||||||
import kotlinx.serialization.internal.BooleanSerializer
|
|
||||||
|
|
||||||
interface EditInlineMessage : SimpleRequest<Boolean> {
|
|
||||||
val inlineMessageId: InlineMessageIdentifier
|
|
||||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
|
||||||
get() = BooleanSerializer
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InputMedia.InputMedia
|
|
||||||
|
|
||||||
interface EditMediaMessage {
|
|
||||||
val media: InputMedia
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ReplyMarkup
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
|
||||||
|
|
||||||
interface EditReplyMessage : ReplyMarkup {
|
|
||||||
override val replyMarkup: InlineKeyboardMarkup?
|
|
||||||
}
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.edit.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
|
||||||
|
|
||||||
interface EditTextChatMessage {
|
|
||||||
val text: String
|
|
||||||
val parseMode: ParseMode?
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ReplyMarkup
|
|
||||||
|
|
||||||
interface ReplyingMarkupSendMessageRequest<T: Any>: SendMessageRequest<T>, ReplyMarkup
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ChatRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
|
|
||||||
interface SendChatMessageRequest<T: Any> : SimpleRequest<T>, ChatRequest
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.DisableNotification
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.ReplyMessageId
|
|
||||||
|
|
||||||
interface SendMessageRequest<T: Any> : SendChatMessageRequest<T>, ReplyMessageId, DisableNotification
|
|
||||||
@@ -1,8 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.send.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
|
||||||
|
|
||||||
interface TextableSendMessageRequest<T: Any>: SendMessageRequest<T> {
|
|
||||||
val text: String?
|
|
||||||
val parseMode: ParseMode?
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
|
|
||||||
interface DataRequest<T: Any> : SimpleRequest<T>
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.MultipartFile
|
|
||||||
|
|
||||||
typealias Files = Map<String, MultipartFile>
|
|
||||||
@@ -1,19 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.stickers
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.stickerField
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.internal.BooleanSerializer
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class DeleteStickerFromSet(
|
|
||||||
@SerialName(stickerField)
|
|
||||||
val sticker: FileId
|
|
||||||
) : SimpleRequest<Boolean> {
|
|
||||||
override fun method(): String = "deleteStickerFromSet"
|
|
||||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
|
||||||
get() = BooleanSerializer
|
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
|
||||||
get() = serializer()
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.stickers.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.SimpleRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.UserId
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.stickers.MaskPosition
|
|
||||||
import kotlinx.serialization.KSerializer
|
|
||||||
import kotlinx.serialization.internal.BooleanSerializer
|
|
||||||
|
|
||||||
interface StickerSetAction : SimpleRequest<Boolean> {
|
|
||||||
val userId: UserId
|
|
||||||
val name: String
|
|
||||||
val emojis: String // must be more than one
|
|
||||||
val maskPosition: MaskPosition?
|
|
||||||
|
|
||||||
override val resultDeserializer: KSerializer<Boolean>
|
|
||||||
get() = BooleanSerializer
|
|
||||||
}
|
|
||||||
@@ -1,66 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.requests.webhook
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.*
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base.DataRequest
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.send.media.base.MultipartRequestImpl
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.internal.BooleanSerializer
|
|
||||||
|
|
||||||
fun SetWebhook(
|
|
||||||
url: String,
|
|
||||||
certificate: InputFile,
|
|
||||||
maxAllowedConnections: Int? = null,
|
|
||||||
allowedUpdates: List<String>? = null
|
|
||||||
) : Request<Boolean> {
|
|
||||||
val data = SetWebhook(
|
|
||||||
url,
|
|
||||||
(certificate as? FileId) ?.fileId,
|
|
||||||
maxAllowedConnections,
|
|
||||||
allowedUpdates
|
|
||||||
)
|
|
||||||
return when (certificate) {
|
|
||||||
is FileId -> data
|
|
||||||
is MultipartFile -> MultipartRequestImpl(
|
|
||||||
data,
|
|
||||||
mapOf(certificateField to certificate)
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
fun SetWebhook(
|
|
||||||
url: String,
|
|
||||||
maxAllowedConnections: Int? = null,
|
|
||||||
allowedUpdates: List<String>? = null
|
|
||||||
) : Request<Boolean> = SetWebhook(
|
|
||||||
url,
|
|
||||||
null,
|
|
||||||
maxAllowedConnections,
|
|
||||||
allowedUpdates
|
|
||||||
)
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class SetWebhook internal constructor(
|
|
||||||
@SerialName(urlField)
|
|
||||||
val url: String,
|
|
||||||
@SerialName(certificateField)
|
|
||||||
val certificateFile: String? = null,
|
|
||||||
@SerialName(maxAllowedConnectionsField)
|
|
||||||
val maxAllowedConnections: Int? = null,
|
|
||||||
@SerialName(allowedUpdatesField)
|
|
||||||
val allowedUpdates: List<String>? = null
|
|
||||||
) : DataRequest<Boolean> {
|
|
||||||
override fun method(): String = "setWebhook"
|
|
||||||
override val resultDeserializer: DeserializationStrategy<Boolean>
|
|
||||||
get() = BooleanSerializer
|
|
||||||
override val requestSerializer: SerializationStrategy<*>
|
|
||||||
get() = serializer()
|
|
||||||
|
|
||||||
init {
|
|
||||||
maxAllowedConnections ?.let {
|
|
||||||
if (it !in allowedConnectionsLength) {
|
|
||||||
throw IllegalArgumentException("Allowed connection for webhook must be in $allowedConnectionsLength range (but passed $it)")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQuery
|
|
||||||
|
|
||||||
interface DataCallbackQuery : CallbackQuery {
|
|
||||||
val data: String
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQuery
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineMessageIdentifier
|
|
||||||
|
|
||||||
interface InlineMessageIdCallbackQuery : CallbackQuery {
|
|
||||||
val inlineMessageId: InlineMessageIdentifier
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQuery
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
|
||||||
|
|
||||||
interface MessageCallbackQuery : CallbackQuery {
|
|
||||||
val message: Message
|
|
||||||
}
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQuery
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQueryIdentifier
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.User
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
|
||||||
|
|
||||||
data class MessageDataCallbackQuery(
|
|
||||||
override val id: CallbackQueryIdentifier,
|
|
||||||
override val user: User,
|
|
||||||
override val chatInstance: String,
|
|
||||||
override val message: Message,
|
|
||||||
override val data: String
|
|
||||||
) : DataCallbackQuery, MessageCallbackQuery
|
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQuery
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.CallbackQueryIdentifier
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.User
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.message.abstracts.Message
|
|
||||||
|
|
||||||
data class MessageGameShortNameCallbackQuery(
|
|
||||||
override val id: CallbackQueryIdentifier,
|
|
||||||
override val user: User,
|
|
||||||
override val chatInstance: String,
|
|
||||||
override val message: Message,
|
|
||||||
override val gameShortName: String
|
|
||||||
) : GameShortNameCallbackQuery, MessageCallbackQuery
|
|
||||||
@@ -1,10 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.BannedChatMember
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.TelegramDate
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.User
|
|
||||||
|
|
||||||
data class KickedChatMember(
|
|
||||||
override val user: User,
|
|
||||||
override val untilDate: TelegramDate?
|
|
||||||
) : BannedChatMember
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMember
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.User
|
|
||||||
|
|
||||||
data class LeftChatMember(override val user: User) :
|
|
||||||
ChatMember
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts.ChatMember
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.User
|
|
||||||
|
|
||||||
data class MemberChatMember(override val user: User) :
|
|
||||||
ChatMember
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.types.UntilDate
|
|
||||||
|
|
||||||
interface BannedChatMember : ChatMember, UntilDate
|
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ChatMember.RawChatMember
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.User
|
|
||||||
import kotlinx.serialization.*
|
|
||||||
import kotlinx.serialization.internal.StringDescriptor
|
|
||||||
|
|
||||||
interface ChatMember {
|
|
||||||
val user: User
|
|
||||||
}
|
|
||||||
|
|
||||||
internal object AdministratorChatMemberSerializerWithoutDeserialization : KSerializer<AdministratorChatMember> {
|
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName("ChatMemberSerializerWithoutDeserialization")
|
|
||||||
|
|
||||||
override fun deserialize(decoder: Decoder): AdministratorChatMember
|
|
||||||
= ChatMemberDeserializationStrategy.deserialize(decoder) as AdministratorChatMember
|
|
||||||
override fun serialize(encoder: Encoder, obj: AdministratorChatMember) = throw UnsupportedOperationException()
|
|
||||||
}
|
|
||||||
|
|
||||||
internal object ChatMemberDeserializationStrategy : DeserializationStrategy<ChatMember> {
|
|
||||||
override val descriptor: SerialDescriptor = StringDescriptor.withName("ChatMemberDeserializationStrategy")
|
|
||||||
|
|
||||||
override fun deserialize(decoder: Decoder): ChatMember = RawChatMember.serializer().deserialize(decoder).asChatMember
|
|
||||||
override fun patch(decoder: Decoder, old: ChatMember): ChatMember = throw UpdateNotSupportedException(descriptor.name)
|
|
||||||
}
|
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.ChosenInlineResult
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.abstracts.ChosenInlineResult
|
|
||||||
|
|
||||||
data class BaseChosenInlineResult(
|
|
||||||
override val resultId: InlineQueryIdentifier,
|
|
||||||
override val user: User,
|
|
||||||
override val inlineMessageId: InlineMessageIdentifier?,
|
|
||||||
override val query: String
|
|
||||||
) : ChosenInlineResult
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.audio.InlineQueryResultAudioCached
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.audio.inlineQueryResultAudioType
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.abstracts.InputMessageContent
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
|
||||||
import kotlinx.serialization.SerialName
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class InlineQueryResultAudioCachedImpl(
|
|
||||||
@SerialName(idField)
|
|
||||||
override val id: String,
|
|
||||||
@SerialName(audioFileIdField)
|
|
||||||
override val fileId: FileId,
|
|
||||||
@SerialName(captionField)
|
|
||||||
override val caption: String? = null,
|
|
||||||
@SerialName(parseModeField)
|
|
||||||
override val parseMode: ParseMode? = null,
|
|
||||||
@SerialName(replyMarkupField)
|
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null,
|
|
||||||
@SerialName(inputMessageContentField)
|
|
||||||
override val inputMessageContent: InputMessageContent? = null
|
|
||||||
) : InlineQueryResultAudioCached {
|
|
||||||
override val type: String = inlineQueryResultAudioType
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.document.InlineQueryResultDocumentCached
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.document.inlineQueryResultDocumentType
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.abstracts.InputMessageContent
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
|
||||||
import kotlinx.serialization.SerialName
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class InlineQueryResultDocumentCachedImpl(
|
|
||||||
@SerialName(idField)
|
|
||||||
override val id: String,
|
|
||||||
@SerialName(documentFileIdField)
|
|
||||||
override val fileId: FileId,
|
|
||||||
@SerialName(titleField)
|
|
||||||
override val title: String,
|
|
||||||
@SerialName(descriptionField)
|
|
||||||
override val description: String? = null,
|
|
||||||
@SerialName(captionField)
|
|
||||||
override val caption: String? = null,
|
|
||||||
@SerialName(parseModeField)
|
|
||||||
override val parseMode: ParseMode? = null,
|
|
||||||
@SerialName(replyMarkupField)
|
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null,
|
|
||||||
@SerialName(inputMessageContentField)
|
|
||||||
override val inputMessageContent: InputMessageContent? = null
|
|
||||||
) : InlineQueryResultDocumentCached {
|
|
||||||
override val type: String = inlineQueryResultDocumentType
|
|
||||||
}
|
|
||||||
@@ -1,17 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.InlineQueryResult
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.gameShortNameField
|
|
||||||
import kotlinx.serialization.SerialName
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
class InlineQueryResultGame(
|
|
||||||
override val id: String,
|
|
||||||
@SerialName(gameShortNameField)
|
|
||||||
val gameShortName: String,
|
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null
|
|
||||||
) : InlineQueryResult {
|
|
||||||
override val type: String = "game"
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGifCached
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.gif.inlineQueryResultGifType
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.abstracts.InputMessageContent
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
|
||||||
import kotlinx.serialization.SerialName
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class InlineQueryResultGifCachedImpl(
|
|
||||||
@SerialName(idField)
|
|
||||||
override val id: String,
|
|
||||||
@SerialName(gifFileIdField)
|
|
||||||
override val fileId: FileId,
|
|
||||||
@SerialName(titleField)
|
|
||||||
override val title: String? = null,
|
|
||||||
@SerialName(captionField)
|
|
||||||
override val caption: String? = null,
|
|
||||||
@SerialName(parseModeField)
|
|
||||||
override val parseMode: ParseMode? = null,
|
|
||||||
@SerialName(replyMarkupField)
|
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null,
|
|
||||||
@SerialName(inputMessageContentField)
|
|
||||||
override val inputMessageContent: InputMessageContent? = null
|
|
||||||
) : InlineQueryResultGifCached {
|
|
||||||
override val type: String = inlineQueryResultGifType
|
|
||||||
}
|
|
||||||
@@ -1,39 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.gif.InlineQueryResultGif
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.gif.inlineQueryResultGifType
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.abstracts.InputMessageContent
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
|
||||||
import kotlinx.serialization.SerialName
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class InlineQueryResultGifImpl(
|
|
||||||
@SerialName(idField)
|
|
||||||
override val id: String,
|
|
||||||
@SerialName(gifUrlField)
|
|
||||||
override val url: String,
|
|
||||||
@SerialName(thumbUrlField)
|
|
||||||
override val thumbUrl: String,
|
|
||||||
@SerialName(gifWidthField)
|
|
||||||
override val width: Int? = null,
|
|
||||||
@SerialName(gifHeightField)
|
|
||||||
override val height: Int? = null,
|
|
||||||
@SerialName(gifDurationField)
|
|
||||||
override val duration: Int? = null,
|
|
||||||
@SerialName(titleField)
|
|
||||||
override val title: String? = null,
|
|
||||||
@SerialName(captionField)
|
|
||||||
override val caption: String? = null,
|
|
||||||
@SerialName(parseModeField)
|
|
||||||
override val parseMode: ParseMode? = null,
|
|
||||||
@SerialName(replyMarkupField)
|
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null,
|
|
||||||
@SerialName(inputMessageContentField)
|
|
||||||
override val inputMessageContent: InputMessageContent? = null
|
|
||||||
) : InlineQueryResultGif {
|
|
||||||
override val type: String = inlineQueryResultGifType
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.InlineQueryResultMpeg4GifCached
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.mpeg4gif.inlineQueryResultMpeg4GifType
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.abstracts.InputMessageContent
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
|
||||||
import kotlinx.serialization.SerialName
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class InlineQueryResultMpeg4GifCachedImpl(
|
|
||||||
@SerialName(idField)
|
|
||||||
override val id: String,
|
|
||||||
@SerialName(mpeg4GifFileIdField)
|
|
||||||
override val fileId: FileId,
|
|
||||||
@SerialName(titleField)
|
|
||||||
override val title: String? = null,
|
|
||||||
@SerialName(captionField)
|
|
||||||
override val caption: String? = null,
|
|
||||||
@SerialName(parseModeField)
|
|
||||||
override val parseMode: ParseMode? = null,
|
|
||||||
@SerialName(replyMarkupField)
|
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null,
|
|
||||||
@SerialName(inputMessageContentField)
|
|
||||||
override val inputMessageContent: InputMessageContent? = null
|
|
||||||
) : InlineQueryResultMpeg4GifCached {
|
|
||||||
override val type: String = inlineQueryResultMpeg4GifType
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.photo.InlineQueryResultPhotoCached
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.photo.inlineQueryResultPhotoType
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.abstracts.InputMessageContent
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
|
||||||
import kotlinx.serialization.SerialName
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class InlineQueryResultPhotoCachedImpl(
|
|
||||||
@SerialName(idField)
|
|
||||||
override val id: String,
|
|
||||||
@SerialName(photoFileIdField)
|
|
||||||
override val fileId: FileId,
|
|
||||||
@SerialName(titleField)
|
|
||||||
override val title: String? = null,
|
|
||||||
@SerialName(descriptionField)
|
|
||||||
override val description: String? = null,
|
|
||||||
@SerialName(captionField)
|
|
||||||
override val caption: String? = null,
|
|
||||||
@SerialName(parseModeField)
|
|
||||||
override val parseMode: ParseMode? = null,
|
|
||||||
@SerialName(replyMarkupField)
|
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null,
|
|
||||||
@SerialName(inputMessageContentField)
|
|
||||||
override val inputMessageContent: InputMessageContent? = null
|
|
||||||
) : InlineQueryResultPhotoCached {
|
|
||||||
override val type: String = inlineQueryResultPhotoType
|
|
||||||
}
|
|
||||||
@@ -1,34 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.video.InlineQueryResultVideoCached
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.video.inlineQueryResultVideoType
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.abstracts.InputMessageContent
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
|
||||||
import kotlinx.serialization.SerialName
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class InlineQueryResultVideoCachedImpl(
|
|
||||||
@SerialName(idField)
|
|
||||||
override val id: String,
|
|
||||||
@SerialName(videoFileIdField)
|
|
||||||
override val fileId: FileId,
|
|
||||||
@SerialName(titleField)
|
|
||||||
override val title: String,
|
|
||||||
@SerialName(descriptionField)
|
|
||||||
override val description: String? = null,
|
|
||||||
@SerialName(captionField)
|
|
||||||
override val caption: String? = null,
|
|
||||||
@SerialName(parseModeField)
|
|
||||||
override val parseMode: ParseMode? = null,
|
|
||||||
@SerialName(replyMarkupField)
|
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null,
|
|
||||||
@SerialName(inputMessageContentField)
|
|
||||||
override val inputMessageContent: InputMessageContent? = null
|
|
||||||
) : InlineQueryResultVideoCached {
|
|
||||||
override val type: String = inlineQueryResultVideoType
|
|
||||||
}
|
|
||||||
@@ -1,32 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.*
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.voice.InlineQueryResultVoiceCached
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.voice.inlineQueryResultVoiceType
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.abstracts.InputMessageContent
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.ParseMode
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.ParseMode.parseModeField
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
|
||||||
import kotlinx.serialization.SerialName
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
|
|
||||||
@Serializable
|
|
||||||
data class InlineQueryResultVoiceCachedImpl(
|
|
||||||
@SerialName(idField)
|
|
||||||
override val id: String,
|
|
||||||
@SerialName(voiceFileIdField)
|
|
||||||
override val fileId: FileId,
|
|
||||||
@SerialName(titleField)
|
|
||||||
override val title: String,
|
|
||||||
@SerialName(captionField)
|
|
||||||
override val caption: String? = null,
|
|
||||||
@SerialName(parseModeField)
|
|
||||||
override val parseMode: ParseMode? = null,
|
|
||||||
@SerialName(replyMarkupField)
|
|
||||||
override val replyMarkup: InlineKeyboardMarkup? = null,
|
|
||||||
@SerialName(inputMessageContentField)
|
|
||||||
override val inputMessageContent: InputMessageContent? = null
|
|
||||||
) : InlineQueryResultVoiceCached {
|
|
||||||
override val type: String = inlineQueryResultVoiceType
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts
|
|
||||||
|
|
||||||
interface DescribedInlineQueryResult : InlineQueryResult {
|
|
||||||
val description: String?
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts
|
|
||||||
|
|
||||||
interface DuratedInlineResultQuery {
|
|
||||||
val duration: Int?
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
|
||||||
|
|
||||||
interface FileInlineQueryResult: InlineQueryResult {
|
|
||||||
val fileId: FileId
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.serializers.InlineQueryResultSerializer
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.buttons.InlineKeyboardMarkup
|
|
||||||
import kotlinx.serialization.Serializable
|
|
||||||
|
|
||||||
@Serializable(InlineQueryResultSerializer::class)
|
|
||||||
interface InlineQueryResult {
|
|
||||||
val type: String
|
|
||||||
val id: String
|
|
||||||
val replyMarkup: InlineKeyboardMarkup?
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.Titled
|
|
||||||
|
|
||||||
interface OptionallyTitledInlineQueryResult : InlineQueryResult, Titled
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.Locationed
|
|
||||||
|
|
||||||
interface PositionedInlineQueryResult : InlineQueryResult, Locationed
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts
|
|
||||||
|
|
||||||
interface ThumbedInlineQueryResult : InlineQueryResult {
|
|
||||||
val thumbUrl: String?
|
|
||||||
}
|
|
||||||
@@ -1,5 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts
|
|
||||||
|
|
||||||
interface UrlInlineQueryResult : InlineQueryResult {
|
|
||||||
val url: String?
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.requests.abstracts.FileId
|
|
||||||
|
|
||||||
interface WithFileIdInlineQueryResult {
|
|
||||||
val fileId: FileId
|
|
||||||
}
|
|
||||||
@@ -1,7 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.abstracts.InputMessageContent
|
|
||||||
|
|
||||||
interface WithInputMessageContentInlineQueryResult : InlineQueryResult {
|
|
||||||
val inputMessageContent: InputMessageContent?
|
|
||||||
}
|
|
||||||
@@ -1,6 +0,0 @@
|
|||||||
package com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.results.audio
|
|
||||||
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.CommonAbstracts.Performerable
|
|
||||||
import com.github.insanusmokrassar.TelegramBotAPI.types.InlineQueries.InlineQueryResult.abstracts.*
|
|
||||||
|
|
||||||
interface InlineQueryResultAudio : InlineQueryResultAudioCommon, UrlInlineQueryResult, DuratedInlineResultQuery, Performerable, TitledInlineQueryResult
|
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user